STM32三种启动模式:【详细讲解】

STM32在上电后,从那里启动是由BOOT0和BOOT1引脚的电平决定的,如下表:

BOOT模式选引脚启动模式
BOOT0BOOT1
X0主Flash启动
01系统存储器启动
11内置SRAM启动

BOOT 引脚的值在重置后 SYSCLK 的第四个上升沿时被锁定。在重置后,由用户决定是如何设置 BOOT1 和 BOOT0 引脚,来选择需要的启动模式。

1. 启动代码的位置

启动延迟过后,CPU 从引导存储器中启动代码执行.启动代码位于存储器地址最底部的地址,起始
地址是 0x0000_0000

2. STM32的启动模式

STM32支持多种启动模式,主要由BOOT0和BOOT1这两个引脚的状态决定。常见的启动模式包括:

  1. 主Flash启动:这是最常用的启动模式。在此模式下,STM32的主闪存存储器(Flash Memory)被映射到启动空间(0x0000_0000),但实际上Flash Memory的内容仍然可以在其原有的地址(如0x0800_0000)访问。这样,当CPU从0x0000_0000开始执行时,它实际上是在执行Flash Memory中的程序。
  2. 系统存储器启动:在这种模式下,系统存储器(System Memory)被映射到启动空间(0x0000_0000)。系统存储器中通常存储了STM32自带的Bootloader程序,该程序允许用户通过串行接口(如UART)将新的程序代码下载到Flash Memory中。值得注意的是,系统存储器的物理地址(如0x1FFF_F000)在此时也被映射到了0x0000_0000。
  3. 内置SRAM启动:在这种模式下,STM32的内部静态随机存取存储器(SRAM)被用作启动空间。然而,SRAM的访问仅限于其原始地址(如0x2000_0000开始),并不会被映射到0x0000_0000。因此,在SRAM启动模式下,需要通过特殊的方式(如修改中断向量表)来确保CPU能够正确地找到并执行启动代码。

