错误记录和解决办法:globalmem虚拟驱动在 insmod 时出现 busy/*嵌入式学习*/
来源:互联网 发布:航天信息税金java开发 编辑:程序博客网 时间:2024/06/07 14:19
在学习Linux驱动开发详解。加载 globalmem 虚拟驱动的时候出错。
当执行命令 #insmod globalmem.ko
时,出现:insmod: error inserting 'globalmem.ko': -1 Device or resource busy
这里存在的问题是:
globalmem的源码分配的 设备号和驱动原有的设备号有冲突。
解决办法为:将源码的
#define GLOBALMEM_MAJOR 250 改为:
#define GLOBALMEM_MAJOR 255
这里你可以试一下 251、252、253、等。 这是笨办法,目前我就用这招。等我找到更好的办法时我一定告诉大家。
当然你也可以通过使用命令 cat /proc/devices
来查看已经被占用的设备号,从而另外给你分配设备号。
这里使用的都是静态的设备号,当然你也可以使用动态设备号,但要修改的代码比较多,所以有点麻烦。
呵呵,刚刚才发现,如果你需要分配动态的设备号的时候其实更简单
在globalmem_init()函数初始化设备函数的时候不知道你注意到这几个语句没:
if(globalmem_major) /*如果设备分配的设备号>=1,就表明你会使用静态的设备号分配方法*/
result =register_chrdev_region(devno,1,"globalmem");
else{ result = alloc_chrdev_region(&devno, 0,1, "globalmem"); /*否则使用系统动态分配设备号*/
globalmem_major = MAJOR(devno);
}
而这里面的register_chrdev_region() 就是分配静态设备号的函数,
而 alloc_chrdev_region() 则是系统自动分配一个没有被占用的动态设备号。
所以如果你需要分配一个动态的设备号的话,你需要将globalmem.c函数里的
#define GLOBALMEM_MAJOR 250 改为:
#define GLOBALMEM_MAJOR 0
不过在后面测试的时候你就需要使用 cat /proc/devices 来查看你的动态设备号的分配号了。
还有一个问题在上一次我刚搭建好的Ubuntu驱动开发环境时:
我加载驱动用insmod 没有问题:
但在我卸载内核的时候,也就是用rmmod 时候显示 Device or resource busy
当时网上还有很多这样的问题,但我但是就没管,反正一重启就没有了。
但今天,也就是刚刚我卸载内核的时候却没有发现有报错。真是一个奇怪的现象。
我才,既有可能是我在编译内核树的时候破环了那么组建。但最后经过多次系统的使用和启动时,内核自己检测到这个错误并进行了修改。 个人看法。呵呵!
- 错误记录和解决办法:globalmem虚拟驱动在 insmod 时出现 busy/*嵌入式学习*/
- 嵌入式 globalmem虚拟字符设备驱动雏形
- insmod 时出现的错误
- 关于虚拟字符设备驱动的学习笔记globalmem
- ubuntu 12.04出现insmod: error inserting 'hello.ko': -1 Device or resource busy的解决办法
- 驱动加载错误:insmod: error inserting 'hello.ko': -1 Device or resource busy
- linux驱动insmod时出现killed
- 虚拟设备字符驱动globalmem分析
- 对虚拟字符驱动globalmem的完善,追加竞态解决帮法的学习
- LINUX驱动学习:加载模块时出现Device or resource busy的解决方法
- LINUX驱动学习:加载模块时出现Device or resource busy的解决方法
- LINUX驱动学习:加载模块时出现Device or resource busy的解决方法
- ubuntu12.04 insmod&rmmod出现Error:Device or resource busy
- 在加载模块时出现cannot insert '*.ko': Device or resource busy错误
- globalmem虚拟字符设备驱动--字符驱动讲解(2)
- insmod ko时出现的错误--设备名称
- 嵌入式 globalmem设备驱动ioctl()函数的实现
- 升级数据库时遇到的Text file busy错误解决办法
- Makefile 理解
- Cadence16.3安装破解过程
- 我的成长记录一
- hibernate中的二级缓存
- Windows Phone开发者必知的10大问题
- 错误记录和解决办法:globalmem虚拟驱动在 insmod 时出现 busy/*嵌入式学习*/
- PDF转WORD以及WORD转PDF的方法
- 你知道吗:Android为何比iOS和WP慢?
- 减小Delphi2010程序的尺寸(关闭RTTI反射机制)
- 【C++编程对缓冲区的理解】韩耀旭
- VS2010 Help Library 安装后 无法打开问题的结局办法
- grid 行背景变化
- 分布式开发成功秘笈:十大实用技巧分享
- u-boot移植时出现inline function 'coloured_LED_init' cannot be declared weak及相关错误时的解决办法!