只读分享解决方案文档调试&解决方案📅 2026-09-21🔖 Rev 1.0⏳ 29天有效(至 2026-10-31)
🔧解决方案&应用市场分析 -> 调试&解决方案 -> 存储_量产问题排查 -> UID加密_量产写入时机与锁定顺序_量产排查

UID加密_量产写入时机与锁定顺序_量产排查

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

UID 加密 · 量产写入时机与锁定顺序

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

XTX 芯天下 · FAE 现场技术文档 | 量产 UID / 安全写入的时机、锁定顺序与回滚 | 2026-09 版

技术事实核查纪律(执行前必读)

UID 寄存器地址、CID 各字段定义与位宽、RPMB 密钥 provisioning 命令、OTP / 安全寄存器锁定位与锁命令码,全部以具体料号 datasheet 与 SD/eMMC(JEDEC)规范为准;本文只讲机制、顺序与排查套路。

  • SDK / 烧录器能读写 OTP / 安全寄存器,只证明寄存器可访问,不证明写入时机正确 / 锁定顺序正确——这两件事之间隔着本文全部雷区。
  • 本文讨论的是量产写入时机与锁定顺序,与「烧录器找不到型号」「烧录成功但不开机」是不同问题,判别要点:器件能正常烧录,但 UID / 安全区写不进、锁不对、或写错后报废,归本文。
  • 涉及OTP 锁定位、RPMB 密钥写入、eMMC 写保护多为不可逆操作,一旦锁死 / 写丢密钥通常不可恢复,动手前请逐条核对 datasheet 并保留可回退的工位设计。
  • 不确定的命令码、寄存器地址、位域要么查证要么不写,宁可在文档里标注「以 datasheet 为准」。
3 类
介质 UID 机制
SPI NOR(OTP) / SD NAND / eMMC(CID + RPMB)
T0–T5
量产关键时间点
上电 → 烧固件 → 写 UID → 锁 → 首件 → 出货
5 种
写入时机错误模式
提前写被擦 / 锁后写不进 / 误擦 / 地址错 / 半锁
256 bit
eMMC RPMB 密钥
one-time 写入,不可读回,丢失不可恢复
装板实跑
唯一有效验收动作
读回寄存器 ≠ 功能 OK,必须走主控鉴权
双复核
锁定顺序双人签字
时序 T2/T3 与顺序 写→校→锁 合规才放行

一句话结论:UID / 安全相关写入必须遵循 功能烧录通过 → 写入 UID / 派生密钥(可逆阶段)→ 读回校验 → 再执行不可逆锁定。 可写窗口只有 T2 一段;锁早了写不进、锁晚了被固件擦、锁完再校验部分平台只读 0xFF。 样机调试阶段绝对不要启用量产锁定位。

这份文档解决什么

解决的是XTX 芯片在量产前 / 量产中,UID 加密方案「什么时候写、按什么顺序锁」 这一类问题:写早了被固件烧录擦掉、写晚了被锁定挡在门外、锁定顺序错了引发读 0xFF 或半锁、 派生密钥写错再锁整片报废、锁死后 RMA 复用困难。覆盖 SPI NOR / SD NAND / eMMC 三种介质的 UID 机制差异,全文按「机制 → 时序 → 时机错误 → 锁定雷区 → 派键 SOP → 验证 → RMA → 防复发」组织, 第 9 章是可直接翻查的速查表,第 10 章是可带进车间的参数卡与双人复核清单。

