烧录失败排查指南:九成问题不在芯片,供电、接线与配置是关键
2026/9/25 1:09:51 网站建设 项目流程

烧录良率上不去,是量产项目里特别磨人的一件事。我见过不少团队,开发阶段样机怎么烧都能过,一进产线良率就掉到90%以下,然后开始挨个怀疑芯片、怀疑烧录器、怀疑员工操作。说实话,排查了几年烧录问题之后,我现在总结出一条规律:真正属于“芯片坏了”的占比极低,九成以上都集中在几个固定环节里。这篇文章就把我自己的排查顺序和判断依据完整整理一遍,覆盖硬件供电、信号连接、工具链配置和产线管理几大块,适合做嵌入式软件开发、硬件设计、DFM评审和量产导入的工程师参考。你不需要按顺序从头看到尾,直接对照你的失败现象找对应章节就行。

1. 收到烧录失败先别急换芯片,把失败“定性”再说

1.1 烧录动作到底是哪几步

烧录本质上就三件事:擦除、写入、校验。擦掉目标存储器里的旧内容,把固件数据按地址写进去,再读出来和原文件比对。任何一步卡住或出错,结果都是“烧录失败”。搞清楚失败发生在哪一步,比盲目换下载器重要得多。

调试器报错信息其实已经帮你分好了类。比如 Keil 的 Output 窗口出现 “Flash Download failed”,一般卡在擦除/写入;“Erase Failed” 就是擦除阶段;“Verify failed” 是校验阶段;而 “No target connected”“Connection error” 这类是连话都没说上,连接阶段就挂了。

另外还要分“硬失败”和“软失败”。硬失败是重复烧录多次依旧失败,大概率硬件损伤、芯片锁死、Flash 坏块;软失败是失败一次,重新插拔一下就好了,这类大多是接触、时序、供电波动造成的。排查思路完全不同,前者查硬件和器件本身,后者查工装和工艺参数。

1.2 用错误码和日志代替猜

我踩过最大的坑就是不看日志直接换芯片。产线报“10%烧录失败”,先让产线人员把失败的板子按错误码分类,看到底是哪一类。J-Flash 有独立的 log 窗口,OpenOCD 的终端会输出很明确的 error 信息,ESP32 用 esptool 的串口输出也会提示类似 “A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header” 的话,这些输出直接指向超时和连接问题。

Keil 5 的烧录失败信息要留意 “RDDI-DAP Error”。这个报错最常见的原因是目标板供电不稳或调试接口被占用。我测试过很多次,RDDI-DAP 出现时,先给目标板重新上电一次,有七成概率能恢复;剩下的就要查线长和 SWD 时钟频率了,这个在后面单独说。

1.3 别忘了“烧录成功但板子不跑”也算不良

还有一种更隐蔽的失败:烧录器明确报成功,检验工装也显示校验通过,但板子亮机就死。这种现象通常不是烧录环节本身的问题,而是固件地址、启动配置、BOOT 引脚或加密位不对。但产线统计良率时它一样算不良品。我建议在烧录工位后加一个“上电自检”步骤,用串口抓目标板启动日志,确认系统真正跑起来再放行。哪怕只是检测串口有没有打印启动信息,都能拦下很多“假成功”。

2. 硬件环节:供电、地线、复位和 BOOT,九成问题藏在这里

2.1 供电电压跌落是烧录失败的隐形头号杀手

批量烧录时最常见的场景是:调试器通过 USB 接电脑,USB 的 5V 再经过目标板上的 LDO 变成 3.3V 给芯片供电。看起来天经地义,但这个链路很不稳。Flash 擦写瞬间电流会突然拉高,如果 USB 口供电能力不足或 LDO 余量不够,VCC 瞬间跌落几毫秒,烧录器这边就会报连接失败或写入超时。

我处理过一个典型案子:某个 ESP32 模组的烧录批量失败率一下子从 1% 涨到 12%,后来量了一下烧录瞬间的 3.3V,发现跌落到了 2.7V 以下。原因就是换了一批品质不太行的 USB 线,线阻变大。把目标板供电改到独立的 5V/2A 电源适配器后,失败率直接归零。排查供电问题别只看万用表,要用示波器监控烧录瞬间的 VCC 波形;没有示波器的话,至少换一个供电更充裕的电源试试,这是成本最低的 A/B 测试。

