OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 14370|回复: 19

insmod提示version magic '4.1.15 SMP preempt mod_unload modversions ARMv6 p2v8 ' should be '4.1.15-gbedf008 SMP pr...

[复制链接]

2

主题

7

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2019-9-19
在线时间
6 小时
发表于 2020-1-5 14:12:31 | 显示全部楼层 |阅读模式
本帖最后由 jiangc 于 2020-1-5 14:26 编辑

关于version magic '4.1.15 SMP preempt mod_unload modversions ARMv6 p2v8 ' should be '4.1.15-gbedf008 SMP preempt mod_unload modversions ARMv7 p2v8 '的问题解决方法如下


前面移植的课程大概看了一下,没有动手移植,使用的是官方自带的系统直接学习驱动,就碰到了上面的问题,解决方法如下,不知道是不是正解,还请大家指正。
使用的是:阿尔法Linux开发板光盘资料(A盘)\1、例程源码\3、正点原子修改后的Uboot和Linux\3、正点原子修改后的Uboot和Linux\linux-imx-4.1.15-2.1.0-gbedf008-v1.1.tar.bz2
编译时使用的配置文件是:  make imx_v7_mfg_defconfig
  1. root@ALIENTEK-IMX6U:~# insmod led.ko
  2. [  367.602081] led: version magic '4.1.15 SMP preempt mod_unload modversions ARMv6 p2v8 ' should be '4.1.15-gbedf008 SMP preempt mod_unload modversions ARMv7 p2v8 '
  3. insmod: ERROR: could not insert module led.ko: Invalid module format
复制代码


上网大概查了一下就是内核版本信息不一样,因为我用的是资料里面带的,版本就是4.1.15,不一样的地方就是EXTRAVERSION以及 ARMv7 p2v8这个
内核版本信息规则:
  1. 在一个博客中看到:

  2. 版本信息有:VERSION,PATCHLEVEL, SUBLEVEL, EXTRAVERSION,KERNELRELEASE。版本信息定义了当前内核的版本,比如 VERSION=2,PATCHLEVEL=4,SUBLEVEL=18,EXATAVERSION=-rmk7,它们共同构成内核的发行版本KERNELRELEASE:2.4.18-rmk7
复制代码

解决思路就是:哪里不同改哪里

第一步,手动添加EXTRAVERSION,默认的这个变量是空的,板子里面的应该是带版本控制的,这个变量在内核顶层的Makefile中


如下:
  1. VERSION = 4
  2. PATCHLEVEL = 1
  3. SUBLEVEL = 15
  4. EXTRAVERSION = -gbedf008
  5. NAME = Series 4800

复制代码


第二步:修改
CPU Core family selection
这个可以使用make menuconfig修改也可以手动改.config文件
我这里是make menuconfig
  1. make menuconfig
  2. System Type    --->
  3.           Multiple platform selection    --->
  4.                   [ ] ARMv6 based platforms (ARM11)
  5.                    [*] ARMv7 based platforms (Cortex-A, PJ4, Scorpion, Krait)
复制代码

修改成上面那样,保存编译
然后再重新编译驱动:
使用modinfo  xxx.ko
得到的信息就是和板子一样了

  1. filename:       /home/vmuser/I.MX6ULL/linux_driver/led/led.ko
  2. author:         
  3. license:        GPL
  4. srcversion:     2B371105DE8ECC5A97EE471
  5. depends:        
  6. vermagic:       4.1.15-gbedf008 SMP preempt mod_unload modversions ARMv7 p2v8
复制代码

将ko文件copy到开发板中
执行:depmodmodprobe led

[10533.922742] led_init
[10533.924975] register_chrdev success




正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

8

主题

888

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2377
金钱
2377
注册时间
2019-9-25
在线时间
394 小时
发表于 2020-1-11 19:10:17 | 显示全部楼层
感谢楼主分享。总结的很到位很具体。当然,简单点的是自己编译个内核,然后放到板子上运行就OK
回复 支持 反对

