新手上路
- 积分
- 29
- 金钱
- 29
- 注册时间
- 2019-9-19
- 在线时间
- 6 小时
|
本帖最后由 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- root@ALIENTEK-IMX6U:~# insmod led.ko
- [ 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 '
- insmod: ERROR: could not insert module led.ko: Invalid module format
复制代码
上网大概查了一下就是内核版本信息不一样,因为我用的是资料里面带的,版本就是4.1.15,不一样的地方就是EXTRAVERSION以及 ARMv7 p2v8这个
内核版本信息规则:
- 在一个博客中看到:
- 版本信息有:VERSION,PATCHLEVEL, SUBLEVEL, EXTRAVERSION,KERNELRELEASE。版本信息定义了当前内核的版本,比如 VERSION=2,PATCHLEVEL=4,SUBLEVEL=18,EXATAVERSION=-rmk7,它们共同构成内核的发行版本KERNELRELEASE:2.4.18-rmk7
复制代码
解决思路就是:哪里不同改哪里
第一步,手动添加EXTRAVERSION,默认的这个变量是空的,板子里面的应该是带版本控制的,这个变量在内核顶层的Makefile中
如下:
- VERSION = 4
- PATCHLEVEL = 1
- SUBLEVEL = 15
- EXTRAVERSION = -gbedf008
- NAME = Series 4800
复制代码
第二步:修改
CPU Core family selection
这个可以使用make menuconfig修改也可以手动改.config文件
我这里是make menuconfig
- make menuconfig
- System Type --->
- Multiple platform selection --->
- [ ] ARMv6 based platforms (ARM11)
- [*] ARMv7 based platforms (Cortex-A, PJ4, Scorpion, Krait)
复制代码
修改成上面那样,保存编译
然后再重新编译驱动:
使用modinfo xxx.ko
得到的信息就是和板子一样了
- filename: /home/vmuser/I.MX6ULL/linux_driver/led/led.ko
- author:
- license: GPL
- srcversion: 2B371105DE8ECC5A97EE471
- depends:
- 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
|
|