只读分享解决方案文档调试&解决方案📅 2026-09-21🔖 Rev 1.0⏳ 29天有效(至 2026-10-31)
🔧解决方案&应用市场分析 -> 调试&解决方案 -> 存储_量产问题排查 -> eMMC_Boot分区配置错误_量产排查

eMMC_Boot分区配置错误_量产排查

生成时间 2026-09-28 13:34:46 有效期至 2026-10-31 23:59:59(29天有效(至 2026-10-31))
同系列 · 调试&解决方案

eMMC Boot 分区配置错误 · 量产排查

编制日期 2026-09-21 | 版本号 Rev 1.0

XTX 芯天下 · FAE 现场技术文档 | eMMC Boot1/Boot2/RPMB/UDA 多分区架构下的量产不开机 / 启动异常排查 | 2026-09 版

顶部纪律提示(执行前必读)

eMMC EXT_CSD 各字段含义、HS200/HS400 时序参数以具体厂商 / 容量版本 datasheet(建议 JEDEC eMMC 5.0 / 5.1 / 7.x 规范交叉核对)为准;本文仅展示识别与应对机制。

  • EXT_CSD 是 256 字节的寄存器而非内存:操作前必须先 read 再 write,切忌盲写覆盖厂商保留位。
  • RPMB key 一旦烧错,整盘永久不可恢复:写 key 前必须预先备份 key,并确认与主控期望一致。
  • Boot 分区操作不会改 UDA,但 UDA 操作不当会破坏 Boot 分区:擦除 / 改写 UDA 前要确认未波及 Boot 区。
  • 各厂商(Samsung / SK Hynix / Micron / Kioxia / Phison / Kingston)对 EXT_CSD 实现存在差异:以具体器件 datasheet 为准。
  • 这是 eMMC 专属问题,不发生在 SPI NOR / SPI NAND / SD NAND。
6 类
Boot 配置报错分类
大小 / 切换 / 模式 / RPMB / HS / 版本
4 区
Boot1 / Boot2 / RPMB / UDA
各自独立可寻址、独立写保护与使能位
256B
EXT_CSD 寄存器(非内存)
操作前先 read,再 write;勿覆盖保留位
OTP
RPMB key 一次性写入
烧错整盘永久不可恢复,须预先备份 key
R1b
CMD6 切分区返回 busy
必须等 busy 结束,再发下一条命令

一句话结论:eMMC 量产不开机 / 启动到一半,根因几乎都在多分区架构下的 Boot 配置错位—— Boot 分区默认大小 = 0、PARTITION_CONFIG 切换 / 使能位 / 总线宽度 / RPMB key / HS200-HS400 协商 / EXT_CSD 版本任一不对,主控就读不到或读错 bootloader。 排查按「架构 → 4 大分区 → EXT_CSD 字段 → 6 类错位 → 速查 → 防复发」逐层定位。

这份文档解决什么

解决的是 eMMC 因 Boot 分区配置错误导致量产不开机或启动到一半这一类问题的定位与根治方法。覆盖 eMMC 4 大物理分区架构、EXT_CSD 关键字段、6 类 Boot 配置错误的机制与处置、HS200/HS400 协商、RPMB key 顺序、烧录器版本兼容、速查表与防复发 SOP。全文按「机制 → 字段 → 分类 → 速查 → 防复发 → 附录」组织,第 10 章是可直接翻查的速查表,第 12 章是可落地的核查清单。

1. 问题本质:eMMC 分区体系的 6 种典型报错

eMMC 区别于 SPI NOR / SPI NAND / SD NAND 的核心,是它内部被器件控制器划分为多个独立可寻址物理分区,且每个分区有独立的写保护、使能位与大小配置。烧录时这些配置任一出错,就会表现为「烧了却不开机 / 启动到一半」。

eMMC 分区体系的 6 种典型 Boot 配置报错 1 BOOT_SIZE_MULT 越界 大小超 1..255 或步长非 128KB Boot 分区过小 / 被器件拒绝 2 PARTITION_CONFIG 拒绝 切分区位非法 / 写后未回 UDA 烧录器找不到目标分区 3 RPMB 鉴权失败 key 未装 / 装错 / MAC 不过 安全启动校验卡死 4 HS200 协商失败 时序 / tuning 不过 降档到 HS / SDR 才认 5 Boot Mode 启动失败 ack / bus width 错 复位不进 Boot Mode 6 扩展 EXT_CSD 拒绝 烧录器版本旧 / 字段不存在 写新 EXT_CSD 被拒
图 1 · eMMC 分区体系的 6 种典型 Boot 配置报错

