收藏官网首页
查看: 2989|回复: 0

[经验分享] STM32自举配置

37

主题

89

帖子

1169

积分

金牌会员

Rank: 6Rank: 6

积分
1169
发表于 2017-6-22 16:26:36 | 显示全部楼层 |阅读模式
校园创客福利
本帖最后由 学哥哥 于 2017-6-23 09:00 编辑
STM32自举配置

背景:当下载一个比较大的工程到32板子上时,如果每一次下载都花了大几十秒,个人觉得太费时间了,因此 就得改变一下思路了。就这样,有了这个帖子的出现

1.什么是自举配置
存储器采用固定的存储器映射,代码区域起始地址为 0x0000 0000(通过 ICode/DCode 总线访问),而数据区域起始地址为 0x2000 0000(通过系统总线访问)。Cortex™-M4FCPU 始终通过 ICode 总线获取复位向量,这意味着只有代码区域(通常为 Flash)可以提供自举空间。STM32F4xx 微控制器实施一种特殊机制,可以从其它存储器(如内部 SRAM)进行自举。在 STM32F4xx 中,可通过 BOOT[1:0] 引脚选择三种不同的自举模式,如表1所示。
表1  自举模式

自举模式

自举模式
器件退出待机模式时,还会对 BOOT 引脚重新采样。因此,当器件处于待机模式时,这些引脚必须保持所需的自举模式配置。这样的启动延迟结束后,CPU 将从地址 0x0000 0000 获取栈顶值,然后从始于 0x0000 0004 的自举存储器开始执行代码。
2.为什么设置自举配置
虽然目前flash寿命很长,但是在flash中调试烧录程序是一个较慢的过程,而选择在内存里调试程序,速度较快。另外要注意的是,建议SRAM调试时用,因为掉电后数据会丢失。

3.怎样设置自举配置
(1)BOOT0和BOOT1置1,系统将从内置SRAM中启动。
(2)如果器件从 SRAM自举,在应用程序初始化代码中,需要使用NVIC异常及中断向量表和偏移寄存器来重新分配 SRAM  中的向量表。中断向量表通常防止于用户程序开始,所以flash运行时,向量表位于0X08000000处,而当代码存于SRAM运行时,向量表位置为0X20000000。因此,初始化NVIC可以这样定义向量表位置
    NVIC_SetVectorTable(0x20000000 , 0x0);

(3)在编译器中,要进行正确的设置。这里以IAR 5.4为例说明。
   a)
工程选项中Linker项,Config选项卡中,指定Linker Configuration Filestm32f10x_ram.icf 该文件在FWLIB安装包中可以获得,IAR45分别有不同的配置文件。
   b)
同样是工程选项中Debug项,Download选项卡中,去掉所有钩子,不下载代码到flash。


    如有错误,烦请指正,谢谢

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2022 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表