• 嵌入式linux插入内核模块Error: could not insert module xxx.ko: Device or resource busy处理


    设备号冲突导致

    处理方法:

    1.输入$cat /proc/devices 查看驱动的设备号

    2.选择一个不冲突的设备号进行编译

    参考文献:

    1.http://blog.csdn.net/zzc_19/article/details/8648332

    为了防止网页无法访问,现将引用文献拷贝至此

    最近看了几集国嵌的关于字符设备驱动视频教程,自己跟着视频上面敲代码。字符设备驱动,用内存模拟一个字符设备,然后对其进行访问,200多行代码,基本代码还是在windows下通过sourceinsight3输入,经过其检验,编译前确信没有任何问题,结果错误一页都显示不完(⊙﹏⊙b汗)。经过两个多小时的调试,最终调好了,也回顾了不少c语言的基础知识(当然,视频上面还是有几个错误的,因为视频上没当场编译)。毕业7年,还好,当初对C语言有种莫名的情切感,现在老师的很多话都记在心上。

    言归正传,调试到没有任何error或者warring再将memdev.ko和app_mendev通过ftp拷贝到开发板运行,一敲insmod memdev.ko 就提示:

    [plain] view plain copy
     
    1. <span style="font-family:Arial;font-size:14px;">[root@FriendlyARM plg]# insmod memdev.ko  
    2. 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改一下,就没有问题了

  • 相关阅读:
    call_user_func和call_user_func_array的区别
    25行实现文件上传功能(PHP)
    PHP 结合MYSQL简单的实现了Todo List 功能
    向ASP.NET自定义控件中嵌入CSS资源
    模态子窗口不执行page_load
    oracle一次插入多条数据
    转载:数据库表结构设计方法及原则
    Js中的window.parent ,window.top,window.self
    在一个JS文件中包含中文字符串通过innerHTML输出后中文乱码
    转载:数据库表结构设计方法及原则
  • 原文地址:https://www.cnblogs.com/hujianhua/p/5424914.html
Copyright © 2020-2023  润新知