资讯分类
全部资讯
最新活动
商城公告
行业信息
新品推荐
元器件知识
资讯标签
艾迈斯欧司朗(96) 英伟达NVIDIA(70) 艾为awinic(45) 飞腾派V3(37) 萤火工场(30) 罗彻斯特电子(28) Jetson Orin Nano SUPER 开发套件(21) 资料下载专区(18) 进迭时空(15) 兆易创新(14) 艾为 awinic(14) 赛昉科技(StarFive)(12) 灵动微电子(11) 小华半导体(9) 日清纺微电子(9) NVIDIA(8) Seeed矽递科技(8) 上海雷卯Leiditech(8) 赛昉科技(8) 微源半导体 LPSemi(8) 龙芯中科(7) GD32VW553-IOT(7) 物奇WuQi(7) 日清纺微电子Nisshinbo(5) 庆科(5) 开源口碑分享(5) 飞腾派(4) 创捷电子(4) TROQ创捷电子(4) 航顺芯片(4) CEM5826-M11(4) Geehy极海半导体(4) FTHR-G0001(3) 罗彻斯特(3) 飞腾派eMMC(3) iCEasy商城(3) MM32SPIN060G(3) 一件包邮专区(3) 英伟达初创加速计划(2) 极海(2) 中国星坤(2) 极海半导体(2) 小华EVB-HC32F4A0开发板(2) 国产开源硬件(2) 杭晶(HCI)(2) 野火(2) Mini-SPIN0230(2) NVIDIA品牌专区(2) 华润微电子(2) 口碑评测(2) EVB-L0130(2) 教育优惠申请链接(2) 启明云端(2) 飞腾官网飞腾派(2) 弈安云(2) 飞腾派下载专区(2) 村田(2) NVIDIA NIM(1) 世野(Khadas)(1) 618大促(1) 竞买活动(1) 雷卯(1) 飞腾派试用申请链接(1) BeagleBone Black快速入门指南(1) 样片申请(1) 飞腾派调研问卷链接(1) 微雪电子(1) 一件免邮专区(1) SFH 7018B(1) 极海半导体(Geehy)(1) Arduino品牌页(1) 小脚丫(1) 618大促专区(1) 艾为(AWINIC)(1) 英伟达 NVIDIA品牌专区(1) 8月7日竞拍竞买(1) 飞腾派V3版本上新(1) 飞虹半导体(1) MUSE Paper(1) 乐动机器人(1) 海凌科电子(Hi-Link)(1) VF202040-A0(1) 教育优惠(1) 萤火工场GD32VW553-IOT(1) 野火RK3566开发板(1) 润石(1) 格力新元(1) CEM5825F(1) COMBO模组 EMC3020-PZI5(1) 松科智能(1) Jetson AGX Thor 开发套件/模组(1) Mini-F5333(1) 微源半导体(1) 周年抽奖活动(1) 庆科信息(MXCHIP)品牌专区(1) 附件(1) 华大北斗(1) GD32无线生态专区(1) JETSON_AGX_ORIN_64GB_DEVELOPER_KIT(1) QCS6490 SOM EVB开发板(1) 附件下载地址(1) 迈巨微(1) 雷克沙(1) GD32VW553-IOT V2版本(1) QCS8550 SOM EVB开发板(1) 申请样片:高光效红光OSCONIQ® P 3030, GR QSSPA1.23(1) 台容积电(1) GD32VW553-IOT V2(1) CEM5881-M11(1) NVIDIA Jetson Orin Nano 开发套件(1) 萤火工场品牌专区(1) 商城下载专区(1) 飞腾人才赋能(1) Jetson AGX Orin 64GB开发套件(1) 荣湃半导体(2Pai Semi)品牌专区(1) 进迭时空品牌页(1) B站风扇视频(1) Jetson AGX Xavier(32GB)(1) BeagleBoard.org®(1) 社区评奖活动(1) Arduino UNO Rev 4 Minima开发板(1) 下载专区(1) 国产自主可控(1) 英伟达 NVIDIA(1) CEM5861G-M11(1) 赛昉科技9折活动券(1) NVIDIA Jetson Orin Nano 开发套件(1) Arduino品牌专区(1) NVIDIA DGX™ Spark:桌面级AI超级计算机(1) 品牌清仓(1) QCS8550 SOM EVB(1) Jetson AGX Orin 64GB开发套件(1) 24GHz毫米波雷达模块(1) 技术问答专区(1) 英特尔(1) NVIDIA Jetson Nano 模组(1) QCS6490 SOM EVB(1) 天微电子商家页(1) 国产毫米波雷达模块(1) 飞腾派专链(1) 瑞隆源产品(1) 龙芯教育派(1) CEK8902-S905D3(1) EV Board (MM32L0136C7P)(1) 迈巨微电子品牌专区(1)

差分升级方案(上)——全量升级vs差分升级

发布时间:2025-06-17

1、需求源起

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


2、升级步骤

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

图1 固件升级示意图


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

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


3、全量升级

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

图2 Flash分区示意图


图3 固件接收方式分类


3.1 App接收固件

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

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


3.2 BootLoader接收固件

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

图5 单区固件升级示意图


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


4、差分升级

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

图6 差分升级示意图


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


5、差分升级vs全量升级

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

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




想要了解及购买小华半导体产品,请前往iCEasy商城品牌专区:

https://s.iceasy.com/IQ0sfy

iCEasy商城欢迎您的到来!