STM32的启动方式

news2025/4/22 21:37:57

目录

一、从主闪存存储器启动(Main Flash Memory)

二、从系统存储器启动(System Memory)

三、从内置SRAM启动(Embedded SRAM)

四、从外挂存储介质启动的实现方式

1. 存储介质选型

2. 硬件连接

3. 引导程序(Bootloader)

4. 固件更新

5. 示例流程

6. 注意事项


一、从主闪存存储器启动(Main Flash Memory)

>>配置:BOOT0 = 0,BOOT1 = X(任意状态)

>>描述最常见的启动方式STM32从内置的Flash存储器启动。使用JTAG或SWD模式下载程序时,程序被下载到主闪存中,重启后也从这里开始执行。

>>地址映射:主Flash的起始地址

0x0800 0000被映射到0x0000 0000

二、从系统存储器启动(System Memory)

>>配置:BOOT0 = 1, BOOT1 = 0

>>描述这种启动方式用于通过串口其他接口下载程序到STM32的Flash中。系统存储器是芯片内部一块特定区域,出厂时预置了一段Bootloader程序,这段程序允许通过外部接口将代码写入STM32的Flash中。

>>地址映射:系统存储器的起始地址

0x1FFF 0000被映射到0x0000 0000

三、从内置SRAM启动(Embedded SRAM)

>>配置:BOOT0 =1,BOOT1 = 1

>>描述:这种启动方式通常用于程序调试。因为它不需要擦写Flash,因此速度较快。由于SRAM是易失性存储器,掉点后数据丢失。

>>地址映射:内置SRAM的起始地址

0x2000 0000被映射到0x0000 0000

       通过这些启动方式,STM32提供了灵活的编程和调试选项,满足不同的应用需求!

四、从外挂存储介质启动的实现方式

1. 存储介质选型

可以使用多种类型的外部存储器,例如:

  • SPI Flash:常用于存储固件或数据,速度较快,易于实现。
  • I2C EEPROM:适合小规模的数据存储和字典。
  • SD卡:可用于较大存储需求,常用于数据记录和固件更新。

2. 硬件连接

  • 接口选择:根据所用存储介质的协议,选择合适的接口(如SPI、I2C等)来与单片机连接。
  • 电源管理:确保外部存储器供电正常,且能在单片机启动时保持稳定。

3. 引导程序(Bootloader)

为了实现从外部存储器启动,通常需要一个引导程序(Bootloader):

  • Bootloader的功能

    • 初始化外部存储器的通信接口(如SPI或I2C)。
    • 从外部存储器读取程序代码。
    • 将代码加载到内存中并转移控制权。
  • 设计考虑

    • Bootloader需要确保能够在外部存储器内找到有效的程序代码,常见的做法是使用特定的文件格式或签名标识有效的固件。
    • Bootloader一般会存放在单片机的中间区域,既可以执行又不会影响正常的应用代码。

4. 固件更新

使用外部存储启动的一个主要应用场景是进行固件更新

  • 通过外部介质更新固件
    • 允许用户通过SD卡或串口等方式上传新固件。
    • Bootloader在检测到新的固件后,可以将其烧录到内部闪存或直接运行。

5. 示例流程

  1. 上电或复位:单片机上电或复位,进入Bootloader。
  2. 外部存储器初始化:Bootloader初始化与外部存储器的连接。
  3. 读取程序:Bootloader从外部存储器读取预定区域的数据,将其加载到RAM或直接从闪存执行。
  4. 跳转到应用程序:Bootloader完成加载后,将控制权转交给主应用程序。

6. 注意事项

  • 时序:确保外部存储器在单片机启动时能够迅速响应。
  • 存储保护:设计时要考虑存储介质的耐久性和擦写次数。
  • 安全性:如果固件通过外部来源更新,需实现相应的安全验证措施,防止恶意代码注入。

通过以上这些措施,单片机能够从外挂存储介质中顺利启动。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

你学会了些什么200601?--Flask搭建造测试数据平台

搭建造数平台的环境: ***python3.7 ***html5 ***css ***JavaScript ***Ajax ***MySQL 前台页面的显示 1.为了页面美化,使用了JavaScript,通过逐级展开/隐藏的的方式显示下一级菜单 2.为了在提交表单数据时页面不发生跳转,需要引用…

【音视频】FLV格式分析

FLV概述 FLV(Flash Video)是Adobe公司推出的⼀种流媒体格式,由于其封装后的⾳视频⽂件体积⼩、封装简单等特点,⾮常适合于互联⽹上使⽤。⽬前主流的视频⽹站基本都⽀持FLV。采⽤FLV格式封装的⽂件后缀为.flv。 FLV封装格式是由⼀个⽂件头(file header)和…

Keil5没有stm32的芯片库

下载完重启就行了,我这里就不演示了,stm已经下载,随便选的一个芯片库演示一下

【DVWA 靶场通关】 File Inclusion(文件包含漏洞)

1. 前言 文件包含漏洞 是 Web 应用中较为常见的漏洞之一,攻击者通过操控文件路径,访问或包含系统上的敏感文件,甚至执行恶意代码。DVWA(Damn Vulnerable Web Application)提供了一个理想的实验环境,让安全…

游戏引擎学习第229天

仓库:https://gitee.com/mrxiao_com/2d_game_5 回顾上次内容并介绍今天的主题 上次留下的是一个非常简单的任务,至少第一步是非常简单的。我们需要在渲染器中加入排序功能,这样我们的精灵(sprites)才能以正确的顺序显示。为此我…

