ARM Cortex-M底层技术(十二)KEIL MDK 分散加载-堆栈与预处理器

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

分散加载-堆栈与预处理器


在分散加载中处理堆栈:

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

                     

  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值