您的位置:首页 > 其它

STM32F1或F4芯片启动过程

2016-03-09 11:52 295 查看
STM32F1或STM32F4
启动过程描述:

STM32F1或F4
有三种启动模式,根据上电后两个BOOT脚的电平可以确定是哪种启动:
1、User boot  2、system
boot 3、SRAM boot



根据选定的启动模式
 ● User boot:主闪存存储器被映射到启动空间(0x0000 0000),但仍然能够在它原有的地址(0x0800 0000)访问它,即闪存存储器的内容可以在两个地址区域访问,0x00000000或0x08000000。

● systemboot:系统存储器被映射到启动空间(0x00000000),但仍然能够在它原有的地址(互联型产品原有地址为0x1FFFB000,其它产品原有地址为0x1FFFF000)访问它。

● SRAMboot:只能在0x20000000开始的地址区访问SRAM

注意:

存储器采用固定的存储器映射,代码区域起始地址为 0x0000 0000(通过 ICode/DCode 总 线访问),而数据区域起始地址为 0x2000 0000(通过系统总线访问)。Cortex™-M4FCPU 始终通过 ICode 总线获取复位向量,这意味着只有代码区域(通常为Flash)可以提供。

即启动后,首先从地址0x0000 0000执行。CPU从地址0x0000 0000获取堆栈顶的地址,并从0x0000 0004指示的地址开始执行代码。

用术语说就是:从地址0x0000 0000处取出MSP的初始值,从地址0x00000004处取出PC初始值
 

映射概念:比如主闪存存储器被映射到启动空间(0x0000 0000),就是主闪存存储器起始地址0x08000000放在启动空间地址0x0000 0004里面。有点像数学中映射(函数)

user flash的起始地址是0x08000000

system memory 的起始地址是0x1FFFF000
embedded SRAM的起始地址是0x20000000

 
主闪存存储器就是芯片内部的falsh
使用JLINK调试下载程序,一般下载到芯片内部flash,所以启动模式要设置为User boot启动

 --------------------------------------------------------------------------------------------------------------------------------------------------
举例说明:
1、现在假设User flash
里已经烧写有应用程序。
选择user boot启动模式,,主闪存存储器被映射到启动空间(0x0000 0000)。
因为代码区始终从地址0x0000 0000开始执行,即先从地址0x0000 0000处取出MSP的初始值,从地址0x0000
0004处取出PC初始值,然后根据PC值跳转到0x0800000处
2。如果是system boot模式,则上电检测后会跳转到0x1FFFF000
 

解释STM32程序工程设置:



思考:为什么如此的设置链接起始地址?

答: R/O代表only read只读,即芯片内部flash

        R/W代表read  and write读写,即芯片内部SRAM

 

User flash 的起始地址是0x08000000
SRAM的起始地址是0x20000000

 

参考:

《STM32中文参考手册_V10》 
P33

《STM32F4xx中文参考手册》     
P56

《第2周 Cortex-M4体系结构》
P24

《STM32神舟王439IGT开发板用户手册20141020-5》 
P215
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: