# A100 STM32G431 计算诊断镜像

2026-10-10；状态：真实ARM镜像链接与静态回读通过，未烧录、未执行、没有实际DWT记录，不是产品运行固件或投板放行。

## 本轮实际完成

A99修正观测器和既有FOC电流计算，链接到独立的Cortex-M4F hard-float镜像。所有C对象统一hard-float，启动SystemInit之后显式DSB/ISB，再调用main；main还检查CPACR、128MHz声明时钟和DWT计数器活动。安全GPIO及PLL128模块继承A83，采用当前PF1映射，未沿用旧诊断的PC14映射。

镜像内执行两方向各40,000个、dt=50μs的合成计算步骤。不是ADC数据；生成波形在计时区间外，观测器输出角度有效且锁定时才调用FOC数学计算。数学占空比仅保存RAM，不写PWM。没有TIM1、ADC、SPI、DMA采样或运行模块链接，也没有驱动RUN/MOE使能路径；这是源码和链接符号审查结论，尚非真实电平/关断时延验证。

DWT记录观测器、FOC、两者加中间部分记录操作的最大cycles，阈值6400cycles对应声明128MHz下50μs。combined区间不含波形生成、ADC/DMA消费、PWM提交、UI、保护服务、IRQ和完整前台，因此即使将来计数≤6400，也只能证明该段计算，不得称完整控制路径预算通过。当前cycle结果为null，没有填入主机/模型估算。

## 构建证据

- BIN：e61d8ead5f95ba805c30dc42ae44746d4e4172410e057c9248668fc045f8cd45
- Flash镜像：8084bytes。
- RAM链接区域：2392bytes，含预留heap/stack，并非运行栈高水位。
- ELF标记为VFPv4-D16，浮点参数通过VFP寄存器；反汇编有浮点运算及Reset→SystemInit→DSB/ISB→main顺序。
- 80字节记录ABI由静态断言冻结。解码器22个合成夹具覆盖完整/未完成、错误时钟/FPU/计数、错误ABI、非有限结果、伪造来源/权限、预算标记矛盾以及超时记录。解码器测试不是板上执行。

## 工程师后续取证

需要实际STM32G431板、SWD工具及经确认的当前接线。先在电机功率端断开、独立逻辑供电条件下审查GPIO与板卡版本，再由工程师决定是否刷此计算诊断；本包不直接授权电机上电。首次工程样板制造另走A95的工厂审查流程，不要求先用尚未制作的板完成此测试。

执行完成后status应为2，epoch偶数、steps80000；使用SWD符号drill_compute_diagnostic读取80字节，连续两次epoch一致且偶数、status完成后保存原始二进制。必须一并记录板号、镜像SHA、供电、ST-Link读回和真实时钟核对，只有裸文件本身不能证明硬件来源。

```sh
python3 decode_compute.py actual-SWD-record.bin
```

解码器始终将physical_execution_verified、full_control_path_budget_verified和motor_run_permission标为false；不会因输入一份看似正确的记录就宣称完成硬件资格。超过50μs的计算会记录预算超限，不会改成PASS。

## 未完成

真实DWT、目标端观察器数据质量、真实电机参数、起转/接管、FOC及速度环、独立保护台架资格、负载和原产品50,000rpm等效果，均未完成。三款原产品功能等效保持NOT_VERIFIED。A83实际产品候选固件不改，本包是隔离诊断。

复跑：sh build.sh；python3 verify_image.py；python3 test_decode.py。构建路径独立，包含Device、CMSIS、启动和链接源；供应商许可文件随源保留。本包不包含虚构的板上测量数据。
