分散加载-堆栈与预处理器
在分散加载中处理堆栈:
分散加载机制提供了一种方法,用于指定如何在映像中放置代码和静态分配数据。 应用程序的堆栈和堆是在 C 库初始化过程中设置的。 通过使用特别命名的ARM_LIB_HEAP、ARM_LIB_STACK 或 ARM_LIB_STACKHEAP 执行区,可以调整堆栈和堆的放置。 此外,如果不使用分散加载描述文件,则可以重新实现__user_initial_stackheap() 函数。
堆栈在分散加载中这样配置:
LOAD_FLASH 起始地址 加载域大小
{
...
ARM_LIB_STACK 起始地址 EMPTY -栈大小{ }
ARM_LIB_HEAP 起始地址 EMPTY 堆大小{ }
...
}
我们知道在Cortex-M体系下栈是满递减堆栈(如下图所示),栈的方向是向下生长的,所以要在栈大小的前面加一个减号(注意那个减号);属性是EMPTY。