Lazy loaded image
STM32F429 与
Words 1329Read Time 4 min
2026-3-13

背景:两种架构的内存哲学

STM32F429(Cortex-M4)是 MCU 架构,片内 SRAM 即主运行内存,无 MMU,不跑虚拟内存。i.MX6ULL(Cortex-A7)是 MPU 架构,跑 Linux 需要大容量外挂 DRAM,片内 RAM 仅作辅助。理解这一分层差异,是理解两者内存映射关系的核心。

片内快速 RAM 对应

特性
STM32F429 (Cortex-M4)
i.MX6ULL (Cortex-A7)
类型
片内 SRAM
片内 OCRAM
容量
256 KB
128 KB
Cache
无独立 L2
32 KB L1 I/D + 128 KB L2

i.MX6ULL 的 OCRAM

OCRAM(On-Chip RAM,128 KB) 功能上最接近 STM32 的 SRAM。启动阶段由 Boot ROM 占用(栈、MMU 表等),启动完成后整块可自由使用。典型用途:
  • 中断处理的低延迟缓冲
  • DMA buffer(延迟敏感场景)
  • Boot 阶段临时栈/堆
但与 STM32 不同,OCRAM 不是主运行内存,程序和数据的主战场在外挂 DDR。

外挂大容量 DRAM 对应

STM32F429 支持通过 FMC 外挂 SDRAM,i.MX6ULL 通过 MMDC 外挂 DDR3/DDR3L。两者在架构上是同一层级——都是扩展主运行内存,但技术代次不同。
特性
STM32F429 外挂 SDRAM
i.MX6ULL 外挂 DDR3/DDR3L
DRAM 类型
SDR SDRAM / LPSDR
DDR3 / DDR3L / LPDDR2
总线宽度
16/32-bit(FMC 接口)
16-bit
典型容量
8 ~ 32 MB
256 MB ~ 1 GB
带宽
~100 MHz SDR
400 MHz DDR(等效 800 MT/s)
控制器
FMC(Flexible Memory Controller)
MMDC(Multi-Mode DDR Controller)

技术演进关系

STM32F429 的 FMC 只支持到 SDR SDRAM(单倍速率),不支持 DDR 系列。DDR3 是双倍速率第三代,带宽和容量高一个数量级。演进路径:
SDR → DDR → DDR2 → DDR3 → DDR4 → DDR5

容量说明

STM32F429 常见外挂 SDRAM 芯片(如 IS42S16400J)规格为 1M × 16bit × 4bank,实际容量 = 1M × 16 × 4 = 8 MB(64 Mbit)。"1M" 是芯片的寻址深度,不是实际可用容量。

完整内存体系映射

层级
STM32F429
i.MX6ULL
片内快速 RAM
SRAM(256 KB)
OCRAM(128 KB)
主运行内存
外挂 SDRAM(8 ~ 32 MB)
外挂 DDR3L(256 MB ~ 1 GB)
代码存储
片内 Flash(2 MB)
外挂 NAND / eMMC

Flash / 非易失存储对比

STM32F429 拥有片内 Flashi.MX6ULL 没有片内 Flash,所有非易失存储均为外挂。这是 MCU 与 MPU 在存储架构上的又一根本差异。

直接对比

特性
STM32F429
i.MX6ULL
片内 Flash
2 MB(可选 512 KB / 1 MB)
(仅 96 KB Boot ROM,不可写)
XIP 支持
片内 Flash 直接 XIP
仅 NOR Flash / QSPI 可 XIP(不常用)
主存储介质
片内 Flash 即主存储
外挂 NAND Flash 或 eMMC
外挂 Flash 接口
FMC(并行 NOR)、SPI
GPMI(Raw NAND,BCH40 ECC)、uSDHC(eMMC/SD)、QSPI、并行 NOR
典型容量
片内 2 MB + 可选外挂 SPI Flash
256 MB ~ 1 GB NAND 或 4 ~ 8 GB eMMC
文件系统
裸机直接读写 / FatFS(SD 卡)
UBIFS(NAND)/ ext4(eMMC)/ SquashFS

关键差异解析

1. 片内 vs 全外挂
STM32F429 的片内 Flash 存放固件代码,CPU 上电后直接从 0x08000000 开始执行(XIP,Execute-In-Place)。i.MX6ULL 没有片内可写 Flash,启动流程完全不同:Boot ROM → 从外部介质加载 U-Boot 到 DDR → 加载 Linux 内核到 DDR → 运行。
2. NAND Flash vs eMMC 选择
i.MX6ULL 支持两条主要存储路线:
  • eMMC:内置控制器处理 ECC、坏块和磨损均衡,对软件透明,可直接用 ext4。典型容量 4 ~ 8 GB。开发更简单,成本略高。
3. STM32F429 外挂 Flash 扩展
STM32F429 本身不支持 QSPI(F4 系列中仅 STM32F446/F469 支持)。外挂 Flash 选项:
  • SPI NOR Flash:通过普通 SPI 挂载(如 W25Q256),不可直接内存映射
  • 并行 NOR Flash:通过 FMC 挂载,可 XIP 但占用大量引脚
  • SD 卡:通过 SDIO 挂载,用于数据存储

启动流程对比

阶段
STM32F429
i.MX6ULL
上电
从片内 Flash XIP 执行
Boot ROM 执行(片内 96 KB ROM)
加载
无需加载,直接运行
Boot ROM 从 NAND/eMMC/SD 加载 U-Boot 到 DDR
运行
在 Flash 或 SRAM 中执行
U-Boot 加载 Linux 内核到 DDR,全部在 DDR 中运行
启动时间
毫秒级
秒级(含 Linux 启动)

完整存储体系映射(含 Flash)

层级
STM32F429
i.MX6ULL
片内快速 RAM
SRAM(256 KB)
OCRAM(128 KB)
主运行内存
外挂 SDRAM(8 ~ 32 MB)
外挂 DDR3L(256 MB ~ 1 GB)
片内 Flash
2 MB(XIP 执行)
无(仅 96 KB Boot ROM)
主非易失存储
片内 Flash + 可选 SPI Flash / SD
外挂 NAND(256 MB~1 GB)或 eMMC(4~8 GB)
启动方式
片内 Flash XIP
Boot ROM → U-Boot → Linux(全部加载到 DDR)

面试要点

核心差异一句话: Cortex-M 用片内 SRAM + FMC 挂低速 SDRAM 即可满足裸机/RTOS 需求;Cortex-A 跑 Linux 必须用高带宽 DDR,通过 MMU 做虚拟内存管理,片内 OCRAM 仅作为启动和低延迟场景的辅助。
回答时注意三个层次:
  1. 片内 RAM 对应:SRAM ↔ OCRAM,容量和角色不同
  1. 外挂 DRAM 对应:SDRAM ↔ DDR3,同一层级但技术代次不同
  1. 架构根因:MCU 无 MMU,MPU 有 MMU + 虚拟内存,决定了内存体系的规模和复杂度
上一篇
Data Structure and Algorithm
下一篇
用面试拷问嵌入式技术栈

Comments
Loading...