发新帖本帖赏金 50.00元(功能说明)我要提问
返回列表
[嵌入式Linux]

A6G2C系列IoT核心板内核驱动升级匹配问题及解决方案

[复制链接]
1190|2
手机看帖
扫描二维码
随时随地手机跟帖
caizhiwei|  楼主 | 2024-4-2 08:58 | 显示全部楼层 |阅读模式
本帖最后由 caizhiwei 于 2024-4-2 17:12 编辑

#申请原创# #每日话题# @21小跑堂@21ic小喇叭 @21小跑堂
1.    问题背景
目前使用web在线升级时经常出现驱动加载失败问题。
经定位,只有驱动文件和内核相匹配才能成功加载驱动,而web在线升级时所制作的升级包firmware.zip中包含ubi压缩包,ubi压缩包默认只包含有驱动文件(.ko文件),不包含内核镜像zImage,这会造成只升级驱动,不升级内核的情况,一旦升级的驱动和原有的内核不匹配,就会出现驱动加载失败的问题。
2.    决方
前面提到升级包中的ubi压缩包中默认包含有驱动文件,这些驱动文件来自于comsys仓库ubi_root/local/modules目录,驱动文件属于编译后的产生物,放在git仓库中本身不是上上选,还容易出现只升级驱动,不升级内核,导致驱动内核不匹配的问题。
考虑到ubi是增量升级,而且一般情况下只进行应用升级,这说明一个设备如果可以进行ubi升级,那么这个设备在进行ubi升级之前肯定是已经有了一套匹配的内核和驱动。此时如果只需要进行应用程序升级的话,就不需要将驱动文件打包到ubi中。基于此,从git仓库中删除驱动文件,即删除comsys仓库中ubi_root/local/modules目录。
git仓库中删除驱动文件之后,接下来分析SD卡卡刷升级内核驱动在线升级的问题。
2.1  SD卡卡刷升级
1)     原始SD卡卡刷包如下所示:
45394660b579c039d0.png

这种形式zImage来自于内核编译后的成果物,而ubi.tar.gz中的驱动来自于git仓库中所保存的,可能存在滞后的问题,这种内核和驱动来源不一致的情况就容易导致不匹配问题。
51042660b57a6c7ac7.png
2)     修改后SD卡卡刷包如下所示:
58061660b57c0080c8.png

变更影响点:需要各位注意,在SD卡卡刷包更新zImage时,务必同时更新对应的驱动文件。
关于更新SD卡卡刷包中ubi.tar.gz以外的其余文件时,此处提供两种获取方式:
方式1自己下载a6g2c_wb128li_image仓库进行编译,编译后的成果物都在target目录下,如下图所示:
79951660b57d1471a5.png

注意:dtb文件不要弄错了,30|60|180|360 编译选项生成的dtb文件都叫做dh180_a6g2c-wifi-bt-128m.dtb这个名字
方式2(建议):直接去ci归档路径下寻找编译后的成果物,成果物已经直接以sd卡卡刷包的形式归档。ci会持续集成,每日都会编译出最新的版本,默认会保留7天以内的版本,可以按照编译日期获取某一次的ci版本。
目前ci归档路径如下:\\10.9.35.128\ci_version,如果希望直接升级ci版本的话,记得需要先将\\10.9.35.128\ci_version进行网盘映射,否则运行m6g2c_burn_script.bat脚本时会发生错误。
建议使用该方式,一来可以节省自己编译内核的时间,二来可以同时帮助检查最新的版本是否存在基本功能问题。有可能你本来就没有下载m6g2c_burn_script.bat的权限,此时也只能使用该方式了。

2.2  内核驱动在线升级(待实现或验证功能)
在线升级是指通过web页面,上传firmware.zip包升级。需要保证升级内核或者驱动时,所制作的firmware.zip包务必同时包含zImage和对应相匹配的驱动文件(保证来源一致)。有两种升级方式:
1)     方式1:同时升级内核、驱动、应用程序
该情况下,可以考虑同时将zImage、驱动文件(单独目录存放,不要放在ubi.tar.gz种、具体存放方式待功能实现后确定)、ubi.tar.gz等打包在firmware.zip文件中。
需要注意firmware.zip不能太大,这种适合应用更新包比较小,并且需要同时更新内核和驱动的情况。
2)     方式2:单独升级内核和驱动
该情况下,只需要将zImage和对应的驱动文件(.ko文件)一起打包到firmware.zip之中即可。
综上所述:如果希望通过在线升级的方式升级内核或者驱动,不管是方式1还是方式2,都需要保证内核文件zImage和驱动文件同时进行打包,并且保证zImage和驱动文件是相匹配的。
如果升级包中只有zImage或者只有驱动文件,升级程序会避免进行内核和驱动升级。但是如果升级包中既有zImage又有驱动文件,在升级之前是无法判断内核和驱动是否匹配的,因此,就需要保证制作升级包firmware.zip时zImage和驱动文件是相匹配的(来源一致)。



使用特权

评论回复

打赏榜单

21小跑堂 打赏了 50.00 元 2024-04-10
理由:恭喜通过原创审核!期待您更多的原创作品~

评论
21小跑堂 2024-4-10 10:03 回复TA
从发现问题,定位问题再到解决问题,一文解决了A6G2C系列IoT核心板内核驱动升级匹配问题 

相关帖子

caizhiwei|  楼主 | 2024-4-2 17:13 | 显示全部楼层
imx6ull 同样适用,本人在周立功核心板上验证通过。

使用特权

评论回复
发新帖 本帖赏金 50.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

99

主题

846

帖子

11

粉丝