类目 1 · 介质机制
三类介质的 UID 来源与可写性
SPI NOR 的 UID 是 OTP 安全寄存器区(可写一次);SD/eMMC 的 CID 工厂只读,eMMC 还有 RPMB 密钥(256 bit,一次写入不可回读)。锁定语义三者互不相同,不能套用一个模板。
高发误判:把 CID 当可写区去写
类目 2 · 量产时序
T0 上电 → T5 出货的关键时间点
T1 固件烧录、T2 写 UID/派生密钥、T3 锁定 UID 区、T4 首件检验、T5 包装出货。顺序一旦错位,要么被固件擦掉,要么锁死写不进,可逆区间只有 T2 一段。
高发误判:在 T1 之前就写 UID
类目 3 · 写入时机错误
五种失败模式
提前写在固件烧录前被擦、锁后写不进、烧录器误擦覆盖、多芯片 OTP 地址不统一写错位置、掉电半锁。每一类都有可观测的现场特征,见第 3 章。
高发误判:锁后再回头补写
类目 4 · 锁定顺序雷区
锁后再校验的坑
锁定后再做读回校验,部分平台锁定后只读 0xFF;锁定位与状态寄存器(SR)相互作用;多厂商 OTP 区地址不统一。锁前必须先把校验门禁做掉。
高发误判:锁后直接读数当验证
类目 5 · 派生密钥 SOP
客户密钥 vs 厂商注入密钥
客户自定义密钥与厂商注入密钥两条路线;密钥备份与销毁策略;写入失败的回滚。密钥一旦写错再锁,整片报废,必须可控可回退。
高发误判:密钥版本用错仍锁定
类目 6 · 装板实跑验证
只读寄存器不算验收
装板实跑才是唯一有效验收:用主控真实走鉴权 / 解密路径,而不是只读回 OTP / CID 寄存器。同料号不同批次的密钥派生一致性必须抽测。
高发误判:寄存器读回=功能 OK
类目 7 · RMA 与防复发
锁后复用主控 + 参数卡
UID 锁死后 RMA 流程如何复用主控(用 CID 作唯一键、走异常绑定通道);防复发靠参数卡 + 锁定顺序双人复核。把顺序固化进工程,不靠人记忆。
高发误判:锁死即整批报废

怎么用这份文档

  1. 先定介质:确认板上装的是 SPI NOR / SD NAND / eMMC 哪一种,三者的 UID 来源与锁定语义完全不同(第 1 章)。
  2. 对时序:把当前工程套到 T0–T5 时间轴上,确认 UID 写入落在 T2、锁定落在 T3(第 2 章)。
  3. 查时机错误:出现「写不进 / 被擦 / 半锁」时,按第 3 章五种模式对号入座。
  4. 查锁定雷区:出现「锁后读 0xFF / SR 位异常」时,看第 4 章的相互作用与地址差异。
  5. 闭环到装板实跑:任何写入 / 派生 / 锁定动作,最终判定以「主控真实走鉴权路径成功」为准(第 6 章)。

1. 问题本质:UID 是什么 / 三类介质差异

「UID 加密」在产线上被说得很轻巧,但落到三种不同介质上,它的含义、可写性、锁定语义完全不同。 如果把 SPI NOR 的「写 OTP UID 区」经验直接套到 SD/eMMC 的「CID 只读 + RPMB 密钥」上, 第一脚就会踩空。本章先把 UID 的本质讲清楚,再给出三类介质的对照,让后面所有时序与顺序讨论都站在同一套定义上。

1.1 什么是 UID / 设备唯一标识

UID(Unique ID,设备唯一标识符)是用来在一大批同型号、同批次的芯片里区分每一颗个体的标识。 量产加密(绑定授权、防伪、 license 锁、固件防抄)几乎都建立在「每颗片有一个别人没有、且出厂后不可篡改的标识」之上。 但这个标识的来源在三种介质上完全不同:

  • SPI NOR:芯片内部有一个 OTP(One-Time Programmable)安全寄存器区,出厂时写入一个 128-bit UID(含设备唯一序列号),用户可在量产时往这个 OTP 区再写一次自定义数据并锁定。
  • SD NAND:出厂时由厂商在 CID 寄存器里烧好 128 bit 标识,其中 PSN(Product Serial Number,32-bit)是真正的唯一序列号;CID 对产线是只读的,不可改写。
  • eMMC:同样有只读的 CID 128 bit(PSN 作唯一序列号),另外还有一个独立的 RPMB(Replay Protected Memory Block)分区,其 256-bit 鉴权密钥是一次写入、不可读回的。

一个容易混淆的点是:UID 解决的是「认得这颗片」,而加密 / 鉴权解决的是「只有我和这颗片之间算得通」。 UID 本身往往不秘密(尤其 SD/eMMC 的 CID.PSN 是工厂公开烧录的),真正提供安全强度的是派生密钥与 RPMB 鉴权。 所以量产方案通常是「用 UID / CID.PSN 作设备唯一索引,再绑定一份密钥」——UID 负责定位,密钥负责保密,两者不可混为一谈。

