当前位置: 首页 > news >正文

存储器介绍

STM32启动方式

STM32微控制器的启动方式决定了系统上电或复位后从何处开始执行代码,主要通过BOOT引脚的电平配置和内部启动寄存器的状态来控制。以下是三种主要启动模式及其特点:

1. 主闪存存储器(Main Flash Memory)启动

  • BOOT0 = 0BOOT1 = X(任意值)
  • 启动地址:0x08000000(Flash起始地址)
  • 用途:最常见的启动方式,用于运行存储在内部Flash中的用户程序。
  • 特点:系统复位后直接从Flash中读取代码执行,适合正式产品。

2. 系统存储器(System Memory)启动

  • BOOT0 = 1BOOT1 = 0
  • 启动地址:0x1FFF0000(系统存储器起始地址)
  • 用途:通过内置的Bootloader(如STM32的DFU或USART引导程序)实现固件更新,无需外部编程器。
  • 特点:系统存储器中固化了ST官方提供的Bootloader代码,可通过串口、USB等接口下载新程序到Flash。

3. 内置SRAM启动

  • BOOT0 = 1BOOT1 = 1
  • 启动地址:0x20000000(SRAM起始地址)
  • 用途:用于调试或运行临时代码(如从外部加载的程序),代码仅在RAM中运行,掉电丢失。
  • 特点:适合快速验证代码逻辑,但需要提前将代码加载到SRAM中(如通过调试器)。

4、启动流程详解

  1. 复位时检测BOOT引脚电平:STM32在上电或复位时,首先读取BOOT0和BOOT1引脚的电平状态,确定启动模式。
  2. 映射启动地址:根据启动模式,将对应存储区域的地址映射到0x00000000(CPU实际从该地址开始取指)。
  3. 执行初始化:从映射地址读取栈顶指针(SP)和复位向量(Reset Handler),完成系统初始化并跳转到主程序。

5、注意事项

  • BOOT引脚配置:启动模式由复位瞬间的BOOT引脚电平决定,启动后可通过软件修改引脚状态。
  • 系统存储器内容:系统存储器中的Bootloader由ST提供,用户无法修改,但可通过它更新Flash中的代码。
  • Flash保护:若Flash被写保护,系统存储器启动模式可能无法访问Flash进行编程。

STM32存储器类型对比

1、STM32存储类型对比表

存储类型主闪存(Main Flash)系统存储器(System Memory)内置SRAMeMMC Flash
物理特性嵌入式NOR Flash嵌入式ROM(掩膜ROM或OTP)静态随机存储器集成Flash控制器的NAND Flash
容量32KB~2MB(依型号而定)固定容量(如16KB)8KB~512KB(依型号而定)4GB~128GB(标准规格)
掉电数据保存
读写特性可擦写(有限擦写次数)只读读写速度最快读写速度中等,需FTL管理
访问接口直接映射到CPU地址空间直接映射到特定地址直接映射到CPU地址空间通过SD/MMC接口访问
典型访问时间几十ns(依主频而定)同主Flash几ns~十几ns几十μs~几百μs
主要用途存储用户程序和常量数据存储厂商Bootloader程序运行时栈/堆/变量存储大容量数据存储(如多媒体)
启动模式支持支持(BOOT0=0)支持(BOOT0=1,BOOT1=0)支持(BOOT0=1,BOOT1=1)需额外配置(如通过SPI)
擦写寿命10,000~100,000次循环不可擦写无限(理论)3,000~100,000次循环(依类型)
写入速度中等(需按页/块擦除)N/A最快中等(受FTL影响)

2、技术细节补充

  1. 主闪存(Main Flash)

    • 支持字节/半字/字写入,但擦除操作必须按**页(Page)扇区(Sector)**进行。
    • 写入前需先擦除(擦除后数据为0xFF),擦除操作耗时较长(ms级)。
    • 高级型号支持双存储区(Dual Bank),可在运行时更新另一区代码。
  2. 系统存储器(System Memory)

    • 由ST厂商预编程,包含用于串口下载(USART1)或USB DFU的Bootloader。
    • 用户无法修改其内容,但可通过特定引脚组合(BOOT0=1, BOOT1=0)激活。
  3. 内置SRAM

    • 访问速度最快,支持零等待状态(Zero Wait State),适合高频数据处理。
    • 部分型号支持低功耗SRAM(如Standby模式下保持数据)。
  4. eMMC Flash

    • 属于外部存储,需通过SPI、SDIO或专用接口连接。
    • 内部集成Flash转换层(FTL),自动管理坏块和损耗均衡(Wear Leveling)。
    • 适合存储大容量媒体文件需要频繁更新的数据(如配置文件)。

3、应用场景建议

  • 代码存储:主闪存(Main Flash)
  • 临时数据处理:内置SRAM
  • 固件升级引导:系统存储器 + 主闪存
  • 大数据存储:eMMC Flash(需外部接口支持)

选择存储类型时需综合考虑容量需求读写频率数据持久性成本因素。例如,频繁写入的数据(如日志)适合存放在SRAM或eMMC中,而核心代码应存储在主闪存中。

存储器分类