【C++编程入门】:从零开始掌握基础语法

C语言是通过对C语言不足的地方进行优化创建的,C在C语言之上,C当然也兼容C语言, 在大部分地方使用C比C更方便,可能使用C需要一两百行代码,而C只需要五六十行。 目录 C关键字 命名空间 缺省参数 缺省参数分类 函数…

网络开发基础(游戏方向)之 概念名词

前言 1、一款网络游戏分为客户端和服务端两个部分,客户端程序运行在用户的电脑或手机上,服务端程序运行在游戏运营商的服务器上。 2、客户端和服务端之间,服务端和服务端之间一般都是使用TCP网络通信。客户端和客户端之间通过服务端的消息转…

【源码】【Java并发】【AQS】从ReentrantLock、Semaphore、CutDownLunch、CyclicBarrier看AQS源码

👋hi,我不是一名外包公司的员工,也不会偷吃茶水间的零食,我的梦想是能写高端CRUD 🔥 2025本人正在沉淀中… 博客更新速度 👍 欢迎点赞、收藏、关注,跟上我的更新节奏 📚欢迎订阅专栏…

k8s介绍与实践

第一节 理论 基础介绍,部署实践,操作实践,点击这里学习 第二节 dashboard操作 查看安装的dashboard服务信息 kubectl get pod,svc -n kubernetes-dashboard 网页登录地址:https://server_ip:30976/#/login 创建token kube…

KRaft面试思路引导

Kafka实在2.8之后就用KRaft进行集群管理了 Conroller负责选举Leader,同时Controller管理集群元数据状态信息,并将元数据信息同步给各个分区的Leader 和Zookeeper管理一样,会选出一个Broker作为Controller去管理整个集群,但是元数…

FreeRTOS菜鸟入门(六)·移植FreeRTOS到STM32

目录 1. 获取裸机工程模版 2. 下载 FreeRTOS V9.0.0 源码 3. FreeRTOS文件夹内容简介 3.1 FreeRTOS文件夹 3.1.1 Demo文件夹 3.1.2 License 文件夹 3.1.3 Source 文件夹 3.2 FreeRTOS-Plus 文件夹 4. 往裸机工程添加 FreeRTOS 源码 5. 拷贝 FreeRTOSConfig…

14.第二阶段x64游戏实战-分析人物的名字

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 上一个内容:13.第二阶段x64游戏实战-分析人物等级和升级经验 名字(中文英文符号…

【CS*N是狗】亲测可用!!WIN11上禁用Chrome自动更新IDM插件

现象:每次打开chrome后IDM会弹出提示插件版本不一致。经过排查后发现是chrome把IDM插件给更新了,导致IDM提示版本不匹配。经过摸索后,得到了可行的方案。 第一步,打开Chrome,把IDM插件卸载掉,然后重新安装I…

漫游git rebase + 浅谈git checkout和git branch -f的分支命令

今天学了两个命令非常有意思:一个是git checkout,一个是git branch -f。我们可以认为在提交树上,任何一个节点代表着一次提交。并且,git commit将会在 H E A D HEAD HEAD指针指向的节点上进行进一步提交。将每一个分支名视为标记当…

深入理解 React 组件的生命周期:从创建到销毁的全过程

React 作为当今最流行的前端框架之一,其组件生命周期是每个 React 开发者必须掌握的核心概念。本文将全面剖析 React 组件的生命周期,包括类组件的各个生命周期方法和函数组件如何使用 Hooks 模拟生命周期行为,帮助开发者编写更高效、更健壮的…

OpenCV 图形API(44)颜色空间转换-----将图像从 BGR 色彩空间转换为 RGB 色彩空间函数BGR2RGB()

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 将图像从BGR色彩空间转换为RGB色彩空间。 该函数将输入图像从BGR色彩空间转换为RGB。B、G和R通道值的常规范围是0到255。 输出图像是8位无符号3通…

配置nginx服务,通过多ip区分多网站

首先关闭防火墙,setenforce 0 关过了,不截图了 多IP,首先配置多个IP地址 可以在vm增加虚拟网卡,也可以在同一网卡配置多个IP,我用第一种 记得点确定 查看新的虚拟网卡IP 没有IP,配置一个 安装nginx 写配置 server{listen 192.168.214.130:80;root /www/ip/130; # 资源根目…

[k8s实战]Containerd 1.7.2 离线安装与配置全指南(生产级优化)

[k8s实战]Containerd 1.7.2 离线安装与配置全指南(生产级优化) 摘要:本文详细讲解在无外网环境下部署 Containerd 1.7.2 容器运行时的完整流程,涵盖二进制包安装、私有镜像仓库配置、Systemd服务集成等关键步骤,并提供…

解决Windows安全中心显示空白页面

1、电脑重装系统后,发现原本一些软件打不开了,电脑莫名认为有病毒,自动删除插件。附图。 2、第一反应是电脑防火墙的原因,默认威胁防护识别到了病毒软件,自动删除。在开始屏幕搜Windows安全中心,打开之后发…

【MQ篇】初识MQ!

目录 一、什么是MQ?简单来说就是个“快递中转站” 📦二、为什么要用MQ?用了它,好处多多!🤩三、MQ的应用场景:各行各业都能用!🌍四、MQ的优缺点:硬币的两面&am…