分散加载-堆栈与预处理器
在分散加载中处理堆栈:
分散加载机制提供了一种方法,用于指定如何在映像中放置代码和静态分配数据。 应用程序的堆栈和堆是在 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。

本文详细介绍了在ARM Cortex-M系统中如何使用KEIL MDK的分散加载来配置堆栈和预处理器。堆栈在分散加载文件中通过ARM_LIB_STACK指定,并使用EMPTY属性和负数表示栈大小。预处理器的使用允许在加载文件中包含#define等宏定义,简化地址引用。文中还展示了实际工程中分散加载文件的示例,包括RAM中断向量表、数据区域、堆和栈的配置。
最低0.47元/天 解锁文章
2281

被折叠的 条评论
为什么被折叠?