三类介质的 UID 机制与可写性对比(字段名以各介质规范 / datasheet 为准)SPI NORUID = 128-bitOTP 安全寄存器区设备唯一序列号可写一次 / 锁定只读锁早 → 写不进锁后部分平台读 0xFFSD NANDCID = 128 bit(工厂)含 MID/OID/PNM/PSNPSN:32-bit 序列号CID 只读不可写客户 UID → 保护分区误当可写区 → 被擦eMMCCID = 128 bit(工厂)RPMB 密钥 256 bitone-time 不可读回CID.PSN 作唯一 ID密钥写丢 → 不可恢复RPMB 需鉴权访问核心区别:SPI NOR 的 UID 是「可写一次」的 OTP;SD/eMMC 的 CID 是「工厂只读」;eMMC 额外有 RPMB 密钥(256 bit,一次写入不可回读)。三者锁定语义完全不同。结论:SD/eMMC 的 CID 不可被产线改写;所谓「写入 UID」是读出厂 CID.PSN 并绑定,或把客户 UID 写进受保护分区 / 用户 OTP。唯 SPI NOR 才是真正的「写 OTP UID 区」。字段名 / 命令码 / 寄存器地址 / 锁定位均以具体料号 datasheet 与规范为准;本文只讲机制。
图 1 · 三类介质的 UID 机制与可写性对比
一句话厘清「写 UID」

对 SPI NOR,确实存在一个「写 OTP UID 区」的动作;对 SD/eMMC,CID 根本不可写,所谓「写入 UID」通常是指 读出出厂 CID.PSN 并绑定到客户系统,或把客户自己的 UID / 派生密钥写进受保护分区 / 用户 OTP。 混淆这两者,是「烧录器误擦」「写错位置」两类事故的思想根源。

1.2 三类介质 UID 机制对照

下面这张表把三种介质的 UID 来源、可写性、锁定语义并排放,后面所有时序图、顺序图、雷区都建立在这张表之上。

介质UID 来源可写性锁定语义唯一 ID 怎么用
SPI NOR128-bit UID(OTP 安全寄存器区)+ 设备唯一序列号OTP 区可写一次,锁定后只读写锁定位(以 datasheet 为准),部分平台锁后读 0xFF直接读 OTP UID 作设备标识
SD NANDCID 128 bit(MID/OID/PNM/PSN/MDT/CRC,工厂烧录)CID 只读不可写;客户 UID 写受保护分区 / 用户 OTP保护分区 / 用户 OTP 的写保护位读 CID.PSN 绑定,或写客户 UID 到保护区
eMMCCID 128 bit + RPMB 密钥 256 bit(独立不可逆)CID 只读;RPMB 密钥 one-time 写入不可读回RPMB 密钥一次性 provisioning,无回退CID.PSN 作标识 + RPMB 鉴权访问

1.3 为什么顺序比内容更致命

UID / 派生密钥写什么内容往往有算法保证(密钥派生函数、哈希),出错概率相对低; 真正在量产地狱里反复出现的,是写在错误的时机、按错误的顺序锁: 写早了被固件擦掉,写晚了被锁挡门外,锁完再校验却只读 0xFF 以为成功,掉电卡在半锁态。 这些都不是算法问题,是流程顺序问题,而流程顺序要靠参数卡与双人复核去固化(见第 10 章)。

状态是否可逆能做什么不能做什么对应时间点
① 可写—(尚未写)正常烧录、读回、调试—T0–T1
② 已写未锁是,可回滚读回校验、重写、清密钥视为已定型T2
③ 已锁否,不可逆只读、走鉴权路径再写、改密钥、读密钥T3 之后
为什么 UID 量产特别「脆」

普通数据写错,重烧一遍就好;UID / 安全写入写错,往往没有重来的机会。 原因有三:① OTP / 安全寄存器是一次性的,写错即永久; ② RPMB 密钥是不可读回的,写丢即不可恢复; ③ 锁定命令一旦下发,整片进入不可逆状态,连「擦掉重来」都不行。 所以 UID 量产的本质不是「把数据写进去」,而是在唯一一次可逆窗口里,把对的东西写在对的时机、对的地址。

一句话机制

把整个 UID 量产拆成三个可证伪的状态:① 可写(T2 之前、锁之前)、 ② 已写未锁(可逆,可回滚)、③ 已锁(不可逆,写不进、部分平台读 0xFF)。 任何工位动作都要先回答「此刻处于哪个状态」,再决定能不能动。

2. 方案总览:量产时序与锁定顺序

量产 UID / 安全写入不是一次「写下去」的动作,而是一条有严格先后顺序的序列。 把整条产线时间拆成 T0–T5 六个关键点,UID 写入只落在 T2、锁定只落在 T3,中间还隔着一道校验门禁。 本章先把这条时序画清楚,再给「锁定顺序铁律」——后面所有事故(第 3、4 章)都是对这两条纪律的违反。

提醒一个工程现实:上面六个时间点不是六个独立工位,往往压缩在一台烧录器 / 一台 ICT 里连续完成。 越是「一台设备一气呵成」,越容易把「写 UID」「校验」「锁定」偷懒合并成一步,从而跳过校验门禁。 因此时序纪律不能只写在文档里,必须硬化进烧录工程的步骤与脚本(第 10 章参数卡)。

2.1 量产时间轴 T0–T5 与可写窗口

下面这条时间轴把一次量产从「上电」到「出货」拆成六个阶段,并高亮出 UID 可写窗口(T2→T3)。 注意:可写区间只有 T2 到 T3 这一小段,写早了被 T1 的固件整片擦掉,写晚了被 T3 的锁定挡在门外。

量产时间轴 T0–T5 与 UID 可写窗口(顺序以产线 SOP / datasheet 为准)T0 上电供电稳定复位释放时钟起振T1 烧录固件写固件镜像Verify 校验可能整片擦T2 写 UID/密钥写 OTP UID写派生密钥可逆阶段T3 锁定 UID 区写锁定位OTP/SR 锁不可再写T4 首件检验出厂测试抽测鉴权只读确认T5 包装出货贴标入库发运可写窗口 T2→T3T0T1T2T3T4T5写早了 → 被 T1 固件整片擦掉;写晚了 → 被 T3 锁定挡在门外;可写区间只有 T2 到 T3 这一小段。SPI NORUID 写 OTP 安全区锁定在 T3 一次锁后部分平台读 0xFFSD NAND读 CID.PSN 绑定客户 UID → 保护区不可改 CID 本身eMMC绑 CID.PSNRPMB 密钥一次性写丢密钥不可恢复时序铁律:UID / 派生密钥必须落在 T2,锁定必须落在 T3,且二者之间必须完成读回校验(见第 2 章图 3)。掉电 / 工控异常应发生在 T2 之前或 T3 之后,绝不能发生在「写一半没锁」的可逆窗口里(半锁态极难修复)。
图 2 · 量产时间轴 T0–T5 与 UID 可写窗口
最容易踩的两种极端

极端一:把 UID 写入放进「烧录固件」的工程里一并做。 很多烧录器工程在写固件前会先整片擦除,于是 UID 刚写进去就被下一句的整片擦清掉—— 表现就是「每次读 UID 都是空 / 全 0」。正确做法:固件烧录与 UID 写入必须是两个独立 pass, 且 UID 写入 pass 放在固件烧录 pass 之后。

极端二:先锁后写。锁定命令一旦下发,OTP / 安全寄存器 / 保护位就关上了,再写 UID 会直接失败或静默丢弃。 表现就是「写入返回成功(或没报错)但读出来就是没有」。必须把写动作严格放在锁之前。

2.2 锁定顺序铁律:写密钥 → 校验 → 再锁

「先写后锁」只是半句纪律,完整版是写密钥 → 读回校验 → 再锁。 中间那道「读回校验」是生死门:它决定了你锁的是「对的密钥」还是「错的密钥」。 下面这张图给出正确顺序,以及三个绝对禁止的动作。

