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

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

3天内不再提示

更小更快更省流量的差分升级

西西 来源:厂商供稿 作者:广州立功科技 2020-11-20 09:31 次阅读

你的远程升级还在升级整个APP?快来试试差分升级,立功科技基于AMetal SDK提供了一套完整的差分升级算法,升级固件更小、下载速度更快、大大降低网络不稳定造成传输失败概率,同时更节省内存。

一、差分包原理

在讲差分升级之前,先简单介绍一下差分升级的原理和概念,差分升级是将新老固件具有差异的部分剥离出来,例如固件从V1.1.0升级到V1.1.1,两个固件相比只修改了1K的内容,如下图红色部分为不同部分,将该部分剥离出来生成差分包Diff_V1.1.0~V1.11,通过云端将差分包推送到设备端,设备端接收完成之后,先解压差分包,再通过差分恢复算法,根据差分包中的数据标志,将新老固件进行融合,变成新的固件,从而完成升级。

图 1 差分原理

这种升级方式的优点是升级固件更小、下载速度也更快,也更加节省内存空间,相对于整包升级方式,缺点是依赖特定固件,例如该差分包为V1.1.0固件升级到V1.1.1固件的差分包Diff_V1.1.0~V1.1.1,该差分包只能用于升级版本号是V1.1.0固件的设备,其他版本号固件的设备不能用它升级,流程控制上要求比较严格,整包的升级则不依赖特殊固件,随时可以升级。

图 2 差分升级

二、差分升级架构

立功科技基于AMetal SDK软件平台,设计了一套完整的差分升级的算法。以基于华大HC32L196芯片设计差分升级为例,该芯片Flash为256K(0x000_0000~0x0003_FFFF),首先需要对Flash进行划分,主要划分为4个部分:BootLoader区、应用区、download区、参数区,BootLoader区用于引导升级,应用区为升级后的应用程序,download区为下载差分包存储区间,参数区用于存储特定参数。各区大小按照实际使用情况,进行合理划分。

图 3 flash划分

三、差分升级流程

首先介绍BootLoader执行的流程,如下图所示,芯片上电或复位之后,首先开始运行BootLoader的代码,之后检测按键,按键作为升级的提示,如按键按下,准备升级,进入接收固件状态,如接收到固件,对固件进行校验,校验通过后,置位跳转标志位,如校验未通过,重新进入接收固件状态。检测到跳转标志位之后,检查应用程序是否有效,有效进入应用程序运行,无效进入接收固件状态。如果没有按键按下,检查是否有升级标志,有则解析download区的新固件,通过解压缩算法和解差分算法,修改覆盖旧固件,设置跳转标志,检查应用程序是否有效,有效则运行应用程序。

图 4 升级流程

相信到这不少读者已经清楚升级的原理和升级的过程是怎么回事了,下面介绍一下差分固件的生成。

四、差分包制作

如开篇所述,差分文件是将新老固件进行对比,然后将有差异的部分取出,作为升级的固件。那么如何才能达到最小的差分固件呢?首先我们需要了解用于升级的MCU的Flash的最小擦除单位是多少,是512字节、1K、2K还是4K?这个与芯片相关,理论上划分得越细,最后的生成文件也就会越小。

以HC32L196芯片为例,设置最小的分块单位为1K,将新老两份固件都按1K去划分,划分多少块按两份固件中最大的一个决定,不足的那个后面补0,例如新的固件35.3K,老固件34K,那么最终按新固件大小划分,即按1K划分,将两份固件划分为36块,划分之后,两个固件对应序号的块分别进行比较,将新固件不同于老固件的块进行标记和压缩,最后将所有不同的块压缩为一个包,即差分升级包,到此差分升级包制作完成。AMetal SDK中提供了一个专门用于制作差分包的上位机工具,借助该工具可简单完成差分文件的制作。

图 5 差分固件格式

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

    关注

    146

    文章

    17172

    浏览量

    351595
  • SDK
    SDK
    +关注

    关注

    3

    文章

    1038

    浏览量

    46008
  • 差分算法
    +关注

    关注

    0

    文章

    3

    浏览量

    3293
  • 立功科技
    +关注

    关注

    0

    文章

    28

    浏览量

    5992
