LAT1239
Local Application Tips
LAT1239 Rev 1.0 Feb. 2023
简谈 BlueNRG-LP -LPS 的代码空间优化
关键字:OTABlueNRG,静态协议, 协议栈裁剪,BLE
1.引言
客户在使用 BlueNRG-LP/LPS 芯片时,增加 OTA 服务后常常反馈说,编译代码区域超空间了,
需要帮忙优化一下。后文主要通过下列步骤进行分析和优化 BlueNRG-LP/LPS 的代码空间:
a. 通过分析 BlueNRG-LP/LPS OTA 方式,让客户可以选择合适的方式;
b. 通过整体分析 BlueNRG-LP/LPS 链接文件(*.icf/*.sct/*.ld)了解默认工程的存储分布;
c. 通过裁剪协议栈,选择合适的协议栈功能,优化 BlueNRG-LP/LPS 的代码空间;
d. 通过使用静态协议栈,进一步优化 BlueNRG-LP/LPS 的代码空间;
e. 其他方案;
总的来说通过两个维度来节省空间
一个是协议栈的裁剪维度:主要是通过修改宏配置实现编译对应应用需要的协议栈。
另一个是 OTA 和静态协议栈的维度:OTA 和静态协议栈的选择流程图如下图所示
LAT1239
LAT1239 - Rev 1.0 page 2/13
2.BlueNRG-LP/BlueNRG-LPS OTA
2.1 OTA 的框架
手机或者电脑做 GATT Client,给带 OTA 服务
的设备升级。
2.2 官方提供的 OTA 方式
默认提供的 OTA 应用和协议栈编译在一个固件上。
a. 不带备份的(右图中的右半部分)
升级服务程序在 Boot (OTA Service manager)
省空间(存放了 2 份协议栈,1 份应用)
管理简单(只需管理一份应用
b. 带备份的(右图中的左半部分)
升级服务程序在应用端
消耗空间(存放了 2 份协议栈,2 份应用)
管理稍微麻烦(需要管理两份应用,Lower 域应用
不能放置 Higher 区域运行)
安全
a. 不带备份的方式由以下组件构成:
BLE_OTA_ServiceManager+ application
b. 带备份的由以下组件构成:
BLE_OTA_ResetManager +Lower Application (with BLE OTA service) or
BLE_OTA_ResetManager + Higher Application (with BLE OTA service)
对应在 SDK 中工程和配置如下图所示
a. BLE_OTA_ServiceManager 配合 BLE_SerialPort 中的 Sever_Use_OTA_serviceManager
b. BLE_OTA_ResetManger 配合 BLE_SerialPort 中的 Service_LowerApp_OTA 或者
Service_LowerApp_OTA 使用