您尚未登录。

楼主 # 2024-09-13 23:12:48

30tobebroad
会员
注册时间: 2020-06-09
已发帖子: 4
积分: 114

匠芯创D12x平台 OTA快速升级方案分享

最近研究到匠芯创这个超高性价比的平台,作为HMI的优秀解决方案,尤其是D12X系列,10块钱的价格,400M主频,720P/60帧的jpg解码能力,来取代F1C100简直是不二首选!而且官方提供的Luban-Lite SDK给出了一整套rtthread RTOS解决方案(配置、编译、打包、文件系统),也是我目前看到的比较完整的rtthread实践,用这个平台来学习rtthread或者开发项目还是非常不错的。

但美中不足的是官方提供的系统升级方案实在太慢了,即使是一个几百K的固件,也动辄一两分钟,而且经常失败,大大影响了调试效率。因此自己花了几天时间,摸索了一套高效的OTA升级方案,并做了专用下载工具,分享给大家,希望能够对热爱技术的人有所帮助。

首先说一下整体的设计思路:
该方案核心是利用A/B系统和Ymodem文件传输(具体参考: https://aicdoc.artinchip.com/topics/sdk/application-ota-luban-lite.html ),即采用两个os分区,通过环境变量来选择当前要加载的分区,每进行一次OTA升级,所加载的分区就切换一次。

接下来是具体操作方法:
1、修改bootloader配置,使支持env(否则不会进行A/B系统的失败和切换),并且使能A/B系统:
ota1.png
ota2.png
2、修改应用程序配置,使支持env
ota3.png
3、修改应用程序配置,使支持ota功能
ota4.png
4、修改应用程序配置,使支持ota_downloader功能,并支持Ymodem ota:
ota5.png
ota6.png
5、最最重要的,是修改ymodem_ota.c文件,使满足上位机的协议机制。
源码参考:https://gitee.com/keqian/Aic_d12x.git
6、最后修改分区配置文件image_cfg.json,增加os_r分区,如下图(为了节省空间,考虑到使用性,rodata仍采用单分区):
ota7.png
ota8.png

所有都修改完成后,开始编译固件,首先编译bootloader代码(会将编好的固件自动拷贝到target对应的pack文件夹下),然后再编译app程序,注意编译前先加载对应配置。

编译完成没有问题后,第一次先用官方工具完整升级一遍(可以不升级rodata和data):
ota9.png
升级完成后,就可以用我分享的工具来继续升级啦 (路径:https://gitee.com/keqian/Aic_d12x/tree/master/tools/ymodem_iap):
ota10.png
可以看到,选择1.5M波特率,升级340K的固件,全部只需要6s左右 ,是不是可以大大的节省生命了?
今天的分享就到这里了!

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn