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

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

3天内不再提示

差分升级方案(上)—全量升级vs差分升级的主要特点比较

小华半导体有限公司 来源:小华半导体有限公司 2024-01-18 17:06 次阅读

1、需求源起

MCU固件升级可以通过编程器、调试器或其他设备辅助进行操作,但这种升级方式主要应用于产品研发评估及量产应用阶段。产品量产或设备部署后,若面对大规模设备升级,把产品返厂做升级将面临拆机、人工烧录等繁琐流程,费时费力。随着物联网的发展,越来越多的产品具备无线远程通信能力,产生了更多通过远程通讯接口进行固件升级的需求。

2、升级步骤

固件升级,就是当前设备运行的旧固件有系统漏洞或者要在现有设备添加新功能时,将设备中的旧固件更新为新的固件,使设备运行的程序满足新的功能需求,从MCU内部层面来看就是新固件覆盖旧固件,如图1所示。

89249be2-b5d8-11ee-8b88-92fbcf53809c.png

图1固件升级示意图

获取新固件:通过NBIoT、WIFI、Bluetooth、LoRaZigBee等通信协议定期查询新版本或者接收升级请求。

覆盖旧固件:将新固件数据分块写入旧固件所在Flash覆盖旧固件。

3、全量升级

通常情况下,在MCU中运行的具有升级功能的程序需要具备两个可独立运行的程序,分别为BootLoader引导程序和实现产品功能的App应用程序。一般情况下BootLoader程序烧录后不会再更新,修复漏洞或者添加功能时升级的均为App应用程序。Flash全量升级分区示意图如图2所示。固件可以通过App或者BootLoader进行接收,如图3所示。

8936d4ec-b5d8-11ee-8b88-92fbcf53809c.png

图2Flash分区示意图

894460a8-b5d8-11ee-8b88-92fbcf53809c.png

图3 固件接收方式分类

3.1 App接收固件

设备在运行时App查询到有新版本固件或者收到升级请求时,先通过无线通信接口下载新的固件。一般有两种方式更新固件:一种运行App1时,将新的固件分包接收并下载存至App2 Flash分区,下载完成后跳转至App2 分区运行新的固件(MCU需要支持双BANK运行),升级示意图如图4所示;第二种跳转Bootloader程序执行固件迁移,将App2固件按块写入App1 Flash分区,待固件迁移无误后再跳转至App1 Flash分区运行。

89574c5e-b5d8-11ee-8b88-92fbcf53809c.png

图4 具有备份区的固件升级示意图

3.2BootLoader接收固件

设备在运行App时查询到有新版本固件或者收到升级请求时,跳转Bootloader程序将新的固件分包接收并下载至App Flash分区。下载完成时,旧固件被新固件覆盖,然后再跳转App Flash分区运行,示意图如图5所示。

89658eea-b5d8-11ee-8b88-92fbcf53809c.png

图5 单区固件升级示意图

App与BootLoader接收固件都需要完整的下载新的固件包,即便新的固件相较于旧固件改动量很小,往往MCU RAM资源有限,需要分包下载,每包数据必须正确无误,如果有错误或者遗漏则需要重新下载。升级过程中如果断电,需要再次请求网络重新下载新的固件包,所以整包升级下载时间较长,升级失败风险较高。对一些电池供电的设备,下载时间越长系统功耗越高。

4、差分升级

在服务器端基于差分算法将旧固件V1和新固件V2的差异进行提取并应用压缩算法计算出差分包,将差分包由服务器端传输给MCU客户端,再由差分解压缩算法还原出新的固件V2,这样的升级方式称为差分升级,差分升级的示意图如图6所示。

8978e878-b5d8-11ee-8b88-92fbcf53809c.png

图6 差分升级示意图

一般差分算法核心思想为:对旧固件新固件文件做子字符串匹配或使用Hash技术, 提取公共部分, 再将新固件文件中剩余的部分打包成差分包;在差分还原时, 用复制和插入两个基本操作将旧固件和差分包合成新固件。对于固件代码较大而修改量较小的新固件,使用差分升级算法,差分包大小相较于新固件会明显变小,无线升级时下载流量也会相应大幅度降低。

6、差分升级vs全量升级

差分升级和全量升级各有各的优点和适合应用的领域,设计者在实际产品开发中可根据不同应用选择不同的升级方式。例如,产品是电池供电,并且数据传输速率比较低,则要求产品升级时能够尽可能减少数据量的传输,节约功耗,此时可优先采用差分升级的方式。差分升级与全量升级的主要特点比较如图7所示。

8996e0d0-b5d8-11ee-8b88-92fbcf53809c.png

图7差分升级与全量升级的主要特点比较







审核编辑:刘清

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

    关注

    3

    文章

    115

    浏览量

    42192
  • FlaSh
    +关注

    关注

    10

    文章

    1551

    浏览量

    146671
  • RAM
    RAM
    +关注

    关注

    7

    文章

    1322

    浏览量

    113706
  • 电池供电
    +关注

    关注

    0

    文章

    233

    浏览量

    21859

原文标题:差分升级方案(上)——全量升级vs差分升级

文章出处:【微信号:小华半导体有限公司,微信公众号:小华半导体有限公司】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于MCU的差分升级实现方案解析

    分升级又叫增量升级,顾名思义就是通过差分算法将源版本与目标版本之间差异的部分提取出来制作成差分包,然后在设备通过还原算法将差异部分在源版本上进行还原从而升级成目标版本的过程。差分升级
    的头像 发表于 10-13 11:59 1.3w次阅读
    基于MCU的差<b class='flag-5'>分升级</b>实现<b class='flag-5'>方案</b>解析

    如何构建STM32L452RE的分升级能力?

    在STM32L452RE这颗MCU如何将艾拉比的分升级功能,移植入STM32L452RE的bootloader中,从而使STM32L452RE能够拥有
    发表于 09-11 11:51

    AliOS Things 3.0 开发:OTA之差分升级快速上手

    升级快速上手查看详情概要前面已经介绍了AliOS Things 3.0 OTA的整包升级和压缩升级,本文将介绍AliOS Things 3.0版本的OTA
    发表于 10-18 09:57

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

    分算法有开源的bsdiff,压缩算法也有开源的单片机就能用的,把这两个结合起来放单片机里就可以实现分升级。由于上位机负责进行分和压缩的操作,而上位机没有ram的限制,可以随意。因
    发表于 11-19 06:14

    在单片机上实现分升级

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

    探讨一下基于STM32单片机的分升级算法

    DiffIAP应用背景随着目前物联网,车联网,智能设备的增多,需要远程升级设备程序的场景增多,以往的IAP升级和OTA升级都是整包升级,bin文件过大导致
    发表于 02-14 06:02

    如何实现OpenHarmony的OTA升级

    升级包、分升级包以及变分区升级包。•
    发表于 02-07 10:29

    ESP32C3固件太大,OTA时有没有方法做分升级

    如题,esp32c3同时打开BLE和WIFI的功能,固件都1MByte了,OTA时可以用分升级吗。还有就是怎么优化下固件大小?
    发表于 02-15 08:02

    esp32是否支持分升级

    我现在工程需要适配ota功能,但是鉴于固件体积较大,想请教下是否支持分升级?
    发表于 02-20 07:36

    基于MCU,如何零代码无开发实现OTA差分升级

    / 模块开发的方案,用户升级主要目标是通讯芯片 / 模块。艾拉比在设备端有基于 UA+UC 的方式提供端云一体化的 OTA 解决方案。 2. 通过 MCU/DSP/MPU
    的头像 发表于 10-14 17:23 4312次阅读
    基于MCU,如何零代码无开发实现OTA差<b class='flag-5'>分升级</b>?

    基于单片机的差分升级

    差分算法有开源的bsdiff,压缩算法也有开源的单片机就能用的,把这两个结合起来放单片机里就可以实现差分升级。由于上位机负责进行差分和压缩的操作,而上位机没有ram的限制,可以随意。因此只要解压缩和解差分在单片机中实现就可以了。如下图,对整个
    发表于 11-12 21:06 11次下载
    基于单片机的差<b class='flag-5'>分升级</b>

    "单片机差分升级算法(STM32,M0,M3,M4等芯片都适用)"

    "单片机差分升级算法(STM32,M0,M3,M4等芯片都适用)"
    发表于 12-07 14:06 24次下载
    "单片机差<b class='flag-5'>分升级</b>算法(STM32,M0,M3,M4等芯片都适用)"

    基于STM32单片机的差分升级(增量升级)算法

    DiffIAP应用背景随着目前物联网,车联网,智能设备的增多,需要远程升级设备程序的场景增多,以往的IAP升级和OTA升级都是整包升级,bin文件过大导致
    发表于 12-09 15:51 19次下载
    基于STM32单片机的差<b class='flag-5'>分升级</b>(增量<b class='flag-5'>升级</b>)算法

    启明FOTA差分升级 系统级解决方案

    “你的设备远程升级可以不再是升级整个固件。启明提供了一套完整的差分升级算法,升级固件更小、下载速度更快、大大降低网络不稳定造成传输失败概率,同时更节省内存。”
    的头像 发表于 06-05 09:40 1103次阅读
    启明FOTA差<b class='flag-5'>分升级</b> 系统级解决<b class='flag-5'>方案</b>

    启明FOTA差分升级 系统级解决方案

    “你的设备远程升级可以不再是升级整个固件。启明提供了一套完整的差分升级算法,升级固件更小、下载速度更快、大大降低网络不稳定造成传输失败概率,同时更节省内存。”众所周知,传统MCU
    的头像 发表于 06-09 09:46 868次阅读
    启明FOTA差<b class='flag-5'>分升级</b> 系统级解决<b class='flag-5'>方案</b>