主Flash启动:(正常情况下使用

一般使用 JTAG或者 SWD接口下载程序固件时,程序将被下载到这里,芯片重启后也将直接从这里读取并启动程序

系统存储器启动:(非正常情况使用,用来实现ISP下载

这种模式启动的程序功能是由芯片厂家设置的。这种启动方式一般情况不使用。系统存储器是芯片内部一块特定的区域,STM32 出厂时由ST公司在这个区域内部预置了一段BootLoader, 即我们常说的 ISP程序, 这是一块ROM, 出厂后无法修改
我们选用这种启动模式时,大多是为了使用 串口下载程序,因为在厂家提供的BootLoader中,提供了串口下载程序的固件,可以通过这个BootLoader将程序下载到系统的 Flash 中。但是这个下载方式需要以下步骤:
Step1:将 BOOT0 设置为 1,BOOT1 设置为 0,然后按下复位键,这样才能从系统存储器启动 BootLoader
Step2:最后在BootLoader的帮助下,通过串口下载程序到Flash中
Step3:程序下载完成后,又有需要将BOOT0设置为GND,手动复位,这样,STM32才可以从 Flash 中启动。所以使用串口下载程序较为 麻烦, 需要频繁切换BOOT0与BOOT1。

内置 SRAM:

内置SRAM,SRAM没有程序存储的能力,这个模式一般用于频繁的程序调试,这样可以减少flash的擦写次数,保护flash。
这种模式可以用于 程序调试。 假如只修改了代码中一个小小的地方,然后就需要重新擦除整个Flash,比较的费时,可以考虑从这个模式启动代码(也就是STM32的内存中),用于快速的程序调试,等程序调试完成后,再将程序下载到SRAM中

主流用法:

一般比较主流boot模式是主Flash启动,使用ST-LINK+keil5 debug起来比较方便,速度也比较快

3:引脚配置

4:ISP和IAP

ISP就是in-system programming(在系统烧录,在系统编程)。

以前烧录bin/hex文件到单片机内部flash中是需要借助专用的烧录器的,比较麻烦。随着时间推移衍生出来了一种不需要借助烧录器也不需要将单片机从板子上拆卸下来的烧录方法,这种方法就是ISP。一般ISP都是PC通过串口把bin/hex文件ISP到单片机内部的flash。例如STM32从系统存储器启动模式,就是在系统存储器中存储了一段可以接收串口数据的代码来实现将bin/hex文件烧录到主闪存存储器,烧录完成后再将启动模式手动切换成主闪存存储器执行刚刚烧录的程序。

IAP就是in-application programming(在应用编程,在应用烧录,在线升级)。

IAP的核心是用户需要在自己的应用程序中去操作单片机内部flash的控制器的寄存器,实现对内部flash的烧录功能。IAP的时候用户程序通过串口、usb、ethernet等,来实现接收PC发送过来的bin/hex文件,然后将之烧录到内部flash中去完成IAP,完成后再次启动后就会从用户存储器区执行,更新就会起效果。一般实现iAP需要人为的将用户存储器区分为2部分:bootloader+app

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/887441.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

加密与安全_HOTP一次性密码生成算法

文章目录 HOTP 的基础原理HOTP 的工作流程HOTP 的应用场景HOTP 的安全性安全性增强措施Code生成HOTP可配置项校验HOTP可拓展功能计数器(counter)计数器在客户端和服务端的作用计数器的同步机制客户端和服务端中的计数器表现服务端如何处理计数器不同步计…

数据链路层 ——MAC

目录 MAC帧协议 mac地址 以太网帧格式 ARP协议 ARP报文格式​编辑 RARP 其他的网络服务或者协议 DNS ICMP协议 ping traceroute NAT技术 代理服务器 网络层负责规划转发路线,而链路层负责在网络节点之间的转发,也就是"一跳"的具体传输…

R语言的下载、安装及环境配置(RstudioVSCode)

0x01 R语言篇 一、软件介绍 R for Windows是一个免费的用于统计计算和统计制图的优秀工具,是R语言开发工具。它拥有数据存储和处理系统、数组运算工具(其向量、矩阵运算方面功能尤其强大)、完整连贯的统计分析工具、优秀的统计制图等功能。…

大厂笔试现已经禁用本地IDE怎么看

如果我说本来面试做题这种事情就是反人类你相信吗? 这个罪恶的源头就是 Google,说是为了选择高素质的计算机编程水平的人才,然后把面试就变成了考试,最大的受益者当然是印度人了。 当把一个考察过程变成标准化的考试过程&#x…

CTFshow 命令执行 web29~web36(正则匹配绕过)

目录 web29 方法一:include伪协议包含文件读取 方法二:写入文件 方法三:通识符 web30 方法一:filter伪协议文件包含读取 方法二:命令执行函数绕过 方法三:写入文件 web31 方法一:filter伪…

openEuler 24.03 (LTS) 部署 K8s(v1.31.1) 高可用集群(Kubespray Ansible 方式)

写在前面 实验需要一个 CNI 为 flannel 的 K8s 集群之前有一个 calico 的版本有些旧了,所以国庆部署了一个v1.31.1 版本 3 * master 5 * work时间关系直接用的工具 kubespray博文内容为部署过程以及一些躺坑分享需要科学上网理解不足小伙伴帮忙指正 😃,生活加油 99…

用示波器测动态滞回线

大学物理(下)实验-中南民族大学通信工程2022级 手动逐个处理数据较为麻烦且还要绘图,故想到用pythonmatplotlib来计算结果并数据可视化。 代码实现 import matplotlib.pyplot as plt# 样品一磁化曲线 X [0, 0.2, 0.4, 0.6, 0.8, 1, 1.5, 2.…

macos安装mongodb

文章目录 说明安装和配置安装mongodb配置PATH变量 验证日志及数据存放目录 mac启动和关闭mongodb后台启动失败问题mongodb-compass(GUI) 说明 Homebrew core 列表目前已经将 MongoDB 移除,不再为其提供支持。但是使用国内镜像的brew还是可以安装的!这里直接从官网下…

小阿轩yx-案例:jenkins部署Maven和NodeJS项目

小阿轩yx-案例:jenkins部署Maven和NodeJS项目 前言 在 Java 项目开发中,项目的编译、测试、打包等是比较繁琐的,属于重复劳动的工作,浪费人力和时间成本。以往开发项目时,程序员往往需要花较多的精力在引用 jar 包搭…

MOELoRA —— 多任务医学应用中的参数高效微调方法

人工智能咨询培训老师叶梓 转载标明出处 在医疗场景中,LLMs可以应用于多种不同的任务,如医生推荐、诊断预测、药物推荐、医学实体识别、临床报告生成等。这些任务的输入和输出差异很大,给统一模型的微调带来了挑战。而且LLMs的参数众多&…

CSS3渐变

一、线性渐变 通过background-image: linear-gradient(...)设置线性渐变 语法: linear-gradient(direction,color1,color2, . . ) direction:渐变方向,默认从上到下,可选值: 简单选取: ① to right&…

SpringBoot框架下的教育系统开发全解析

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理微服务在线教育系统的相关信息成为必然。开…

文章资讯职场话题网站源码整站资源自带2000+数据

介绍: 数据有点多,数据资源包比较大,压缩后还有250m左右。值钱的是数据,网站上传后直接可用,爽飞了 环境:NGINX1.18 mysql5.6 php7.2 代码下载

Jetson 开发系列:如何用GPU跑本地大模型?

最近刚入手一台 Jetson Ori Nano 开发板,前两篇把开发前的准备工作做了: 搭建本地环境:Jetson 开发系列:Orin Nano 开箱!一款强大的嵌入式&物联网开发板管理音频设备:Jetson 开发系列:Linu…

使用Buildpacks构建Docker镜像

## 使用Buildpacks构建Docker镜像 ![](../assets/运维手册-Buildpacks-Buildpacks.io.png) ### Buildpacks简介 与Dockerfile相比,Buildpacks为构建应用程序提供了更高层次的抽象。具体来说,Buildpacks: * 提供一个平衡的控制,…

大佬,简单解释下“嵌入式软件开发”和“嵌入式硬件开发”的区别

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!!首先,嵌入式硬…

【AIGC半月报】AIGC大模型启元:2024.10(上)

【AIGC半月报】AIGC大模型启元:2024.10(上) (1) YOLO11(Ultralytics新作) (1) YOLO11(Ultralytics新作) 2024.10.01 Ultralytics在 YOLO Vision 2024 活动上宣布发布其新的计算机视觉模型 YOLO…

无人机电力巡检:点亮电力巡检新视野!

一、无人机电力巡查的优势 提高巡检效率:无人机可以搭载高清摄像头、红外热像仪等先进设备,实时拍摄和传输图像,帮助巡检人员快速发现潜在问题,如电线破损、绝缘子污损、设备过热等,从而大大缩短了巡检周期。 降低人…

Vue+NestJS项目实操(图书管理后台)

一、项目搭建 前端基于vben进行二次开发 在Github下载vben框架,搜索vben即可 下载地址:https://github.com/vbenjs/vue-vben-admin 下载完成后,进行安装依赖,使用命令: // 下载依赖 pnpm install// 运行项目 pnpm …

开源的云平台有哪些?

开源云平台为用户提供了构建、管理和运行云基础设施及应用的能力,同时允许社区参与开发和改进。以下是一些知名的开源云平台: 1. OpenStack 简介:OpenStack:一个广泛使用的开源云平台,它由多个组件组成,提…