3. 目标芯片与烧录场景分析

在 Flasher 量产烧录工程里,第一件容易出错的事不是接线,也不是选型号,而是把“要烧什么”认错。很多现场问题——烧录超时、校验失败、烧完不启动、良率忽高忽低——追根溯源,都是因为把目标对象识别成了错误的类别。本节先把量产烧录中常见的几类目标对象讲清楚,再给出一套可落地的需求拆解方法。

一、先分清“谁被烧”:四类目标对象

量产烧录的目标对象,按存储介质与访问路径,通常分为四类:

  • MCU 内部 Flash:程序直接写入芯片自带的 Flash,通过 SWD/JTAG 或芯片厂商的 ISP 协议访问。Flasher 通过调试接口连接,写入地址通常是 0x08000000(STM32 类)或 0x00000000(部分 NXP/瑞萨)。
  • MPU/SoC 外部 Flash(NOR/NAND):SoC 本身不带可烧录的程序存储,固件放在外挂的 SPI NOR 或并行 NAND 上。烧录时 Flasher 直接操作外部 Flash 芯片,SoC 可能处于复位或未上电状态。
  • eMMC / SD 卡:容量大、有控制器和分区表,烧录的是镜像文件(如 .img、.bin),需要按分区写入,涉及 boot0/boot1、RPMB、用户分区等概念。
  • QSPI / OSPI Flash:介于前两者之间,物理上是外部 Flash,但通过 Quad/Octal SPI 接口访问,常用于存放 SoC 的启动镜像(boot image),烧录时可能需要先配置 Flash 的 QE 位、地址模式等。

识别对象时,最可靠的方法是看数据手册的启动章节和原理图上的存储器件型号,而不是凭经验猜。例如看到 W25Q128JVSIQ,就知道是 128Mbit 的 SPI NOR;看到 MTFC4GACAJCN,就是 4GB 的 eMMC。型号确认后,烧录算法、地址映射、时序参数才能确定。

量产烧录目标对象识别与访问路径 SEGGER Flasher 调试/编程接口 SWD / JTAG SPI / QSPI eMMC / SD 并行 NAND MCU 内部 Flash 0x08000000 起 QSPI / OSPI NOR W25Q128 类 eMMC / SD 卡 分区镜像写入 外部 NAND / NOR 裸片直接访问 识别依据:① 原理图存储器件型号 ② 数据手册启动章节 ③ 芯片封装与引脚定义 关键参数:容量、页/扇区大小、擦除时间、接口模式(Single/Dual/Quad/Octal)

二、需求拆解:从“烧什么”到“怎么烧”

识别出对象之后,下一步是把量产烧录需求拆成可执行的参数。建议按以下五个维度逐项确认,每一项都对应 Flasher 工程中的一个具体配置。

1. 镜像与地址映射。确认要烧录的文件有哪些、分别写到哪个地址。例如一个典型的 STM32MP1 方案:TF-A 写到 0x00000000,U-Boot 写到 0x00080000,Kernel 写到 0x00200000,RootFS 写到 0x00800000。地址必须与启动 ROM 的加载约定一致,错一个字节就可能导致无法启动。

2. 擦除策略。是整片擦除还是按扇区擦除?量产中通常先整片擦除再写入,但如果镜像只占部分区域,按扇区擦除可以节省时间。以 128Mbit SPI NOR 为例,整片擦除约 40~60 秒,而按 4KB 扇区擦除 1MB 区域只需约 2~3 秒。这个差异在批量生产时非常可观。

3. 校验方式。写入后必须校验。常见方式有:读回比对(Read-back Verify)、CRC 校验、SHA-256 摘要比对。Flasher 支持在烧录后自动执行校验,校验失败会标记为不良品。对于 eMMC,还要注意校验时是否包含分区表区域。

4. 接口与时序参数。SPI 时钟频率、QSPI 的 dummy cycles、eMMC 的 bus width(1/4/8 bit)和时钟频率,都会影响烧录速度和稳定性。例如 QSPI NOR 在 50MHz 下写入 16MB 约需 30 秒,降到 20MHz 则可能超过 70 秒。量产时需要在速度和信号完整性之间取平衡。

5. 量产附加需求。是否写入序列号、MAC 地址、校准参数?是否需要在烧录后锁定读保护(RDP)?是否要记录每个芯片的烧录日志用于追溯?这些需求要在工程配置阶段就确定,而不是等到产线才发现。

三、一个可复用的需求拆解表

下面这张表可以直接用于项目启动时的需求确认,字段按实际量产场景设计,不引入无关的管理字段。

确认项示例值对应 Flasher 配置风险点
目标对象类型QSPI NOR,W25Q128JVFlash 型号选择型号选错导致时序不匹配
镜像文件与地址boot.bin @ 0x00000000Program 地址段地址偏移错误导致不启动
擦除方式整片擦除Erase 选项未擦除直接写导致校验失败
校验方式读回比对 + CRC32Verify 选项校验关闭导致不良品流出
SPI 时钟50 MHzInterface 速度过高导致误码,过低影响产能
序列号写入从 0x08000000 起递增Serial Number 功能重复或跳号
读保护烧录后使能 RDP Level 1Option Byte 配置忘记锁定导致固件被读出
实操提示:在正式量产前,先用 3~5 片样片跑通完整流程,记录每片的烧录时间、校验结果和启动情况。如果样片全部通过,再小批量试产 50~100 片,观察良率是否稳定。不要跳过样片验证直接上产线。

四、常见识别错误与后果

把 eMMC 当成 SPI NOR 来烧,最典型的表现是 Flasher 连接后读不到 ID,或者读出的 ID 与预期不符。把 QSPI Flash 当成普通 SPI Flash 烧,可能因为缺少 QE 位配置而只能以 Single SPI 模式写入,速度慢且容易在高速下失败。把 MCU 内部 Flash 当成外部 Flash 烧,则会因为地址空间不同而直接报错。

避免这些错误的方法很简单:在工程建立阶段,把目标器件的完整型号、封装、接口模式、容量、页大小、扇区大小、擦除时间全部记录在案,并与 Flasher 的器件库逐一核对。如果 Flasher 内置库中没有该型号,需要手动添加或选择兼容型号,并验证时序参数。

需求拆解的本质,是把“要烧什么”翻译成“Flasher 能执行的参数”。对象识别是前提,参数确认是核心,样片验证是保障。三者缺一不可。