使用道具 举报

9

主题

758

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
5230
金钱
5230
注册时间
2019-9-25
在线时间
428 小时
发表于 2020-1-15 09:53:03 | 显示全部楼层
不错,能够透彻的分析,楼主6666
想思考的时候,有时还可以用屁股,QQ 1252699831
回复 支持 反对

使用道具 举报

9

主题

758

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
5230
金钱
5230
注册时间
2019-9-25
在线时间
428 小时
发表于 2020-1-15 09:54:26 | 显示全部楼层
楼主 ,原子使用的是这个配置文件 make imx_v7_defconfig,是不带mfg的
想思考的时候,有时还可以用屁股,QQ 1252699831
回复 支持 反对

使用道具 举报

8

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2019-7-11
在线时间
17 小时
发表于 2020-2-18 22:57:01 | 显示全部楼层
楼主,我是将LINUX内核(4.1.15)放在云服务器上编译的,生产内核镜像文件和设备树。 云服务器Ubuntu版本为4.4.0-93。
生成的内核镜像和设备树烧录到EMMC启动。出现了同样的问题。开发板使用 uname -r 查询后版本为4.1.15 。
遇到了同样的错误。对比您的问题,不是很明白    。希望您能帮我解答一下i   
回复 支持 反对

使用道具 举报

14

主题

83

帖子

0

精华

初级会员

Rank: 2

积分
167
金钱
167
注册时间
2019-7-11
在线时间
42 小时
发表于 2020-3-18 17:38:13 | 显示全部楼层
内核没这个选项呢

make menuconfig
System Type    --->
          Multiple platform selection    --->
                  [ ] ARMv6 based platforms (ARM11)
                   [*] ARMv7 based platforms (Cortex-A, PJ4, Scorpion, Krait)
复制代码
回复 支持 反对

使用道具 举报

8

主题

888

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2377
金钱
2377
注册时间
2019-9-25
在线时间
394 小时
发表于 2020-3-19 12:25:35 | 显示全部楼层
宋金水 发表于 2020-2-18 22:57
楼主,我是将LINUX内核(4.1.15)放在云服务器上编译的,生产内核镜像文件和设备树。 云服务器Ubuntu版本为 ...

内核zImge和设备树.dtb文件以及驱动.ko文件用同一个内核源码编译的么,是的话应该没这个问题
回复 支持 反对

使用道具 举报

8

主题

888

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2377
金钱
2377
注册时间
2019-9-25
在线时间
394 小时
发表于 2020-3-19 12:31:37 | 显示全部楼层
casy99 发表于 2020-3-18 17:38
内核没这个选项呢

make menuconfig

这个有的或者你用的内核源码不同?
回复 支持 反对

使用道具 举报

0

主题

25

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
349
金钱
349
注册时间
2014-4-6
在线时间
60 小时
发表于 2020-4-13 16:37:56 | 显示全部楼层
我的刚好相反。version magic '4.1.15 SMP preempt mod_unload modversions ARMv7 p2v8' should be ‘4.1.15 SMP preempt mod_unload modversions ARMv6 p2v8’。楼主有什么办法没?我只勾选[ ] ARMv6 based platforms (ARM11),结果报Vmlinux fail
回复 支持 反对

使用道具 举报

0

主题

8

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2020-5-16
在线时间
5 小时
发表于 2020-5-19 20:01:32 | 显示全部楼层
不稳定的自然现象 发表于 2020-4-13 16:37
我的刚好相反。version magic '4.1.15 SMP preempt mod_unload modversions ARMv7 p2v8' should be  ...

这个问题的关键就是你编译的驱动的内核跟你板子上启动的内核要一致就好了
不管你怎么跳教程, 你只要先使用一个版本的内核先编译一遍, 再将编译的内核放到tftpboot文件夹下去供开发板启动, 同时也使用同一版本的内核编译你的驱动程序就可以了。
回复 支持 反对

