设为首页收藏本站

安徽论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11273|回复: 0

6ull加载linux驱动模块失败解决方法

[复制链接]

90

主题

863

回帖

1573

积分

金牌会员

Rank: 6Rank: 6

积分
1573
发表于 2022-3-26 11:01:14 | 显示全部楼层 |阅读模式
网站内容均来自网络,本站只提供信息平台,如有侵权请联系删除,谢谢!
目录


0x01 加载驱动模块失败

加载驱动失败描述信息如下,错误信息提示板卡中运行的 linux 内核版本是 4.1.15-g49efdaa ,架构是 ARMv7 ;而编译驱动使用的内核源码版本为 4.1.15 ,架构是 ARMv6 。说明编译驱动使用的内核版本名和架构与板卡中运行的均不一致。
  1. root@ALIENTEK-IMX6U:~/get# insmod led.ko
  2. [ 1634.442887] led: version magic '4.1.15 SMP preempt mod_unload modversions ARMv6 p2v8 ' should be '4.1.15-g49efdaa SMP preempt mod_unload modversions ARMv7 p2v8 '
  3. insmod: ERROR: could not insert module led.ko: Invalid module format
复制代码
0x02 解决方法

有两种解决方法:
(1) 重新编译内核、设备树并烧录到板卡中。
(2) 更改主机中的内核配置信息,使其与板卡中的一致。
重新烧录内核比较麻烦,这里使用方法二
1、在板卡终端中输入命令
  1. uname -r
复制代码
  1. uname -p
复制代码
查看板卡所运行的内核的版本和架构信息。
  1. root@ALIENTEK-IMX6U:~/get# uname -r
  2. 4.1.15-g49efdaa
  3. root@ALIENTEK-IMX6U:~/get# uname -p
  4. armv7l
复制代码
说明板卡中运行的 linux 内核版本为
  1. 4.1.15-g49efdaa
复制代码
,处理器架构为
  1. ARMv7
复制代码
2、进入主机中驱动模块所使用的 linux 内核的根目录,执行
  1. make menuconfig
复制代码
启动 linux 内核图形化配置界面(不能使用menuconfig的可以百度去安装相应依赖库)
如下图所示,进入
  1. System Type
复制代码
选项:

然后进入
  1. Multiple platform selection
复制代码
选项:

然后在下图的界面中取消第一条
  1. ARMv6 based platforms(ARM11)
复制代码
前面的
  1. *
复制代码
号(选中后按空格即可取消)

取消完毕后保存、退出,这样就把内核支持的架构改为了 ARMv7 。
配置完 menuconfig 后不要再输入其他的配置内核的命令,不然会冲刷掉之前的配置。
3、打开内核根目录中的 Makefile ,在
  1. EXTRAVERSION
复制代码
变量后添加你板卡中运行的linux内核版本号的后半部分,比如我的内核后半部分就是 -g49efdaa

更改完后保存,在 linux 内核根目录下执行
  1. make -j12
复制代码
重新编译内核。
内核编译完毕后重新编译驱动模块。
驱动模块编译完毕后用 NFS 下载到板卡中,输入
  1. modinfo [驱动模块名]
复制代码
查看驱动模块信息:
  1. root@ALIENTEK-IMX6U:~/get# modinfo led.ko
  2. filename:       /home/root/get/led.ko
  3. author:         zuozhongkai
  4. license:        GPL
  5. srcversion:     597E1DDC8A372707B8FD0DE
  6. depends:
  7. vermagic:       4.1.15-g49efdaa SMP preempt mod_unload modversions ARMv7 p2v8
复制代码
可见
  1. vermagic
复制代码
一行中显示的驱动模块所属的内核版本和处理器架构与板卡中的内核信息一致,驱动模块可以成功加载。
  1. root@ALIENTEK-IMX6U:~/get# uname -r
  2. 4.1.15-g49efdaa
  3. root@ALIENTEK-IMX6U:~/get# uname -p
  4. armv7l
复制代码
总结

到此这篇关于6ull加载linux驱动模块失败解决方法的文章就介绍到这了,更多相关加载linux驱动模块失败内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
                                                        
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
免责声明
1. 本论坛所提供的信息均来自网络,本网站只提供平台服务,所有账号发表的言论与本网站无关。
2. 其他单位或个人在使用、转载或引用本文时,必须事先获得该帖子作者和本人的同意。
3. 本帖部分内容转载自其他媒体,但并不代表本人赞同其观点和对其真实性负责。
4. 如有侵权,请立即联系,本网站将及时删除相关内容。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表