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

    文章

    16011

    浏览量

    343562
  • SDK
    SDK
    +关注

    关注

    3

    文章

    966

    浏览量

    44684
  • 差分算法
    +关注

    关注

    0

    文章

    3

    浏览量

    3259
  • 立功科技
    +关注

    关注

    0

    文章

    19

    浏览量

    4061
收藏 人收藏

    评论

    相关推荐

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

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

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

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

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

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

    为什么热式质量流量传感器输出的流量都是标况流量

    为什么热式质量流量传感器输出的流量都是标况流量? 热式质量流量传感器是一种常用的流量测量设备,它通过测量流体对热敏感件的冷却效果来间接测量流
    的头像 发表于 12-19 09:49 319次阅读

    如何在更小的空间内获取更高的电容值?

    如何在更小的空间内获取更高的电容值?
    的头像 发表于 12-04 15:04 185次阅读
    如何在<b class='flag-5'>更小</b>的空间内获取更高的电容值?

    分享一种适用于嵌入式单片机的差分升级通用库

    借用网上的介绍:适合嵌入式的差分升级又叫增量升级,顾名思义就是通过差分算法将源版本与目标版本之间差异的部分提取出来制作成差分包,然后在设备通过还原算法将差异部分在源版本上进行还原从而升级成目标版本的过程。
    的头像 发表于 09-15 09:46 458次阅读
    分享一种适用于嵌入式单片机的差<b class='flag-5'>分升级</b>通用库

    咖啡机小流量用什么流量计-霍尔流量

    咖啡机是一种常见的家用电器,而咖啡机中的流量控制是非常重要的一环。在小流量的情况下,常用的流量计有电磁流量计、涡轮流量计和霍尔
    的头像 发表于 06-27 14:16 470次阅读
    咖啡机小<b class='flag-5'>流量</b>用什么<b class='flag-5'>流量</b>计-霍尔<b class='flag-5'>流量</b>计

    你知道PCB线路板为什么要做阻抗吗?

    板 基于MCU分升级FOTA方案 运行在各种设备的程序,由于功能的迭代或自身bug的修复,难免需要升级功能,通常升级的程序都是以完整升级
    发表于 06-26 15:38

    实现更小、更轻、平稳的电机驱动器的氮化镓器件

    使用更小、成本更低且更可靠的陶瓷电容器,可增加功率密度。 氮化镓器件使得电机驱动器在减小尺寸和重量的同时,可以实现平稳的运行。这些优势对于仓储和物流机器人、伺服驱动器、电动自行车和电动滑板车、协作
    发表于 06-25 13:58

    TinyML课程#7变得更小

    电子发烧友网站提供《TinyML课程#7变得更小.zip》资料免费下载
    发表于 06-25 10:23 0次下载
    TinyML课程#7变得<b class='flag-5'>更小</b>

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

    “你的设备远程升级可以不再是升级整个固件。启明提供了一套完整的差分升级算法,升级固件更小、下载速度更快
    的头像 发表于 06-09 09:46 851次阅读
    启明FOTA差<b class='flag-5'>分升级</b> 系统级解决方案

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

    “你的设备远程升级可以不再是升级整个固件。启明提供了一套完整的差分升级算法,升级固件更小、下载速度更快
    的头像 发表于 06-05 09:40 1098次阅读
    启明FOTA差<b class='flag-5'>分升级</b> 系统级解决方案

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

    因项目原因,需要开发差分FOTA升级功能,差分升级优点是节省OTA传输数据量,非常适合LoRa,Zigbee等小无线升级场景,节省功耗等。
    的头像 发表于 05-19 17:11 1070次阅读
    基于BSDIFF差分算法在TLZ210中控屏的实现

    DevEco Studio 3.1 Release | 动态共享包开发,编译更快,包更小

    。同时,为了减少包体积,支持将多个模块通用的能力和资源提取,作为动态共享包(HSP)供其他模块或者应用使用。 二、什么是模块化编译 模块之间相互独立编译,编译速度更快。 应用内模块化编译方式使用原生
    发表于 05-19 11:25

    5g流量消耗会不会很快 5g也是采用ofdm吗

    5G网络的流量消耗确实相对于4G会更快,这是由于5G网络在提供更快速更稳定的网络连接的同时,也提高了数据传输的频次和带宽,流量消耗会进一步增加。但是,5G网络的发展也意味着
    发表于 05-06 15:56 7464次阅读