2.2 地线没连好,一切信号都是白搭

很多烧录器通过 USB 和电脑相连,而电脑的 USB 地就是调试器的参考地。如果目标板同时用独立适配器供电,两块板之间地电位不一定一致。地电位差导致 SWD 信号判定错误,表现就是芯片有时候能识别、有时候不能,甚至完全找不到目标。

解决办法简单粗暴:拿一根杜邦线先把烧录器的 GND 和目标板的 GND 连起来,再试一次。我做产线支持时,几乎每周都会碰到一两块“怎么都连不上”的板子,这样一接就好了。另外要注意 USB 延长线和电脑主板的品质,USB 地参考不稳也会引发类似问题。

2.3 BOOT/下载模式引脚:顺序比电平更重要

ROM 引导类的芯片几乎都要先进入下载模式。STM32F1/F4 系列要用 BOOT0 拉高进入系统 Bootloader,这时可以通过串口 ISP 或 DFU 烧录;ESP32 系列下载模式要求 GPIO0 拉低,然后 EN 脚给一次复位。很多“烧录不进去”的案例,仔细一看是 GPIO0 确实拉低了,但没给复位,芯片没有重新采样启动引脚电平,当然进不了下载模式。顺序一定是:先设置 BOOT 引脚电平,再触发复位/上电,不要反过来。

DSP 类的 C6748 或部分机顶盒主控也一样,串口烧录前要看启动模式拨码或电阻配置。像 C6748 这种不带内部非易失 Flash 的 DSP,烧的是 SPI Flash 或 NAND,串口引导需要把启动管脚配置为 UART 模式。开发阶段用仿真器怎么烧都行,量产时按目标方案数据手册把启动配置核对一遍,能省很多沟通成本。

2.4 电平匹配:烧录器不是万能的

不同芯片的 IO 电压差别很大。老式 5V 单片机、3.3V 的 STM32、1.8V 的 nRF51822、还有部分专用 SoC,逻辑电平如果对不上,SWD/JTAG 信号就判不出高低电平。

选择烧录器前先确认目标板 IO 电压范围。ST-Link V2 和 J-Link 都有参考电压引脚,接线时会把目标板的 VCC 引给烧录器,它据此调整输出电平;如果不接这个参考电压,很多烧录器会默认用 3.3V 甚至直接不工作。对于 1.8V 的目标芯片,务必选支持 1.8V 的版本或加电平转换,别硬来。烧录器烧的也不只是 Flash,有的还顺带烧写选项字节、加密位,这些操作同样受电平影响,配置字节写错可能导致芯片从此无法连接。

3. 连接与信号完整性:线越短越稳,时钟越低越稳

3.1 接线与线序:最便宜但也最容易被忽略的坑

SWD 接口正常只需要 SWDIO、SWCLK、GND 三根线就能烧录,加上 RESET 会稳一些。产线员工或者你自己在开发阶段用杜邦线连接时,最常见的问题是线序。SWDIO 和 SWCLK 接反,或者使用了某种转接板但没有核对每个引脚定义,都会造成“连不上”或者“时好时坏”。

我见过一个自制的转接板,把 SWCLK 和 SWDIO 丝印画反了,开发时用短杜邦线勉强能烧,一装进治具用长排线就全面失败。排查这类问题时,先用万用表蜂鸣档沿着连接器到调试器接口逐根量一遍线序,不要相信丝印。再补充一句:没有特殊需求时,烧录探针不要把 RESET 接到其他 GPIO 上,否则目标板运行中一直被复位,现象跟“烧录失败”一模一样。

3.2 把烧录时钟降下来,能解决一半的超时问题

SWD/JTAG 的通信频率越高,对线材、寄生电容、地线噪声越敏感。J-Link 默认的 SWD 速度可能到 4MHz,ST-Link 也支持较高的频率,但在产线那种又长又乱的线缆环境下,4MHz 经常握手失败或传着传着就超时。把速度降到 1MHz、500kHz 甚至 100kHz,多数情况下立刻稳定。

