是否有一种以编程方式查找堆栈基指针的简单方法?我正在为STM32F4微控制器编写代码并使用arm-none-eabi-gcc编译器进行编译。
当我使用与Keil uVision 5一起打包的Arm C编译器时,我可以使用ABI函数__user_initial_stackheap()
来检索堆栈库,但这似乎不适用于gcc。
答案 0 :(得分:1)
这取决于如何设置不同的内存部分(通常在链接描述文件中)。例如,STM32F4的链接描述文件可以将堆栈基础定义为:
__stack = ORIGIN(RAM) + LENGTH(RAM);
然后可以使用
在C代码中访问链接器脚本变量extern uint32_t __stack;
void foo() {
uint32_t stack_base = &__stack;
}