一、三种BOOT模式介绍

所谓启动,一般来说就是指下好程序后,重启芯片时,SYSCLK的第4个上升沿,BOOT引脚的值将被锁存。用户可以通过设置BOOT1和BOOT0引脚的状态,来选择在复位后的启动模式。

Main Flash memory
是STM32内置的Flash,一般我们使用JTAG或者SWD模式下载程序时,就是下载到这个里面,重启后也直接从这启动程序。

System memory
从系统存储器启动,这种模式启动的程序功能是由厂家设置的。一般来说,这种启动方式用的比较少。系统存储器是芯片内部一块特定的区域,STM32在出厂时,由ST在这个区域内部预置了一段BootLoader, 也就是我们常说的ISP程序, 这是一块ROM,
出厂后无法修改。一般来说,我们选用这种启动模式时,是为了从串口下载程序,因为在厂家提供的BootLoader中,提供了串口下载程序的固件,可以通过这个BootLoader将程序下载到系统的Flash中。但是这个下载方式需要以下步骤:
Step1:将BOOT0设置为1,BOOT1设置为0,然后按下复位键,这样才能从系统存储器启动BootLoader
Step2:最后在BootLoader的帮助下,通过串口下载程序到Flash中
Step3:程序下载完成后,又有需要将BOOT0设置为GND,手动复位,这样,STM32才可以从Flash中启动可以看到, 利用串口下载程序还是比较的麻烦, 需要跳帽跳来跳去的,非常的不注重用户体验。

Embedded Memory
内置SRAM,既然是SRAM,自然也就没有程序存储的能力了,这个模式一般用于程序调试。假如我只修改了代码中一个小小的地方,然后就需要重新擦除整个Flash,比较的费时,可以考虑从这个模式启动代码(也就是STM32的内存中),用于快速的程序调试,等程序调试完成后,在将程序下载到SRAM中。

二、开发BOOT模式选择。

1、通常使用程序代码存储在主闪存存储器,配置方式:BOOT0=0,BOOT1=X;

2、Flash锁死解决办法:

开发调试过程中,由于某种原因导致内部Flash锁死,无法连接SWD以及Jtag调试,无法读到设备,可以通过修改BOOT模式重新刷写代码。

修改为BOOT0=1,BOOT1=0即可从系统存储器启动,ST出厂时自带Bootloader程序,SWD以及JTAG调试接口都是专用的。重新烧写程序后,可将BOOT模式重新更换到BOOT0=0,BOOT1=X即可正常使用。

三、 RDP读保护级别和注意事项

RDP读保护级别

修改选项字节的RDP位的值可设置内部FLASH为以下保护级别:

A.  0xAA:级别0,无保护

这是STM32的默认保护级别,它没有任何读保护,读取内部FLASH及"备份SRAM"的内容都没有任何限制。(注意这里说的"备份SRAM"是指STM32备份域的SRAM空间,不是指主SRAM,下同)

B.其它值:级别1,使能读保护

把RDP配置成除0xAA或0xCC外的任意数值,都会使能级别1的读保护。在这种保护下,若使用调试功能(使用下载器、仿真器)或者从内部SRAM自举时都不能对内部FLASH及备份SRAM作任何访问(读写、擦除都被禁止);而如果STM32是从内部FLASH自举时,它允许对内部FLASH及备份SRAM的任意访问。

也就是说,在级别1模式下,任何尝试从外部访问内部FLASH内容的操作都被禁止,例如无法通过下载器读取它的内容,或编写一个从内部SRAM启动的程序,若该程序读取内部FLASH,会被禁止。而如果是芯片自己访问内部FLASH,是完全没有问题的,例如前面的"读写内部FLASH"实验中的代码自己擦写内部FLASH空间的内容,即使处于级别1的读保护,也能正常擦写。

当芯片处于级别1的时候,可以把选项字节的RDP位重新设置为0xAA,恢复级别0。在恢复到级别0前,芯片会自动擦除内部FLASH及备份SRAM的内容,即降级后原内部FLASH的代码会丢失。在级别1时使用SRAM自举的程序也可以访问选项字节进行修改,所以如果原内部FLASH的代码没有解除读保护的操作时,可以给它加载一个SRAM自举的程序进行保护降级,后面我们将会进行这样的实验。

C.   0xCC:级别2,禁止调试

把RDP配置成0xCC值时,会进入最高级别的读保护,且设置后无法再降级,它会永久禁止用于调试的JTAG接口(相当于熔断)。在该级别中,除了具有级别1的所有保护功能外,进一步禁止了从SRAM或系统存储器的自举(即平时使用的串口ISP下载功能也失效),JTAG调试相关的功能被禁止,选项字节也不能被修改。它仅支持从内部FLASH自举时对内部FLASH及SRAM的访问(读写、擦除)。

由于设置了级别2后无法降级,也无法通过JTAG、串口ISP等方式更新程序,所以使用这个级别的保护时一般会在程序中预留"后门"以更新应用程序,若程序中没有预留后门,芯片就无法再更新应用程序了。所谓的"后门"是一种IAP程序(In Application Program),它通过某个通讯接口获取将要更新的程序内容,然后利用内部FLASH擦写操作把这些内容烧录到自己的内部FLASH中,实现应用程序的更新。

