[STM32F1] 复位后取MSP和PC初始值

[复制链接]
3910|3
 楼主| st316 发表于 2014-8-23 09:05 | 显示全部楼层 |阅读模式
我在看《Cortex-M3权威指南》的过程中,有个问题没想明白,大伙能给解释下不?

3.8 复位序列
在离开复位状态后,CM3做的第一件事就是读取下列两个32位整数的值:
  • 从地址0x0000 0000处取出MSP的值。
  • 从地址0x0000 0004处取出PC的初始值——这个值是复位向量,LSB必须是1。然后从这个值所对应的地址处取指。

我检查了工程编译后生成的HEX文件,文件以0x0800 0000作为起始地址,确实是依次存放着MSP、Reset_Handler以及其它的中断向量表。
可是,地址却并不是0x0000 0000啊?这两块区域之间,是有什么映射关系吗?如果有,那又是在什么时候什么地方处理的?

谢谢了!
airwill 发表于 2014-8-23 17:44 | 显示全部楼层
是的, 区别于其他的 Cortex-M3, STM32 的 FLASH 地址并不是0x0000 0000啊, 而是0x0800 0000作为起始地址.

这两块区域之间,是有什么映射关系吗?如果有,那又是在什么时候什么地方处理的?
当然有. 不过这是芯片内部硬件做的映射, 有三种映射方式. 详细解释不如请看编程参考手册的 BOOT 设置吧.
 楼主| st316 发表于 2014-8-24 19:37 | 显示全部楼层
airwill 发表于 2014-8-23 17:44
是的, 区别于其他的 Cortex-M3, STM32 的 FLASH 地址并不是0x0000 0000啊, 而是0x0800 0000作为起始地址.

...

谢谢了!:handshake
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

167

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部