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

STM32L452RE的差分升级能力构建

[复制链接]
eefishing 发布时间:2019-10-2 12:01
在上一篇中,介绍了基于移远BC28的STM32+NB-IOT的OTA案例分享,以移远BC28+STM32L053C8为例,来演示如何利用艾拉比的差分技术通过NB网络升级STM32的APP固件,详见:基于移远BC28的STM32+NB-IOT的OTA案例分享
% a3 o  v$ Y3 b8 z) [) B$ C% r
) a- d/ [8 k. G: n
本案例将展示,在STM32L452RE这颗MCU上如何将艾拉比的差分升级功能,移植入STM32L452RE的bootloader中,从而使STM32L452RE能够拥有差分升级的能力。

( _9 v7 W9 h. q  g- Q
差分升级的原理:
! O$ U6 D2 k; X2 l
差分算法的基本思想是求解新文件和老文件的差的最优解,并使用压缩算法生成差分包;升级时就可以在老文件的基础上应用差分包进行升级。用形象的图像表达如下:
2 G7 q# `, [2 ?$ j9 E0 n: l
1.jpg

( [: s: `. q2 Z, h; N8 g
艾拉比一直致力于差分算法的研究和开发,并且独创了一种对差分中间数据混合打包压缩的技术。目前,艾拉比在该领域已经有三项国家发明专利。

2 o2 h  g% q" K$ p8 E' l3 G
艾拉比算法特点:

: V* O' r! M& V* c
1. 自适应确定差分方向。
2. 对于生成的中间数据使用艾拉比的 “整数数组的混合打包压缩技术”。
3. 差分包体积小,比公开算法得到的差分包小30~90%。
4. 升级速度快,升级的速度是公开算法的2至3倍。
5. 资源消耗少,Lite版算法最低要求RAM 2KB。

4 S% q. N# A7 h; q0 @! u$ t( j
代码移植:
! S' ?9 L/ v0 h8 }
我们通过STM32CubeMX生成STM32L452RE-Nucelo这个工程代码,然后我们在KEIL中打开这个工程。

! d7 V6 _# i* y. J
1. C文件移植:
1 n4 I  n6 b3 C4 n8 C& a* c; m
2.jpg

& ~/ C! G: M( Y3 D4 t/ }
在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

& r5 h4 v1 k2 A9 R) U. x  G
2. 库文件移植:

* O, m6 ~4 O4 K+ l
3.jpg
4 k) L. D* e3 B( S; x5 n/ t( x
1)添加默认库;2)选择库的版本;3)选择默认库脚本。
2 y2 S- {3 \. b

. c& t. l" g- O0 T
3. 头文件路径添加:

* h6 ?9 t3 T( q7 p& c
将..\..\Abup\inc,..\..\Abup\Wosun\inc,..\..\Abup\Wosun\inc\lzma, ..\..\Abup\lusun\inc, ..\..\Abup\inc\BL头文件路径加入项目工程头文件路径中。

* f  [+ }4 h7 L! Y
4.jpg

9 M5 h; b6 Z9 q$ s3 Z( k/ ]$ |0 [
4. 代码的修改:

1 W/ f% K9 [: J5 n$ k7 Z
main.c中添加如下代码
4 x' Y: t, k% d/ K( I: z. J
5.jpg
% i1 q) V' n' X2 v
5. 代码空间的配置:

# E0 l( P% q+ |) p4 w( s
6.jpg
7.jpg
8.jpg

. @: a, n: L3 x( }' w
配置需同ABUP_FLASH_BASE_ADDR、ABUP_BL_SIZE等宏一致。

% z. B" M3 ~7 P( ?0 u% l5 w! j
差分包的制作:

+ k7 Z! W1 a9 O  A  J4 A
在代码移植完成后,我们需要制作差分包,并验证这个差分包是否能够升级成功。我们使用的是艾拉比的在线差分工作来这个差分包

! C4 ?$ }* U' A- I
1.在KEIL中配置自动生成制作差分包使用的软件包
$ `* G% U0 _# S9 w" p; I
9.jpg

5 M& ?& \( Y' ?) C0 A8 K2 ]
abup.bat参数说明:第一个是生成bin工具目录,第二个是压缩工具目录,第三个是编译文件夹,生成压缩包名为:版本号_日期_时间.zip

( a" I" T' P' F9 M8 @
2.登录到艾拉比的差分工具,将目标版本和源版本两个软件包提交给查分工具,制作生成差分包。
1 @2 X  d1 M/ G6 l7 o; X$ c0 G0 n

' Y9 R5 ~& |+ }) q: |5 c  [
11.jpg
8 P  n6 n5 ^$ V4 ~6 J/ M
验证差分包:
0 n5 N2 I5 m2 Y" S5 v6 \8 t
在差分包制作成功后,我们将差分包通过设备的联网能力下载到设备上,下载完成后软重启设备,进入Bootloader开始升级。
& i# V0 t) j# z2 w, G3 G" k" m8 a
12.jpg
13.jpg

8 I5 j; `% \4 O
同时我们也可以在串口工具中看到整个Bootloader运行升级程序的过程。
1 t/ T" J" u) l: W7 t
14.jpg
: x4 n0 i! O1 w1 r8 p
当串口工具中打印出Update Suss后,表明升级成功。通过一系列工作我们也成功的为STM32L452RE构建了差分升级能力。

2 Y3 ]" y# j) P' J' m; J/ s# n- Q- J. F1 B( L" ], ^
收藏 评论0 发布时间:2019-10-2 12:01

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版