refactor(编号): 链路时延段号 L1~L11 → 权威 ASCII 段名(含 C 宏名与 peer 变量)

批次六余账之一。批次 3b 当时只改了 net_latency_test.c 的日志串与注释,本笔收掉剩下
的:标识符、peer 脚本、其余四个 board 文件。

- 段名映射(权威表在 scripts/archive/id_gate/编号治理历史.md §10):SPI_CMD /
  SPI_DMA / CHUNK_WAIT / TO_PC / QUEUE_RT / ECHO_RT / FRAME_RT / PROD_CYCLE /
  RELISTEN / LOGTAX / UI_LOOP。C 侧纯 ASCII,文档侧沿用中文段名。
- C 标识符 29 条规则 86 token:LAT_P13_OP_L5_RECV → LAT_P13_OP_QUEUE_RT_RECV、
  P13_ST_L3 → P13_ST_CHUNK_WAIT、LAT_P13_L3_SAMPLES → LAT_P13_CHUNK_WAIT_SAMPLES,
  并把文件内既有的 CW / QRT / LT 三个缩写前缀一并展开成同一套词,不留两套词汇。
- REQ2FIRST / FULLFRAME **不并入** FRAME_RT:它们是整帧往返段内两个不同测量
  (报告标签本就叫 req2first_mcu / fullframe_mcu),并入会撞名并丢掉区分度。
- peer(test/host/latency_peer.py)42 条标识符 + 7 个小写局部量 + 操作表整表重排。
  **JSON 输出键 l5_recv / seg_l6 / frames_l7 等 48 token 刻意不改**——它们是
  docs/测试说明/m2_data/ 五份冻结实测数据的 schema,改名等于让代码与归档证据
  漂移;边界与理由写进归档 §10.3,是**有记录的例外**不是漏网。
- 注释 23 处;顺带修一处上一批路径残留:peer 被写成 test/latency_peer.py,实际
  在 test/host/ 下,三处注释改对。
- 站点:test/board 111 + Drivers/BSP/CH395F/ch395f.h 1 + peer 46(无词边界口径)。
- 零代码生成变化:@build 改前/改后各一次,均 0 错 0 警且 Program Size 完全相同
  (Code=236456 RO=28124 RW=1876 ZI=137084)。被改名的标识符全落在
  ENABLE_PHASE13_TESTS 区间内 → 另开 TEST_SUITE_CH395F + PHASE13 组合编一次
  (0 错 0 警),套件开关事后无条件还原、sha256 与还原前一致,再重建产品构建。
- 等价证明:剥注释 + 套登记表后与 HEAD 逐字节相同(not_equivalent=0)。
- 禁改一字未动:console_log 的 "L1\r\n"(测试数据)、lftpd 与
  ftp_capture 的 "215 UNIX Type: L8"(FTP 应答断言)。
