STM32的三种启动方式

目录

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

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

[三、从内置SRAM启动(Embedded SRAM)](#三、从内置SRAM启动(Embedded SRAM))

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

[1. 存储介质选型](#1. 存储介质选型)

[2. 硬件连接](#2. 硬件连接)

[3. 引导程序(Bootloader)](#3. 引导程序(Bootloader))

[4. 固件更新](#4. 固件更新)

[5. 示例流程](#5. 示例流程)

[6. 注意事项](#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. 注意事项

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

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

相关推荐
不悔哥5 天前
开源OV-Watch:怎么做一个智能手表
单片机·开源·嵌入式
XiHongShi20165 天前
STM32F407 RTC定时器例程,建议保存
stm32·单片机·学习
优信电子5 天前
AIT1001 非接触式红外测温模块 STM32 驱动开发实战:从引脚到代码全解析
stm32·嵌入式·温度传感器·红外测温·非接触式测温·ait1001
深圳老胡5 天前
STM32F407 控制 L6470 步进电机驱动 —— 控制过程简介
笔记·stm32·单片机·嵌入式硬件·代码规范
wuyk5555 天前
《WiFi 嵌入式物联网开发全套实战》| 第 16 章 ESP32 AP+STA 双模共存原理与工程坑点
网络·stm32·物联网
女神下凡5 天前
嵌入式设计的各种存储芯片的硬件/软件设计规范,非常全面。
arm开发·单片机·嵌入式硬件
梅梅9665 天前
一款mipi转lvds的lcd调试(LT8912B)
单片机·计算机外设·电脑·显示器·pd芯片
开发笔记-阿牛5 天前
蓝牙音乐灯拆解,又一次拆到蓝牙音乐灯芯片CK6865L
人工智能·单片机·嵌入式硬件·音视频·音频
从零开始的嵌入式之旅5 天前
day47
arm开发·经验分享·笔记·嵌入式硬件
恒锐丰科技林技术员5 天前
EG1164 高压大电流升压同步整流芯片解析
经验分享·嵌入式硬件·硬件工程