使用道具 举报

1

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2020-9-22
在线时间
14 小时
发表于 2020-10-19 23:51:44 | 显示全部楼层
太感谢楼主了,同样是简单地看了看移植部分直接看驱动了,这个问题困扰了一下午,现在终于解决了,下面可以上点灯了,哈哈哈。
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2020-10-15
在线时间
4 小时
发表于 2020-11-30 16:07:27 | 显示全部楼层
感谢楼主
回复 支持 反对

使用道具 举报

2

主题

24

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
209
金钱
209
注册时间
2016-11-19
在线时间
48 小时
发表于 2021-3-18 20:58:07 | 显示全部楼层
这个可以其实就是模块和内核编译的版本不同,解决办法就是内核和 驱动模块都用同一个版本的内核源码编译。参考文件【I.MX6U常见问题汇总V1.0】中的2.6.6节
回复 支持 反对

使用道具 举报

21

主题

84

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
374
金钱
374
注册时间
2016-6-8
在线时间
79 小时
发表于 2021-3-19 00:38:44 | 显示全部楼层
我正准备发帖问这个问题,没想到有同道中人遇见了!!!
十分感谢分享解决思路~
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2021-4-5
在线时间
2 小时
发表于 2021-4-5 12:02:50 | 显示全部楼层
本帖最后由 xulouzhe 于 2021-4-5 12:07 编辑

谢谢楼主,我也遇到了这个问题。这个问题解决后出现了新问题,就是insmod命令正常工作,但是modprobe命令会报错
  1. root@ATK-IMX6U:/lib/modules/4.1.15-gbfed875# insmod chrdevbase.ko
复制代码
  1. root@ATK-IMX6U:/lib/modules/4.1.15-gbfed875# modprobe chrdevbase.ko
复制代码
  1. modprobe: FATAL: Module chrdevbase.ko not found in directory /lib/modules/4.1.15-gbfed875
复制代码


解决方法是去掉.ko改成
  1. modprobe chrdevbase
复制代码

回复 支持 反对

使用道具 举报

8

主题

888

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2377
金钱
2377
注册时间
2019-9-25
在线时间
394 小时
发表于 2021-7-9 21:38:26 | 显示全部楼层
楼主总结的很好,真棒!嘿嘿,也可以看看这个链接
https://mp.weixin.qq.com/s/IFDd5am26K1rImLXjoBhEw
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
11
金钱
11
注册时间
2022-8-26
在线时间
1 小时
发表于 2022-8-30 22:35:23 | 显示全部楼层
太棒了,楼主完美解决了我的问题
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2022-10-31
在线时间
6 小时
发表于 2023-8-31 19:16:58 | 显示全部楼层
不稳定的自然现象 发表于 2020-4-13 16:37
我的刚好相反。version magic '4.1.15 SMP preempt mod_unload modversions ARMv7 p2v8' should be  ...

老哥,我也遇到同类型的问题了,你怎么解决的?
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2023-9-27
在线时间
7 小时
发表于 2024-2-8 16:21:25 | 显示全部楼层
不稳定的自然现象 发表于 2020-4-13 16:37
我的刚好相反。version magic '4.1.15 SMP preempt mod_unload modversions ARMv7 p2v8' should be  ...

你这个的意思是你下载到开发板的zImage内核版本是armv6的,而模块的版本是armv7,解决办法是直接执行楼主的第二步:重新配置linux内核为armv7,并编译,然后替换你原来的zImage
回复 支持 反对

使用道具 举报

2

主题

74

帖子

0

精华

高级会员

Rank: 4

积分
835
金钱
835
注册时间
2019-12-14
在线时间
53 小时
发表于 2024-2-18 10:29:37 | 显示全部楼层
总的来说使用同一个内核版本最简便可靠,省的麻烦而且一致。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-5-22 07:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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