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
    +关注

    关注

    147

    文章

    19111

    浏览量

    403376
  • SDK
    SDK
    +关注

    关注

    3

    文章

    1110

    浏览量

    51991
  • 差分算法
    +关注

    关注

    0

    文章

    4

    浏览量

    3336
  • 立功科技
    +关注

    关注

    0

    文章

    32

    浏览量

    7186
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    建言有礼 | RA 生态社区再次升级,共筑懂开发者的 RA 家园!

    亲爱的RA/RZ开发者、工程师、合作伙伴们:大家好!陪伴大家走过无数项目日夜、沉淀海量技术干货的瑞萨RA生态社区(www.ramcu.cn),即将再次升级!为了让升级后的社区贴合您的开发习惯、更高
    的头像 发表于 04-15 17:43 581次阅读
    建言有礼 | RA 生态社区再次<b class='flag-5'>升级</b>,共筑<b class='flag-5'>更</b>懂开发者的 RA 家园!

    安科瑞新能源配套:并网更稳、用电、运维

    的新能源配套解决方案,直击行业痛点,真正实现并网更稳、用电、运维简,为工商业、园区、电站等全场景新能源项目保驾护航。
    的头像 发表于 04-10 16:38 111次阅读
    安科瑞新能源配套:并网更稳、用电<b class='flag-5'>更</b><b class='flag-5'>省</b>、运维<b class='flag-5'>更</b>简

    智能、更高效 | ZEISS T-SCAN hawk 2 全新升级!

    ZEISS TSCAN hawk 2 迎来全新升级! 连续卫星模式大范围测量细节精度把控 更精细、更高效、智能 ZEISS TSCAN hawk 2 迎来全新升级!随着 ZEISS INSPECT
    的头像 发表于 03-11 09:55 406次阅读
    <b class='flag-5'>更</b>智能、更高效 | ZEISS T-SCAN hawk 2 全新<b class='flag-5'>升级</b>!

    示扫描量热仪DSC-600C探究精准气体流量控制对DSC的影响

    示扫描量热仪(DSC)的核心测量价值源于样品与参比物的热流监测,而气体流量的稳定性直接决定实验环境的均衡性。汇诚仪器的示扫描量热仪DSC-600C凭借精准气体
    的头像 发表于 12-16 15:21 403次阅读
    <b class='flag-5'>差</b>示扫描量热仪DSC-600C探究精准气体<b class='flag-5'>流量</b>控制对DSC的影响

    RT-Thread软件包,RyanMqtt 2.0 发布,全面重构:更轻、更快安全、更可靠 | 技术集结

    RyanMqtt2.0RT-Thread社区精品软件包RyanMqtt发布2.0新版本!更轻、更快安全、更可靠,为你的物联网连接注入新动力。
    的头像 发表于 12-09 18:27 5956次阅读
    RT-Thread软件包,RyanMqtt 2.0 发布,全面重构:更轻、<b class='flag-5'>更快</b>、<b class='flag-5'>更</b>安全、更可靠 | 技术集结

    【课程升级】STM32U5开发板《TouchGFX 图形界面开发》,从快速入门到深度UI实战教程

    《TouchGFX图形界面开发》课程,这部分升级已完成。由原来的7讲升级至25讲,总时长达9小时,内容体系完整。新增“TouchGFX-C++开发语言基础”和“Touc
    的头像 发表于 11-04 11:05 641次阅读
    【课程<b class='flag-5'>升级</b>】STM32U5开发板《TouchGFX 图形界面开发》,从快速入门到深度UI实战教程

    从 400G 升级到 800G,到底能多少钱?(洞察 TCO 真相)

     觉得800G光模块采购价高?本文揭示从400G升级800G的惊人TCO节省:硬件总成本降25%,每Gbps电费30%,运维效率提30%,空间占用减半!3年总体拥有成本直降30%+,远超初期投入。算清这笔账,升级800G不再是
    的头像 发表于 08-11 10:39 1106次阅读

    STM32CubeProgrammer怎么才能在cubeprogrammer上实现部分升级

    一下在STM32CubeProgrammer里怎么实现部分升级,只要升级有所改变的分区就可以了,其他的分区均保持不变?
    发表于 08-11 07:49

    千视产品全面升级|用技术赋能效率,让专业简单

    为持续提升用户体验,千视电子近期对全系核心产品进行重大功能升级。本次更新聚焦于提升协同效率、增强录制灵活性、简化系统操作,助力客户在各类IP化制作场景中实现更高效、更稳定、智能的操作体验。1N60
    的头像 发表于 07-15 16:45 1034次阅读
    千视产品全面<b class='flag-5'>升级</b>|用技术赋能效率,让专业<b class='flag-5'>更</b>简单

    如何计算孔板流量计和平衡流量计的流量?计算公式一样吗?

    平衡流量计与孔板流量计作为压式流量计的典型代表,虽均基于压力流量的数学关系进行计算,但是平
    的头像 发表于 07-09 13:54 1125次阅读
    如何计算孔板<b class='flag-5'>流量</b>计和平衡<b class='flag-5'>流量</b>计的<b class='flag-5'>流量</b>?计算公式一样吗?

    压力、流量传感器到底该怎么选择?

    压力传感器和流量传感器均可用于测量空气流速。在许多应用中,两种类型的传感器通常与流量限制装置结合使用,以产生压。有些“空气流量”传感器因其校准方式而被称为“
    的头像 发表于 06-17 12:06 1275次阅读
    压力、<b class='flag-5'>流量</b>传感器到底该怎么选择?

    平衡流量计和涡街流量计有什么区别,你了解吗?

    计 和晟测控HSP系列平衡流量计是一种新型的压式流量仪表,它采用独特的雷诺数、增加节流件厚度和加工精度,使流动性能接近文丘里,构造简洁、安全,性能有质的飞跃,巧妙的结构设计能在最短的直管段要求下,用相对较小的永久压损换来较大的
    的头像 发表于 06-10 14:55 851次阅读
    平衡<b class='flag-5'>流量</b>计和涡街<b class='flag-5'>流量</b>计有什么区别,你了解吗?

    时差法明渠流量计原理

    时差法明渠流量计是一种基于超声波在流体中传播时因流速不同而产生时间的原理来测量流量的仪器,其原理涉及超声波传播特性与流体运动的结合,以下是详细介绍:一、基本原理时差法明渠流量计的核心
    的头像 发表于 05-29 16:54 1313次阅读
    时差法明渠<b class='flag-5'>流量</b>计原理

    用于呼吸流量及呼吸率的检测测压力传感器

    前言利用微压传感器实现呼吸流量及呼吸率的检测。针对呼吸产生的气体流速较小的特点,我们选择了灵敏度较高的压传感器。在实际应用中,微压传感器的准确性和稳定性至关重要。通过对呼吸
    的头像 发表于 05-19 13:20 1248次阅读
    用于呼吸<b class='flag-5'>流量</b>及呼吸率的检测测压力传感器

    关于流量传感器:压式流量传感器

    1.流量传感器的分类流量传感器是一种用于测量流体在一定时间内通过一定横截面的量(流量)的设备,根据测量原理不同,可以分为但不仅限于以下几种类型:1.压式
    的头像 发表于 05-19 13:20 2064次阅读
    关于<b class='flag-5'>流量</b>传感器:<b class='flag-5'>差</b>压式<b class='flag-5'>流量</b>传感器