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

Change Stack Location for Cortex M3 in Startup.s file

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

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

Stack_Size      EQU     0x00000200

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

有可能将堆栈定位在一个特殊的地址,尤其是在 RAM 段的开头?

谢谢。

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

  RW_IRAM1 0x10005000 0x00000200  {  ; STACK
   *(STACK)
  }
  RW_IRAM2 0x10005200 0x00000E00  {  ; RW data
   .ANY (+RW +ZI)
  }