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

简谈 BlueNRG-LP 和-LPS 的代码空间优化

[复制链接]
STMCU小助手 发布时间:2023-3-16 16:59
1.引言 客户在使用 BlueNRG-LP/LPS 芯片时,增加 OTA 服务后常常反馈说,编译代码区域超空间了,需要帮忙优化一下。后文主要通过下列步骤进行分析和优化 BlueNRG-LP/LPS 的代码空间:
. P* e  p. x/ _  S# o" S" Ba. 通过分析 BlueNRG-LP/LPS 的 OTA 方式,让客户可以选择合适的方式;
- \' j9 e# G' [; H- Lb. 通过整体分析 BlueNRG-LP/LPS 的链接文件(*.icf/*.sct/*.ld)了解默认工程的存储分布;$ [& ~. T! d- g% q: T' f% D
c. 通过裁剪协议栈,选择合适的协议栈功能,优化 BlueNRG-LP/LPS 的代码空间;
6 w" r5 c) ^& u3 w, {$ b3 qd. 通过使用静态协议栈,进一步优化 BlueNRG-LP/LPS 的代码空间;
3 Q' }: G& [: Z. [4 x+ g- S; [e. 其他方案;* j0 L0 I: W8 D9 r9 {$ e, ]" E
2 g1 o. A% U" g3 W2 s

6 t2 @- G6 P! q/ C总的来说通过两个维度来节省空间:6 R: ]9 N2 O$ R! m, |- Z: Y
一个是协议栈的裁剪维度:主要是通过修改宏配置实现编译对应应用需要的协议栈。# f4 m; H' V, J: ]
另一个是 OTA 和静态协议栈的维度:OTA 和静态协议栈的选择流程图如下图所示。
6 K3 u% C4 x( r: m- K, y- {5 }6 m" q7 b* S6 \- O9 L

- |8 i! q9 _% Q# Q 76QWUMMGEBXTK[50LS10JHQ.png
* u% M8 S  P$ x% G8 N' p4 D2 u
3 ~' |1 c0 K0 D2 r7 O

6 }6 G( d( G* r8 R2.BlueNRG-LP/BlueNRG-LPS 的 OTA 4 e; N% |. R) F! q
2.1 OTA 的框架
" E3 k' B) ], A: ~7 M% ^手机或者电脑做 GATT Client,给带 OTA 服务的设备升级。
2 O# k6 L9 N8 S" d- k4 ]( t0 g/ ^$ m/ m9 ^4 f
" K0 s# l; `# S/ g# L3 s; \" W
4WI1SKBC%%UVPH67_3[AMHP.png + c1 [' N3 H1 u1 w  I; Z
! o: R6 V) s! S: z9 q9 a

. ~! ?) L) r- k9 A) T9 l0 H5 w2.2 官方提供的 OTA 方式# Z3 f3 ~. P/ U7 _0 ?$ T& _! R
默认提供的 OTA 应用和协议栈编译在一个固件上。# P! ]* ]3 \( A+ F# f
a. 不带备份的(右图中的右半部分)
5 T) D6 ?' g6 K升级服务程序在 Boot 端(OTA Service manager)。
. O$ q, d, c5 G2 Z$ i' v" r省空间(存放了 2 份协议栈,1 份应用) 管
9 l, r. Z0 F9 y( a) L# @理简单(只需管理一份应用)
+ s% p6 y, I, b$ X7 ?b. 带备份的(右图中的左半部分) + |; N7 C  {- K$ C4 ^
升级服务程序在应用端 - U8 b( p& N2 d) u+ k
更消耗空间(存放了 2 份协议栈,2 份应用)
# O0 A$ |# P7 A" Y管理稍微麻烦(需要管理两份应用,Lower 区域应用不能放置 Higher 区域运行) # l# B9 w+ O2 T* F
更安全$ t$ x% I; B* N* r6 b* @; q
a. 不带备份的方式由以下组件构成:
  }. L9 E7 ^8 w0 Q& }: g) HBLE_OTA_ServiceManager+ application
" y% ^9 W9 o7 |5 \b. 带备份的由以下组件构成:
) w$ s: P; ^+ |0 }BLE_OTA_ResetManager +Lower Application (with BLE OTA service) orBLE_OTA_ResetManager + Higher Application (with BLE OTA service)& e. B' r9 u9 D4 U
对应在 SDK 中工程和配置如下图所示:
! M- g6 B/ N" v, G; z; K6 Ua. BLE_OTA_ServiceManager 配合 BLE_SerialPort 中的 Sever_Use_OTA_serviceManager
* U. [! M* W6 b; \b. BLE_OTA_ResetManger 配合 BLE_SerialPort 中的 Service_LowerApp_OTA 或者Service_LowerApp_OTA 使用
+ W" P; K7 Y* r* L3 {5 N6 R: g7 J  x: m# I; O, Y( D# ~  Y2 \4 k1 K/ D
& ], O3 R( a4 E+ h- m3 X
0AO~QH)4S}DeXZ[}B]O.png 7 t/ {6 Q0 C' ^

' w- N$ Q9 ^6 H

3 X$ ?3 z3 _2 m4 v" ~! \2.3 使用带备份类型 OTA 升级错误变砖头问题
2 k& b3 b' C! r) @; d3 B编译器编译的 Higher Application 如果放置在 Lower Application 的位置,程序无法运行。APP 程序可以知晓当前运行的固件是 Lower 还是 Higher APP。可以在编译固件 Higher Application 和 Lower Application 中加入一些标记,用于给升级工具识别,当前需要下载的是Higher Application 还是 Lower Application 或者是否混用。建议每次发布时两个应用程序都编译生成,不要人为来管理固件,否则容易造成混乱,应该让升级 app 自动选择对应的来升级。' L$ u. {1 |; ]& |  `

# K* {* h! w4 l: }0 N( \5 h& X

; {4 J# q+ ^# V$ M; ? 908B@}CN4%6Y3N_1QN$J3H0.png
3 k6 x' U, `, G1 ^5 E
* I) @1 o0 z0 G( R# U完整版请查看:附件 简谈BlueNRG_LP和_LPS的代码空间优化_v1.0.pdf (1.71 MB, 下载次数: 1)
T403K_KT@{C3OO]N~]VB4X0.png
赞 收藏 评论0 发布时间:2023-3-16 16:59

举报

0个回答

所属标签

相似技术帖

官网相关资源

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