STM32F1或F4芯片启动过程
来源:互联网 发布:nodejs res.json 编辑:程序博客网 时间:2024/06/05 00:12
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
- STM32F1或F4芯片启动过程
- STM32F1和F4实现RS485简单通信
- stm32f1/f2/f3/f4/l1的固件库下载
- 开机总要按F4才能启动
- Linux的启动过程或启动顺序
- 芯片启动过程 ARM C51 Soc - RTOS LINUX - 之一
- f4
- 自己设计的STM32开发板+NOR+SRAM,STM32F1/F4通用开发板PCB工程文件AD设计,打样验证
- 数字电视芯片启动流程
- 芯片引导启动
- 芯片封装过程简介
- s5pv210芯片wince6.0系统SD卡启动代码修改过程记录
- s5pv210芯片wince6.0系统SD卡启动代码修改过程记录
- 禁止用鼠标或Alt+F4关闭窗口
- STM32 系列芯片启动方式
- ARM芯片的引导过程
- [转] 芯片的制造过程
- 芯片是如何制造的 芯片制造过程全景展示
- <Head first Java>继承与多态_重载与覆盖
- phalcon pdo封装
- secureCRT 从服务器上 下载或上传文件
- NYOJ448 寻找最大数
- 【其它】Hello World
- STM32F1或F4芯片启动过程
- 同一labeltext设置不同的属性
- 使用proc_create创建proc文件
- 【SSH进阶之路】Hibernate映射——多对多关联映射(八)
- 基于XMPP协议的消息推送的客户端和服务器端
- Android版流式布局
- MariaDB Galera Cluster 部署
- 《java与模式》笔记(六) 合成/聚合复用原则
- android L 版本预置APK