具体设置:Keil 里进入 Options for Target → Debug → Settings,把 Max Clock 调低;J-Flash 在 Project Settings 里选 interface speed;OpenOCD 的命令行就是 “adapter speed 1000”“transport select swd” 这类。ESP32 用 esptool 烧录时如果默认波特率高导致超时,加低波特率参数重试。串口 ISP 也一样,115200 不稳定就降到 57600 或 38400,STC 单片机的下载器不是也经常建议用低波特率吗。

3.3 顶针、排线和接触电阻:产线良率的隐藏变量

批量烧录的失败率如果随时间慢慢上升,优先怀疑接触件。压针式烧录夹具用久了顶针会氧化、磨损,接触电阻变大;接触电阻只要到几欧姆,SWD 信号就开始劣化。我建议大家定期做“连续烧录 50 片”的抽检,如果失败率突然升高,先清洁顶针,再做接触电阻测量,要求小于 1Ω,不行就换一批顶针。

如果是手工生产线,不要用长度超过 30cm 的杜邦线烧录,尤其是没有屏蔽的排线。长线就是天线,除了引入噪声,还容易在插拔瞬间产生毛刺信号。量产治具建议用短排线加镀金探针,信号线、电源线分开走,地线要粗。

3.4 目标板外围电路会“捣乱”

有些板子烧录失败不是烧录端问题,而是目标板上电后那些外设太“吵”。比如大电容导致上电瞬间拉低电源,MOSFET 驱动电路在初始化时产生大电流毛刺,这些都会干扰 Flash 擦写时序。排查时做一个简单实验:断开目标板上的负载和外设,尤其是大功率器件,只保留 MCU 最小系统去烧录,如果稳住,说明外围电路影响了烧录过程,可以考虑在烧录工装上加电源隔离或修改上电时序。

另外,SD 卡烧录 Ubuntu、树莓派系统镜像这类写卡场景,物理层面原理不同,但可靠性逻辑类似:劣质 SD 卡、读卡器接口氧化、供电不足会导致写入慢或写入失败。写系统卡时尽量用品牌卡,不要贪便宜用杂牌扩容卡,写完一定要校验。balenaEtcher 默认有校验选项,Win32DiskImager 也有,这几秒钟不要省。

3.5 时钟、复位和调试口撞车问题

还有两种常见“怪病”:一是目标板外部晶振没起振,芯片内部时钟虽然能跑,但烧录时序和通信不稳,换来换去都不行,排查后换个晶振负载电容就恢复了。二是 SWD 引脚被复用功能抢占,比如 STM32F405 的 SW 脚被配置成了 GPIO,一旦烧录口被禁用,调试器就再也连不上。这种“锁死”看着吓人,但大部分能救:把 BOOT0 拉高,上电进入系统 Bootloader,用串口 ISP 全片擦除,再回到 SWD 烧录就可以了。不要一发现连不上就判死刑。

4. 工具与配置:芯片型号、烧录算法、复位方式和校验顺序

4.1 Keil5 烧录失败的经典报错逐个说

Keil 5 在产线场景虽然用得少,但开发阶段很常见,先把它讲透。“Flash Download failed - Cortex-M3/M4”这类错误,优先核对两件事:Target Device 是不是选对了,Flash Download 页面里的 Programming Algorithm 有没有对应芯片的 .FLM 文件。换芯片型号忘了换 Flash 算法,是新手最容易踩的坑。

“RDDI-DAP Error”前面提过,常见于调试口被占用、供电不稳、线缆太长。按顺序做三件事:目标板重新上电;降低 Debug 里的 Max Clock 到 1MHz 以下;检查 SWDIO/SWCLK 接线和电压。实在不行,用串口 ISP 擦除后重新连接。还有一个细节:部分器件 Pack 没有安装时,Target 下拉框里根本找不到芯片型号,这也会导致后面所有设置错乱,先装对应器件 Pack 再说。

4.2 独立烧录器与命令行:量产推荐,少用 IDE