根据数据是否在断电后保持,存储器件可分为易失性存储器(Volatile Memory)非易失性存储器(Non-Volatile Memory)。以下是常见分类及典型代表:

1、掉电丢失的存储器(易失性)

类型特点应用场景
SRAM(静态随机存储器)最快的存储器,无需刷新,功耗低CPU缓存、嵌入式系统高速数据存储
DRAM(动态随机存储器)需要定期刷新,成本低、容量大计算机内存(如DDR系列)
Cache(高速缓存)位于CPU与主存间,加速数据访问CPU内部L1/L2/L3缓存
寄存器(Register)CPU内部的超高速存储单元存储指令、运算数据
显存(VRAM)专门用于图形处理的高速SRAM/DRAM显卡帧缓存

2、掉电不丢失的存储器(非易失性)

类型特点应用场景
ROM(只读存储器)出厂固化,不可修改早期BIOS、嵌入式设备引导程序
PROM(可编程ROM)一次性编程(熔断丝技术)早期工业控制程序存储
EPROM(可擦除PROM)通过紫外线擦除,可多次编程早期软件开发测试
EEPROM(电可擦除ROM)字节级擦写,寿命约10万次循环存储配置参数(如I2C接口器件)
Flash Memory块级擦写,寿命约10万次循环U盘、SSD、嵌入式设备程序存储
NAND Flash高密度、低成本,需FTL管理坏块手机存储、SD卡、eMMC
NOR Flash可直接执行代码(XIP),读写速度快嵌入式系统主闪存(如STM32)
SSD(固态硬盘)基于Flash的高速存储设备计算机硬盘替代
磁盘(HDD)机械旋转盘片,容量大、成本低数据中心、大容量存储
磁带顺序访问,容量极大、成本极低冷数据归档
光盘(CD/DVD)激光读写,容量固定数据存档、软件分发

3、特殊存储器

类型特点应用场景
NVSRAM(非易失SRAM)SRAM + 备用电池/电容关键数据备份(如飞行记录仪)
FRAM(铁电存储器)高速读写(接近SRAM),低功耗电表、医疗设备数据记录
MRAM(磁阻存储器)高速、高寿命(10^15次循环)下一代内存替代技术
PRAM(相变存储器)断电保持,读写速度介于Flash和DRAM之间实验性存储技术

4、对比总结

特性易失性存储器非易失性存储器
掉电数据保存
读写速度快(SRAM > DRAM)慢(Flash < HDD)
擦写寿命无限(理论)有限(Flash约10万次循环)
成本/容量比高(适合小容量高速场景)低(适合大容量存储)
典型应用程序运行时数据存储程序/数据持久化存储

5、常见误区

  1. SSD vs HDD:SSD基于Flash(非易失),HDD基于磁盘(非易失),两者均为非易失性存储。
  2. Cache vs Flash:Cache(如CPU缓存)是SRAM(易失),而Flash(如U盘)是非易失性。
  3. eMMC vs RAM:eMMC属于嵌入式Flash(非易失),而设备RAM通常是DRAM(易失)。

选择存储器件时,需根据数据持久性需求读写性能成本综合考虑。

http://www.dtcms.com/a/268711.html

相关文章:

  • React16,17,18,19新特性更新对比
  • 面向智驾的车规级高精度RTK模块UM680A的引脚功能
  • Git在Pycharm中的使用
  • web网页开发,在线%ctf管理%系统,基于html,css,webform,asp.net mvc, sqlserver, mysql
  • 【论文阅读】SASLN:小样本条件下机械故障诊断的信号增强自学习网络
  • Redis常用数据结构以及多并发场景下的使用分析:Set类型
  • react状态管理库 - zustand
  • BitMart“滑点守护计划”二期重磅升级,定义安心交易新纪元
  • Redis哨兵模式之Sentinel模式(二)
  • vue3 强制刷新 forceUpdate
  • 关于使用shiro中Session的使用导致的Java 对象引用问题
  • 【BTC】比特币系统的具体实现
  • 《30天打牢数模基础-第一版》(已完结) 需要自取
  • 浅析德语OCR技术的实现难点及其工作原理
  • 怎么删除音频空白部分_去掉mp3空白部分
  • FlashDepth | 混合模型+Mamba革新,24 FPS实时2K视频深度估计,超越Depth Anything v2
  • 生成ssh并配置到vscode和gitlab详细步骤
  • 什么是Web3?金融解决方案
  • 内网使用rustdesk搭建远程桌面详细版
  • RedisTemplate在Spring Boot中的五种数据结构全面详解
  • 关于 c、c#、c++ 三者区别
  • Docker项目部署(黑马商城项目为例)
  • 可扩展 Redis 查询引擎的最佳实践
  • 开源鸿蒙(OpenHarmony)桌面版全面解析:架构适配、设备支持与开发实战
  • T01_神经网络
  • Linux 77 FTP
  • OpenCV 人脸分析------面部关键点检测类cv::face::FacemarkLBF
  • 【Java面试】如何保证Java应用的安全性
  • Node.js 后台系统 - 基本增删改查实现
  • 【Python】类中的参数传递