在Startup.s文件中更改Cortex M3的堆栈位置

时间:2016-12-14 16:04:35

标签: stack arm startup cortex-m3

我正在尝试更改用户应用程序的STACK位置。在我的系统中,用户应用程序有自己的RAM部分(数据+堆栈),链接器将STACK放在用户RAM部分的末尾。 但我需要把STACK放在开头而不是结束。

我正在使用Keil uVision IDE并且startup.s文件和startup.s文件没有提供任何更改STACK位置更改位置的选项,可能是链接器隐藏它

Stack_Size      EQU     0x00000200

                AREA    STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem       SPACE   Stack_Size
__initial_sp

可以将STACK定位在特殊地址中,特别是在RAM部分的开头?

感谢。

1 个答案:

答案 0 :(得分:0)

如果我使用分散文件创建RAM两个区域,并且如果我将*(STACK)指令放到第一个区域,则看起来没问题,并且STACK位于用户RAM的启动位置。目前,它解决了我的问题,但可能存在更好的解决方案。 谢谢。

DocumentId