将蓝牙协议栈放RAM运行

wangbing · 13次点击 · 1天前
  • 测试SDK版本

V1_0_2168(还未取得SDK的同学们可以联系我司业务或者FAE获取最新版本SDK)。

  • 测试工程

    ble_app_simple_nonrtos

  • 关键改动代码见附件。




这里主要说明SCT和Keil工程文件中的几个关键改动点
1 如果RAM使用超过128KB,需要使用OM6629芯片,那么Keil工程C/C++ Preporcessor Symbols中的OM6627X=1去掉或者改为OM6627X=0

image.png

2 SCT文件中将

libblectlr_1peripheral.lib

libblehost_full.lib

libcpft.lib

中的所有的.o文件放到RAM_CODE执行

主要是如下:

pm.o (+RO)
bb*.o (+RO)
dbg.o (+RO)
hci*.o (+RO)
ll*.o (+RO)
ob*.o (+RO)
ebh*.o (+RO)
omble*.o (+RO)
lib_cpft.o (+RO)

另外有几个.c文件对应的内容也要放入RAM

main.o (+RO) ; 建议放,如果项目代码变更后这里面没有BLE相关的代码,则可以不放
evt*.o (+RO)
pm.o (+RO)
ER_RAM __RAM_RO_BASE + ImageLimit(RW_EM_RAM) - __RAM_BASE ALIGN 4 {

    *.o(RAM_CODE)
    *.o(RAM_CODE.*)
    *.o(RAM_RODATA)
    *.o(RAM_RODATA.*)

    ; comment the following line to restore the ble stack contents to the original
    ; SDK version.
    main.o (+RO)
    evt*.o (+RO)
    pm.o (+RO)
    bb*.o (+RO)
    dbg.o (+RO)
    hci*.o (+RO)
    ll*.o (+RO)
    ob*.o (+RO)
    ebh*.o (+RO)
    omble*.o (+RO)
    lib_cpft.o (+RO)
    
  }

3 SCT文件中的可能会遇到的问题

image.png


4 将单连接库协议栈放到RAM中后,协议栈大约占用86KB。


5 将协议栈放到RAM运行和不放RAM运行的功耗细节对比

下图为协议栈放RAM的功耗全局
92323a9e54b846f42960773c124ee0e5.png


下图为协议栈放Flash的工具全局

image.png

总的来说,以上是1秒的连接间隔,协议栈栈运行在Flash和协议栈运行RAM功耗区别不大,以2分钟为时间窗口。协议栈运行到Flash比运行在RAM平均电流仅仅高出1.4uA。

ble_stack_in_ram-202510141899.zip
被收藏 0  ∙  0 赞  
加入收藏
点赞
0 回复  
善言善语 (您需要 登录 后才能回复 没有账号 ?)

请先登录网站