docs(net): N-31 销项——0x08 下多 Socket 实测 34/34,补台架前置排雷
N-31(0x08 下的多 Socket 台架复测)已闭环并销项。 实测(2026-10-11 20:18,板端 CH395F ver=0x4A,日志 fun_para=0x08): - 构建:TEST_SUITE_CH395F + ENABLE_PHASE7_TESTS,PHASE7_MULTI_COUNT=5 (E-23 未修:NET_MAX_SOCKETS=8 减去 FTP/对时/远显三个常驻监听) - PC 侧:ch395f_socket_test.py tcp_server --port 8081 --max-conn 8 - 结果:**Phase 7 34/34 PASSED(failed=0)**;TC704 五路全部 ESTABLISHED,每路 64 B 回显字节级比对通过 - 芯片 Socket 实测落在 sock2/4/5/6/7(0/1/3 被监听占用)→ Socket 4~7 在 bit0=0 下完全可用,与官方手册"8 Socket 原生 + _SN 索引寻址"一致 - 烧录 -Rst -Run + 回读 No difference found;测试宏已还原、产品构建重烧 台架前置排雷(两条都会造成全量假 FAIL,已登记进 Trap 18): 1. PC 适配器落在 Public 防火墙配置文件 → 入站 8081 被静默丢弃,症状是 TC701/702/704 全部 CONNECT TIMEOUT(而 PC→设备 21 端口与 ping 正常), 极易误判成"0x08 毁了 client"。 2. 上一轮遗留的 tcp_server 进程仍占着 8081,新起的服务器绑不上端口 却不报错。 登记簿:N-31 行删除(完成即销项),W5 行加销项注记;Test_Guide TC704 补复跑记录与前置条件;Trap 25 疑点条目改判为"已实测通过"。 验证:@build 0 错 0 警(产品构建 Code=196764);check_doc_links --all 通过。
This commit is contained in:
+2
-3
@@ -40,7 +40,7 @@
|
||||
|---|---|---|
|
||||
| **安全** | 0 | — |
|
||||
| **P1** | 0 (+1 收尾) | P1-10 测试固件构建实测闭环(主体已闭环,见 §3.1);~~N-30~~ 已销项(2026-10-11 三连定案修复,回归 4 轮 11/11,见 `问题记录/CH395F_Trap_Records.md` Trap 25) |
|
||||
| 登记簿 | 21 | 网络:N-2(49s 日志静默,**低风险观察项**)、N-3(L5 基线重验)、N-4(pending 二期)、N-16(A2/A4 专项负向验证)、N-17(探针窗口心跳缺口)、N-31(FUN_PARA=0x08 下多 Socket 台架复测);存储/日志:**S-3(USART1 TX-only 根治)**、S-4(dhara 重试自旋)、S-5(可选全序列卷锁)、N-22(写回 flush)、N-24(日志逐条开关);数据正确性:**N-21(dhara is_free/copy,报告 N-12/13)**;结构:**N-20(Error_Handler 死循环)、N-23(注册反向校验)、N-26(NAND DMA 断言)**;预算:**N-27(内存优化簇)、N-28(Flash 死代码簇)**;仓库:**N-29(.git 149 MB,需用户决策)**;硬件:**N-18(V0.2 改版项)** |
|
||||
| 登记簿 | 20 | 网络:N-2(49s 日志静默,**低风险观察项**)、N-3(L5 基线重验)、N-4(pending 二期)、N-16(A2/A4 专项负向验证)、N-17(探针窗口心跳缺口);存储/日志:**S-3(USART1 TX-only 根治)**、S-4(dhara 重试自旋)、S-5(可选全序列卷锁)、N-22(写回 flush)、N-24(日志逐条开关);数据正确性:**N-21(dhara is_free/copy,报告 N-12/13)**;结构:**N-20(Error_Handler 死循环)、N-23(注册反向校验)、N-26(NAND DMA 断言)**;预算:**N-27(内存优化簇)、N-28(Flash 死代码簇)**;仓库:**N-29(.git 149 MB,需用户决策)**;硬件:**N-18(V0.2 改版项)** |
|
||||
| 测试/基础设施 | 6 | T-7(CI runner 未就绪 + 推送后两 job 闭环 + 第二机交叉验证)+ **S12**(断言宏)、**S1-c**(可选单测)、**A-4**(采集链路测试约束)、**A-5 残余**(CI 体积门禁盲区)、**D7**(串口助手 A6/A7 待 CH340) |
|
||||
|
||||
> **网络侧另有 E-xx 未闭环项**(E-12/15/16/23/24/25/26/27/28/30/47/48/49/50/58/59/61,共 17 项)
|
||||
@@ -70,7 +70,7 @@
|
||||
| **W2 功能主线** | **修 E-50/E-49 → B2** RS-485(ModBus RTU)∥ **B4** IEC104 上行 → **B5** protectTask 立项 | DTU 核心职责"采集与转发"仅剩两环:RS-485 侧被 E-59 挡、上行侧未动工;B4 数据源(ADC ✅)已具备,**可与 B2 并行**。**已定(2026-10-11):B2 先行(先修 E-50/E-49 驱动契约)、B4 并行开工** |
|
||||
| **W3 数据正确性** | **N-21** dhara `is_free`/`copy`(报告 N-12/13) | 低概率、后果重(数据丢失);修复须配主机侧移植层测试,一并补报告"覆盖率"缺口 |
|
||||
| **W4 预算与内存** | **N-27**:`docs/问题记录/项目审查与优化建议报告.md` §5.5 台账三件套 → R-9 池 40→16 KB → R-2 后半(54 KB→CCM) | CCM 只剩 16,304 B,R-2 后半被堵死;三件套是排期前提且工作量小 |
|
||||
| **W5 结构债** | C1 pending 二期 · C3 日志管线(N-2 + N-24)· C5 收口 · C6 USART1(S-3)· N-20 `Error_Handler` · N-23 注册反向校验 · N-22/N-25/N-26/N-28 · N-31 复测 | 二期/健壮性/评估类,无紧急;N-23 是唯一"1 小时工作量"的一条;~~N-30~~ 已销项(Trap 25 定案修复,2026-10-11 回归 4 轮 11/11) |
|
||||
| **W5 结构债** | C1 pending 二期 · C3 日志管线(N-2 + N-24)· C5 收口 · C6 USART1(S-3)· N-20 `Error_Handler` · N-23 注册反向校验 · N-22/N-25/N-26/N-28 | 二期/健壮性/评估类,无紧急;N-23 是唯一"1 小时工作量"的一条;~~N-30~~ 已销项(Trap 25 定案修复,2026-10-11 回归 4 轮 11/11);~~N-31~~ 已销项(FUN_PARA=0x08 定案 + 0x08 下多 Socket 实测 Phase 7 34/34,见 `问题记录/CH395F_Trap_Records.md` Trap 18「定案更正」) |
|
||||
| **W6 验证常态** | P1-10 收尾 · T-7 CI · D2 N-3 · D5 N-16 · D6 N-17 · **D7 串口助手 A6/A7** · S12 · S1-c · A-5 | 窗口性,逢机顺带,不单独排期 |
|
||||
| **W7 UI 扩展** | U4 残余(golden + 字符集差集挂门禁)→ U1 令牌层 → U2/U3 → **27 页**落地 | 产品驱动、体量大,需单独立项(顺序按 `docs/问题记录/项目审查与优化建议报告.md` §6.5) |
|
||||
| **W8 仓库决策** | **N-29** `.git` 149 MB + 图片 36.3 MB | `git filter-repo` 历史重写影响未推送提交与协作者 → **需用户决策** |
|
||||
@@ -183,7 +183,6 @@ W8 仓库 N-29 .git 149MB(用户决策) 硬件:N-18 V0.2
|
||||
| N-27 | **内存优化簇**:LVGL 池 + UI 两份缓冲 54,146 B 仍在 SRAM1,CCM 只剩 16,304 B;`ram_baseline.tsv` / `RAM预算台账.md` / 92% 阈值门禁**均未建** | R-2 后半段(迁 CCM)被堵死 → B2/B4/B5 的功能预算看不清 | **前置 §5.5 台账三件套** → R-9(`LV_MEM_SIZE` 40→16 KB,池水位门禁数据已具备)→ R-2 后半;R-3/R-4/R-5/R-6 逐项评估(R-6 前置已满足) | **W4** | 报告 R-2 剩余/R-3~R-6/R-9/§5.5 |
|
||||
| N-28 | Flash 死代码评估簇:剩余 ≈10 KB(`box_shadow` 3,246 / `draw_sw_img` 2,960 / `bin_decoder` 1,972 / `image_decoder` 952 / `triangle` 930)+ 双精度 `dadd` 等 ≈1 KB;uvprojx 仍挂 201 个空 LVGL TU(F-1/F-2/F-3 已闭环,省的是编译时长) | 编译时长 + 文档噪音 | 逐项实测再关;⚠ `mask`/`mask_rect`/`grad` 是文字与矩形绘制必经路径,**不可盲关** | W5 | 报告 F-4/F-5/F-6 |
|
||||
| N-29 | **仓库膨胀**:`.git` 149 MB + 图片 36.3 MB | clone/备份慢,且持续恶化 | 降采样 / 拆 submodule / LFS 三选一 **+ 一次 `git filter-repo` 历史重写**。**已决策(2026-10-11):暂不处理、登记观察**——推送/协作前重评(届时未推送提交更少、重写代价最低) | **W8** | 报告 D-1 |
|
||||
| N-31 | **FUN_PARA=0x08 下的多 Socket 台架复测**:bit0 保留位已定案(`net_init` 与 `test/board/ch395f_reuse_bench.c` 均改 0x08,`@build` 0 错 0 警),但"0x08 下 Socket 1~7 仍可用"**至今零实测** | 结论有官方手册(V1C/V1E/V2.2/V2.3 bit0 均为保留)+ 官方例程(bit0=0 下 Socket 0~7 配缓冲)一手支撑,风险低;判错则 FTP 数据通道 / 对时 / 远显**静默失效** | 跑 TC-NET-704(开 `ENABLE_PHASE7_TESTS`,`PHASE7_MULTI_COUNT` 降到 ≤5 绕开 E-23 的 fd 池上限)+ FTP 回归(数据通道实测落 sock4);判据:全路 ESTABLISHED + 回显字节级比对通过 | W5 | `问题记录/CH395F_Trap_Records.md` Trap 18「定案更正」+ Trap 25 |
|
||||
| U 簇 | UI 标准化:无令牌层/组件库/页注册表(手写 `case` 仍在),**27 页**未落地;golden 未挂 pre-commit、字符集差集检查仍是约定 | 新增一页成本仍是 8 处手工改动 | 按 `docs/问题记录/项目审查与优化建议报告.md` §6.5:U4 残余(两脚本入门禁,可逢窗口顺带)→ U1 令牌层 → U2/U3 → 页面落地;U4 golden 可直接当 U1 验收工具。**已确认(2026-10-11):本轮不排期**,等功能主线出结果后按产品需求启动 | W7 | 报告 U1~U5 |
|
||||
|
||||
### 3.3 测试与架构改进专项(S1x / A-x)
|
||||
|
||||
@@ -849,6 +849,8 @@ sequenceDiagram
|
||||
**覆盖原则**:DP-01(多 Socket 并发主路径)、缓冲架构(8×6 块分配,MSS=1024)
|
||||
|
||||
> **注**:PC 端 `--max-conn` 须为**并发**计数(连接关闭即减),否则 Phase 7 全量(701+702+704 共 12 连接)会按累计计数超限而拒掉 4~7(见 Trap 19)。该用例已随 Phase 7 实测 **40/40 PASS** 验证。
|
||||
>
|
||||
> **2026-10-11 复跑(N-31,`FUN_PARA=0x08`)**:**Phase 7 34/34 全通过**,5 路并发 ESTABLISHED + 64 B 回显字节级比对 OK,芯片 Socket 实测落在 **sock2/4/5/6/7**(0/1/3 被 FTP/对时/远显三个监听占用)→ 证明 Socket 可用性不依赖 FUN_PARA。两条**前置排雷**(否则会得到全量假 FAIL):① PC 适配器落在 **Public** 防火墙配置文件会静默丢入站 8081,症状是 TC701/702/704 全部 `CONNECT TIMEOUT`;② 残留的旧 `tcp_server` 进程占着 8081,新服务器绑不上端口不报错。另:`PHASE7_MULTI_COUNT` 须 ≤5(E-23 未修,`NET_MAX_SOCKETS=8` 减去三个常驻监听)。证据链见 `问题记录/CH395F_Trap_Records.md` Trap 18「定案更正」。
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -530,7 +530,9 @@ NET 层 TCP Client(阶段 7)`net_connect()` 返回 0,但 `net_poll()` 报
|
||||
|
||||
**为什么 0x09 当年"看起来有效"**:芯片忽略了保留位(Trap 25 旁证:bit0=1 下 sock1/2/3 并行正常)。TC704 40/40 PASS 只证明"0x09 + 缓冲布局"通过,**不构成"0x08 下不通过"的对照**(与 bit0 结论出自同一提交,属自证)。留着 bit0=1 的代价是违反保留位规定——后续固件版本一旦启用该位,现网设备静默失效。
|
||||
|
||||
**待补实测**(登记 `docs/待处理内容.md` N-31):0x08 下跑 TC-NET-704(须降并发 ≤5:E-23 未修,`NET_MAX_SOCKETS=8` 而三个监听常驻占 3 个 fd)+ FTP 回归(数据通道实测落在 sock4,比 TC704 更贴生产)。
|
||||
**实测闭环(2026-10-11 20:18,N-31 已销项)**:`FUN_PARA=0x08` 下跑 TC-NET-704(`PHASE7_MULTI_COUNT` 降到 5:E-23 未修,`NET_MAX_SOCKETS=8` 而 FTP/对时/远显三个监听常驻占 3 个 fd)→ **Phase 7 34/34 全通过(failed=0)**:5 路并发全部 ESTABLISHED、每路 64 B 回显字节级比对 OK;芯片 Socket 实测落在 **sock2 / sock4 / sock5 / sock6 / sock7**(0/1/3 被三个监听占用)→ **Socket 4~7 在 bit0=0 下完全可用**,与手册口径一致,定案成立。烧录后回读 `No difference found`。
|
||||
|
||||
⚠ **台架前置(本轮踩到,务必先排)**:① PC 的以太网适配器落在 **Public** 防火墙配置文件 → 入站 8081 被静默丢弃,症状是 TC701/702/704 **全部** `CONNECT TIMEOUT`(而 PC→设备 21 端口正常、ping 通、ARP 正常),**极易误判成"0x08 毁了 client"**;② 上一轮遗留的 `tcp_server` 进程仍占着 8081,新起的服务器绑不上端口却不报错。两条都排除(临时关 Public 配置文件 + 清残留 python 进程)后才拿到上面的结果——**判"芯片行为"前先确认对端真的收到了 SYN**(Trap 25 总纲铁律的又一次命中)。
|
||||
|
||||
### 发现时间
|
||||
阶段 7 扩展 8 Socket 测试,2026-08-25。
|
||||
@@ -873,7 +875,7 @@ Trap 22 的周期对账(200ms 节拍 + 400ms 去抖 + 1s 冷却)设计目标
|
||||
|
||||
**教训(Trap 25 总纲)**:本轮先后误读三次——把客户端正常 FIN 读成"芯片杀连接"、把 open 重试读成"拆链窗口"、把芯片假 SEND_OK 读成"数据已上线"。铁律:**CH395F 的"成功"(中断位/状态码)只代表芯片本地动作完成,不代表对端收到;判定必须回到对端可见证据(主机侧收发)+ 手册语义(FUN_PARA §5.52、状态码 §5.22)**。
|
||||
|
||||
**顺带发现的疑点(2026-10-11 已定案)**:`set_fun_para(0x09)` 的 bit0——§5.52 表明确写 **bit0 保留、必须为 0**,而 `net_init` 注释声称"bit0=1 多 Socket 模式"(手册与网络资料均无此说法,CH395 的 8 Socket 是芯片原生能力,靠 Socket 索引 `_SN` 寻址)。现固件 bit0=1 下 sock1/2/3 多路并行正常 → 该位被芯片忽略。**定案:改回 `0x08`**——官方手册 V1C/V1E/V2.2/V2.3 的 bit0 全是保留位,官方例程 bit0=0 下 8 个 Socket 照常可用(`EXAM5_TCP_Server` 传 0x02 却给 Socket 0~7 配缓冲),官方 FTP 例程本身就传 0x08。完整证据链见 Trap 18「定案更正」;**0x08 下的多 Socket 台架复测尚未做**(登记 `docs/待处理内容.md` N-31)。
|
||||
**顺带发现的疑点(2026-10-11 已定案)**:`set_fun_para(0x09)` 的 bit0——§5.52 表明确写 **bit0 保留、必须为 0**,而 `net_init` 注释声称"bit0=1 多 Socket 模式"(手册与网络资料均无此说法,CH395 的 8 Socket 是芯片原生能力,靠 Socket 索引 `_SN` 寻址)。现固件 bit0=1 下 sock1/2/3 多路并行正常 → 该位被芯片忽略。**定案:改回 `0x08`**——官方手册 V1C/V1E/V2.2/V2.3 的 bit0 全是保留位,官方例程 bit0=0 下 8 个 Socket 照常可用(`EXAM5_TCP_Server` 传 0x02 却给 Socket 0~7 配缓冲),官方 FTP 例程本身就传 0x08。完整证据链见 Trap 18「定案更正」;**0x08 下的多 Socket 已台架实测通过**(2026-10-11 20:18,Phase 7 34/34,并发回显落在 sock2/4/5/6/7,N-31 已销项)。
|
||||
|
||||
### 发现时间
|
||||
2026-10-11(登记簿 N-30;裸机芯片台架定案实验见本节,实验分支 `n30-chip-bench`)。
|
||||
|
||||
Reference in New Issue
Block a user