难度:★★
本文首发于我的嵌入式技术号「OneChan讲Soc嵌入式」,未经授权禁止转载。
第一篇我们聊过,Cortex-M3 上电后硬件自动做了三件事:
- 从
0x00000000取栈指针,写入 MSP。 - 从
0x00000004取复位入口,写入 PC。 - 从 PC 指向的地址开始取指令。
当时我们把它当作一个“既定事实”来用。
但你有没想过:为什么偏偏是 0x00000000 和 0x00000004? 为什么不是 0x00001000 和 0x00001004?为什么栈指针在前,复位入口在后?如果这两个地址是错的,CPU 还有救吗?
今天这篇文章,就来拆开这两个地址背后的硬连线逻辑。它的答案,牵出了 Cortex-M3 异常处理机制最底层的三条铁律。
一、这不是软件规定,是硬件连线
先说清一个根本点:从 0x00000000 取 SP、从 0x00000004 取 PC,不是任何程序代码实现的,而是 CPU 内核里的硬连线逻辑。
复位信号释放后,CPU 的数字逻辑电路自动执行以下时序:
- 周期 1:把
订阅专栏 解锁全文

408

被折叠的 条评论
为什么被折叠?



