Page 1 of 1

动态删除组件所使用RAM区域

Posted: Fri Dec 16, 2022 8:32 am
by pancrazio
缘由

我们最近添加了 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)
如果这个方案不可行或者有其他更好的方案,也请各位大佬不吝赐教