From 16917bf165d47b29c457deb91abaca437b532833 Mon Sep 17 00:00:00 2001 From: Wanderingss <1624155937@qq.com> Date: Sun, 25 Oct 2026 04:49:19 +0800 Subject: [PATCH] =?UTF-8?q?test(P1-10):=20CH395F=20=E5=A5=97=E4=BB=B6?= =?UTF-8?q?=E4=B8=89=E6=A1=A3=E6=9E=84=E5=BB=BA=E5=AE=9E=E6=B5=8B=20+=20?= =?UTF-8?q?=E4=BF=AE=E9=98=B6=E6=AE=B5=E5=BC=80=E5=85=B3=E8=A1=8C=E5=B0=BE?= =?UTF-8?q?=E8=B7=A8=E8=A1=8C=E6=B3=A8=E9=87=8A=E7=9A=84=E5=88=87=E6=8D=A2?= =?UTF-8?q?=E9=99=B7=E9=98=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit P1-10 剩余①「CH395F 套件实际构建确认链接通过」今天才真正有数:产品基线 + 三档 测试配置(ARMCC,全部 0 错误 0 警告;.sct 保持 128 KB 未动,符合 P1-10 写的 "不建议扩到 192KB"): 配置(TEST_SUITE_CH395F + 阶段) Code ZI RW_IRAM1 距 92% 余量 产品基线(阶段全关) 214,104 131,852 75,632 57.7% 44,954 B 默认阶段 11/14(只切套件宏) 217,468 134,076 77,920 59.5% 42,666 B NET 层全开 6~11/13/14 218,992 141,688 85,552 65.3% 35,034 B HW 层全开 1~5/12/15(最坏态) 229,256 147,176 90,952 69.4% 29,634 B HW 层无需 PC 1/12/15(冒烟用) 215,244 134,896 78,672 60.0% 41,914 B P1-10 specifically 关心的 PHASE5 三块静态缓冲(3 x PHASE5_CHUNK_SIZE = 3 x 4093) 确实进了链接,不是"理论上会在":hw_full 的 ch395f_test_task.o 数据段 = 12,285 B (12,279 + 该 TU 其余 6 B)。于是"理论余量足够但未实测"改成了实测:最坏态仍余 29,634 B(RW_IRAM1 上限 131,072 B,92% 线 120,586 B)。RW_CCM 四档恒为 57,376 B / 87.9%——测试代码不进 CCM,但该区已经贴着红线,将来往 CCM 加东西要单独核算。 顺手修掉一个把实测挡了三年的坑(就是它让第一轮 hw 配置炸掉的): ENABLE_PHASE11/14 两行的说明是**挂在行尾的跨行块注释**。而"关掉一个阶段"的标准动 作是在行首加 //,// 只注释到行尾 → 块注释从第二行起变成裸代码,实测 188 条 error #7: unrecognized token,报点落在注释续行上,看着像头文件坏了、其实只是注释 被腰斩。run_all_suites.py 的 _rewrite_config 只改 TEST_SUITE_* 行(那些行没有行尾 跨行注释)所以一直没暴露;ch395f_test.h 恰是"人手工切阶段"的入口,必须自身安全。 修法:把两段说明挪到 #define 行的上一段,行尾只留同行闭合的短注释;并在开关区后面 写清"开关行注释规范"+ 上面这张实测表(同一事实只在这一处,销项时文档引它)。 验证(_wt/P1-10-test-fw,每步都实跑 @build): - V1 产品态(改注释后):0/0,Code/RO/RW/ZI = 214104/20388/1204/131852,与主干 2026-10-25 台账行逐项相同 → 本改动零体积增量。 - V2 只切套件宏(默认阶段 11/14):0/0,RW_IRAM1 77,920 B / 59.5%。 - V3 **朴素行注释切换**(正是炸掉第一轮的那个动作)改到 HW 1/12/15:0/0,且尺寸与 用 #undef/#define 覆盖法得到的 hw_nopc 逐字节相同(215244/23656/1200/134896) → 陷阱确认已消除,两条改法等价。 - V4 还原后产品重建:0/0,数字回到基线;test_config.h 与 ch395f_test.h 均按字节还原 (git status 只剩本文件这一处改动,测试宏没有留在树里,test-suite-switch 无需放行)。 - 产物身份戳实测:hw_nopc = "Oct 25 2026 04:32:16 suite=CH395F dstr=off"、产品态 = "Oct 25 2026 04:32:25 suite=NONE dstr=off" → dstr=off 三档一致,破坏性开关全程关。 RAM 增量:0 B。gate:改动只命中 no-mojibake / trailing-whitespace / end-of-file-fixer / check-added-large-files / id-check / mem-budget,全部 0;未用 --no-verify。 P1-10 剩余②(@test 烧录抓日志)需要 bench 锁,已把镜像与锚点清单交给 lead 执行; 真机跑 Phase 2~5 / 8 / 11 / 13 / 14 需 PC 端 tcp_server / peer 配合(Phase 11 还要 制造死对端,E11),属"实际测量采样"类,按用户指示本轮跳过,不在本提交声称做过。 --- test/board/ch395f_test.h | 38 ++++++++++++++++++++++++++++++++------ 1 file changed, 32 insertions(+), 6 deletions(-) diff --git a/test/board/ch395f_test.h b/test/board/ch395f_test.h index 89bceab1..04b5f53b 100644 --- a/test/board/ch395f_test.h +++ b/test/board/ch395f_test.h @@ -62,18 +62,44 @@ extern "C" { //#define ENABLE_PHASE8_TESTS /* [网] 大文件传输(100KB 文件收发) */ //#define ENABLE_PHASE9_TESTS /* [网] Select/Poll I/O 多路复用 */ //#define ENABLE_PHASE10_TESTS /* [网] 边界条件测试 */ -#define ENABLE_PHASE11_TESTS /* [网] KeepAlive 超时断开:PC 连 8080 后须制造 - * 死对端(禁用网卡;防火墙规则对已建立连接无效, - * E11 实证);勿与 Phase 6/9/10/13 混选(recv 互抢数据) */ +/* [网] KeepAlive 超时断开:PC 连 8080 后须制造死对端(禁用网卡;防火墙规则对已建立 + * 连接无效,E11 实证);勿与 Phase 6/9/10/13 混选(recv 互抢数据)。 + * ⚠ 说明写在**上一行**而不是挂在 #define 行尾:见本节末尾的"开关行注释规范" */ +#define ENABLE_PHASE11_TESTS /* [网] KeepAlive 超时断开(判据见 CH395F_Test_Guide) */ /* ---- 链路时延基线(M1;分段/阈值见 docs/测试说明/链路延迟测试说明.md)---- */ //#define ENABLE_PHASE12_TESTS /* [硬] SPI 字节命令 / DMA 时延基线(L1/L2,无需 PC)—— M1 已完成,基线见说明文档 §6.1 */ //#define ENABLE_PHASE15_TESTS /* [硬] 自愈驱动原语:状态回读一致性/cmd_done/sock_reset 状态机跑通/链路缓存(无需 PC)——TC 详见 docs/测试说明/CH395F_Test_Guide.md 阶段 15;台架 20/20 PASS */ /* ---- 链路时延(M2/M3;分段/阈值见 docs/测试说明/链路延迟测试说明.md)---- */ //#define ENABLE_PHASE13_TESTS /* [网] 芯片 + 队列时延(L3~L7/L10,需 PC peer)—— M2 已完成,基线见说明文档 §6.2 */ -#define ENABLE_PHASE14_TESTS /* [网] 生产路径时延(L8~L11 + 模拟器 Δ)—— M3,需 peer --mode remo(:7003); - * 与 Phase 11 共存安全:peer 缺席时有 LAT_P14_TIMEOUT_MS 整体超时 - * 自动 done,不永久挡 accept */ +/* [网] 生产路径时延(L8~L11 + 模拟器 Δ)—— M3,需 peer --mode remo(:7003); + * 与 Phase 11 共存安全:peer 缺席时有 LAT_P14_TIMEOUT_MS 整体超时,自动 done, + * 不永久挡 accept */ +#define ENABLE_PHASE14_TESTS /* [网] 生产路径时延(L8~L11) */ +/* + * 开关行注释规范(2026-10-25 构建矩阵实测踩出来的,别改回去): + * 每个 ENABLE_PHASE*_TESTS 行只许带"同一行内闭合"的行尾注释,或不写注释; + * 需要多行说明就挪到该行的**上一段**。原因:关一个阶段的动作是在行首加两个 + * 斜杠,而它只注释到行尾——挂在行尾的跨行注释会从第二行起**变成裸代码**(实测 + * 188 条 error #7: unrecognized token,报点落在注释的续行上,看着像头文件坏了, + * 其实只是注释被腰斩)。开阶段是同一个坑的反面:去掉行首斜杠并不会把注释拼回来。 + * test/run_all_suites.py 的 _rewrite_config 只改 TEST_SUITE_* 行(那些行没有行尾 + * 跨行注释)所以一直没炸;本文件是"人手工切阶段"的入口,必须自身安全。 + * + * 链接余量构建实测(条目属主 docs/任务规划/测试与架构专项.md P1-10;2026-10-25, + * RW_IRAM1 = 128 KB 的 .sct 区,92% 红线 = 120,586 B): + * 配置(TEST_SUITE_CH395F + 阶段) Code ZI RW_IRAM1 距红线余量 + * 产品基线(阶段全关) 214,104 131,852 75,632 57.7% 44,954 B + * 默认阶段 11/14(只切套件宏) 217,468 134,076 77,920 59.5% 42,666 B + * NET 层全开 6~11/13/14 218,992 141,688 85,552 65.3% 35,034 B + * HW 层全开 1~5/12/15(最坏态) 229,256 147,176 90,952 69.4% 29,634 B + * HW 层无需 PC 1/12/15(台架冒烟用) 215,244 134,896 78,672 60.0% 41,914 B + * 该条目关心的 PHASE5 三块静态缓冲(3 x PHASE5_CHUNK_SIZE = 4093)确实进了链接: + * hw_full 的 ch395f_test_task.o 数据段 = 12,285 B(3 x 4093 = 12,279 + 其余 6 B)。 + * "理论余量足够"由未实测转为已实测:最坏态还余 29,634 B,不必把 .sct 扩到 192 KB + * (与该条目"不建议扩 scatter"的约束一致)。RW_CCM 四档恒为 57,376 B / 87.9%—— + * 但该区已贴着 92% 线,任何往 CCM 加东西的改动都得单独核算。 + */ #if defined(ENABLE_PHASE1_TESTS) || defined(ENABLE_PHASE2_TESTS) || \ defined(ENABLE_PHASE3_TESTS) || defined(ENABLE_PHASE4_TESTS) || \ defined(ENABLE_PHASE5_TESTS) || defined(ENABLE_PHASE12_TESTS) || \