动态删除组件所使用RAM区域
Posted: Fri Dec 16, 2022 8:32 am
缘由
我们最近添加了 Blufi 配网的功能,但是内存不够了(准确的说是在运行其他应用程序时堆里面分配不出来空间)。
为了解决这个问题我们考虑了以下两种方案:
1. 外挂SRAM
2. 由于只有启动时才有可能会配网(功能设定是这样),所以想在配网完成后,删除Blufi所占用的那一块RAM
基于成本考虑,倾向于第二种方案。
问题
于是我准备修改组件的链接器片段文件以铆钉这块RAM区的位置,在不使用蓝牙的时候将这块区域删除并重新挂载到堆空间,但是我修改后的组件链接器片段总是不能通过编译,希望大家能帮忙看看怎么回事。
如果这个方案不可行或者有其他更好的方案,也请各位大佬不吝赐教
我们最近添加了 Blufi 配网的功能,但是内存不够了(准确的说是在运行其他应用程序时堆里面分配不出来空间)。
为了解决这个问题我们考虑了以下两种方案:
1. 外挂SRAM
2. 由于只有启动时才有可能会配网(功能设定是这样),所以想在配网完成后,删除Blufi所占用的那一块RAM
基于成本考虑,倾向于第二种方案。
问题
于是我准备修改组件的链接器片段文件以铆钉这块RAM区的位置,在不使用蓝牙的时候将这块区域删除并重新挂载到堆空间,但是我修改后的组件链接器片段总是不能通过编译,希望大家能帮忙看看怎么回事。
Code: Select all
[sections:deletable]
entries:
.dram0+
[scheme:deletable_scheme]
entries:
deletable -> dram0_data
[mapping:name]
archive: libbt.a
entries:
* (noflash);
rodata -> dram0_data KEEP() SORT() ALIGN(8) SURROUND(my_sym)