# A61 灯板主循环诊断与复位管理候选

状态：ARM 构建及主机模型通过；尚未烧录/上电；FABRICATION_HOLD。

## 本轮实质变更

- 主程序启动诊断管理：复位保持低至少 3 个毫秒计数差，释放后再等待 3 个计数差，然后启动三芯片 MODE2/EFLAG 有界异步读取。1 ms 计数的相位误差后最短约 2 ms；实际时钟与复位波形尚未测量。
- 主循环在诊断读取期间持续轮询，不执行 WFI；每轮最多处理 32 字节 UART，并在循环首尾服务诊断，避免一次排空输入饿死读取。真实负载下周期尚未测量。
- 诊断管理检查电源请求低、OE 高、看门狗输出低及复位脚模式、输出类型、锁存与输入值。也检查 PA11/PA12 映射和 PB9/PC14 共封装引脚冲突；启动时启用 GPIOC 并将未用 PC14 设为模拟无拉电阻。
- 读取错误、时钟/配置变化、调度超时或 GPIO 检查失败时取消读取，清除可见结果，发出复位拉低请求并锁定故障。若实际引脚复用/电气路径失效，软件请求不能证明物理复位已经拉低；需波形验证。故障后不自动重试。
- 每轮完成的原始诊断快照可从调试变量读取。三个 eligible 掩码全部为 0，因为 LED 电源及输出保持关闭；该快照不构成带载健康确认或开灯许可。

## 验证证据

- ARM GCC 16.2.0：text 20300、data 4、bss 3272 字节；镜像静态检查确认主程序到诊断初始化/轮询/获取，以及运行模块到实际三芯片异步读取的调用路径。
- ASan/UBSan：原有 50 项时钟归属/配置检查、65,632 项读取器检查、26 组实际读取器与三芯片适配模型通过。
- 新增 120 个运行场景通过：连续两轮完整诊断；三阶段共 90 个 GPIO/配置/别名故障；4 个调度或归属故障；毫秒计数溢出；24 个读取位置逐一注入 NACK。使用真实目标 C 模块配 MMIO 模型，不是实板测试。
- 此前其他模块的全部回归及变异测试本轮未重跑。没有将模型通过当成实物效果证明。

## 原厂依据

- NXP PCA9956B Rev 1.2 §7.4/7.6：OE 高禁用输出；硬复位脉冲最短 2.5 µs，释放后的最大恢复等待 1.5 ms。https://www.nxp.com/docs/en/data-sheet/PCA9956B.pdf
- ST DS12991 Rev 6 Figure 4：TSSOP20 第 2 脚为 PB9/PC14，PA11/PA12 有映射别名。https://www.st.com/resource/en/datasheet/stm32g030c8.pdf
- A60 时序计算继续作为候选约束，不是总线波形资格证据。

## 仍未放行

LED 输出适配、实测电流/热限制、光学效果、带载故障覆盖、全负载调度和整机效果仍未完成；三款共 20 项实物效果要求仍无验证证据。没有购买、下单、Gerber/CAM 放行、烧录或上电。
最新灯驱动 PCB 为 A59，CAD 全部 0 错误，但与本轮固件一起仍需实板验证。每款 1000 台的整机成本目标尚未获得锁定供应商报价。

下一步：实现与主循环共用的有界寄存器写入及配置回读，建立输出适配和实物电流/光学验收路径。维持用户要求的三款完整效果目标。

## 复核

包内含可编辑完整固件、bin/elf/map、反汇编、构建验证、主机测试及日志。包根 `sh run_host_checks.sh`；目标目录 `sh build.sh` 使用 ARM GCC。SHA256-MANIFEST.json 可逐项校验。
