堆栈基本内存地址

时间:2015-04-18 00:38:19

标签: gcc arm embedded cortex-m

是否有一种以编程方式查找堆栈基指针的简单方法?我正在为STM32F4微控制器编写代码并使用arm-none-eabi-gcc编译器进行编译。

当我使用与Keil uVision 5一起打包的Arm C编译器时,我可以使用ABI函数__user_initial_stackheap()来检索堆栈库,但这似乎不适用于gcc。

1 个答案:

答案 0 :(得分:1)

这取决于如何设置不同的内存部分(通常在链接描述文件中)。例如,STM32F4的链接描述文件可以将堆栈基础定义为:

__stack = ORIGIN(RAM) + LENGTH(RAM);

然后可以使用

在C代码中访问链接器脚本变量
extern uint32_t __stack;

void foo() {
  uint32_t stack_base = &__stack;
}