摘要:您的远程升级仍在升级整个APP吗?快来尝试差异升级。
Ligong Technology基于AMetal SDK提供了一套完整的差异升级算法。
升级固件较小,下载速度较快,大大减少了网络不稳定。
传输失败的可能性,同时节省更多的内存。
1.差异包的原理在谈论差异升级之前,让我们简要介绍差异升级的原理和概念。
差异升级是去除新旧固件的不同部分。
例如,固件从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差异升级II。
差异升级架构Ligong Technology基于AMetal SDK软件平台设计了一套完整的差异升级算法。
以基于华大HC32L196芯片设计的差异升级为例。
芯片Flash为256K(0x000_0000〜0x0003_FFFF)。
首先,Flash需要分为4部分:BootLoader区域,应用程序区域,下载区域,参数区域,BootLoader区域用于指导升级,应用程序区域是升级后的应用程序,下载区域是存储区。
下载的差分软件包,参数区域用于存储特定参数。
每个区域的大小应根据实际使用情况合理划分。
图3闪存划分III。
差异升级过程首先,介绍由BootLoader执行的过程。
如下图所示,芯片上电或复位后,BootLoader的代码首先开始运行,然后检测到按钮。
该按钮用作升级提示,例如按该按钮。
准备升级并进入接收固件状态。
如果收到固件,则验证固件。
验证通过后,将设置跳转标志位。
如果验证失败,则重新输入接收固件状态。
检测到跳转标志位后,检查应用程序是否有效,有效进入应用程序操作,并在无效时进入接收固件状态。
如果未按下任何按钮,请检查是否有升级标志,如果是,请分析下载区域中的新固件,通过解压缩算法和差分算法修改并覆盖旧固件,设置跳转标志,检查是否存在升级标志。
应用程序有效,然后运行该应用程序。
图4升级过程我相信许多读者已经了解了升级原理和升级过程。
下面描述差分固件的生成。
4.差异软件包的生产如开头章节所述,差异文件用于比较新旧固件,然后取出不同部分作为升级后的固件。
那么,如何才能获得最小的差分固件呢?首先,我们需要知道要升级的MCU闪存的最小擦除单位是多少。
它是512字节,1K,2K或4K吗?这与芯片有关,理论上的划分越精细,最终生成的文件就会越小。
以HC32L196芯片为例,将最小的块单位设置为1K,并将新旧固件划分为1K。
划分的块数由两个固件中最大的一个确定。
不足的一个用0填充,例如新的1。
如果固件为35.3K,旧固件为34K,则最后根据新固件的大小进行划分,即按1K进行划分,并将这两个固件划分为36个块。
除法后