1. 别急着骂烧录器,先想想你的硬件链路
烧录良率上不去这种事,做硬件的人基本都经历过。片子换了一批、产线换了个工位、或者干脆什么都没动,良率就从99%掉到90%甚至更低。这时候多数人的第一反应是怀疑烧录器坏了、软件版本不对,或者芯片本身有问题。我踩过几次坑之后想说,烧录良率是硬件、工具链、芯片状态和作业手法四件事的叠加结果,绝大多数情况下锅都不在烧录器身上。
1.1 供电与电压匹配:九成良率问题的源头
先看供电,因为这是最容易被忽略、又最容易导致批量性烧录失败的因素。烧录器和目标板之间,不只是几根信号线的事,供电电压的一致性直接决定了通信时序是否可靠。
我遇到过一整批板子烧录失败率超过30%的情况,量了烧录器输出3.3V没问题,目标板上的LDO输出也是3.3V,但接上SWD后就是时好时坏。后来用示波器抓了SWDIO和SWCLK的波形才发现,在烧录瞬间目标板电流从20mA跳到120mA,板上的LDO压降增加,实际核心电压掉到了3.1V以下,而烧录器仍然按3.3V的逻辑电平去采样,时序边缘直接崩溃。
这里有一个容易出误区的地方:很多人以为SWD只需要接SWDIO、SWCLK、GND三根线就够了。理论上确实可以,但工程上我强烈建议把烧录器的VREF(参考电压脚)接到目标板的电源上。SWD的IO逻辑电平是跟随VREF的,如果烧录器不知道目标板实际电压是3.3V还是2.8V,它按3.3V的阈值去判断2.8V系统的高电平,信号余量就不够了。对于3.3V系统,VREF用万用表量出来应该在3.30V±0.05V以内;差的烧录器在负载下会跌,一跌就是各种"连接超时"。
供电相关的排查顺序建议这样走:
- 先确认烧录器电源输出和目标板电源各自是多少,相差50mV以上要警惕。
- 看烧录瞬间示波器上电压跌落幅度,超过5%就要查电源余量。
- 用短而粗的线给烧录器供电,特别是GND回路,SWDIO/SWCLK信号线反而可以细一点。
- 如果是给目标板供电烧录的方式(很多工装烧录机是这样),一定要按"烧录峰值电流"来设计供电,而不是按MCU数据手册上的平均功耗。多数MCU在擦写Flash时会有额外电流,比如STM32F4整片擦除瞬间电流能到80-150mA,比运行模式还高。
注意:烧录器不要用那种细长的USB线供电,实测一些廉价烧录器在USB线超过1米时,输出电压能掉0.3V以上,这时候烧录失败率会明显上升。
1.2 SWD接线、线缆长度与复位电路:看似简单其实坑很多
SWD本身只有两根信号线,但恰恰是这两根线在产线上最容易出问题。我在多个项目里反复遇到过:单板调试时怎么烧都没事,一上产线就偶发失败,而且故障板拿回实验室又能烧进去,这种"妖娆"问题十有八九出在线缆和接插环节。
一个很少有人提的经验是SWCLK频率要按线长来降。ST-Link默认SWD频率是4MHz,J-Link默认可能是5MHz或更高。如果你的烧录线超过20cm,或者经过了顶针/转接板,信号的反射和容性负载会明显增大,4MHz以上就很容易出现校验错误或者"cannot access target"。
具体参考值我整理过:
| 线缆长度 | SWD时钟建议 | 连接方式 |
|---|---|---|
| 5cm以内 | 4MHz-10MHz | 杜邦线直连 |
| 10-20cm | 1MHz-4MHz | 排线连接 |
| 20-50cm | 100kHz-1MHz | 顶针+排线 |
| 50cm以上 | 100kHz以下 | 工装线束,需注意屏蔽 |
有的同事觉得把速度调低是"降级了""变慢了",但批量烧录讲究的是整体良率和平均时间,调低频后批量成功率上去了,综合时间反而更短。一片几百KB的固件烧录时间从几秒变到几十秒,但在产线上换来的是不用挑板子、不用返工,这笔账怎么算都划算。
复位电路也是低频问题。很多MCU的SWD初始化是需要复位信号配合的,特别是目标芯片程序里把SWD引脚功能给占用了,或者进入低功耗模式之后,必须先拉复位才能接管调试口。我遇到过一批产品,固件里有休眠逻辑,烧录时总是第一次连接失败,但第二次、第三次就能连上。后来查到是休眠前把SWCLK/SWDIO配成了普通GPIO,必须用复位信号唤醒芯片,才能重置调试口复用。我常用的解决方案是在烧录治具上加一个可控的复位引脚,先拉低复位,再发起SWD连接,等到连接成功后释放复位,这样几乎不会出现"目标芯片无响应"的报错。
2. 工具链设置与固件格式:同一片PCB,换个工具方式结果千差万别
硬件链路没问题,接下来要怀疑的就是软件工具链。"编译都过了,为什么烧录不进"这个问题我在不同平台上碰到不下十次。编译成功只说明你的代码语法和链接没有问题,而烧录动作涉及下载算法、目标芯片型号、固件格式、烧录地址等一堆独立于编译的配置项。Keil、J-Flash、OpenOCD、ESP-IDF各自为政,任何一项不匹配都会让你怀疑人生。
2.1 下载算法(Flash Algorithm)选错,烧再多也是白搭
用Keil5烧录STM32时,如果出现"Error: Flash Download failed - Target DLL has been cancelled"或者"Error: Flash Download failed - Could not load file xxx.FLM",不用说,肯定是算法的选择出了问题。Keil的Flash Download页面里那个Add按钮,弹出来的列表就是对应芯片的FLM下载算法文件,里面是专门适配某系列芯片内部Flash控制器的烧录程序。选错版本(比如选成了L4的算法去烧F4),烧录动作执行到一半就会失败。
我见过最离谱的一个案例是,硬件工程师选对了芯片型号,但在Utilities设置里外挂了外部烧录器(CMSIS-DAP),结果下载算法列表里选了一个ST-Link专用算法,每次都是擦除到50%就退出。说实话,这玩意儿选错有很强的隐蔽性,因为Keil的配置文件(TargetOptionsCommon)不会主动校验算法和目标芯片的匹配关系。它能擦、能写、但擦写时序不对,表现就是成功率低、速率慢、甚至中途卡死。
遇到下载算法相关报错,标准做法如下:
- 到Keil的"Options for Target"的"Utilities"标签页,点Settings进入烧录设置。
- 在"Flash Download"里查看Programming Algorithm列表,删掉所有可疑条目。
- 重新从Keil安装目录的ARM/Flash目录下选择与你MCU完全匹配的FLM文件。
- 勾选"Reset and Run"前先确认你的硬件复位电路是否可靠,如果复位引脚上有大电容,烧录后立刻运行反而会失败,这种场景下建议先不勾选,用手动复位验证。
提示:如果换了一颗Flash容量不同的同系列芯片(比如STM32F407VET6换成ZET6),FLM文件大概率也要换。Flash容量变了,扇区数量、扇区大小、甚至擦除时间都不一样,算法文件不能混用。
2.2 固件格式不是能烧进去就行:hex/bin/s19的区别与校验
很多人拿到固件就拖进去烧,烧完校验通过就觉得完事了。但固件格式的坑,在转移产线、更换烧录工具、或者做远程升级时特别容易出现。Keil默认生成的是hex文件,里面自带地址信息;J-Flash能同时处理hex和bin;而一些老的DSP平台、汽车级MCU平台用的是Motorola S-record格式,也就是俗称的s19或s28/s37文件。
这里重点说说S19文件,它被很多人视为"上古格式",但现在仍大量用在车载、工控、DSP(比如TI C2000系列)的平台里。S19文件的每一行都遵循固定结构:记录类型 + 字节计数 + 地址 + 数据 + 校验和。S0是文件头,S1是16位地址的数据记录,S2是24位地址,S3是32位地址,S7/S8/S9是起始地址记录。在J-Flash或者BOSCH、英飞凌的烧录工具里打开S19时,工具会解析每一行的地址,把数据放置到对应的Flash地址空间。
一个经常被忽略的坑是,S19的校验和是"地址和数据字节之和取反加一"(即二进制补码校验),某些第三方工具如果实现不正确,会导致烧录器解析S19文件时出现校验警告,但烧录又"碰巧"能过。这种状态极其危险,因为可能出现某个字节的数据被误导到错误地址。我在量产验证阶段的建议是:烧录完成后,一定要把回读的固件和原始S19映射到RAM里的内容做逐字节比对,而不是只看工具界面上那个绿色的"Verify OK"。
对于bin文件,最大的痛点是没有地址信息。如果你在J-Flash里加载一个bin文件,它默认会问你起始烧录地址。这个地址一旦填错,轻则固件无法启动,重则把启动代码写到错误扇区,芯片直接变砖。ESP32、STM32这类MCU还好说,内部Flash起始地址是固定的;但如果是挂在外部SPI Flash上的固件,或者像RK3588这类有多个启动镜像的平台,bin文件的地址字段必须由人工确认,再核对软件配置,别想当然。
2.3 编译成功不等于烧录成功:先查IDE和调试器配置
热搜词里有"vs code里编译成功,却怎么也烧录不进开发板",这基本是每个玩嵌入式的人都会遇到的困惑。VS Code本身只是编辑器,编译是调用GCC工具链完成的,而烧录动作需要通过插件调用OpenOCD、pyOCD或者Cortex-Debug。编译环节和烧录环节用的工具链其实没有必然关系,编译工具链只管生成目标文件,烧录工具链负责和目标芯片打交道。
我自己用VS Code + OpenOCD烧录STM32时,排查顺序是这样的:
- 确认OpenOCD能识别到调试器:命令行执行
openocd -f interface/cmsis-dap.cfg -f target/stm32f4x.cfg,观察输出是否出现"target found"。 - 确认目标芯片的配置文件和你的MCU一致,
stm32f4x.cfg不适用于stm32h7系列,这是所有人都容易犯的低级错误。 - 确认烧录用的接口类型是SWD还是JTAG,两个接口的配置文件不同,很多开发板只引出了SWD口,你却用了JTAG配置,自然报"No target connected"。
- 确认VS Code的tasks.json或者烧录插件里调用的命令参数正确,特别是
-c "program xxx.elf verify reset exit"这段,verify是烧录完自动校验,reset是烧录后复位运行,两个参数都加上更稳。
一个常见错误是OpenOCD烧录完成后总是报"Error: Verification of flash failed, value at address ...",这种问题往往不是布线问题,而是目标Flash里本来就有和烧录内容冲突的数据,建议先执行一次全片擦除(flash erase_sector 0 0 last),再重新烧录比对。有些芯片在"整片擦除"后需要一段时间才能进入可写状态,OpenOCD如果没有正确的等待逻辑,会出现擦除了但没完全擦除干净的情况。
3. 芯片状态、启动模式与烧录时序:最容易忽略的"软开关"
硬件没问题、工具链也配置得对,但板子还是烧不进去。这时候要把注意力从"怎么烧"转到"芯片愿不愿意让你烧"上面来。芯片当前的启动模式、读保护状态、Option Byte设置、甚至上一次烧录意外断电留下的中间状态,都会影响本次烧录的成与败。
3.1 Boot引脚与启动模式:拉错电平就不认人
STM32的BOOT0和BOOT1引脚决定了芯片从哪个地址启动。BOOT0拉低、BOOT1任意,芯片从内部Flash启动,这是正常模式;BOOT0拉高则从系统存储器(System Memory)启动,也就是进入Bootloader模式。烧录本身不需要芯片进入Bootloader,因为SWD/JTAG是独立于启动模式的调试接口,但这有一个大前提:芯片没有被禁用调试接口,且启动后程序没有立即把SWD引脚复用掉。
我在STC8系列上踩过更大的坑。STC的单片机和STM32的通信方式完全不同,它不支持SWD,只能通过串口ISP方式烧录,而且对状态机的时序要求极其严格。STC8G1K08A烧录接线时,需要把MCU的RXD接到USB转串口工具的TXD,MCU的TXD接到工具的RXD,然后上电瞬间让冷启动时序生效。对,STC的传统烧录流程就是先点下载按钮,再给目标板上电,让它从ISP Bootloader启动。如果顺序反了、或者MCU已经运行了用户程序,串口就收不到STC-ISP工具下发的握手指令。
STC烧录失败时,STC-ISP软件提示"握手失败,请检查接线",排查重点应放在三件事:USB转串口芯片是否被系统正确识别(国产CH340在Win10/11下基本免驱,但老版本驱动可能冲突);串口电平是否匹配(5V单片机和3.3V的USB转TTL模块直接连,大概率通信不稳定);以及目标板的冷启动时序是否被正确触发。
3.2 读保护、熔丝位与"锁死"芯片:SWD脚配置错了怎么救
热搜词里"stm32f405 sw脚配置错误重新烧录"这个问题,本质是代码里把PA13/PA14(SWDIO/SWCLK)配成了普通GPIO。一旦程序跑起来,SWD引脚功能被禁用,调试器就无法访问内核了。很多人第一反应是换更高端的烧录器,但SWD协议的限制不是烧录器能突破的,需要从芯片的复位行为入手。
解决方法其实不复杂:让芯片在复位瞬间保持SWD引脚为默认功能,然后在该窗口期内连接调试器。做法是把复位引脚接到调试器的复位线上,配置成"Connect under Reset"模式。在Keil里就是Debug设置勾选"Reset under",J-Flash里就是"Connect under Reset"选项,OpenOCD则用reset_config srst_only加上cmsis_dap的SRST控制。原理是芯片在复位释放后的一小段时间内,调试接口已经初始化、但用户程序还没有来得及重配置引脚,调试器趁这个窗口期接管内核,先复位PC到复位向量,再把Flash的读保护、Option Byte等改回来。
对于已经开启读保护(RDP Level 1或Level 2)的STM32,情况更麻烦一些。Level 1可以通过SWD做全片擦除来解除,代价是Flash内容全部丢失,但芯片还能用;Level 2是一种不可逆的保护,开启了就再也不能通过SWD访问,只能更换芯片。在做大批量烧录时,如果烧录工具设置了"烧录完成后自动设置读保护"但又没有关闭,"第二遍烧录"时会发现连接不上,误报为烧录器故障,其实只是保护等级被提上去了。这时候需要用烧录器专门提供的高等级解锁命令(比如J-Link的unlock Kinetis或者STM32的unlock STM32),先降保护等级,再重新烧录。
还有NXP/飞思卡尔平台上的Flash加密位(FSEC),某些Kinetis芯片如果把Flash配置字改成禁止调试,整片芯片的SWD口都会失效,只有通过进入Bootloader模式、擦除整个Flash来恢复。这块和STM32的RDP Level 1类似,但NXP的加密配置字位于Flash最开始的地址区域,如果你的烧录文件里碰巧包含了错误的安全配置字节,烧录后芯片就"锁死"了。
注意:ESP32没有SWD锁死这种说法,但如果配置了eFuse里的JTAG禁用位,后续烧录会受限。ESP32的eFuse是一锤子买卖,烧进去就回不来了,量产阶段千万别为了所谓"安全"把JTAG或者串口下载相关的eFuse一次性全写掉。
3.3 不同平台的特殊烧录姿势:ESP32、Jetson、RK3588各有各的脾气
热搜词里ESP32烧录被问得很多,说明它的启动模式和普通MCU确实不一样。ESP32的烧录入口是UART Bootloader,需要在芯片上电复位时把GPIO0拉低,芯片才会进入下载模式。用esptool烧录时,命令本身有"自动复位"功能,通过DTR/RTS两个串口信号线的组合来控制EN和GPIO0,从而实现自动进入Download模式。如果你在VS Code里或者命令行里直接调用esptool失败,九成是串口适配器的DTR/RTS没有正确接到ESP32的EN和GPIO0上。
ESP32烧录还有一个特别容易踩的坑:GPIO12(MTDI)的外部上拉状态会影响Flash的工作电压。如果GPIO12在上电时被拉高,芯片会默认Flash电压为1.8V,但你的模组实际上配的是3.3V Flash,这时候虽然能进入下载模式,但烧录过程中Flash读写完全不可靠,出现"Hash of data verification failed"的概率极大。这个问题在ESP32-S3、ESP32-C3等新平台上也存在,只是引脚编号不同,接线前一定先查芯片手册的Strapping Pin列表。
Jetson Orin Nano的系统烧录,和MCU完全是另一个世界。它走的是USB Recovery模式加Linux for Tegra烧录工具,流程是:先给设备断电,按住Recovery键不松,再插上USB Type-C线并通电,系统里用lsusb确认出现NVIDIA Corp设备,才能用SDK Manager刷写。这个平台烧录失败大都是驱动问题——Windows下没有装NVIDIA提供的USB驱动,或者Ubuntu下libusb权限不够。解决办法是给udev配置加上NVIDIA设备的权限规则,否则普通用户调不起烧录工具。
RK3588用烧录工具打补丁时,跟Jetson又不同。瑞芯微的烧录器工具需要设备进入Loader模式或者Maskrom模式,进入Loader模式通常需要按住机器上的恢复键(或者短接主板上的测试点)再上电。如果设备已经进入正常系统,烧录工具检测不到设备,要先确认驱动(DriverAssistant)是否安装成功,在设备管理器里能看到Rockusb Device才算正常。Maskrom模式是Loader被擦坏后的最后手段,短接EMMC的CLK或CMD脚再上电,设备会被识别为Maskrom设备,这时候能全量烧录,但操作有一定风险,新手不建议直接上手。
树莓派的系统烧录相对温和,Raspberry Pi Imager直接写入TF卡,但它有个特殊的坑:如果烧录的镜像和TF卡读取速度不匹配,或者写完后没有正常弹出而直接拔卡,卡上的分区表可能损坏,出现"无法引导"的情况。批量烧录树莓派时,建议用支持校验步骤的写卡工具,写完后立即读校验,避免坏卡混入产线。
4. 生产环境下的良率工程:从"能烧"到"片片能烧"
单板调试时烧录成功率99%,不代表产线能复制同样结果。从研发到量产,烧录这件事的复杂度会突然上一个台阶:接触阻抗、静电防护、治具可靠性、工艺规范、数据追溯,每一项都在决定最终良率是98%还是92%。
4.1 夹具、顶针与接触阻抗:批量烧录的隐形杀手
研发阶段大家都是用杜邦线或者排线来烧录,连一次松了重新插一下就行。在产线上,烧录治具使用的是顶针(Pogo Pin)和烧录座,接触阻抗的波动往往就是批量性烧录失败的原因。顶针用久了会磨损、会氧化,接触电阻从最初的20mΩ涨到100mΩ甚至300mΩ。对信号线来说,300mΩ的接触电阻不算大问题,但如果是给目标板供电的回路,300mΩ加上2A的瞬时电流就是0.6V的压降,超过绝大多数MCU供电电压的容忍范围。
批量烧录现场最常见的故障模式是:烧录失败的板子拿下来,用万用表量各个烧录点电压都正常,重新压上去又能烧过。这种"神隐"问题基本都是顶针接触不良,而不是板子本身有问题。排查方法是用示波器探头点在被测供电引脚上,在烧录瞬间抓电压波形,看到"台阶式"下跌就说明接触电阻异常。
我在帮一家工厂优化烧录工位时,把烧录治具的顶针更换周期从"坏到不能用再换"改成了"每烧录5000片强制更换",良率从97.2%提升到了99.6%。另外,顶针不能混用,信号线和电源线要选不同弹力的型号,电源顶针需要更大的接触面积和弹力,信号顶针要求的是高频特性和低寄生电容。拿信号顶针扛大电流、拿电源顶针跑高频,都是自找麻烦。
4.2 静电与干扰:烧录器突然报错你根本想不到的原因
产线环境里,静电是最玄学的烧录杀手。秋冬干燥季节,操作人员走动、拿放板卡都会积累静电,如果没有良好的接地,静电通过烧录线的屏蔽层进入烧录器,轻则导致烧录中断,重则直接损坏目标芯片的IO口。我亲眼见过一整批板子烧录到一半报"Cannot access target",重新上电又能连上,但反复几次后其中一块板的SWDIO引脚就彻底失效了——静电损伤通常不会立刻让芯片完全报废,而是降低IO口的静电耐受能力,为后续的"不明原因"失效埋下伏笔。
产线烧录区必须满足三条接地规矩:烧录器和工装夹具共地;操作人员佩戴防静电手环并保证接地;烧录治具的工作台面使用防静电垫且接地。很多公司防静电手环是配了,但接地线只插在插线板的"地"上,而那个插线板的地根本没接到大地,等于白戴。
除了静电,强电干扰也很常见。烧录工位如果靠近电机、开关电源、或者是变频器控制的设备,电源线上会有大量谐波和尖峰,烧录器供电被污染后表现就是"莫名其妙烧录中途失败"。在这种环境下,烧录器要用隔离电源供电,必要时加一个隔离型USB hub,做数据隔离加电源净化,一次投入换来的良率提升远比省下的几百块钱有价值。
4.3 烧录记录、条码追溯与抽样校验:良率数据的闭环
良率上不去,第一件事应该是先确认"上不去"是真的还是数据统计造成的假象。如果只是凭感觉觉得最近烧录失败变多了,没有记录、没有分层统计,那排查方向很容易跑偏。我建议在烧录环节至少记录以下信息:烧录日期、烧录工位编号、烧录器序列号、操作人员、烧录软件版本、目标板条码、固件版本、烧录结果、失败码、耗时。
有了这份数据,你能回答下面这些问题:
- 失败集中在某个烧录器还是分布在各工位?集中则查硬件链路,分散则查固件或工艺。
- 失败集中在某批板子编号段?可能是PCB来料问题,查同一批次的贴片和焊接。
- 失败集中在某个时间段?可能和现场环境温湿度、操作人员变动有关。
- 失败码是否有规律?同一错误码反复出现的排查价值远高于随机错误码。
抽样校验这个动作也有讲究。生产线上如果烧录后不做校验(或者工具本身只做了CRC校验而不是逐字节比对),良率可能在"烧录成功但内容错误"的问题上出现隐患。批量巡检出问题后,往往会发现烧录器其实已经"带病工作"很久了。抽检的力度不需要每片都做完整回读校验(那样会严重影响节拍),可以按批量抽3%-5%做回读比对,用统计方法保证整体可信度。对于安全等级高的产品,建议每片都做完整校验,这是用时间换可靠性。
5. 常见问题速查表
把上面这些经验整理成一张速查表,方便你在现场快速定位问题。这张表是长时间反复踩坑后沉淀出来的,不敢说覆盖所有场景,但覆盖了90%以上的量产烧录问题。
| 故障现象 | 首要排查项 | 次要排查项 | 典型解决思路 |
|---|---|---|---|
| 烧录器完全识别不到目标芯片 | 供电和GND回路 | SWD接线、目标电压是否匹配VREF | 示波器抓SWDIO上电时序,检查烧录器VREF是否连接 |
| 能识别芯片,但擦除/编程时中断 | 烧录算法FLM选择 | 供电跌落、Flash扇区大小配置 | 换FLM文件,量烧录瞬间电压跌落 |
| 烧录通过,但校验失败 | 固件格式解析错误 | Flash内容被DMA/中断程序改写 | 换bin/hex格式重试,逐字节回读比对 |
| 编译成功但烧录不进去 | IDE烧录配置错误 | 调试器固件版本与芯片不匹配 | 在OpenOCD命令行逐步验证识别和烧录 |
| 第一次烧录失败,重复几次却能成功 | 复位时序/启动模式 | 芯片上电后进入了休眠或低功耗 | 配置连接复位模式,拉低复位后发起连接 |
| 某个工位失败率明显偏高 | 顶针氧化/接触阻抗 | 环境静电、接地不良 | 更换顶针、检查防静电手环接地 |
| 整批板子从某天开始良率骤降 | 固件或烧录工具版本变更 | 物料批次差异 | 对比烧录记录,确认变更点后回退测试 |
| STC系列握手失败 | 冷启动时序顺序 | 串口电平匹配 | 先点下载再上电,检查CH340驱动 |
| ESP32烧录校验失败 | GPIO0未成功拉低进入下载模式 | GPIO12上下拉影响Flash电压 | 确认串口DTR/RTS自动复位电路,查Strapping Pin |
| STM32提示SWD引脚被占用 | 目标代码重配置了调试口 | 读保护等级被提高 | 用Connect under Reset模式,必要时解锁芯片 |
提示:排查问题时要养成"一次只改一个变量"的习惯。很多人排查故障时喜欢同时换烧录器、换线、换软件版本、换电脑,最后问题解决了但根本原因是什么完全不明确。下次再来类似故障,又要重新猜一遍。
6. 关于烧录良率,我再多说几句
我在研发和产线来回折腾了很多年,最大的体会是烧录良率问题没有"银弹",多数时候是多个小问题叠加在一起造成的。比如你拿一片板子去实验室测,怎么烧都过,因为实验室的接线短、供电稳、环境静电也少;上了产线,接线长了、顶针旧了、操作工静电手环没戴好、烧录工位的电源还和老化柜共用一路,四件事叠在一起,良率自然往下掉。
所以我的习惯是:任何批量烧录异常,先花三分钟看清楚数据,再动手排查硬件。记录好失败分布,别上来就拆烧录器。做硬件这行,很多"疑难杂症"最后查出来都是最基础的因素。
另外也想给刚入行的朋友一个建议:不要迷信高端的烧录器,J-Link和高仿ST-Link在烧录稳定性上的差距,远不如你把供电和线缆做好来得多。把小白阶段踩过的坑一个个记下来,整理成团队内部的《烧录问题排查手册》,这是比任何工具都值钱的东西。