锁定顺序铁律:写密钥 → 读回校验 → 再锁(任何颠倒都指向报废)① 写密钥 / UIDOTP / 保护区,可逆② 读回校验主控侧走鉴权③ 确认一致业务鉴权通过④ 执行锁定OTP / SR / 厂商锁锁前 / 锁后的三个禁止动作✗ 锁前不校验 → 直接锁写错密钥再锁 = 整片报废;必须「先校验、后上锁」✗ 锁后再读回校验部分平台锁定后只读 0xFF,把 0xFF 当「校验通过」直接出货✗ 跳过回滚直接锁写失败未清状态就锁,半锁 / 错锁无法补救顺序门禁:在「写完成」与「执行锁」之间,必须存在一道自动校验门禁;校验不通过则禁止进入锁定步骤。锁定命令码、锁定位位置、SR 与 OTP 的关系以具体料号 datasheet 为准;本文给的是顺序纪律,不是命令码。
图 3 · 锁定顺序铁律:写密钥 → 读回校验 → 再锁
「锁后读 0xFF 当校验通过」是最隐蔽的坑

部分平台在锁定之后,安全寄存器 / OTP 区的读操作会固定返回 0xFF(这是某些器件的锁定后行为,以 datasheet 为准)。 如果校验脚本在「锁之后」才去读,读到的 0xFF 容易被误判为「写入成功 / 已锁定」。 正确做法:所有读回校验必须在锁定之前完成;锁之后只做「只读确认不可写」的检查,不做「内容等价」判断。

2.3 把两条纪律落到参数卡

两条纪律(时序 T2→T3、顺序 写→校→锁)必须固化进烧录参数卡,而不是靠操作员记忆。 参数卡至少要记录:UID 写入 pass 的先后顺序、锁定命令的触发条件、校验门禁的失败处置。第 10 章给出可直接使用的参数卡模板。

纪律要求违反后的典型事故对应章节
时序纪律UID 写入在 T2,锁定在 T3,二者之间完成校验写早被擦 / 写晚锁死 / 半锁第 3 章
顺序纪律写密钥 → 读回校验 → 再锁定锁后读 0xFF 误判 / 错钥报废第 4 章
地址纪律按料号查 OTP / CID 地址,保护位先行写到错位置 / 被误擦第 8 章
验收纪律装板实跑走主控鉴权,非只读寄存器寄存器读回≠功能 OK第 6 章

2.4 把时间点映射到状态机

把 T0–T5 翻译成第 1 章的三个状态(可写 / 已写未锁 / 已锁),可以更直观地判断「此刻能不能动 UID」: T2 是唯一允许写的时间点,T2→T3 之间是唯一允许校验与回滚的窗口,T3 之后任何写动作都是无效或静默丢弃。

时间点如果 UID 动作发生在此时后果判定状态
T0 上电尚未开始,正常—① 可写
T1 烧固件固件烧录整片擦会清掉已写 UIDUID 被擦(模式①)① 可写
T2 写 UID正确时机:写密钥 / UID可写可校验② 已写未锁
T2→T3 之间校验、回滚的最佳窗口可逆,可补救② 已写未锁
T3 锁定正确时机:发锁定命令进入不可逆③ 已锁
T4 首件只读确认 + 装板实跑验收③ 已锁
T5 出货UID 已固化—③ 已锁
一句话总览

整条量产可以压缩成一条链:T1 烧好固件 → T2 写 UID/密钥并立即读回校验 → 校验通过才进 T3 锁定 → T4 首件只读鉴权 → T5 出货。任何把顺序打乱的动作,都对应第 3、4 章里某一类事故。

3. 写入时机错误:五种失败模式

时序纪律一旦被打破,现场会呈现出几种高度相似的「写不进 / 被擦 / 半锁」症状。 本章把写入时机错误归成五类,给出每一类的现象、后果与处置,让现场拿到一块「UID 不对」的板能直接对号入座。 这五类里,①②⑤ 是时间轴错位,③④ 是定位错位,处置思路完全不同。

3.1 五种模式一览

写入时机错误的五种模式(写早 / 写晚 / 误擦 / 地址错 / 半锁)① 写早(T1 之前)现象:固件烧录整片擦后果:UID 被清掉处置:先烧固件,再写 UID② 写晚(T3 之后)现象:UID 区已锁定后果:写不进去处置:锁前必须写完③ 烧录器误擦现象:擦操作覆盖 UID后果:CID / OTP 被清处置:保护区加写保护位④ 地址错(多芯片)现象:OTP 地址不统一后果:写到别的位置处置:按料号查地址表⑤ 掉电半锁现象:写锁中途掉电后果:半锁态难修复处置:加断电保护 / 重试门禁五种模式可归为两类:时机错位(①②⑤,落在错误的 T 点)与定位错位(③④,写到了错误的地方 / 被错误清除)。①②⑤ 是时间轴问题,靠第 2 章时序纪律解决;③④ 是地址 / 保护位问题,靠第 8 章的地址表与保护位解决。
图 4 · 写入时机错误的五种模式
现场快速分诊

