Cortex-M3:为什么复位后 CPU 自动取 0x00000000 作为 SP,0x00000004 作为 PC?

难度:★★
本文首发于我的嵌入式技术号「OneChan讲Soc嵌入式」,未经授权禁止转载。


第一篇我们聊过,Cortex-M3 上电后硬件自动做了三件事:

  1. 0x00000000 取栈指针,写入 MSP。
  2. 0x00000004 取复位入口,写入 PC。
  3. 从 PC 指向的地址开始取指令。

当时我们把它当作一个“既定事实”来用。

但你有没想过:为什么偏偏是 0x000000000x00000004 为什么不是 0x000010000x00001004?为什么栈指针在前,复位入口在后?如果这两个地址是错的,CPU 还有救吗?

今天这篇文章,就来拆开这两个地址背后的硬连线逻辑。它的答案,牵出了 Cortex-M3 异常处理机制最底层的三条铁律。


一、这不是软件规定,是硬件连线

先说清一个根本点:0x00000000 取 SP、从 0x00000004 取 PC,不是任何程序代码实现的,而是 CPU 内核里的硬连线逻辑。

复位信号释放后,CPU 的数字逻辑电路自动执行以下时序:

  1. 周期 1:把
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

OneChan讲Soc嵌入式

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值