加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_开封站长网 (http://www.0378zz.com/)- 科技、AI行业应用、媒体智能、低代码、办公协同!
当前位置: 首页 > 教程 > 正文

嵌入式Linux驱动程序之编程常见问题

发布时间:2021-11-22 09:46:34 所属栏目:教程 来源:互联网
导读:嵌入式Linux驱动程序之编程常见错误 1、warning: function declaration isnt a prototype 这种错误也是很常见的,主要是对一些函数固定格式的错误使用。比如int function()改称int function(void) static int xxxx_init(void)记住不要缺少static,而static v

嵌入式Linux驱动程序之编程常见错误
 
1、warning: function declaration isn't a prototype
 
这种错误也是很常见的,主要是对一些函数固定格式的错误使用。比如int function()改称int function(void)
 
static int xxxx_init(void)记住不要缺少static,而static void xxxx_exit(void)
 
2、出现 warning: assignment makes pointer from integer without a cast 的原因
 
第一可能是类型转换的问题。函数的返回值类型等等
 
第二、在源文件中没有发现函数的声明,可能是忘加头文件了。(未经声明的函数原型一律默认为返回int值)
 
3、makefile:4: *** missing separator. Stop.
 
最近常用SourceInsight3.5编辑程序,里面直接编辑保存的是word格式。用WinHex或UltraEdit以二进制方式打开,里面的
 
Tab字符对应0x09而不应该是几个0x20。这是主要用vi打开文件,切入到底行模式,使用":set ff =unix"
 
4、模块与内核不匹配问题
 
安装模块时出现:[root@FriendlyARM nfs]# insmod key2.ko
 
key2: version magic '2.6.32.2 mod_unload modversions ARMv4 ' should be '2.6.32.2-FriendlyARM mod_unload ARMv4 '
 
这一行的意思就是说,当前插入的模块xxx.ko的版本信息(version magic)与正运行的kernel的版本信息不一致!应该是'2.6.32.2-      FriendlyARM mod_unload ARMv4 ',而实际上xxx.ko的版本信息却是:'2.6.32.2 mod_unload modversions ARMv4 '; 显然
 
它们之间差别是很小的。实际上,根据上面安装的kernel源码来看,它们应该是没有什么差别的。
 
我觉得解决这个问题最主要的手段是务必务必保证内核模块的Makefile文件中的
 
KDIR := /home/yuesichiu/Linux/FriendlyARM/linux-2.6.32.2与编译内核FriendlyARM/linux-2.6.32.2,下载到开发板的 zImage是同  一内核。
 
5、多文件编程结构体的存放位置
 
我比较喜欢的是把结构体和函数声明放置头文件中,把头文件加到各个.c文件中,以前把结构体定义放置main.c中,编译时老是出错。

(编辑:开发网_开封站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读