# A67 灯板物理接点 GPIO 有效性与失效采样候选

状态：源码/ARM 构建/相关模型通过；未烧录、未上电；FABRICATION_HOLD。

## 本轮修正

此前互锁、热保护接点和按键直接使用 IDR，缺少对应 GPIO 时钟、输入模式、上下拉和复用有效性检查。A67 增加独立 available 字段，配置无效时对应闭合/按键读值强制为 false；GPIO 时钟关闭时不使用其 IDR。互锁 GPIO 不可用时 guard_inputs.hardware_interlock_ok 明确为 false。

A39 互锁 PA0 要求输入模式和内部下拉；热接点 PA12 要求输入下拉、SYSCFG 时钟有效且 PA12 重映射关闭；按键 PB0 要求输入上拉，PB1/PB2/PA8 三个同封装引脚的未用别名必须为模拟、无上下拉。主程序启动时明确设置这些未用别名，而不依赖复位默认值。网表参考与提取节点见 input_binding_reference.json，分别对应 U1 管脚 7/17/15。

主程序增加输入可用性诊断位：热接点=1、互锁=2、按键=4、红外 GPIO=8。采样函数不写 GPIO/RCC/SYSCFG 寄存器；红外去抖仍沿用候选时序。采样可用性表示软件配置符合候选，不证明外部开关、传感器和连线已实测有效。

热接点闭合不会直接将 temperature_ok 设为 true。NTC、电源和驱动健康许可仍未标定/绑定，继续为 false；零校准占位符、未配置/武装 guard 和输出禁用状态保持。

## 证据

ARM GCC 16.2.0 构建通过：text 23836、data 4、bss 3640 字节。链接镜像检查保留主程序到输入采样和策略轮询的调用路径，以及新增可用性诊断符号；68 字节校准占位符仍验证为全零。

ASan/UBSan：141 输入场景通过，包括 32 个原始电平组合、接点/按键模式与上下拉矩阵、三组未用别名矩阵、时钟/重映射、IR 撤回和寄存器读前读后不变检查。最后 4 个场景链接真实 lamp_guard 策略：测试夹具提供其他独立许可，正常互锁保持既有输出许可，模式/上下拉/时钟失效则撤销许可并进入故障。夹具许可不是实物标定证据。

相关的 127 个运行/调度及故障 GPIO 锁存场景也从本轮源码重编译通过。此前 A66 的其他完整回归记录为历史记录，本轮没有重复全量 50 时钟/65,713 读取/528 初始化/575 帧等不受此修改影响的检查；不能把继承日志说成本轮全量复测。实际本轮记录为 input_checks.log、runtime_GPIO_checks.log。run_host_checks.sh 仍可运行完整组合。

主机夹具 SYSCFG 宏的全局变量名曾与采样函数局部变量重名，已将局部快照改为 snapshot，并重新编译模型和 ARM 固件。最终源码对应以上通过记录。

## 未完成项与下一步

输入配置合格仍不证明外部接点的粘连/断线诊断，也不证明 NTC、电流、电压、光学或整机效果。GPIO 开灯适配、校准安全条件采样、看门狗许可、带载诊断、视觉闭环和样板验收尚未完成。下一步继续建立校准采样到物理许可的路径，再进行实板波形、电流/温升与光学验证。

三款共 20 项实物效果要求仍未验证。每款 1000 台优先整机成本的目标不变；供应商报价未锁定，最新驱动 PCB A59 CAD 全部 0 错误仍不等于实物验收。本轮没有购买、下单、Gerber/CAM 放行、烧录或上电。

完整可编辑固件、bin/elf/map、反汇编、模型、日志和哈希清单随包提供。run_input_checks.sh 复核 141 场景；run_runtime_GPIO_checks.sh 复核 127 场景。交付包解压后复跑这两项并重建 ARM，仅报告此范围。
