1. MCU存储器架构基础解析
MCU(微控制器单元)作为嵌入式系统的核心,其存储器架构直接决定了程序执行效率、功耗表现和开发难度。不同于通用计算机的冯·诺依曼架构,现代MCU普遍采用哈佛架构——将程序存储器和数据存储器物理分离。这种设计让指令读取与数据访问可以并行进行,典型场景如STM32F103系列在执行Flash中的指令时,同时通过总线矩阵访问SRAM中的数据。
存储器层级通常包含:
- Flash ROM:存放固化程序代码和常量数据,如STM32F1系列的128KB主Flash区块
- SRAM:用于运行时变量和堆栈操作,F103C8T6配备20KB SRAM
- EEPROM(可选):存储需频繁修改的配置参数,如ATmega328P的1KB EEPROM
- 备份寄存器:在低功耗模式下保持关键数据,STM32L4系列提供4KB备份SRAM
关键差异:NOR Flash支持XIP(就地执行)特性,允许CPU直接从Flash取指;而NAND Flash需先加载到RAM。这解释了为何多数MCU采用NOR型Flash作为主存储器。
2. 典型MCU存储映射分析
以STM32F407为例,其存储器地址空间分配如下:
| 地址范围 | 存储类型 | 功能说明 |
|---|---|---|
| 0x0000 0000 | 多种映射 | 通过BOOT引脚选择启动存储器 |
| 0x0800 0000 | 主Flash | 存放用户程序代码 |
| 0x2000 0000 | SRAM1 | 128KB主运行内存 |
| 0x4000 0000 | 外设寄存器 | GPIO/USART等寄存器映射区域 |
| 0xE000 0000 | 内核外设 | NVIC、SysTick等系统寄存器 |
启动配置实战:
- BOOT0=0且BOOT1=0时从主Flash启动(最常见场景)
- BOOT0=1且BOOT1=0时从系统存储器启动(