This commit is contained in:
2026-10-28 18:49:45 +08:00
parent 83011abb16
commit 6572591181
8 changed files with 161 additions and 161 deletions
+13 -13
View File
@@ -2,7 +2,7 @@
* 模块名称:CH395F 链路延迟测试
* 模块功能:链路分段时延测量的微秒时基(DWT CYCCNT)、采样统计
* (min/med/p95/max + 尖峰计数)、机器可读 [LAT] 报告输出与判定。
* Phase 12(硬件层,M1):SPI 字节命令 / DMA 时延基线(L1/L2,无需 PC);
* Phase 12(硬件层,M1):SPI 字节命令 / DMA 时延基线(SPI_CMD/SPI_DMA,无需 PC);
* Phase 13/14(NET 层,M2/M3 规划):芯片发送握手 / 队列往返 /
* 生产路径时延。分段定义、判定基线与执行流程见
* docs/测试说明/链路延迟测试说明.md。
@@ -10,7 +10,7 @@
* 作者:王建锋
* 创建日期:2026-09-22
* 修改记录:
* 2026-09-22 王建锋 初版:时基 + 统计/报告 + Phase 12(L1/L2 SPI 时延基线)
* 2026-09-22 王建锋 初版:时基 + 统计/报告 + Phase 12(SPI_CMD/SPI_DMA SPI 时延基线)
******************************************************************************/
#ifndef NET_LATENCY_TEST_H
@@ -24,18 +24,18 @@ extern "C" {
/*
* === 链路时延测试阶段一览(见 链路延迟测试说明.md §4.2) ===
* Phase 12 [硬件层] SPI 字节命令 / DMA 时延基线(L1/L2,无需 PC) —— M1(已完成)
* Phase 13 [NET 层] 芯片 + 队列时延(L3~L7/L10,需 PC peer) —— M2(已实现)
* Phase 14 [NET 层] 生产路径时延(L8~L11 + 模拟器 A/B,需 PC peer)—— M3(规划)
* Phase 12 [硬件层] SPI 字节命令 / DMA 时延基线(SPI_CMD/SPI_DMA,无需 PC) —— M1(已完成)
* Phase 13 [NET 层] 芯片 + 队列时延(CHUNK_WAIT~FRAME_RT/LOGTAX,需 PC peer) —— M2(已实现)
* Phase 14 [NET 层] 生产路径时延(PROD_CYCLE~UI_LOOP + 模拟器 A/B,需 PC peer)—— M3(规划)
*
* 时基说明:DWT CYCCNT 为 32 位,168MHz 下回绕周期 25.17ms。
* M1 各段(<5ms)与 M2 调用方侧测量(单次 <25ms)用单次读数差即可;
* 跨 25ms 的段(L4/L8 整帧与重传尖峰)由 PC 端 peer 计时。
* 跨 25ms 的段(TO_PC/PROD_CYCLE 整帧与重传尖峰)由 PC 端 peer 计时。
*
* Phase 13 协议(服务器驱动:MCU 发操作字节,peer 执行;详见说明文档 §4.5):
* HELLO = 5A A5 58 01(peer → MCU,4 字节)
* 操作字节(MCU → peer):0x01=L5 recv flood / 0x02=L5 send flood /
* 0x03=L6 单请求 / 0x04=L7 LCDMEM 全帧 / 0x05=L3 send flood / 0xFF=完成
* 操作字节(MCU → peer):0x01=QUEUE_RT recv flood / 0x02=QUEUE_RT send flood /
* 0x03=ECHO_RT 单请求 / 0x04=FRAME_RT LCDMEM 全帧 / 0x05=CHUNK_WAIT send flood / 0xFF=完成
* Phase 13 需**独立运行**(同 Phase 4 约定):与其他 Phase 共用 8080 端口
* 的 socket,混跑会污染帧测量。
*/
@@ -113,7 +113,7 @@ void lat_stat_report(const char *p_seg, const lat_stats_t *p,
uint16_t max_spikes, int *p_verdict);
/*
* 函数功能:Phase 12 入口(硬件层:SPI 字节命令 / DMA 时延基线,L1/L2,无需 PC)
* 函数功能:Phase 12 入口(硬件层:SPI 字节命令 / DMA 时延基线,SPI_CMD/SPI_DMA,无需 PC)
* 入口参数:无
* 返回值:无
* 限定条件:由 ch395f_test_run() 硬件层分支调用(net_stack_bring_up 完成后
@@ -124,11 +124,11 @@ void lat_stat_report(const char *p_seg, const lat_stats_t *p,
void net_latency_phase12_run(void);
/*
* 函数功能:Phase 13 入口(NET 层:芯片 + 队列时延 L3~L7/L10,需 PC peer)
* 函数功能:Phase 13 入口(NET 层:芯片 + 队列时延 CHUNK_WAIT~FRAME_RT/LOGTAX,需 PC peer)
* 入口参数:sockfd - 测试监听 socket(连接后的数据通道 fd,8080 端口)
* 返回值:无
* 限定条件:由 net_layer_test_main() 监听循环每 ~10ms 调用一次(事件驱动
* 状态机);需 test/latency_peer.py --mode net 配合;须独立运行
* 状态机);需 test/host/latency_peer.py --mode net 配合;须独立运行
* 函数说明:服务器驱动协议(见文件头协议注释);会话完成后 s_done 置位,
* 后续调用为空操作;套件未选中本 Phase 时函数体为空
*/
@@ -143,11 +143,11 @@ void net_latency_phase13_run(int32_t sockfd);
int net_latency_phase13_busy(void);
/*
* 函数功能:Phase 14 入口(NET 层:生产路径时延 L8~L11,真实 uiTask + :7003)
* 函数功能:Phase 14 入口(NET 层:生产路径时延 PROD_CYCLE~UI_LOOP,真实 uiTask + :7003)
* 入口参数:无(本 Phase 不占用测试 socket,测量生产 socket 的服务端行为)
* 返回值:无
* 限定条件:由 net_layer_test_main() 循环每 ~10ms 调用一次;需
* test/latency_peer.py --mode remo --port 7003 配合;须单独使能
* test/host/latency_peer.py --mode remo --port 7003 配合;须单独使能
* (与 Phase 13 同启时两者都会跑,M3 台架建议只开 Phase 14)
* 函数说明:状态机顺序 = ui_loop(本地节拍窗口)→ prod_cycle_mcu(等 peer
* 发满 N 帧 LCDMEM)→ relisten(等 peer 断开重连)→ DONE;