来源:按量产症状归类,具体报错码以器件 datasheet 与主控返回状态为准

6 类报错与对应章节

序号典型报错根因对应章节
1BOOT_SIZE_MULT 越界Boot 分区大小超 1..255 或步长非 128KB 对齐第 4 章
2PARTITION_CONFIG 拒绝切分区位非法,或写后未切回 User Area第 5 章
3RPMB 鉴权失败key 未装 / 装错 / MAC 校验不过第 7 章
4HS200 协商失败时序 / tuning 不过,降档才认第 8 章
5Boot Mode 启动失败acknowledge / bus width 错,复位不进 Boot Mode第 6 章
6扩展 EXT_CSD 拒绝烧录器版本旧,字段不存在被拒第 9 章
为什么 eMMC 特别容易「烧了却不开机」

SPI NOR / SPI NAND / SD NAND 通常只有一块用户存储区,烧录器把镜像写到固定偏移即可;eMMC 有 Boot1、Boot2、RPMB、UDA 等逻辑分区,且各分区有独立的写保护、使能位与大小配置。烧录器若在「裸片视角」烧 Boot 分区,而主控按「启动配置位」去读,两者错位就会不开机。这是 eMMC 专属问题。

2. eMMC 4 大物理分区总览

eMMC 上电后由内部控制器把 NAND 阵列划分为 4 大独立寻址的物理分区:Boot1、Boot2、RPMB、UDA(User Data Area)。四者地址空间互不重叠、各自带写保护 / 使能位,烧录器必须按物理分区分别寻址。

eMMC 4 大物理分区地址空间(独立编址,互不重叠) Boot1 · 启动分区 默认大小 = 0,启用后扩至 1/2/4 MB Boot2 · 启动分区(备份) 与 Boot1 同规格,可冗余 RPMB · 安全区(key OTP 不可逆) UDA · User Data Area(主存储) 内核 / 设备树 / 文件系统 / 用户数据 可切出 GPP 作为独立逻辑分区 Boot1/Boot2/RPMB 为空时 UDA 仍独立可寻址 UDA 操作不当会破坏 Boot 分区! 4 大 物理分区 各独立 可寻址 各带写 保护位 地址(示意) 低地址区 独立安全域 容量最大 承载系统主体 注:各厂商偏移 / 容量以 datasheet 为准
图 2 · eMMC 4 大物理分区地址空间(Boot1/Boot2/RPMB/UDA)

来源:地址为示意,具体偏移与容量以器件 datasheet 为准

分区用途关键特性(以 datasheet 为准)
Boot1启动分区,上电由主控拉 RST_n 触发启动默认大小 = 0(BOOT_SIZE_MULT=0);可扩至 1/2/4 MB;支持写保护
Boot2启动分区备份,冗余启动与 Boot1 同规格;可配置为双 Boot 或备份
RPMBreplay-protected 安全区,存 key / 安全计数器key 一次性写入(OTP);无 key 访问受限;必须先装 key
UDAUser Data Area,主存储(内核 / 文件系统 / 用户数据)可切出 GPP;承载系统主体;容量最大
高危纪律:UDA 操作不当会破坏 Boot 分区

Boot 分区(Boot1/Boot2/RPMB)的读写不会改动 UDA;但反过来,对 UDA 的擦除 / 改写 / 坏块管理若配置不当,可能波及 Boot 分区,导致原本正常的 Boot 被清掉。量产擦除 UDA 前,务必确认烧录器只针对 UDA 命名空间操作,且 Boot 分区写保护已正确设置。

3. EXT_CSD 关键字段速查表

EXT_CSD 是 eMMC 内部一块 256 字节的寄存器(不是内存),存放所有分区与模式配置。烧录 / 启动相关的绝大多数错位都能在这里找到对应字段。操作前必须先 read 再 write,切勿整块盲写覆盖厂商保留位。