拿到「UID 写不上 / 写错」的板,先问三个问题:① 它是在固件烧录之前还是之后写的? (之前 → 模式①;之后才对)② 写的时候区有没有被锁?(已锁 → 模式②) ③ 读出来是空 / 全 0,还是写到别的值?(全 0 / 空 → 模式③被擦或①;值错位 → 模式④地址错)。 掉电引起的半锁往往伴随「时好时坏、锁状态读不稳定」→ 模式⑤。

3.2 模式①⑤ 的时间轴处置

模式①(写早)与模式②(写晚)是纯顺序问题,用第 2 章的时序纪律即可根治:确保 UID 写入 pass 在固件烧录 pass 之后、 锁定命令之前。模式⑤(掉电半锁)则需要在工位层面加防护:UID 写入 pass 入口加断电检测, 中途掉电视为失败并隔离,不允许「半写半锁」的片流入下一工位。

模式现象后果处置
① 写早每次读 UID 为空 / 全 0固件整片擦清掉 UID固件烧录与 UID 写拆成两个 pass,UID 在后
② 写晚写入无报错但读不到UID 区已锁,写被丢弃把写动作严格放在锁命令之前
⑤ 半锁锁状态读不稳定、时好时坏半锁态难修复UID pass 加掉电检测,中途掉电即隔离

3.3 模式③④ 的地址 / 保护位处置

模式③(烧录器误擦)与模式④(地址错)不是时间问题,而是写到哪里、有没有被保护的问题: OTP / 安全寄存器 / 用户保护分区在烧录器里常常和主数据区共用同一个「擦除」入口, 多芯片之间 OTP 区地址又不统一,于是出现「擦主区顺便把 UID 擦了」「同工程换料号写到错地址」。 这两类放到第 8 章专门讲地址表与保护位。

3.4 两类错误的处置分界

把五种模式先归成两类,再决定从哪下手,能避免「一上来就整片重烧」这种最浪费的动作。时序类错误改流程顺序即可, 定位类错误改地址表与保护位即可,二者手段不同、不能混用。

类别包含模式根因处置抓手
时序类(时间轴错位)①②⑤写早 / 写晚 / 掉电半锁参数卡固定 T2/T3 + 掉电门禁
定位类(写到哪)③④地址错 / 被误擦地址表 + 保护位 + pass 隔离
一句话处置

时序类(①②⑤)→ 用参数卡固定 T2/T3 与掉电门禁;定位类(③④)→ 用地址表 + 保护位固定「写哪个地址、不被谁擦」。 先分诊是哪一类,再动手,不要一上来就整片重烧。

4. 锁定顺序雷区:锁后再校验的坑

时序与顺序纪律(第 2 章)定的是「写在哪里、按什么先后」,本章讲的是顺序里最致命的几个雷: 锁完再去读被当成校验、状态寄存器(SR)的写保护位牵动 OTP 锁、不同厂商 OTP 区基地址不统一。 这三类雷不发作时一切正常,一发作就是「锁死且读来读去都是错」的死局,必须在流程里提前排掉。

三类雷的共性,是它们都不会在写入那一刻报错:写的时候脚本返回「成功」,锁的时候也「成功」, 直到下游装板实跑或 RMA 才发现「UID 是空的 / 错的 / 读不到」。这正是它们比「写不进」更危险的地方—— 失败被延迟到离产线最远的地方才暴露。所以对抗它们不能靠事后发现,只能靠锁前预检(见 4.4 清单)。

4.1 三类雷区一览

