tuzihog的笔记 https://bbs.21ic.com/?584869 [收藏] [复制] [RSS]

日志

STM32 BOOT模式(一)

已有 1217 次阅读2014-2-20 21:47 |个人分类:2014-02|系统分类:ARM| STM32, BOOT

STM32 boot[1:0] 决定从何处启动
(1)STM32上电时锁存BOOT[1:0],决定从何处启动
在RAM中调试时,已经上电成功,BOOT的状态已经没有作用。

IDE软件自动地把程序下载到RAM,并在RAM调试运行。
(2)
热启动时应该有用,比如上电时是从flash中启动,然后用户程序把代码写到SRAM里,之后就可以改变BOOT脚的跳线,然后按下复位按键,程序就可以从SRAM中运行了.不过看起来不怎么实用。
(3)
理论上说
只是在复位后的第四个SYSCLK的上升沿锁定BOOT引脚的值,从而决定代码从哪里:Flash还是SRAM启动。

但是使用MDK时需要注意,项目使用的连接文件flah linker file还是ram linker file,要和BOOT搭配:就是说,如果配置在flash中调试运行代码,则BOOT要配置成从Flash启动;若果配置成在ram中调试运行代码,则BOOT要配置成从SRAM启动。

使用IAR没有这个限制哦。
在STM32F10x里,可以通过BOOT[1:0]引脚选择三种不同启动模式。
表3 BOOT 模式选择
启动模式选择管脚
BOOT0   BOOT1    启动模式                          说明
0              X       用户闪存存储器          用户闪存存储器被选为启动区域
1              0       系统存储器                系统存储器被选为启动区域
1              1       内嵌SRAM 内嵌          SRAM被选为启动区域
通过设置选择管脚,对应到各种启动模式的不同物理地址将被映像到第0块(启动存储区)。在
系统复位后,SYSCLK的第4个上升沿,BOOT管脚的值将被锁存。用户可以通过设置BOOT1
和BOOT0引脚的状态,来选择在复位后的启动模式。

B00T0引脚是独立引出芯片,在应用时一般出问题的机率不大。当它配置为0(低电平时),不管B00T1的状态是什么(1/0),STM32将用户闪存存储器被选为启动区域,这种安排基本可以确保应用能正常运行。

当BOOT0为1时,配合BOOT1的配置,则可能使用系统存储器被选为启动区域或SRAM被选为启动区域两种方式,这种模式一般用在RAM调试运行或ISP下载时用。

需要注意的时,BOOT1一般是复用引脚,当应用系统用到ISP下载时,请注意在设计电路时做出合理的安排,以免发生冲突

路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)