深入理解MCU启动原理
- 2025-07-04 11:46:27

CPU上电启动后被设计为去地址0x00000000位置处读取代码;首先会连续读取两个字,分别是栈指针初始值和复位异常处理函数的地址;然后跳去执行复位异常处理函数。


当然在一些早期的ARM处理器设计中,如Arm7TDMI,复位后会直接读取0地址处的代码进行执行,由软件初始化栈指针,0地址处存放的直接就是中断处理函数,而不是函数地址。
所以我们可以有理由推测出,第一个字是栈地址是因为接下来的复位中断处理函数涉及函数跳转,可能已经需要存放内容在栈里了。
2. 0x0地址处是bootROM代码吗,还是用户bootloader代码?


3. 类似Cortex-M3/M4是如何保证Flash起始地址是栈指针和复位异常处理函数指针的?

4. MCU有可能不从0地址开始读代码吗?

近期好文推荐:

声明:本文内容及配图由入驻作者撰写或合作网站授权转载。文章观点仅代表作者本人,不代表科技区角网立场。仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
点击这里
扫码添加微信

- 点赞 0
-
分享
微信扫一扫
-
加入群聊
扫码加入群聊