• 資料介紹
    • 引言
    • BlueNRG-LP/BlueNRG-LPS 的 OTA
    • BlueNRG-LP/LPS 的存儲分析
    • 通過協(xié)議棧的初步裁剪與自定義優(yōu)化空間
    • 協(xié)議棧的進一步裁剪:使用靜態(tài)協(xié)議棧
    • 優(yōu)化后空間仍不足的其他方法
  • 資料預(yù)覽
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

LAT1239 簡談BlueNRG-LP和-LPS的代碼空間優(yōu)化

03/25 13:58
441
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

LAT1239 簡談BlueNRG-LP和-LPS的代碼空間優(yōu)化

1.71 MB

引言

客戶在使用 BlueNRG-LP/LPS 芯片時,增加 OTA 服務(wù)后常常反饋說,編譯代碼區(qū)域超空間了,需要幫忙優(yōu)化一下。后文主要通過下列步驟進行分析和優(yōu)化 BlueNRG-LP/LPS 的代碼空間:

  1. 通過分析 BlueNRG-LP/LPS 的 OTA 方式,讓客戶可以選擇合適的方式;
  2. 通過整體分析 BlueNRG-LP/LPS 的鏈接文件(*.icf/*.sct/*.ld)了解默認工程的存儲分布;
  3. 通過裁剪協(xié)議棧,選擇合適的協(xié)議棧功能,優(yōu)化 BlueNRG-LP/LPS 的代碼空間;
  4. 通過使用靜態(tài)協(xié)議棧,進一步優(yōu)化 BlueNRG-LP/LPS 的代碼空間;
  5. 其他方案;

總的來說通過兩個維度來節(jié)省空間:一個是協(xié)議棧的裁剪維度:主要是通過修改宏配置實現(xiàn)編譯對應(yīng)應(yīng)用需要的協(xié)議棧。

BlueNRG-LP/BlueNRG-LPS 的 OTA

BlueNRG-LP/LPS 的存儲分析

Linker 中可定義一些宏、用于指定鏈接腳本文件所需的配置。這些宏定義不作用于.c文件或者.h文件,只作用于鏈接文件(.icf 或者.sct 或者 *.ld)。

通過協(xié)議棧的初步裁剪與自定義優(yōu)化空間

SDK 中默認提供了 4 種默認配置的協(xié)議棧加一種自定義的協(xié)議棧配置(BLE_STACK_CUSTOM_CONF)。

協(xié)議棧的進一步裁剪:使用靜態(tài)協(xié)議棧

ST 官方 SDK 中已經(jīng)提供了靜態(tài)協(xié)議棧的 Demo,分為協(xié)議棧工程和應(yīng)用工程兩部分,路徑為:

C:Usersuser nameSTBlueNRG-LP DK 1.x.xProjectsBLE_ExamplesBLE_StaticStack

靜態(tài)協(xié)議棧工程默認提供了 4 種配置:

  • Release
  • Basic
  • OTA_BTL_ResetManager
  • OTA_BTL_ResetManager_Basic

C:Usersuser nameSTBlueNRG-LP DK 1.x.0ProjectsBLE_ExamplesBLE_SensorDemo_StaticStack

  • Release
  • LowerApp_OTA
  • HigherApp_OTA

優(yōu)化后空間仍不足的其他方法

如果使用靜態(tài)協(xié)議棧和空間仍然不足,可以考慮將一些常用而不需修改的通用模塊編譯進協(xié)議棧的工程。如果空間仍然差距比較遠則考慮用片外 Falsh 或者選用 STM32WB 系列,再或者使用 STM32+協(xié)處理器模式。

資料預(yù)覽

相關(guān)推薦