• 资料介绍
    • 引言
    • BlueNRG-LP/BlueNRG-LPS 的 OTA
    • BlueNRG-LP/LPS 的存储分析
    • 通过协议栈的初步裁剪与自定义优化空间
    • 协议栈的进一步裁剪:使用静态协议栈
    • 优化后空间仍不足的其他方法
  • 资料预览
  • 相关推荐
申请入驻 产业图谱

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

03/25 13:58
323
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

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

1.71 MB

引言

客户在使用 BlueNRG-LP/LPS 芯片时,增加 OTA 服务后常常反馈说,编译代码区域超空间了,需要帮忙优化一下。后文主要通过下列步骤进行分析和优化 BlueNRG-LP/LPS 的代码空间:

  1. 通过分析 BlueNRG-LP/LPS 的 OTA 方式,让客户可以选择合适的方式;
  2. 通过整体分析 BlueNRG-LP/LPS 的链接文件(*.icf/*.sct/*.ld)了解默认工程的存储分布;
  3. 通过裁剪协议栈,选择合适的协议栈功能,优化 BlueNRG-LP/LPS 的代码空间;
  4. 通过使用静态协议栈,进一步优化 BlueNRG-LP/LPS 的代码空间;
  5. 其他方案;

总的来说通过两个维度来节省空间:一个是协议栈的裁剪维度:主要是通过修改宏配置实现编译对应应用需要的协议栈。

BlueNRG-LP/BlueNRG-LPS 的 OTA

BlueNRG-LP/LPS 的存储分析

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

通过协议栈的初步裁剪与自定义优化空间

SDK 中默认提供了 4 种默认配置的协议栈加一种自定义的协议栈配置(BLE_STACK_CUSTOM_CONF)。

协议栈的进一步裁剪:使用静态协议栈

ST 官方 SDK 中已经提供了静态协议栈的 Demo,分为协议栈工程和应用工程两部分,路径为:

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

静态协议栈工程默认提供了 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

优化后空间仍不足的其他方法

如果使用静态协议栈和空间仍然不足,可以考虑将一些常用而不需修改的通用模块编译进协议栈的工程。如果空间仍然差距比较远则考虑用片外 Falsh 或者选用 STM32WB 系列,再或者使用 STM32+协处理器模式。

资料预览

点赞
收藏
评论
分享
加入交流群
举报

相关推荐

方案定制

去合作
方案开发定制化,2000+方案商即时响应!