【发布时间】:2016-12-24 00:57:09
【问题描述】:
我正在 ARM Cortex-M 微控制器上开发一个应用程序,该微控制器具有两个 RAM 组 à 64kB。在内存映射中,第一个 bank 紧随其后的是第二个 bank。
内存库目前在我的链接描述文件中分为两个区域。第一个区域包含.bss 和.data 部分。第二个银行用于.heap 和.stack,每个只占用 1kB(我在 FreeRTOS 中使用不同的堆栈,它也管理自己的堆)。
我的问题是,.bss 对于第一家银行来说太大了。因此,我想将其中的一些内容转移到第二家银行。
实现此目的的一种方法是创建一个新部分,我们称之为.secondbss,它与第二个银行相关联。然后可以使用__attribute__((section(".secondbss"))) 将单个变量添加到此部分。
我不使用这个解决方案的原因是
我真的很想保持我的源代码的可移植性
可能有很多变量需要此属性,我不想为每个变量选择部分
有没有更好的解决方案?我已经将两个内存视为一个区域,但我不知道如何防止链接器在两个存储区之间的边界上错位数据。
如何在不使用__attribute__ 标志的情况下解决我的问题?
谢谢!
【问题讨论】: