打印
[STM32F0]

STM32知识点分享+STM32F0的启动模式

[复制链接]
2975|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xscc|  楼主 | 2017-9-18 01:42 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 xscc 于 2017-9-18 01:43 编辑

     STM32F0系列Cortex控制器,和其他ARM架构一样,提供了BOOT0和BOOT1两个管脚用于启动选择。
      在芯片(上电)复位时,BOOT0和BOOT1两个管脚的状态将决定芯片从何处启动。
1. BOOT1=*, BOOT0=0 从用户闪存启动,这是正常的工作模式(此时通常BOOT1也接0)。
2. BOOT1=0 BOOT0=1 从系统存储器启动,这种模式启动的程序功能由厂家设置(在stm32中称为下载模式)。(如用串口下载的时候就接成这样,此时系统的功能就是将代码写入用户闪存,下载完又得接成正常工作模式才能正常使用)(用于串口ISP)ISP的英文是Internet Service Provider,翻译为互联网服务提供商
3. BOOT1=1 BOOT0=1 从内置SRAM启动,这种模式可以用于调试。

http://www.stmcu.com.cn/Product/pro_detail/cat_code/STM32F0/family/81/sub_family/123/layout/product

STM32F0三种启动模式对应的存储介质均是芯片内置的,它们是:
1)用户闪存 = 芯片内置的Flash。
2)系统存储器 = 芯片内部一块特定的区域,芯片出厂时在这个区域预置了一段Bootloader(就是在操作系统内核运行之前运行的一段小程序),就是通常说的ISP程序。这个区域的内容在芯片出厂后没有人能够修改或擦
3)SRAM = 芯片内置的RAM区,就是内存啦。除,即它是一个ROM区。


沙发
aozima| | 2017-9-18 09:23 | 只看该作者
在使用bootloader+APP 结构时。
对于没有VTOR设置中断向量的早期版本,一般都是拷贝中断向量到SRAM中。

但本来这类IC的RAM就不大,是否可以在ram的固定地址设置一个 flag,
中断入口还是放在FLASH的0地址,当ram中的flag合法时,自动读取APP中的ISR地址去执行。

这样感觉一下子就省了好几百字节,缺点是bootloader中要对所有的ISR放置入口,同时要做一个判断。
因为一般在bootloader都不会放完整的中断向量表,只放必须用的几个,甚至尽量不在bootloader中使用中断。

使用特权

评论回复
板凳
feelhyq| | 2017-9-18 09:29 | 只看该作者
aozima 发表于 2017-9-18 09:23
在使用bootloader+APP 结构时。
对于没有VTOR设置中断向量的早期版本,一般都是拷贝中断向量到SRAM中。

使用特权

评论回复
地板
lihui567| | 2017-9-22 09:59 | 只看该作者
本帖最后由 lihui567 于 2017-9-22 10:00 编辑

我们再工作中都是选择第一种,两个都接地了,都是从flash启动?第二种模式不太懂,怎么涉及到操作系统啊

使用特权

评论回复
5
i1mcu| | 2017-9-22 16:43 | 只看该作者
正常都是设置为0

使用特权

评论回复
6
i1mcu| | 2017-9-22 16:50 | 只看该作者
启动模式正常都是选择内存启动。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

1299

帖子

4

粉丝