量产阶段强烈建议用独立烧录工具,而不是打开 IDE 点烧录。IDE 版本、编译路径、误操作都容易引入变量。J-Flash 是 SEGGER 家的老牌工具,打开后选目标设备、接口类型、速度、加载固件、点 Program。要注意 Device 选错会让 Flash 算法错乱,哪怕烧进去也可能校验不过。OpenOCD 适合 Linux 产线自动化和脚本集成,一条命令就能完成烧录和校验:

openocd -f interface/stlink-v2.cfg -f target/stm32f1x.cfg -c "program app.hex verify reset exit"

C6748 这类 DSP 用 CCS 烧录,路径相对复杂,要先生成正确的 AIS 引导文件再通过串口工具写入;如果直接用 CCS 烧到 RAM,断电就没了,量产时要分清“烧 RAM 调试”和“烧 Flash 固化”的区别。ESP32 则常用 esptool:

esptool.py --port COM3 --baud 921600 write_flash 0x1000 bootloader.bin 0x8000 partition-table.bin 0x10000 app.bin

这些命令参数看着繁琐,但每段固件的起始地址都必须核对,特别是做量产自动化时,脚本里的地址写错会导致“烧录成功但起不来”的批量事故。

4.3 按钮点下去之前:擦除策略和校验选项先确认

量产烧录最忌讳直接沿用开发时的默认设置。一个典型场景:产品出厂前已经烧录过校准数据、序列号、MAC 地址,这些数据存放在 Flash 的特定扇区;产线再烧录时如果选了“全片擦除”,校准区就没了,整板报废。这种情况要把烧录策略改成“只擦除应用程序所在扇区”,或使用带地址保护的烧录工具。

校验选项一定要打开。J-Flash 烧录完成后默认会做 verify,OpenOCD 命令里我写了 verify,Keil 的 Flash Download 页面里也有 “Verify” 选项。实测下来,很多“报成功但产品工作异常”的板子,打开校验后会在量产环节被当场拦下来。至于 Flash 读保护/写保护等级太高导致的烧录失败,如果是 RDP 等级 1,用调试器全片擦除一般能解锁;等级 2 基本是永久锁定,只能换芯片,量产前别轻易设置这个等级。

4.4 多段固件与地址错位:烧录成功的“假象”

带 Bootloader 的产品,量产烧录往往一次要写多段二进制。STM32 系列典型布局是 0x08000000 放 Bootloader,0x08008000 放 Application;ESP32 则是 bootloader、分区表、App 三个 bin 分别写到不同偏移。任何一段的起始地址错了,校验阶段如果恰好没开,就会产出“烧录成功但上电白屏/死机”的板子。

我处理过一个和 Jetson 平台、树莓派镜像烧写情况类似的案件,看起来场景不同,本质一样:镜像写入 SD 卡时分区偏移错误或写盘软件版本不匹配,导致设备能通电但系统引导失败。核对地址时不要靠记忆,直接看链接脚本或编译生成的 .map 文件;生产脚本里把地址做成显式参数,每次换固件版本时重新核对一遍。

5. 批量数据的价值:台账、复测和工位设计

5.1 烧录工艺纪律:把人、机、料、法、环固定下来

良率排查如果只靠记忆和口口相传,永远查不清楚。我会在项目量产前定几条死规矩:固定烧录电脑、固定烧录器、固定同版本烧录软件和驱动、固定固件文件路径,任何变更都走变更记录。看起来繁琐,但能滤掉一大半“昨天还好好的今天就不行”的玄学问题。

台账建议至少记录这几列:时间、操作员、产线工位、板卡编号或批次、固件版本、烧录结果、错误码、备注。用 Excel 或者工位软件记都行,关键是坚持。数据攒够两三天,用数据透视表按错误码分一下层,哪个环节占大头一目了然。我见过一个工厂良率 96%,他们一直以为是接触问题,统计数据一拉才发现 70% 都是“校验失败”,最后定位到固件文件本身有坏块,和数据毫无关系。

5.2 失败品复测:真坏还是假坏,一测便知

