主题 : LINUX驱动无法加载和卸载的问题 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 56969
精华: 0
发帖: 11
金钱: 55 两
威望: 11 点
贡献值: 0 点
综合积分: 22 分
注册时间: 2011-10-16
最后登录: 2012-10-11
楼主  发表于: 2011-10-17 01:52

 LINUX驱动无法加载和卸载的问题

最近在QQ2440的开发板做了一个简单加载和卸载驱动试验,加载驱动和卸载驱动是都遇到了问题。我是以最简单的hello驱动程序为例。

      在redhat9的系统终端加载编译好的驱动模块文件qq2440_hello_module.ko的文件。系统终端输入命令:                    insmod qq2440_hello_module.ko。结果显示:qq2440_hello_module: version magic '2.6.13 ARMv4 gcc-3.4' should be '2.6.13 preempt ARMv4 gcc-3.4' insmod: cannot insert `qq2440_hello_module.ko': Invalid module format (-1): Exec format error。最后查找发现内核编译时没有选择preemptable这项。这项在kernel feature一项中。

      卸载驱动模块时,输入命令:rmmod qq2440_hello_module.ko。结果显示insmod: error inserting 'globalmem.ko': -1 Device or resource busy。处理办法有两个,一是重新启动开发板,系统会自动卸载掉qq2440_hello_module.ko驱动模块。二是内核编译时在module load一项中选择module unloading一项。然后重新编译内核,重新加载和卸载驱动模块就可以了。