EXT_CSD 关键字段映射(字节地址,256B 寄存器) Addr 162 ERASE_GROUP_DEF 擦除单位 512B / 整片 Addr 177 BOOT_BUS_WIDTH Boot 模式 总线宽度/ack Addr 178 BOOT_CONFIG Boot 配置 保护位 Addr 179 PARTITION_CONFIG 启动分区使能 +访问分区 Addr 183 BUS_WIDTH 普通模式 总线宽度 Addr 185 HS_TIMING HS200 / HS400 速率选择 Addr 226 BOOT_SIZE_MULT Boot 分区大小 默认 = 0 禁用
图 3 · EXT_CSD 关键字段映射(字节地址,256B 寄存器)

来源:字节地址与字段语义以具体器件 datasheet / JEDEC eMMC 规范为准

字节地址字段含义(以 datasheet 为准)烧录关注点
162ERASE_GROUP_DEF擦除单位选择:512B 或整擦除组擦除 UDA 前确认单位,避免误擦 Boot 区
177BOOT_BUS_WIDTHBoot 模式总线宽度 / acknowledge / 复位后总线条件与主控期望的 boot 总线宽度对齐
178BOOT_CONFIGBoot 配置保护位受写保护时改 Boot 配置会被拒
179PARTITION_CONFIG启动分区使能位 + 当前访问分区选择切 Boot/UDA/RPMB 的核心寄存器
183BUS_WIDTH普通模式(非 Boot)总线宽度HS 模式下的 1/4/8-bit 设置
185HS_TIMING速率模式选择:legacy / HS200 / HS400切 HS200/HS400 必须配,旧烧录器可能无此字段
226BOOT_SIZE_MULTBoot 分区大小 = MULT × 128KB,N=1..255默认 0 = 禁用,启动前必须扩展
操作纪律

EXT_CSD 是寄存器而非内存:写某字段用 CMD6 按 索引 + 值 改单个字节,CMD6 切分区 / 改时序会返回 R1b(带 busy),必须等 busy 结束。不要整块覆盖式写入,否则会破坏厂商预留的校准 / 坏块管理信息。

4. 第 1 类:BOOT_SIZE_MULT 配置错

Boot 分区大小由 EXT_CSD[226] BOOT_SIZE_MULT 决定,公式为 Boot 分区大小 = BOOT_SIZE_MULT × 128KB,步长 128KB,有效范围 N = 1..255。出厂默认 BOOT_SIZE_MULT = 0,即 Boot 分区大小 = 0,分区不使能。

Boot 分区大小 = BOOT_SIZE_MULT × 128KB(步长 128KB,N = 1..255) 0 MULT=0 禁用 1 MB MULT=8 2 MB MULT=16 4 MB MULT=32 ≈32 MB MULT=255 0 容量(示意,实际以 datasheet 为准)
图 4 · BOOT_SIZE_MULT 值到字节数映射(0 / 1MB / 2MB / 4MB / 255)

来源:数值与步长以器件 datasheet 为准,示例取常见 1/2/4 MB

高危默认

BOOT_SIZE_MULT 默认 = 0,Boot 分区大小 = 0。如果烧录器 / 工程只在 Boot 分区写镜像,却没先把 BOOT_SIZE_MULT 扩到与目标匹配的大小(常见 1MB / 2MB / 4MB),主控启动时该分区为空或过小,直接表现为完全不开机或卡在 bootloader。数值以 datasheet 为准。

典型错位与表现

配置现象机理(以 datasheet 为准)
MULT = 0完全不开机,串口无输出Boot 分区不使能,主控读不到 bootloader
MULT 偏小卡在 bootloader / 校验失败镜像被截断,只写进部分 Boot 分区
MULT 偏大启动正常但浪费空间大小超过主控预期,一般不致命但需对齐
非 128KB 对齐配置被器件拒绝 / 取整写值未按 128KB 步长,实际生效值与预期不符
N > 255写被拒绝 / 回读异常超出 1..255 合法范围

立即动作

  1. 用 CMD8 + CMD6 先 read EXT_CSD[226] 确认 BOOT_SIZE_MULT 实际值;若 = 0 即为根因。
  2. 将 BOOT_SIZE_MULT 设为目标值(如 2MB 对应 MULT=16),CMD6 写后等待 R1b busy 结束。
  3. 重新烧录 Boot 镜像并读回校验;首件装板确认能进 bootloader。