锁定顺序雷区:锁后读 0xFF / SR 与 OTP 相互作用 / 多芯片地址不统一A · 锁后读 0xFF现象:锁后读取全 FF机制:部分平台锁定后 固定返回 0xFF陷阱:0xFF 当校验通过正确:校验必须在锁前B · SR 与 OTP 互作现象:清 SR 误清 OTP 锁机制:BP / WPS 位与 OTP 锁定位会相互牵连陷阱:改 SR 动到锁定位正确:锁前先读 SR 状态C · 多芯片地址不统一现象:换料号写错地址机制:各厂 OTP 基地址 与锁命令码不同陷阱:地址表未按料号分正确:按料号查地址映射统一解法:把三颗雷一次性排掉① 锁前自动校验门禁(锁后绝不读内容判等价) ② 按料号查 OTP / CID 地址映射表③ 锁前先读 SR 状态,确认 BP / WPS 与 OTP 锁定位无意外牵连,再下发锁定命令雷区 A 是「顺序」问题(回到第 2 章铁律);雷区 B、C 是「状态预读 / 地址表」问题(见第 8 章)。
图 5 · 锁定顺序的三类雷区
雷区 A:锁后读 0xFF(最隐蔽)

某些 SPI NOR 在安全寄存器 / OTP 区锁定之后,读操作固定返回 0xFF(这是器件锁定后的定义行为之一,以 datasheet 为准)。 如果校验脚本在「锁之后」才去读内容,读到的 0xFF 会被误判为「已锁定 / 写入成功」,整批带着空 UID 出货。 排法:所有内容等价校验必须在锁定命令之前完成;锁之后只做「不可写」确认,不做内容判断。

4.2 雷区 B:SR 与 OTP 锁定位的相互作用

SPI NOR 的状态寄存器(SR)里有 BP(Block Protect)位、WPS(Write Protect Selection)位等, 它们与 OTP / 安全寄存器的锁定位在某些器件上会相互牵连:清掉 SR 的写保护、或切换 WPS 模式时, 可能顺带把 OTP 锁定位也清掉或置上。现场表现为「明明锁了,一改别的地方锁又开了 / 关了」。

操作可能影响处置
清 SR 写保护(WEL/写保护脚)OTP 锁定位被意外清除锁前先读 SR 全量值,比对预期
切换 WPS 模式OTP 锁定语义变化锁定全程保持 WPS 一致,不中途切换
写 BP 位保护主区误把 OTP 区也纳入/移出保护按 datasheet 确认 BP 与 OTP 区是否相关
排法

在发锁定命令之前,先完整读出 SR 当前值,确认 BP / WPS 与 OTP 锁定位处于预期组合; 锁定后再读一次 SR 做「锁后快照」,两帧不一致即报警隔离。SR 位定义、WPS 含义、OTP 锁定位位置以具体料号 datasheet 为准。

4.3 雷区 C:多芯片 OTP 地址不统一

不同厂商、甚至同厂商不同系列的 SPI NOR,OTP / 安全寄存器区的基地址、锁命令码、安全寄存器个数都不完全一样。 同一份烧录工程换料号使用,极容易「按 A 料的地址写,结果写到了 B 料的普通区 / 错寄存器」—— UID 看起来写上了,其实没进 OTP,锁也锁了个寂寞。这类问题在替代料、二供引入时最高发。

风险点表现处置
OTP 基地址不同写到错寄存器 / 普通区按料号建 OTP 地址映射表,工程引用表
锁命令码不同锁定命令被器件忽略命令码按料号从 datasheet 取,不入硬编码
安全寄存器个数不同只锁了部分寄存器锁前枚举寄存器数,逐区确认锁定

4.4 三颗雷的预检清单

把三类雷的排法落成锁前必做的三道预检,写进参数卡;任何一道预检不过,流程不得进入锁定步骤。

雷区预检动作(锁前必做)失败表现处置
A 锁后读 0xFF锁前完成全部内容校验锁后读全 FF禁止锁后判内容
B SR 牵连 OTP锁前 / 锁后各读一次 SR 快照两帧 SR 不一致隔离,重审锁位
C 地址不统一按料号查地址映射表写到错寄存器地址表替代硬编码
一句话排雷

雷区 A 用「锁前校验门禁」排,雷区 B 用「SR 状态预读 + 锁后快照」排,雷区 C 用「按料号地址映射表」排。 三者在参数卡里都是必填项,见第 8、10 章。