全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 物联网 >

基于BSDIFF差分算法在TLZ210中控屏的实现

时间:2023-05-19 17:11

人气:

作者:admin

标签: BSDIFF  差分  基于  算法   

导读:因项目原因,需要开发差分FOTA升级功能,差分升级优点是节省OTA传输数据量,非常适合LoRa,Zigbee等小无线升级场景,节省功耗等。...

1、 背景

因项目原因,需要开发差分FOTA升级功能,差分升级优点是节省OTA传输数据量,非常适合LoRaZigbee等小无线升级场景,节省功耗等。

2、 原理

首先设备开机从boot跳转到app,当接收到来自无线的升级请求后,进行差分包下载,下载成功把ROM标志位置于某个值。然后设备重启进入boot。boot启动会进入差分升级分支,先解压差分包,然后程序运行差分算法,把APP分区和刚刚解压的差分包进行融合处理还原出新的固件包,并做更新。更新成功再重启,即可。

3、 操作流程

3.1 差分升级包制作

确保设备先运行老固件,然后分别打包两个bin固件。导入旧版本选择已经运行的老固件,导入新版本选择将要升级或降级的固件。然后选择差分文件打包。

原包:Tl-Z214_CTRL_SCR_1.0.0.406_20230311.bin

图片

原包固件启动正常,编译于2023-03-11 12:27:22

升级包:Tl-Z214_CTRL_SCR_1.0.0.406_20230305.bin

图片

升级包固件启动正常,编译于2023-03-05 14:39:35

差分包制作

图片

差分升级包制作成功,并生成pach.bin文件。

3.2 APP下载差分升级包

使用JFlash工具烧录patch.bin文件到指定地址0x08011000模拟APP下载。

图片

3.3 重启进入bootloader

发送shell命令 dbg diffota,程序将把ROM启动标志位置为差分升级标志,并重启进入boot。

图片

3.4 解压差分包并运算差分算法还原新固件

图片

3.5 校验新还原固件

校验还原的文件和新固件对不上,通过Jlink回读数据,用beyond工具比对,发现步骤3.4的确有微小差异。

图片

串口打印crc校验错误

图片

Jlink回读数据和原始对不上

图片

下载到设备的查分包和原始是一致的

有可能是解压有问题,打印出来看看解压的数据,在排查差分算法的问题。

图片

最后一步解压状态可能不对

图片

图片

对比差分算法还原的内容,显示是flash写的问题。

图片

3.6 拷贝新固件至APP运行分区并置位

不要拷贝新固件分区,直接擦写APP运行区,节省flash。

3.7 重启检查差分升级是否成功

图片

差分升级成功

图片

差分降级成功

4、 常见问题

FAQ1 差分算法还原的新固件和原始固件有细微差异,差异是两个字节FFFF?

答:是由于flash每次只能写4个字节导致。

FAQ2 差分升级报fsl err错?

答:是由于写flash的地址必须是偶数。

FAQ3 差分升级还原的新固件和原始固件还是对不上,有细微差异,差异是一个字节FF?

答:需要记住最后一个字节。

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信