加载驱动文件到目标板时,遇到version magic的问题,希望大家能够提供点思路和解决办法,谢谢!

时间:2020-11-26 06:01:43
我用虚拟机在电脑里装了ubuntu12.04,用交叉编译工具生成驱动文件ledtest.ko后,使用insmod 命令加载到目标板时,出现了如下信息:
ledtest:version magic ‘3.6.9 mod_unload ARMv7 p2v8’should be‘3.6.9+ mod_unload ARMv7 p2v8'
insmod: can't insert 'ledtest.ko':invalid module format


我查看了如下一下信息:
我启动目标板时,有一个打印信息如下:
starting kernel ...
Booting Linux on physical CPU 0
Linux version 3.6.9+(nferre@tenerife)(gcc version 4.6.1(ubutu/linaro 4.6.1-9ubutu3))#1
我又在我的/driver/char/目录下面使用modinfo ledtest.ko 命令查看信息如下:
filename: ledtest.ko
.
.
.
vermagic: 3.6.9 mod_unload ARMv7 p2v8
请教一下大家,我现在改怎么修改才能正常加载驱动文件啊!谢谢,希望大家能说的详细点,我刚开始搞驱动。 

3 个解决方案

#1


是编译模块时的 UTS_RELEASE 和 编译内核时的 UTS_RELEASE 不一致吧。
3.6.9 和 3.6.9+ 的区别。
可以直接修改源码目录下的 .kernelrelease 文件,让它们保持一致。

#2


参考这个,不过我没机会验证
http://blog.csdn.net/richardysteven/article/details/6014377

#3


在ubuntu上编译时,Makefile指定的内核版本跟开发板上的一致么

#1


是编译模块时的 UTS_RELEASE 和 编译内核时的 UTS_RELEASE 不一致吧。
3.6.9 和 3.6.9+ 的区别。
可以直接修改源码目录下的 .kernelrelease 文件,让它们保持一致。

#2


参考这个,不过我没机会验证
http://blog.csdn.net/richardysteven/article/details/6014377

#3


在ubuntu上编译时,Makefile指定的内核版本跟开发板上的一致么