此级别设置要特别小心,如果未作防护的情况下设置错误,可能这颗芯片就没有法用了,特别是焊好的成品板,可能会造成一整块板都报废。

STM32 Boot 模式和设置介绍相关推荐

  1. STM32 BOOT模式配置以及作用

    一.三种BOOT模式介绍 所谓启动,一般来说就是指我们下好程序后,重启芯片时,SYSCLK的第4个上升沿,BOOT引脚的值将被锁存.用户可以通过设置BOOT1和BOOT0引脚的状态,来选择在复位后的启 ...

  2. stm32 boot 模式

    1. 三种 boot 启动模式 什么是启动模式,这个类似于我们使用的个人电脑在开机的时候可以进入到电脑的 BIOS (标准输入输出系统),在 BIOS 软件中可以选择在什么样的存储介质来启动 Wind ...

  3. STM32单片机的启动模式 三种BOOT模式介绍

    在绘制32单片机时,参考别人的原理图对单片机的启动方式BOOT有疑问, 这里写目录标题 自己的理解和应用 一.三种BOOT模式启动的介绍 二.自己开发BOOT模式的选择 官方的文档介绍 自己的理解和应 ...

  4. 浅谈STM32的三种Boot模式

    文章目录 一.关于BOOT模式的介绍 二.实际例子进行分析 三.分析上电启动流程 四.小结 五.参考资料 一.关于BOOT模式的介绍 所谓启动,一般来说就是指我们下好程序后,重启芯片时,SYSCLK的 ...

  5. STM32的三种Boot模式的差异

    STM32的三种Boot模式的差异 一. STM32启动配置 二. 内置SRAM简介 三. 例程验证 3.1 硬件设置 3.2 创建工程调试版本 3.3 配置分散加载文件 3.5 配置中断向量表 3. ...

  6. STM32三种BOOT模式介绍

    一.三种BOOT模式介绍 所谓启动,一般来说就是指我们下好程序后,重启芯片时,SYSCLK的第4个上升沿,BOOT引脚的值将被锁存.用户可以通过设置BOOT1和BOOT0引脚的状态,来选择在复位后的启 ...

  7. STM32三种BOOT模式

    探究STM32三种BOOT模式 简介 一.三种BOOT模式比较 二.开发BOOT模式选择 三.实验项目 (1)实验要求 (2)实验过程 a.STM32内置的Flash启动--最常用 b.从系统存储器启 ...

  8. STM32的三种BOOT模式

    文章目录 一.三种BOOT模式的对比 1.内部 FLASH 启动方式 2.内部 SRAM 启动方式 3.系统存储器启动方式 二.BOOT模式下代码运行后所在地址分析 1.从内部 FLASH 启动 2. ...

  9. STM32中BOOT模式配置的作用

    学习了一段时间stm32单片机, 一直没有搞明白这个Boot 引脚的作用,经过找资料,才算搞明白boot设置, 所谓的启动, 就是我们在程序下载完成后, 重新启动芯片时, SYSCLK的第四个上升沿, ...

  10. STM32三种BOOT模式的差异

    文章目录 前言 三种BOOT模式 主闪存存储器 系统存储器 内置SRAM 烧录程序验证 主要代码 主闪存存储器烧录验证 系统存储器烧录验证 内置SRAM烧录验证 前言 本篇文章分析了3种BOOT模式下 ...

最新文章

  1. maven工程出现java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener...
  2. poj2438(哈密顿回路)
  3. 【MPI高性能计算】蒙特卡洛方法计算pi值
  4. 苹果笔记本电脑电池保养细则
  5. 建立表/索引时的 存储参数:【PCTUSED参数与PCTFREE参数】
  6. left join 、right join 、inner join和 full join的区别
  7. 前端学习(2576):选择何种方式的路由和底层原理
  8. 怎么安装python3.6.5_Centos7 安装Python3.6.5
  9. 解决 -- 代码没有问题时接口报错:Status Code: 404 Not Found
  10. ZedGraph使用经验
  11. SPAN Switched Port Analyzer 单臂路由
  12. 物联网哪个市场有可能诞生新一轮BAT?
  13. wampserver修改默认根目录
  14. web开发必备的几个软件
  15. 图像相似度对比分析软件,图像相似度对比分析法
  16. HDU-5705-Clock (数学,思维)
  17. 【报错】进程已结束,退出代码-1073740791 (0xC0000409)
  18. 数字键盘(触屏键盘)
  19. 如何做research和survey
  20. 新手怎么重装系统?只需3步看完小白也会装!

热门文章

  1. J2EE学习总结(五)------用户登录界面设计
  2. SoapUI被动接口的压力测试/性能测试
  3. IEEE Access 模板大坑之添加子图
  4. 【软考软件评测师】2016综合知识历年真题
  5. Activiti 单环节多人办理一件
  6. react-testing-library
  7. isis仿真软件怎么导入C语言,Proteus导入程序的操作方法
  8. STEP 7 V5.5 版本特性
  9. 优化算法进阶;word2vec;词嵌入进阶
  10. Reza Zafarani经典教材-《社交媒体挖掘》PDF+随书课件打包分享