你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32L452RE的差分升级能力构建

[复制链接]
eefishing 发布时间:2019-10-2 12:01
在上一篇中,介绍了基于移远BC28的STM32+NB-IOT的OTA案例分享,以移远BC28+STM32L053C8为例,来演示如何利用艾拉比的差分技术通过NB网络升级STM32的APP固件,详见:基于移远BC28的STM32+NB-IOT的OTA案例分享
* v- {% G, Z6 h: i
; T: [5 a. {2 \
本案例将展示,在STM32L452RE这颗MCU上如何将艾拉比的差分升级功能,移植入STM32L452RE的bootloader中,从而使STM32L452RE能够拥有差分升级的能力。
1 j8 D" v! [: D" I0 L7 c, `
差分升级的原理:

. |7 m! Y3 k3 ^: [8 B
差分算法的基本思想是求解新文件和老文件的差的最优解,并使用压缩算法生成差分包;升级时就可以在老文件的基础上应用差分包进行升级。用形象的图像表达如下:

2 h1 z+ c6 g* X8 `- u  @
1.jpg
5 r% m1 W0 A# B% v! r2 K  z1 p
艾拉比一直致力于差分算法的研究和开发,并且独创了一种对差分中间数据混合打包压缩的技术。目前,艾拉比在该领域已经有三项国家发明专利。

4 ^+ T5 I7 K+ _; I) h7 `3 [5 c
艾拉比算法特点:
0 h1 ^- A; ?0 `- E- a
1. 自适应确定差分方向。
2. 对于生成的中间数据使用艾拉比的 “整数数组的混合打包压缩技术”。
3. 差分包体积小,比公开算法得到的差分包小30~90%。
4. 升级速度快,升级的速度是公开算法的2至3倍。
5. 资源消耗少,Lite版算法最低要求RAM 2KB。

& U5 ~+ B6 w3 r1 n$ Y+ N" c
代码移植:
2 }8 ^# {: l. p1 b! [8 |
我们通过STM32CubeMX生成STM32L452RE-Nucelo这个工程代码,然后我们在KEIL中打开这个工程。

% K: S" _1 j- z/ b9 X
1. C文件移植:

7 t5 k& z5 W2 l) j. s& M4 R' N$ M
2.jpg

( o4 L7 J, \* c; u1 g% Y
在STM32L452RE-Nucelo工程目录下新建Abup/HAL文件目录,abup_bl_main.c,adups_bl_main.c,adups_bl_flash.c,abup_hal_flash.c,abup_hal_uart.cabup_hal.c

  t  K4 {2 X$ T; b5 E4 c) g
2. 库文件移植:
: u2 X- f: k( d$ b
3.jpg
$ T" {2 }+ C) U" D1 |2 @
1)添加默认库;2)选择库的版本;3)选择默认库脚本。
6 B+ x! a# T# ?$ }

: |5 q. V% G) _0 [2 A5 Q! w
3. 头文件路径添加:

9 v. q2 k% V& d
将..\..\Abup\inc,..\..\Abup\Wosun\inc,..\..\Abup\Wosun\inc\lzma, ..\..\Abup\lusun\inc, ..\..\Abup\inc\BL头文件路径加入项目工程头文件路径中。

' ?' F( t3 y, d
4.jpg
% h! v6 a. S/ I$ m3 H) _. O3 U
4. 代码的修改:
1 }& \; l' Y& u* [
main.c中添加如下代码
* @0 o2 ]' J3 \& [' Q7 N
5.jpg

9 ^8 \. A$ _# L$ a% ~/ C
5. 代码空间的配置:

( `6 I: E1 }7 d+ N2 b
6.jpg
7.jpg
8.jpg

3 x4 y; P6 G5 R1 Q
配置需同ABUP_FLASH_BASE_ADDR、ABUP_BL_SIZE等宏一致。

( \. Z, I( |6 r8 V) R) l+ o7 t
差分包的制作:
* a, K( b- t1 E9 W: N, g
在代码移植完成后,我们需要制作差分包,并验证这个差分包是否能够升级成功。我们使用的是艾拉比的在线差分工作来这个差分包

. [+ t% Q1 q% J
1.在KEIL中配置自动生成制作差分包使用的软件包

2 S4 {( K4 U1 Z( ^. H0 W/ N6 \
9.jpg

* f9 z3 _& J3 J
abup.bat参数说明:第一个是生成bin工具目录,第二个是压缩工具目录,第三个是编译文件夹,生成压缩包名为:版本号_日期_时间.zip
9 g1 n2 o; D  ]5 i
2.登录到艾拉比的差分工具,将目标版本和源版本两个软件包提交给查分工具,制作生成差分包。
- q& B% n$ V; s4 X5 w/ ~

. k( U* M: ~( U* ^
11.jpg

6 N5 q  `( B$ @( W' C: }/ M* d6 f0 x
验证差分包:

* j. D4 y- h# ]/ P9 ?0 ^
在差分包制作成功后,我们将差分包通过设备的联网能力下载到设备上,下载完成后软重启设备,进入Bootloader开始升级。

& ~6 @2 Y# {. ]
12.jpg
13.jpg
# T' E4 z; X* C9 {4 L& r/ S/ k% U/ x
同时我们也可以在串口工具中看到整个Bootloader运行升级程序的过程。

, ?: s2 k2 y& d  ^* ?' ?6 l* \- R
14.jpg

% V9 J/ n: P1 E1 J$ G! T
当串口工具中打印出Update Suss后,表明升级成功。通过一系列工作我们也成功的为STM32L452RE构建了差分升级能力。
# J+ t$ p! h1 H1 I& u
; p, _' o" F% n% h1 k+ o6 j
赞 收藏 评论0 发布时间:2019-10-2 12:01

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版