问题记录:UI 任务看门狗停摆归因(Task #32)

- 新增 docs/问题记录/UI任务看门狗停摆分析.md,并在 docs/README.md §7.3 登记。
- 否掉"CPU 负载饱和":实测 adcTask 占空比 10%~20%(ADC1 扫描约 67us + 压环与
  相量约 10~15us + 超时忙等),且日志 ring 严格 +10000/10s(= 1000 次/秒)
  反证 adcTask 每拍都在 osDelayUntil 里睡满、没有空转。
- 定位真因:uiTask 是 required_mask 六个任务里唯一的 osPriorityBelowNormal
  (其余五个全 Normal,CMSIS 包装直接把优先级赋给 uxPriority),且其心跳必须
  先经 ui_net_sink_poll -> net_accept -> osMessageQueuePut + xTaskNotifyWait
  (portMAX_DELAY) 绕 netTask 一次往返之后才发出。失败日志只缺 bit4(UI)、
  其余任务心跳全在,与"非全局饥饿"一致。
- 另发现一个独立正确性缺陷:adc_task 在 r == 0(TPAFE 无新帧)时仍压环 +
  phasor_run;日志 ring = frames + idle 精确吻合(10001 = 9957+44)。会把重复
  采样点塞进 20 点 DFT 窗,造成约 3% 的等效采样率偏移(系统性误差)。
- 给出 P0(压环条件、osDelayUntil 重同步)/ P1(优先级、解耦心跳、ADC 去忙等)
  / P2(观测)分层处置,并建议先启用现成的 TEST_LATENCY_PROBE 测量再定方案。
- 本文只做归因与方案建议,未改动任何生产代码。
This commit is contained in:
2026-10-10 18:24:06 +08:00
parent c25baba2f1
commit 28bd391035
2 changed files with 268 additions and 0 deletions
+1
View File
@@ -186,6 +186,7 @@ docs/
| [`GD5F2GQ5UE_Trap_Records.md`](问题记录/GD5F2GQ5UE_Trap_Records.md) | GD5F2GQ5UE SPI NAND 陷阱台账 |
| [`SD2506_Trap_Records.md`](问题记录/SD2506_Trap_Records.md) | SD2506 RTC 陷阱台账 |
| [`错误码传播审计.md`](问题记录/错误码传播审计.md) | 错误码传播缺陷审计(9 类模式 × 子系统) |
| [`UI任务看门狗停摆分析.md`](问题记录/UI任务看门狗停摆分析.md) | **Task #32 归因**:uiTask 看门狗停摆(L2 引入的间歇性回归)——否掉"CPU 饱和",定位为**优先级饥饿 + 心跳依赖 netTask 往返**;含量化算式、独立缺陷(无新帧仍压环)与 P0/P1/P2 处置建议 |
---