产线对烧录失败的板卡不要直接扔到维修区,先做一次标准化复测:换一把好的探针/线材,按统一的顺序重新上电再烧。如果二次烧录能过,说明器件没问题,问题在夹具接触或员工操作,这类占比通常很高;如果二次依旧失败,才需要进入返修流程,检查芯片焊接、Flash 坏块、芯片本体。

这步看起来很简单,但能省下大量“假维修”时间。曾经有条线烧录失败率 5%,复测之后发现 4.5% 二次通过,剩下的 0.5% 才是真不良。前者改治具、改操作手法就能解决,后者走器件分析流程,完全不同的路径。给产线留一张失败标记标签,写明第一次失败现象和时间,复测时对照着看,效率很高。

5.3 治具与工位设计:烧录不是搞科研,越无脑越好

量产烧录工位的最佳状态是:操作员把板子卡进治具,按下按钮,看指示灯,绿走红停。任何需要员工盯着命令行、手工敲命令的流程,都会把人为失误带进良率里。

治具方面,尽量用压针式夹具,探针选镀金,弹簧力度适中;定期清洁探针,避免助焊剂残留导致接触电阻变大。工位静电防护也要到位,手腕带接地,桌面绝缘,环境温湿度不要太离谱。烧录器本身是消耗品,长期高负荷使用也有老化,最好每台设备编号登记,定期用一块“标准样片”自检:每天开工前烧一次标准样片,能通过再开始批量。这个习惯我用了很多年,幽灵故障至少少一半。

5.4 电脑和 USB 的那些“小概率事件”

产线电脑自动休眠、USB 节能策略、USB HUB 供电不足,这些听起来像小事,实际都能导致烧录中途失败。量产电脑建议统一关闭 USB 自动挂起和系统休眠,烧录器直接插主板 USB 口,不要经过劣质 HUB。J-Link 的驱动版本也经常会“悄悄变化”,换电脑后忘记装匹配驱动就会出奇怪问题。

再强调一遍:如果某个工位失败率明显高于其他工位,先别怀疑芯片,用“替换法”把烧录器和电脑换掉,看问题是不是跟着设备跑。这个方法 90% 的情况下能快速锁定故障源。

6. 烧录常见问题速查表:照着查,不烧脑

6.1 快速对照表

失败现象优先怀疑处理方式
找不到目标芯片 / No target connected供电、线序、目标板未上电先量 VCC/GND;确认 SWDIO/SWCLK 没接反;最后降时钟
连接不稳定,时好时坏接触电阻、线缆过长、电源波动换短粗线;清洁探针;降到 1MHz 以下
RDDI-DAP Error调试口被占用、电压不稳重新上电;降 Max Clock;必要时串口 ISP 全片擦除
Flash Download failed芯片型号或 Flash 算法选错核对 Target Device 与 .FLM 算法文件
Verify failed / 校验不过地址错、固件坏、写保护核对烧录地址;检查固件哈希;解除 RDP
Erase failed芯片锁死、Flash 损坏尝试全片擦除;不行就换芯片
烧录成功但板子不启动BOOT 引脚、启动地址、配置位查 BOOT 电平;核对链接脚本地址;抓串口日志

6.2 标准排查顺序

按这个顺序走,能覆盖绝大多数烧录问题:先看供电,万用表量 VCC 和 GND,示波器看有没有跌落;再看接线,线序、线长、接触电阻;然后降速,SWD 降到 1MHz 以下,串口降到 115200 以下;接着核对工具配置,芯片型号、Flash 算法、烧录地址、校验开关;最后才考虑芯片本身,用替换法换一片确认。多数情况下,走到第三步问题就已经解决了。

我个人做量产支持的体会是,烧录良率从来不是单一技术问题,它是硬件设计、工具配置、产线管理和数据统计共同作用的结果。你不一定需要搞懂所有协议细节,但一定要有一份自己的排查清单。最后再分享一个小习惯:每次批量开工前,先烧录一块“标准样片”,确认今天的电脑、烧录器、线材、治具和昨天一致,再开始排产。这个动作我用了很多年,帮我挡掉了至少一半说不清来由的烧录故障。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询