我有一个关于
STM32CubeIDE 生成的链接描述文件的一般性问题。
大多数情况下,STACK 和 HEAP 一起放置在“相同”的内部 SRAM 中(参见 .user_heap_stack 示例部分以进行演示)。
注意:是的,区域有可能重叠,但这是我不想在这里讨论的事情。
._user_heap_stack :
{
. =对齐(8);
提供(结束=。);
提供 (_end = .);
. =。+ _Min_Heap_Size;
. =。+ _Min_Stack_Size;
. =对齐(8);
} > RAM_D1
我想将一些关键数据、静态变量等以及 STACK 指针放入 DTCRAM 区域。然而,堆在我们的应用程序中并没有被如此频繁地使用,因此我想把它放在一个较慢的区域,例如 RAM_D2/3。
我想这应该是可能的,对吧?
如果我这样做,我假设我可以摆脱链接描述文件中的“. = . + _Min_Stack_Size;”语句,因为堆栈现在与堆分离了?
此外,我假设我还需要修改 sbrk() 函数,它是 malloc 调用的基本部分,因为对从 STACK handling 派生的链接器符号有一些依赖性。那是对的吗?
我们是否有一个可用的工作示例来处理 STACK 和 HEAP 的解耦?