Chinaunix
标题:
开始linux的学习 小小的总结下这段时间的感觉
[打印本页]
作者:
liubaifu
时间:
2008-11-17 23:40
标题:
开始linux的学习 小小的总结下这段时间的感觉
上个月真正开始学习嵌入式linux,用的是友善之臂的QQ2440板子。一段时间了,学习碰到不少问题。这里小小总结下。
刚开始就学驱动程序,因为自己觉得往那方面发展。开始的时候没有跟着板子的程序自己写下。个人感觉虽然后来的问题解决了,但是用了不少时间。所以建议开始的时候要看板子原来带有的驱动程序,跟着学一下,对开始来感觉比较快。至少应该编译器的问题,和Makefile比较好理解点。
下面开始列举遇到的问题:
1.关于GCC,和Makefile:
linux2.4和linux2.6的Makefile写法有很大的不同。很多书上都没说明白,为了这个问题郁闷了好久,我看见的大多书上写的是2.4的Makefile的写法,但是都没有说明和2.6的区别。后来是在一个论坛上看到Makefile的说明,解决了这个问题,地址:。现在已经会写Makefile了
2.6内核驱动Makefile的写法:
Makefile为:
obj-m :=XXX.o
编译时:
make -C /内核路径 M='当前路径' modules
可成功生成2.6核下的驱动模块XXX.ko!!!
2.4内核的因为没用过,具体不太了解。
2.关于insmod加载时的错误:
错误1:
insmod: kernel-module version mismatch
holle.o was compiled for kernel version
while this kernel is version 2.6.13.
类似这个错误。 这个从表面上看就明白是内核版本的不对,但是在实践中,我觉得不全是因为版本
原因如下:
1.和上面说的一样,版本问题。
这个问题不是我所遇到的,所以不太了解。
可以搜索一下“insmod: kernel-module version mismatch”,网上关于这个有不少的解决方案,应该能找到满意的。我在搜索过程中发现好像这个问题比较多是发生在2.4内核的情况下。没有见到2.6下面有这个问题,所以如果是2.4应该按照那些说法能解决得。但是,我的是2.6内核,并不是这个原因。
2.insmod 在2.6中应该是
insmod XXX.ko
而在2.4中是
insmod XXX.o
如果使用错了,一样会导致加载出错。
XXX.ko是2.6内核编译的时候产生的模块文件。
3.系统启动方式
在nfs方式驱动下不管你的驱动程序是否有错,都会在加载的时候出错。
我就是在这个问题上面卡了一段时间。值得注意!!!
4.错误上面编译是的问题一样,是Makefile的问题
再次强调2.6的编译和2.4的不同
2.6内核驱动Makefile的写法:
Makefile为:
obj-m :=XXX.o
编译时:
make -C /内核路径 M='当前路径' modules
可成功生成2.6核下的驱动模块XXX.ko!!!
5.再有就是GCC的版本带来的小插曲
应该使用编译内核的GCC版本
6.再次强调一个小小的问题:
2.6内核insmod格式
insmod XXX.ko
以上就是我在第一个驱动程序的感想。
呵呵。。也就是hello.c的驱动。
英文比较烂。好像里面的“hello”还拼错了,成了“holle”
上传一下holle.c打包。
里面还有个kong.c和hello.c是同样类型的,表示是空驱动的意思。因为后面好像有过修改,忘记最后是否通过了。印象中是没问题的
程序写的有点乱。要改进风格。
就写这么多,过两天接着说下自己LED驱动的一些问题。
看别人的程序,感觉太多都是讲讲而已,给程序也没什么用,里面调用的函数,都没有解释。真正自己写的时候就不会用了。故马上在网上买了本《linux设备驱动程序》就是《linux decives deciver》的中文版。要深入学习,要有专研的心态。
对常用的一些函数register_chrdev(),等的和一些其它注册函数区别没有说明,这让我觉得很郁闷,在2.4中大多好像是用register_chrdev(),而2.6中新增加的register_chrdev_region(),这两个用法有什么不同,都没有说。后来是在
http://blog.chinaunix.net/u1/34474/showart_404278.html
看以后才有点理解的,这更促使我买《linux设备驱动程序》。强力建议大家学习这本书。
回去睡觉了。下次LED驱动再写。
文件:
hello.rar
大小:
24KB
下载:
下载
本文来自ChinaUnix博客,如果查看原文请点:
http://blog.chinaunix.net/u2/85783/showart_1421454.html
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2