一个关于STM32CubeIDE生成的链接器脚本的通用问题。
大多数情况下,STACK(栈)和HEAP(堆)会被放置在"同一块"内部SRAM中(可通过.user_heap_stack段示例进行演示说明)。
._user_heap_stack :
{
. = ALIGN(8);
PROVIDE ( end = . );
PROVIDE ( _end = . );
. = . + _Min_Heap_Size;
. = . + _Min_Stack_Size;
. = ALIGN(8);
} > RAM_D1
我想将一些关键数据、静态变量等以及栈指针放入DTCRAM区域。应用程序中堆的使用并不频繁,因此将其放入速度较慢的区域,例如RAM_D2/3。
感觉是可行的吧?
如果这样做,我认为可以移除链接器脚本中的". = . + _Min_Stack_Size;"语句,现在栈与堆已分离了?
我认为还需要修改sbrk()函数,这是malloc调用的基础部分,因为存在一些与栈处理相关的链接器符号依赖。这样理解对不?
是否有示例来处理这种栈与堆分离?
|
|