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

STM32L452RE的差分升级能力构建

[复制链接]
eefishing 发布时间:2019-10-2 12:01
在上一篇中,介绍了基于移远BC28的STM32+NB-IOT的OTA案例分享,以移远BC28+STM32L053C8为例,来演示如何利用艾拉比的差分技术通过NB网络升级STM32的APP固件,详见:基于移远BC28的STM32+NB-IOT的OTA案例分享& c( M" w; g& e9 c2 @( {

; G6 v, `# Z) v3 K6 V3 A! U+ ^
本案例将展示,在STM32L452RE这颗MCU上如何将艾拉比的差分升级功能,移植入STM32L452RE的bootloader中,从而使STM32L452RE能够拥有差分升级的能力。

9 f$ }, M- c1 }$ n* I' T
差分升级的原理:

4 f: _0 Y2 D8 e* b# M5 \; u4 [
差分算法的基本思想是求解新文件和老文件的差的最优解,并使用压缩算法生成差分包;升级时就可以在老文件的基础上应用差分包进行升级。用形象的图像表达如下:
# Y* K; R1 f$ |" p# g8 C* N
1.jpg
% X; ?2 U. F  G$ t! w
艾拉比一直致力于差分算法的研究和开发,并且独创了一种对差分中间数据混合打包压缩的技术。目前,艾拉比在该领域已经有三项国家发明专利。

! C- i" y3 }6 S: a& w
艾拉比算法特点:

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

2 b+ n8 ?; ^9 G$ N$ W2 G
代码移植:
- ^$ i4 |. e) y% i8 L3 t" L' J: l
我们通过STM32CubeMX生成STM32L452RE-Nucelo这个工程代码,然后我们在KEIL中打开这个工程。

* a: q# f' S2 O
1. C文件移植:
" B2 e% A7 g0 X4 d! ?6 O# ~
2.jpg
2 V7 B8 q, C0 H' p
在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

' p# W& p. \7 O7 y; L. ]
2. 库文件移植:

, v, F5 e2 Y8 z5 w2 s! R% x
3.jpg

/ |$ [* u: W0 g# M8 R, T3 `( O1 K
1)添加默认库;2)选择库的版本;3)选择默认库脚本。
' M; T: L/ \- w' `
6 P7 P1 E( Q1 z  y+ X; m
3. 头文件路径添加:

7 L# W0 V- p5 D- t
将..\..\Abup\inc,..\..\Abup\Wosun\inc,..\..\Abup\Wosun\inc\lzma, ..\..\Abup\lusun\inc, ..\..\Abup\inc\BL头文件路径加入项目工程头文件路径中。
& t* x" Z6 q( k, u
4.jpg
2 U" e8 z  K6 V( ]) n; D8 J
4. 代码的修改:
- u9 w& E0 N# ^0 M% @/ {; L
main.c中添加如下代码
$ y9 X4 {; k5 ]. k8 c  y
5.jpg
) j! ~- Y& \8 j9 l
5. 代码空间的配置:

) {& _9 B' S1 p, Q5 J+ ?% P
6.jpg
7.jpg
8.jpg

# H! x9 w) }, m$ o1 g4 E3 n6 d
配置需同ABUP_FLASH_BASE_ADDR、ABUP_BL_SIZE等宏一致。
) `" J/ c& G# F. `5 j+ R
差分包的制作:

4 C% j- j( J0 H9 }3 {7 V' d" |
在代码移植完成后,我们需要制作差分包,并验证这个差分包是否能够升级成功。我们使用的是艾拉比的在线差分工作来这个差分包

3 Q2 ^  P: X; N- e( K2 q: {5 N
1.在KEIL中配置自动生成制作差分包使用的软件包
* d+ S5 H9 K8 O
9.jpg

3 c, e1 u3 |- ]1 k" N. N$ \& \, f
abup.bat参数说明:第一个是生成bin工具目录,第二个是压缩工具目录,第三个是编译文件夹,生成压缩包名为:版本号_日期_时间.zip

, w7 n6 R% [; r- X4 V% M
2.登录到艾拉比的差分工具,将目标版本和源版本两个软件包提交给查分工具,制作生成差分包。

/ S. B  E/ @% _* e

2 f' ]# n( m) t: ]8 R* ?
11.jpg

, E6 {# p9 ?2 ]
验证差分包:

; \7 X0 }2 h) n7 j0 w: D# l
在差分包制作成功后,我们将差分包通过设备的联网能力下载到设备上,下载完成后软重启设备,进入Bootloader开始升级。

! F9 k8 k' \  X0 Q+ @7 p( B! p: D
12.jpg
13.jpg

% S$ e6 j: N, y, G3 f& B
同时我们也可以在串口工具中看到整个Bootloader运行升级程序的过程。

. ~$ |0 R! D4 I- y+ n) {
14.jpg

) x0 _) M( {7 _* T/ C& l
当串口工具中打印出Update Suss后,表明升级成功。通过一系列工作我们也成功的为STM32L452RE构建了差分升级能力。
" S7 Q8 t: {! G1 I2 @2 G2 q

' p; x3 P8 z' C; x
收藏 评论0 发布时间:2019-10-2 12:01

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版