Eng*_*999 5 c embedded microcontroller startup stack-pointer
对于有C启动代码的微控制器和嵌入式系统来说,C启动代码的功能之一就是初始化堆栈指针。
这个初始栈指针地址和C启动代码一般是芯片厂商定义和提供的吗?
还是由我们作为固件/软件开发人员手动修改或创建 C 启动代码并指定堆栈指针?这部分让我感到困惑。
每个架构都按照自己的方式行事。ARM Cortex uC 将初始堆栈指针位置存储为向量表中的前 32 位值。当 uC 启动时,该值由硬件加载。所以这个地址是程序员完全可以控制的。
然后启动例程可以更改它或设置双堆栈(一个用于线程,另一个用于特权模式)。