# A79 电磨前台调度、采样完整性与时间戳修正

状态：候选源码/主机模型、ARM镜像、独立解压重建及指令执行通过；真实周期、物理功能效果与制造未放行，FABRICATION_HOLD。没有烧录、上电、下单、采购、送厂或实际电机/LED/风机效果测试。三款产品20项功能效果要求仍未完成物理验证。

本轮完成：在A78的128MHz和既有A32/A34硬件上，去掉STREAM下先dual_poll、后stream_take内部再poll的重复调度。将真实前台步骤提取为drill_foreground_service，包含SPI/配置/诊断ADC处理、双ADC消费、奇偶epoch/DMB的SWD快照发布及空闲决策，main实际调用此函数。没有另造性能替身。非STREAM仍调用dual_poll处理上电/校准/单次捕获；默认main仍不请求任何bench begin或stream start，不赋予电机运行许可。

SPI与采样计时器共享完整检查：新增drill_spi_sampling_available，内部先核对完整采样计时器/硬关断引脚，随后核对SPI配置与CS/引脚/时钟，不再从SPI blank里再次扫描相同采样配置。用于跳过重复扫描的参数仅在SPI翻译单元私有，调用者不能传true绕开检查。普通SPI检查及启动逻辑仍走原有完整blank检查。du_ok改用这个组合入口，每次依然覆盖采样所有寄存器、关断引脚、SPI、DRV nSLEEP/nFAULT、禁充、ADC完整配置与时间关系。

STREAM且配置状态DC_READY时，READY监测不再提前调用：该状态是终态、没有排队寄存器事务，后面的dual guard已经检查DC_READY、SPI/驱动引脚、nFAULT和单调时间。其他配置状态继续服务；状态异常会在本轮du_ok引发关断，不被当成READY忽略。STREAM结束/故障仍将配置锁定FAILED，需要冷启动，不能复用未更新的READY last字段恢复运行。对采样期间新增的异常没有降低要求。DMA读取前和读取后仍分别执行完整检查，不能把必要的读取后验证当成重复调度移除。

发现并修复：合并poll/take后，一次take内部可能在入口时刻之后读到新样本。若继续以入口now减observed_us，会无符号下溢，把有效样本误判为过期。本轮在poll形成pending后再次读取真实TIM2校验消费年龄；仅通过后才复制数据并发布快照。新增模型让读期间TIM2前进2us，实际前台成功发布observed_us=82的样本；另让pending形成后延迟31us，消费者拒绝发布并关断。因此不是用冻结时间掩盖此分支。

另修复故障关断对禁充的遗漏：SPI abort/fault现在在同一次GPIOA BSRR写入中重新置PA12高，保持active-low充电禁用。新故障模型将PA12输出数据变低，完整前台检测后恢复高并停止驱动/采样，未发布样本。真实引脚电平与外部充电器行为仍未物理验证。

性能证据：执行实际链接ARM镜像中的健康du_ok路径为748条指令（A78为1279）。执行实际drill_timebase_get与drill_foreground_service，处理一个完成配对并发布稳定epoch，共2409条，包含真实前台函数胶水、快照发布及空闲判断。按乐观每周期一条指令/128MHz约18.8203125us；A78旧步骤合计5475条、约42.7734375us且尚未计main发布。当前从指令数量消除了此前的明显预算超限，但不代表30us真实截止期合格：仍不含Flash/总线/IRQ等待、未接FOC，不是Cortex-M4周期精确仿真或实测。必须使用真实MCU周期计数/定时波形验证包含ISR和读取后检查的服务窗口，不能据此说方案已走通或放行打样。详见performance_model/guard_instruction_receipt_A79.json与foreground_instruction_receipt_A79.json。

新增280个真实前台场景：两组64配对，含TIM2回绕，每组同时校验无数据步和有数据步；序号、原始IA/IB、epoch、接收数和未校准标记一致，完成标志消费后清除，STREAM保持忙态。20类配置/时间/ADC/时钟/引脚错误拒绝发布并关断；非流IDLE可休眠；非流配置SLEEP→WAKE仍按窗口服务；入口时间早于观察时间的有效消费和消费超过30us的拒绝均覆盖。所有ADC/DMA/时间进展由寄存器夹具控制，不证明真实外设链完成。

复跑311时钟、294DMA流、1645双ADC、645顺序ADC、241异步配置+24SPI结合、65632SPI、65772PWM、363时基和256真实main启动模型，ASan/UBSan通过。包独立解压复跑9个脚本、重建ARM二进制、重执行两个指令分析脚本，SHA及748/2409计数一致。Unicorn2.1.4是分析复现的外部依赖，不捆绑入固件；没有该库仍可ARM构建与C模型检查。源码闭包包含G431设备/CMSIS、drill_driver/charge，以及A32/A34网表参考。

时钟/外设参数继承A78：128MHz Range1 normal、Flash4WS，TIM1 PSC7/ARR400/DTG0x80、SPI500kHz、TIM2 1us、SysTick1ms、ADC12 32MHz名义。依据[ST原厂LL时钟代码](https://github.com/STMicroelectronics/stm32g4xx-hal-driver/blob/master/Src/stm32g4xx_ll_utils.c)、[LL TIM代码](https://github.com/STMicroelectronics/stm32g4xx-hal-driver/blob/master/Inc/stm32g4xx_ll_tim.h)及[G431数据手册](https://www.st.com/resource/en/datasheet/stm32g431cb.pdf)；名义频率、死区、ADC模拟精度、电源/热/EMC均未实测，没有新增硬件料号，量产整机成本仍未经工厂核价。

下一步：接入真实CPU周期/服务窗口观测并建立限时失效记录；随后校准ADC与电流保护、第三相一致性、观察器和FOC，实测速度/正反转/堵转/回生/声振/续航。美甲灯A70电源/A59 LED/A68固件、吸尘器A29硬件/A41固件本轮没有改版。三款仍需工厂DFM、具体MPN、成本报价和原产品效果验收。当前成果是可复核的开发候选，不是已经满足用户目标的实物或可制造放行包。