收藏 人收藏

    评论

    相关推荐

    平衡流量计计算公式

    平衡流量计基于伯努利方程,符合国家标准GB/2624标准,密封管道中的能量转换原理:在理想流体的情况下管道中的能量与压的平方根成正比;用测出的压值根据伯努利方程即可计算出管道中的流量
    的头像 发表于 10-25 14:14 223次阅读
    平衡<b class='flag-5'>流量</b>计计算公式

    压式流量计三阀组投运步骤

    压式流量计三阀组投运步骤 1. 准备工作 在开始投运三阀组之前,确保以下准备工作已经完成: 安全检查 :检查现场是否有潜在的安全风险,如泄漏、电气问题等。 设备检查 :确保三阀组和压式流量
    的头像 发表于 10-14 09:42 759次阅读

    平衡流量计与孔板流量计有哪些区别?

    平衡流量计也叫多孔孔板流量计,是一款节能型流量计,基本上所有的孔板流量计、锥形、均速管、楔式、涡街、电磁等
    的头像 发表于 10-10 14:05 338次阅读
    平衡<b class='flag-5'>流量</b>计与孔板<b class='flag-5'>流量</b>计有哪些区别?

    使用THS4541做单端转分,运放接通电源后,频谱仪上的信号变得更小了,为什么?

    我想实现一个单端转分电路,输入信号约-40dB,主要是带宽要求DC到230M 我选择了全分运放THS4541,按照DATASHEEET搭建原理图和PCB如下图所示,其中还包含一个3.3伏电源
    发表于 08-28 08:31

    更快更小节能,开关电源迎来测试挑战

    电子发烧友网报道(文/黄山明)作为电子设备中的重要组成部分,开关电源主要用于将输入电源转换为电子设备所需的电压和电流。其特点在于高效率、小型化、稳定性强等,已成为当前市场的主流产品。而在储能系统中,开关电源不仅负责能量的转换和管理,而且还提供了必要的保护机制,确保系统的安全稳定运行。   正是由于在储能中的重要位置,因此给开关电源进行综合测试至关重要。可以确保其在各种条件下都能可靠、高效地运行。这不仅提
    的头像 发表于 08-19 00:04 5398次阅读
    <b class='flag-5'>更快</b>、<b class='flag-5'>更小</b>、<b class='flag-5'>更</b>节能,开关电源迎来测试挑战

    流量计无指示该怎么处理?

      在工作现场中,流量计没有指示一般都是发生在其他设备运行正常的情况下,我们可以从苯断车间检修开车后邻二甲苯的加料流量始终无指示和硫化床气包补水流量无指示这两个案例来分析。 
    的头像 发表于 08-06 09:01 199次阅读

    请问esp32是否支持分升级

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

    esp32c3同时打开BLE和WIFI的功能,固件都1MByte了,OTA时可以用分升级吗?

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

    备受青睐的MEMS加速度计,更小尺寸、更低功耗、智能

    ,进而提供传感数据方便系统对设备或系统做出状态评估。   现在消费电子行业朝着时尚、简约的设计方向发展,工业领域也对加速度计提出了更小尺寸更高集成性的需求,很多应用领域对微型加速度计及其性能的需求日益提升
    的头像 发表于 05-12 08:02 3432次阅读

    谷景助力智能家电升级:更小体积,更大功率

    升级换代。 客户项目需求背景 某智能家电的客户,原来的电感方案使用的是8*10和10*12规格的两款工字电感。但随着产品技术的升级,客户需要使用尺寸更小、功率更大的,且能够满足饱和电流和温升电流更大的需求。 谷景解决方案 我们
    的头像 发表于 05-11 10:39 349次阅读

    ZDP1440系列小技巧—如何OTA分升级显示素材?

    ZDP1440是一款基于开源GUI引擎的图像显示专用驱动芯片,支持U盘、SD卡本地升级UI固件,同时也支持通过UART/SPI方式进行OTA升级,本文将介绍如何OTA分升级显示素材。
    的头像 发表于 05-06 14:01 920次阅读
    ZDP1440系列小技巧—如何OTA<b class='flag-5'>差</b><b class='flag-5'>分升级</b>显示素材?

    如何在速度更快、尺寸更小的应用中精确检测电机位置?

    本文介绍工业自动化领域的设计人员在设计用于电机控制的位置检测接口时面临的常见问题,即在速度更快、尺寸更小的应用中检测位置。利用从编码器捕获的信息以便精确测量电机位置对于自动化和机器设备的成功运行很重
    的头像 发表于 04-12 08:24 698次阅读
    如何在速度<b class='flag-5'>更快</b>、尺寸<b class='flag-5'>更小</b>的应用中精确检测电机位置?

    从入门到精通的孔板流量计测量原理

    压式(也称节流式)流量计是基于流体流动的节流原理,利用流体经节流装置时产生的压力而实现流量测量的。压式
    发表于 03-06 11:05 1265次阅读
    从入门到精通的孔板<b class='flag-5'>流量</b>计测量原理

    AFM07系列流量计产品升级可精确调控气体流量

    AFM07系列产品自从面向市场以来,备受客户青睐,但我们一直没有停止创新升级的脚步,积极听取客户的反馈意见,致力于提升产品的用户体验和实用性,不仅拓展了多种量程范围,还提供了流量调节阀配件供客户选择,以适应更多的应用场景需求。
    的头像 发表于 01-23 17:14 617次阅读
    AFM07系列<b class='flag-5'>流量</b>计产品<b class='flag-5'>升级</b>可精确调控气体<b class='flag-5'>流量</b>

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

    MCU固件升级可以通过编程器、调试器或其他设备辅助进行操作,但这种升级方式主要应用于产品研发评估及量产应用阶段。
    的头像 发表于 01-18 17:06 1590次阅读
    <b class='flag-5'>差</b><b class='flag-5'>分升级</b>方案(上)—全量<b class='flag-5'>升级</b>vs<b class='flag-5'>差</b><b class='flag-5'>分升级</b>的主要特点比较