1。驱动的编写,我们这里采用开发板生产商提供的LED驱动程序。
2。将程序添加到内核里面,LED驱动明显是字符驱动,所以将xxx.c复制到drivers/char目录下,并修改Makefile,在Makefile里添加一行
obj-m += xxx.o
然后make modules,就可以看到在drivers/char/xxx.ko。
3. 将xxx.ko,拷贝至开发板上,具体目录为/lib/modules/'uname -a'
4. 将测试程序用交叉编译工具编译好,也拷贝至开发板,目录可以随便了。
5. 在开发板上建立设备文件,mknod /dev/xxxx c xxx(主设备号) 0
6. 加载模块,insmod xxx,注意,后缀.ko不写。或者可以用命令 insmod ./xxx.ko 《Linux Device Drivers 3》上是用后者的。
我在这一步的时候出现了错误:
insmod: can't read 'leds': No such file or directory
主要问题就是我第三步没有做好,当时/lib/modules/下没有我的内核版本的目录,我就自己随便建里一个,结果就出错里,后来重新建立量以自己内核版本为文件夹名的目录,在加载就成功了。
7. 执行测试程序,刚刚开始,我这里也执行不来,修改权限还是不行,后来,在PC上修改里权限,在拷贝至开发板就可以运行了。
至此,驱动的开发流程大概就是这样了。以后我会慢慢开始深入到驱动程序的学习中去,也会将一些心得体会写出来。
阅读(2300) | 评论(0) | 转发(0) |