设备号冲突致使windows
处理方法:app
1.输入$cat /proc/devices 查看驱动的设备号google
2.选择一个不冲突的设备号进行编译spa
参考文献:.net
1.http://blog.csdn.net/zzc_19/article/details/8648332调试
为了防止网页没法访问,现将引用文献拷贝至此视频
最近看了几集国嵌的关于字符设备驱动视频教程,本身跟着视频上面敲代码。字符设备驱动,用内存模拟一个字符设备,而后对其进行访问,200多行代码,基本代码仍是在windows下经过sourceinsight3输入,通过其检验,编译前确信没有任何问题,结果错误一页都显示不完(⊙﹏⊙b汗)。通过两个多小时的调试,最终调好了,也回顾了很多c语言的基础知识(固然,视频上面仍是有几个错误的,由于视频上没当场编译)。毕业7年,还好,当初对C语言有种莫名的情切感,如今老师的不少话都记在心上。blog
言归正传,调试到没有任何error或者warring再将memdev.ko和app_mendev经过ftp拷贝到开发板运行,一敲insmod memdev.ko 就提示:教程
- <span style="font-family:Arial;font-size:14px;">[root@FriendlyARM plg]# insmod memdev.ko
- insmod: can't insert 'memdev.ko': Device or resource busy</span>
图1 模块Device or resource busy提示
进程
什么chmod,chown都用过了,6410板子也reboot过,ftp也by后重新链接过,仍是一样的结果。最后求助google(最近好上一点,不会点一两个连接就会出现连接不上),原来是设备号冲突,因而更改程序主设备号为99。再次编译模块。顺利insmod,嘿嘿!
图2 memdev.h 里面定义主设备号为254,冲突
图3 更改设备号为99后顺利insmod
图4 cat /proc/devices 里面看见99 memdev
2.http://www.aichengxu.com/view/996172
今天是本身写的第二个设备驱动程序,很不幸,中枪了
在insmod xxx.ko 时候老是出现Error: could not insert module testsecond.ko: Device or resource busy,
分析了各类状况,都快崩溃了后来在很而然的看的一篇很不起眼的小短文,顿时灵感来了。
解决方法:在文本界面输入$cat /proc/devices 查看你的驱动的进程号,例如个人驱动进程号以下所示
能够看到这是字符设备的进程号,若是你写的是快设备或者是FIFO之类的,那你要到块设备里面去查找
你能够看到这进程号是否与你所定义的MAJOR冲突,若是冲突,那就是你insmod xxx.ko失败的缘由了 ,你只要把MAJOR改一下,就没有问题了