问题描述:在家自学linux,买了百问网的imx6ull开发板,跟随教程《嵌入式Linux应用开发完全手册_韦东山全系列视频文档全集V2.8》搭建平台,并顺利进行到第5篇的第十二章《LED模板驱动程序的改造:设备树》,可以实现通过设备树对板卡的LED点亮和熄灭操作。

后来公司条件具备了就在把开发板带到公司,在公司电脑搭建开发环境,步骤和过程和在家一样。搭建好之后,把在家里验证过的基于设备树进行LED控制的软件直接拿来测试,报告内核版本和开发板的内核版本不一致,更新zImage和dtb、lib后,问题解决,但是编译后的LED不能点亮。回家后用家里的平台,直接挂载基于设备树的ko文件同样提示。同样更新zImage和dtb、lib后,问题解决。

开发板内核和ubuntu内核版本不兼容的提示如下:

[root@imx6ull:/mnt]# insmod leddrv.ko

[  456.233830] leddrv: disagrees about version of symbol module_layout

insmod: ERROR: could not insert module leddrv.ko: Invalid module format

问题方向:在家和在公司是同一个开发板,我也都是基于《嵌入式Linux应用开发完全手册_韦东山全系列视频文档全集V2.8》进行平台搭建,唯一不同的是在第2篇 环境搭建、Linux基本操作、工具使用中的Ubuntu映像文件可能不同,我在家搭建的时候手头已经下载了很多个Ubuntu映像文件,不确定是否用的是“\01_Tools (开发工具)\100ask-vmware_ubuntu18.04-2”,所以进行了如下测试:在虚拟机另外价值\01_Tools (开发工具)\100ask-vmware_ubuntu18.04-2下的镜像文件,此虚拟机定义为Ubuntu_A,并在Ubuntu_A下执行指令:uname -r,具体如下:

Ubuntu_A的版本界面(和在公司一样):

book@100ask:~$ uname -r

4.18.0-15-generic

book@100ask:~$

之前在家里一直用的记为Ubuntu_B,对应的内容如下:

Ubuntu_B的版本:

book@100ask:~$ uname -r

5.4.0-49-generic

book@100ask:~$

开发板对应的版本(家里平台和公司平台的指令结果都是一样的):

[root@imx6ull:/mnt]# uname -r

4.9.88

[root@imx6ull:/mnt]#

需要大师指导的问题如下:

1、官方对百问网ubuntu版本是哪一个?(我预计是4.18的那个)

2、都是通过rep下载并编译的Linux-4.9.88版本、同样方式下载的工具链,为什么会出现这样内核版本不一致的问题?

3、通过更新zImage、dtb和lib的模块文件可以解决这个问题,但为什么会带来同样的运行代码(基于设备树的LED软件)一个可以正常点亮LED,而另一个却不能呢?Ubuntu内核版本不同是如何影响到这一结果的呢?

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