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

STM32L452RE的差分升级能力构建

[复制链接]
eefishing 发布时间:2019-10-2 12:01
在上一篇中,介绍了基于移远BC28的STM32+NB-IOT的OTA案例分享,以移远BC28+STM32L053C8为例,来演示如何利用艾拉比的差分技术通过NB网络升级STM32的APP固件,详见:基于移远BC28的STM32+NB-IOT的OTA案例分享6 n$ v3 R+ I* i7 T+ {3 Y9 G" P' a

2 {4 t. o- k  x7 \7 b
本案例将展示,在STM32L452RE这颗MCU上如何将艾拉比的差分升级功能,移植入STM32L452RE的bootloader中,从而使STM32L452RE能够拥有差分升级的能力。
6 s4 b9 v- `2 h3 X2 t8 A
差分升级的原理:
! A7 V& ~. d$ T( \' K
差分算法的基本思想是求解新文件和老文件的差的最优解,并使用压缩算法生成差分包;升级时就可以在老文件的基础上应用差分包进行升级。用形象的图像表达如下:

$ }8 N+ q8 k, ~6 C) Q; u; S
1.jpg
% H; [* s* ^% J$ k4 M+ p. u5 k
艾拉比一直致力于差分算法的研究和开发,并且独创了一种对差分中间数据混合打包压缩的技术。目前,艾拉比在该领域已经有三项国家发明专利。

& A; D4 u7 g/ u
艾拉比算法特点:

1 J6 w2 A3 z% P9 p$ W& {( S
1. 自适应确定差分方向。
2. 对于生成的中间数据使用艾拉比的 “整数数组的混合打包压缩技术”。
3. 差分包体积小,比公开算法得到的差分包小30~90%。
4. 升级速度快,升级的速度是公开算法的2至3倍。
5. 资源消耗少,Lite版算法最低要求RAM 2KB。
' M. G5 K. b9 R9 H0 {! R
代码移植:

; _7 a9 z% N% s, _- F2 w6 X1 r7 _2 B
我们通过STM32CubeMX生成STM32L452RE-Nucelo这个工程代码,然后我们在KEIL中打开这个工程。
1 k  x6 y* B' n3 v, z7 G& g6 g6 f
1. C文件移植:
! T( s* [) N, }& e2 }
2.jpg
/ s6 F5 m- s. ^: _* Y  H; _
在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
: J- }) A& _- m$ d2 u2 s
2. 库文件移植:
" h  N4 K) _& Z' P
3.jpg
! _5 R* l$ q5 J
1)添加默认库;2)选择库的版本;3)选择默认库脚本。/ a! v1 z# w+ [! V% W+ \* C
4 M6 q. V2 W1 _, Q: x
3. 头文件路径添加:

6 K3 k. K) v* X9 ?0 }+ u
将..\..\Abup\inc,..\..\Abup\Wosun\inc,..\..\Abup\Wosun\inc\lzma, ..\..\Abup\lusun\inc, ..\..\Abup\inc\BL头文件路径加入项目工程头文件路径中。
' {' f9 Y( m0 i. @/ p0 I! ^/ a9 z
4.jpg
% K5 e% }9 m; C/ [0 E
4. 代码的修改:

( `$ \5 B# @3 t5 V0 k' Z* b! j
main.c中添加如下代码
; ?" M* [/ Y- D( X5 F* S8 d
5.jpg

. ?3 P3 i; E% j* S
5. 代码空间的配置:
- d* Z4 f! g; K9 `% g( A+ W
6.jpg
7.jpg
8.jpg
' |, t3 s) W$ A! v1 x3 P
配置需同ABUP_FLASH_BASE_ADDR、ABUP_BL_SIZE等宏一致。
& ]- I" N& g% q$ a
差分包的制作:

& n5 x2 F+ ^3 M) K* D7 P0 t
在代码移植完成后,我们需要制作差分包,并验证这个差分包是否能够升级成功。我们使用的是艾拉比的在线差分工作来这个差分包

1 K8 H+ b- U6 E9 Q. p: n! P1 O
1.在KEIL中配置自动生成制作差分包使用的软件包
- m- X2 u- x6 o; c
9.jpg

9 r8 U6 x; x8 A
abup.bat参数说明:第一个是生成bin工具目录,第二个是压缩工具目录,第三个是编译文件夹,生成压缩包名为:版本号_日期_时间.zip
- Z% K2 A1 Z7 ?0 ^
2.登录到艾拉比的差分工具,将目标版本和源版本两个软件包提交给查分工具,制作生成差分包。
5 G- l1 O4 F# l, ?5 A
. ]+ V$ `  U9 J
11.jpg

+ J% P5 A3 {4 J- n8 v
验证差分包:

. \2 h* y- J0 t4 t$ O
在差分包制作成功后,我们将差分包通过设备的联网能力下载到设备上,下载完成后软重启设备,进入Bootloader开始升级。

& v* v8 U5 R8 \. ^
12.jpg
13.jpg

2 x0 k1 z  t9 D
同时我们也可以在串口工具中看到整个Bootloader运行升级程序的过程。
5 p  R& E1 `" v; i
14.jpg

* s' \9 Z' |" A
当串口工具中打印出Update Suss后,表明升级成功。通过一系列工作我们也成功的为STM32L452RE构建了差分升级能力。
; G7 Z( I' D! a1 l
4 ?0 V5 U9 X; J  p8 f
收藏 评论0 发布时间:2019-10-2 12:01

举报

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