STM32 启动疑问

2019-07-21 01:30发布

看了很多资料,现有疑问如下(假设程序从flash启动):

1、第一条指令到底在什么位置?
  无论是网上的博客还是正点的教程,都是复位后从0x08000000取第一条指令,但是看内核编程手册,MSP和PC都是从0x00000000取指(0x08000000被映射到0x00000000),那么到底从什么地方取指?希望知道的大神给点资料解惑。


2、中断发生后,PC指针指向何处?是0x00000000还是0x08000000?


3、以上两个问题总结起来就是,启动的开始在哪里?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
zc123
2019-07-21 05:32
首先你要理解映射的概念,当FLASH地址0x08000000映射到0x00000000后,也就是CPU访问0x00000000地址(可以理解为虚拟地址,不一定存在)时,实际上访问的是0x08000000(物理地址)。这部分是由CPU内核完成的,根据配置,当CPU访问0x00000000地址时,经过内部转换,在地址总线上加载的是0x08000000地址, 读取数据指令。从开发者角度,不需要理解CPU内部的操作,只需要知道外部行为,启动后可以理解为从0x08000000地址开始的。

一周热门 更多>