更小更快更省流量的差分升级如何做到

2020-11-19来源: EEWORLD关键字:差分包  远程升级

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

 

一、差分包原理

 

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

 

  image.png

 

图 1  差分原理

 

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

 

image.png

 

图 2  差分升级

 

二、差分升级架构

 

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

 

image.png

 

图 3  flash划分

 

三、差分升级流程

 

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

 

image.png

 

图 4  升级流程

 

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

 

四、差分包制作

 

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

 

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

 image.png

 

图 5  差分固件格式

关键字:差分包  远程升级 编辑:muyan 引用地址:http://news.eeworld.com.cn/wltx/ic517090.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:派拓网络推出5G原生安全产品,为新一代网络保驾护航
下一篇:5G消息计划明年商用,最直观的改变是什么

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

网站虚拟主机+安信可A6C GPRS模块实现对stm32的远程升级
利用http协议使用普通的网站虚拟主机+安信可A6C GPRS模块实现对stm32的远程升级步骤:1.生成bin文件并将bin文件放到虚拟主机目录内2.做一个php的页面分块读取该bin文件,以asc字符echo出来,并标记好头尾长度和校验。3.GPRS协议栈连接主机路径,收到内容,将内容解析,校验,无误后保存到备份flash空间4.全部保存完成后,做个标识在参数flash区,等待重新开机5.做个bootloader,开机后检测是否有保存好的新版本号,如果有则覆盖旧版本,否则直接进入入口向量。 由于GPRS传输http协议的内容属于短连接,AT指令的情况多而复杂,很多需要判断处理,有较高的工作强度,这里的内容暂不
发表于 2020-09-16
STM32F 远程升级OTA 应用总结
1.概述STM32具有IAP自编程能力,能实现OTA功能。OTA代码由Bootloader和APP组成。在设计时,应尽可能的简化Bootloader功能。以下所有的阐述在STM32F4上已实现。2.实现思路把单片机内部flash分为3个区域,分别储存“bootloader”、“运行APP”和“代码暂存区”。“运行APP”接收升级代码保存到“代码暂存区”,接收完成过后写一个升级标志,跳转到bootloader,bootloader把“代码暂存区”的程序拷贝到“运行APP”中,然后清除升级标志,并跳转到运行APP,实现整个升级过程。3.明确实现功能Bootloader实现功能:代码跳转、读写OTA升级标志、代码拷贝、串口打印四个功能
发表于 2020-06-30
STM32F407开发板的HTTP模式IAP远程升级之官方例程移植
背景:在使用RT-Thread RTOS的时候发现官方提出了一种通用的BootLoader方案,支持F1和F4系列的芯片硬件资源:正点原子stm32f407zgt6探索者开发板,片上Flash(ROM)大小为1024KB,RAM大小为192KB,板载一个SPI Flash W25Q128BootLoader配置根据官方文档:https://www.rt-thread.org/document/site/application-note/system/rtboot/an0028-rtboot/,BootLoader的基本配置如下,加密压缩的配置可以不选。硬件配置选择芯片系列:stm32f4 ROM大小:1024KB RAM大小:192
发表于 2020-06-30
基于AVR-BootLoader,通过霜蝉远程串口可实现单片机的远程升级
最近一直利用业余时间写自己的“基于AVR-BootLoader”,启发是由于一次在ourAVR论坛看到了绍子阳的bootloader,联想到公司在用AVR MCU,但每次升级程序都要花费很大的力气车马劳顿的跑到工程现场,而且很多机器还安装在国外,为了升级一次程序发费了很多的人力物力财力,加上公司的机器目前大部分都配有远程监控系统,所以本人决定写一个具有自有产权的“AVR-BootLoader”。    特别说明:本“AVR-BootLoad”软件代码属上海霜蝉版权所有,在此贡献发布,仅限于个人免费使用不得用于商业用途,本人也不保证代码的严谨性,如在升级中出现任何问题与本人无关,本人已测试
发表于 2020-04-28
基于AVR-BootLoader,通过霜蝉<font color='red'>远程</font>串口可实现单片机的<font color='red'>远程</font><font color='red'>升级</font>
基于AVR-BootLoader,通过霜蝉远程串口可实现单片机的远程升级
最近一直利用业余时间写自己的“基于AVR-BootLoader”,启发是由于一次在ourAVR论坛看到了绍子阳的bootloader,联想到公司在用AVR MCU,但每次升级程序都要花费很大的力气车马劳顿的跑到工程现场,而且很多机器还安装在国外,为了升级一次程序发费了很多的人力物力财力,加上公司的机器目前大部分都配有远程监控系统,所以本人决定写一个具有自有产权的“AVR-BootLoader”。      特别说明:本“AVR-BootLoad”软件代码属上海霜蝉版权所有,在此贡献发布,仅限于个人免费使用不得用于商业用途,本人也不保证代码的严谨性,如在升级中出现任何问题与本人无关,本人已测试
发表于 2020-03-30
基于AVR-BootLoader,通过霜蝉<font color='red'>远程</font>串口可实现单片机的<font color='red'>远程</font><font color='red'>升级</font>
小广播
换一换 更多 相关热搜器件

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 综合资讯 其他技术 下一代网络 短距离无线 基站与设施 RF技术 光通讯 标准与协议 物联网与云计算 有线宽带

词云: 1 2 3 4 5 6 7 8 9 10

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved