0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

冬至子 来源:Tianlair工作室 作者:落霞天 2023-05-19 17:11 次阅读

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?

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • ZigBee技术
    +关注

    关注

    3

    文章

    115

    浏览量

    42192
  • ROM
    ROM
    +关注

    关注

    4

    文章

    524

    浏览量

    84812
  • OTA
    OTA
    +关注

    关注

    7

    文章

    522

    浏览量

    34596
  • LoRa模块
    +关注

    关注

    5

    文章

    101

    浏览量

    13671
收藏 人收藏

    评论

    相关推荐

    [10.1.1]--背景

    机器视觉
    学习电子知识
    发布于 :2022年11月25日 21:17:08

    [13.1.2]--练习1-背景实现

    机器视觉
    学习电子知识
    发布于 :2022年11月25日 21:26:04

    [13.1.3]--练习2-背景的高斯建模实现

    机器视觉
    学习电子知识
    发布于 :2022年11月25日 21:26:24

    招聘抗干扰、导航算法工程师各一名

    工程实现的经验;或精通相关性较强的技术,如雷达天线阵信号处理技术;3、 卫星导航接收机领域有5年以上工作经验,并且为项目或产品主要设计人员;招聘职位(二):高级算法工程师(
    发表于 03-17 16:24

    mallat算法labview实现

    请问,mallat算法如何在labview实现编程,从而可以实现小波变换?
    发表于 03-14 10:56

    测量和探头介绍

    (例如隔离通道示波器)、隔离变压器和隔离放大器。OItek同时提供了探头和隔离输入仪器。为了实现安全精确的操作,仪器必须参考接地。由于整个仪器上存在高压点击危险,仪器保护接地系统
    发表于 08-04 09:56

    FFT 算法的一种 FPGA 实现

    点数的 FFT 运算。本文分析衰减非周期分量对半波傅氏算法产生的影响的基础上, 介绍了几种新算法, 不仅保留了原来傅氏算法的功能, 又增添了对衰减非周期分量的滤波作用。新
    发表于 11-21 15:55

    ADC不同电阻容对THD性能的影响

    1.6Msps样品。输入端选取最低容电阻可以实现最佳THD性能。但是,如果最低容不符合成本效益呢?如果选择更高的容电阻,THD是否合
    发表于 12-17 22:13

    通信系统滤波器如何布局?

    RF工程师设计中常常会看到单端50Ω系统。有人认为,电路很难设计、测试和调试。另一方面,为了提高性能,通信系统常常要应用分系统,尤其是IF级
    发表于 12-27 11:30

    【创龙TLZ7x-EasyEVM评估板试用连载】时栅传感器自适应性信号处理与误差补偿算法研究

    项目名称:时栅传感器自适应性信号处理与误差补偿算法研究试用计划:本人在传感器信号处理领域有三年多的学习和开发经验,参加过全国2018大学生FPGA创新设计大赛(研究生组)、全国大学生电子设计大赛
    发表于 04-23 10:28

    如何去实现基于单片机的分升级

    算法有开源的bsdiff,压缩算法也有开源的单片机就能用的,把这两个结合起来放单片机里就可以实现
    发表于 11-19 06:14

    RLE_X3还原算法介绍

    目前新开发出的RLE_X3还原算法,已经能够支持最小1K的内存空间,目前有MDK默认编译器的ARM系列的库,欢迎进群索取。介绍:...
    发表于 01-20 06:59

    单片机上实现分升级

    最近咨询如果在单片机上实现分升级的同学很多,因为源码目前不方便公开,所以有个想法是,向对这块比较感兴趣的朋友提供基于各位所用编译器的算法
    发表于 01-20 08:16

    怎样采用开源算法BSDIFF实现数据的分化呢

    怎样采用开源算法BSDIFF实现数据的分化呢?如何去实现呢?
    发表于 02-10 06:14

    使用AD8138实现单端转功能的疑问

    您好,附件是AD8138的外围电路,是参考芯片手册的电路设计的。主要是为了实现单端转的功能。现在出现几个问题: 1. 对于Vocm引脚,我从0V变化到750mV的过程,输出的共
    发表于 11-27 08:24