wandering1
|
506eccc68f
|
docs: 错误码传播审计收口并删除该文档(E-xx 转历史编号族)
本次会话先后销项与关闭:
- E-61 SD2506 清 INTAF:原实现只读取 CTR1,而按手册 ARST=0 时读操作
不清标志,属空操作;改为读-改-写 CTR1,并按手册订正 CTR1 位宏
(INTAF/INTDF/BLF 位置,ARST 归 CTR3)
- E-16 cfg_file:新增 CFG_FILE_MAX_NAME_LEN(段名/键名 ≤15),注册时
拒绝超长键名;s_gen_document 两处 snprintf 改检查式;补 TC-CFG-024
用例(主机单测 149→151 PASSED)
- E-23 TC704:PHASE7_MULTI_COUNT 8→5(并发上限 = 8 − 3 个常驻监听),
accept 失败分支加网络代次检查(网络重建即重建监听)
- E-26(UDP)按“保留 API + 文档定案”关闭;E-30 评估为不必要后关闭;
N-4(ACCEPT 决定不实施)关闭
审计文档剩余 5 项 P2 + 2 项监督,经用户裁定“都不重要”后整体删除:
- 删除 docs/问题记录/错误码传播审计.md(634 行)
- 九类缺陷模式表迁入 docs/编号规范.md §4.2.1(PAT-01~09)
- E-xx 转为纯历史编号族:编号规范 §4.1 属主改“无(原属主已删除)”,
§4.3 保持冻结;全仓 26 处引用按“保留编号、去悬空文档名”处理
- 顺带修正 N-4 收口遗留:排期详述 C1 才是 E-25/E-27/E-28 的承载处
(审计 §4 曾误写为登记簿);README 两处 C1 旧名改回“net 层跨上下文收口”
一并提交此前遗留的体系层评审报告 2026-10-14 复核 WIP(六维评分复核、
未闭环 Top 5→3、三区水位实测刷新)。
校验:Keil 构建 0 错误 0 警告(Code=212344);check_doc_links
--sections-strict 与 --all(142 文档)通过;内存双台账刷新后均 PASS。
|
2026-10-15 07:39:38 +08:00 |
|
wandering1
|
617c84f570
|
docs: 文档去阶段化——清理"自愈收敛阶段 / L3 pending / 一期二期"标签
CI / L0 静态门禁 (pre-commit) (push) Failing after 2m11s
CI / L0.5 主机侧单测 (MSVC) (push) Successful in 17s
代码注释去阶段化已在 task-arch-docs-sync 分支 d770e36 落地,本次把
同一口径补到文档正文(文末变更记录行作为历史保留不动)。
- BSD 使用指南 / 函数调用关系:删 自愈收敛阶段 N、N-32 P1/P2、
L3 pending、一期二期;职责边界与实现位置改为现状口径
- CH395F_Trap_Records:TRAP-NET-17 / -21 / B10 状态行改述为现行形态
- 链路延迟测试说明:L3 pending → 挂起 recv;P0-a 阶段标签删除
- 模拟器差距清单:N-3 / N-4 / N-6 行改述(对账形态③④、无手动 relisten)
- 错误码传播审计:L3 pending → 挂起 recv;"N-4 二期" → N-4
- 任务规划 README / 登记簿 N-4 / 排期详述 C1 / 基线与待确认 §2.1:
一期二期 → recv 挂起已落地 / ACCEPT pending 化(§2.1 标题同步)
- CH395F_Test_Guide:阶段 15 标题去掉撞名的"自愈收敛阶段 2"
- IEC104 上行设计说明:门控迁移改现状口径;"随二期" → 未登记具体条目
- 保留可检索锚点:TRAP-NET-*、E* / U* / D10、形态③④、N-4、Phase 15
门禁:check_doc_links.py --all 通过(143 文档、可判定章节引用 1282 处、
0 错 0 警);check_mojibake 全过;CR=0、U+FFFD=0、无 BOM 变化。
本轮只改 .md,无代码改动,故不跑 @build。
|
2026-10-14 23:05:17 +08:00 |
|
wandering1
|
d770e36c7c
|
refactor(NET): 源码注释去阶段化 + 网络两份文档重构 + 不稳根因图更新
- 源码注释:删去自愈收敛阶段
1/1.5/3等 scaffolding 称谓,改为语义引用
(E-02 收口 / F-NET-2/3/4 / docs/网络/网络自愈架构设计.md §5.2 E13);
涉及 net_socket/.h、net_events、net_listener、net_pending、net_types、
net_config、ch395f、time_sync、iec104_serv、ui_net_sink、lftpd、
simulator/sim/net_socket_sim、board/host 测试与探针
- 文档重构:网络自愈架构设计.md 与 Net层阻塞模型架构设计.md 改为现状口径
(删历史节与阶段叙事),NET/README.md、docs/README.md 同步
- 工具与配图:gen_net_instability_svg.py 与
docs/images/网络不稳根因总览.svg 随源码口径一并更新
- 门禁:@build 0 错误 0 警告
|
2026-10-14 22:05:53 +08:00 |
|
wandering1
|
2a6080827d
|
docs(网络): 自愈架构 §4.1 形态详解 / §4.10 读即清审计 / §1.5 横向对照
四块内容,都是"把已经做完的事写进文档",无新增设计。
1. §4.1 形态表扩成 6 小节:两个所有者 / 四个词 / 形态表(补"芯片命令"列与
U11 独立行)/ 每个形态为什么长这样、怎么验的 / 为什么 ①③⑤ 常态 0 命中 /
M3 可疑门与沿革。
⚠ 修一处文档 bug:原 ④ 行实际描述的是 U11,真正的 ④ 没有行。已补 U11
独立行,并在 ⚠ 注记里记录这次更正及其 U12 后果。
2. §4.10 读即清信源审计:两个读即清寄存器与两级门控、现存读清点全量清单
(产品代码 6 处)、已根除的三条互吞实例、一处"看着像缺陷其实是配对
消费"、新增一处读清的三条准入判据 + 结构性残余。AGENTS.md 的 CH395F
单连接 socket 条目加指针。
3. §1.5 与主流 offload 驱动的代码级对照(正面回答"是不是过度设计"):
ioLibrary close()/listen() 原文、四个机制一一映射、三条约束差异表、
"死等把代价挪到运行时"、lwIP/Zephyr 对照、诚实清单(可省 16 B / 不可省
沉降窗 + D10 + listen 前排清 + 登记执行分离)、唯一杠杆是芯片。
4. 模块归属修正(承接 63cf73b 的 net_events.c 抽出):
- §11.5 新增一节,含"为什么是一个模块而不是两个"(对账真实调用事件
处理器 2 处 + NET_RECON_STABLE_DEATH 两边共用)与三处非纯搬移;
- §9 行数快照更新,并加警告:这类快照**当天就会漂移**,是地图不是判据;
- §1.5 的 net_listener.c 行数随注释精简同步(508/277 → 386/155)。
引用修正波及 5 个文件:BSD_Socket_API 使用指南文件职责表(拆出
net_events.c 行)、函数调用关系 §4.8 标题、Net 层阻塞模型两处形态⑤表格、
CH395F_Trap_Records 两处"对应文件"(保留"原在 net_socket.c"的历史)。
⚠ doc-links 只校验 § 编号存在性,照不出"函数在哪个文件"——这类归属
漂移门禁不拦,必须人工扫。
验证:check_doc_links --all --sections-strict PASS(2146 处引用,可判定
1263,无法判定 0,142 文档);ci_local L0 32 钩子 + L0.5 953/953 全过。
|
2026-10-14 18:18:06 +08:00 |
|
wandering1
|
0edbfaf08b
|
fix(NET): 监听重建单一所有者收口 + 沉降窗 800ms 上限只留痕
CI / L0 静态门禁 (pre-commit) (push) Failing after 1m12s
CI / L0.5 主机侧单测 (MSVC) (push) Successful in 17s
T0 降噪 + T1 单一所有者:四处重建触发(recon/accept/eof/drop)与 pending
第五处统一走 net_listener_request(),由 net_listener_tick 单点执行;
沉降重试日志改"只留首末"(E0 口径),每次恢复少打 3 行重复行。
force open 降级为只留痕(E19 反事实 A/B 实测):芯片未回 CLOSED 时强行
open 注定吃 USE 错(TRAP-NET-09),放行与不放行的端口恢复时刻同一分布
(放行 +512 / 不放行 +505·533 / 降级后 +509 ms)——恢复由芯片何时回
CLOSED 决定。真正兜住"监听器永久失效"的是 D10 预算到期 + 对账形态④
重新登记,不是放行。新增 s_relisten_capped[] 使上限留痕只打一次,
隔离标志不清 → 下一轮继续排空残渣(构建 B 实测每 30ms 两行会刷屏)。
负向注入三轮打靶(E18,注入代码不入库):形态① 吞掉 DISCONNECT 后
4/4 救回、③ 空闲监听器静默失位两轮独立复现、⑤ 开盲区吞掉芯片自发中断
+ 收回 LISTEN 后 -> resync 命中且挂起 recv 被取消 → 三条均不可降级为
只留痕。顺带稳定复现 [ERR] relisten retry budget exhausted = 对端不配合
拆链的签名,非回归。
台架:boot PASS;ftp_abort_probe RST 10/10 + FIN 5/5;relisten_stress
:21 50/50(p50 507ms);n30_repro 30/30。构建 0 错 0 警 Code=212316;
netTask 静态最坏链 1920→1912 B;RAM 台账受管区已 --write 同步(RW +8B)。
文档:E17/E18/E19 三行 + §4.1 常态 0 命中归因 + §4.3 兜底归属改正;
登记簿 N-31 销项(结论沉淀进 §4.3 与 E19)。
|
2026-10-14 15:57:10 +08:00 |
|
wandering1
|
f849c79b7a
|
feat(NET): SEND pending 二期落地 + 末块挂起越界缺陷修复(台架复测闭环)
net_pending.c/h 增设第二张挂起表 s_net_send[](与 recv 表完全独立,收发
互不阻塞);net_send_locked 快速路径改为有界自旋,单次等待超出
NET_SEND_SPIN_MS(2ms) 即登记挂起 send,由 net_send_pending_tick 按主循环
节拍分块推进,netTask 最坏停滞由 1s 压到 2ms。net_listener_retry_tick 的
挂起保险扩展到 send 侧;net_close_locked / 网络重建 / 状态对账三路均先
取消再动作(取消必通知,调用方永不挂死)。
台架复测(A/B 对照 + 插桩定位)发现并修复末块挂起越界缺陷:内层"等本块
发完(SENBUF_FREE)"位于写块之后,写完末块时 sent 已 == len,若该次等待越过
2ms 预算便会调用 net_send_pending_register,而登记函数按 sent >= len 拒收
并回 -1,把一次实际已完整交付芯片的发送报成失败。修复为内层等待开头判
sent >= len 即跳出(末块已交付、SENBUF_FREE 等待是纯保守自旋),并置于
超时/自旋判定之前;该守卫同时保证后续登记必伴随 sent < len。
复验:ftp_regression 连续 19 次 11/11;ftp_integrity_test 20 轮 x 64KB
STOR/RETR SHA-256 20/20 一致(两轮),吞吐稳定约 80KB/s;设备日志零
write error;ST-LINK 回读 No difference found。
文档:Net层阻塞模型架构设计.md 补二期设计与新增 9.1 缺陷记录,netTask
栈实测峰值按本次台架 920B 订正为 1116/3840(FTP 传输期 1164);网络自愈
架构设计.md 吸收原监听生命周期文档、新增编号术语导读表,并把 5.2
"实验锚点速查"的 E 编号含义与 E-02 审计编号歧义写在表头(用户反馈该表
E 编号无法读懂)。
门禁:Keil 0 错 0 警;cppcheck / 编码规范 / 乱码零告警;
check_mem_numbers PASS;check_doc_links --all --sections-strict 142 篇 PASS。
|
2026-10-14 12:05:21 +08:00 |
|
wandering1
|
df13dec479
|
refactor(net): 挂起 recv 模型拆出 net_pending.c/h + 留痕探针编译门控 + E15 归因修正
CI / L0 静态门禁 (pre-commit) (push) Failing after 2m14s
CI / L0.5 主机侧单测 (MSVC) (push) Successful in 22s
- E15 归因修正:幽灵状态 0x04+旧端口 = 芯片如实报告拆除中的旧连接
(文档化行为,非芯片故障;bit3=1 为我方设置(ver>=0x46)、
RFC 9293 §3.3.2 Fig5 拆除顺序、WCH 官方博客方案 = close 完成后重开监听)
- 术语统一:全库"了结"→"结束"(约 45 处);阻塞模型 §4 首次出现处定义"五路"
- 注释清理:删孤儿函数头注释、考古叙事改现在时、去不可检索内部编码"L3"
(33 处 6 文件)、banner 去重(唯一理由移到分支现场)
- 挂起超时留痕探针:编译期开关 NET_PENDING_TRIPWIRE(默认 0 = 编译剔除,
省约 150B Flash;排查调用方挂死时置 1,只留痕绝不强制结束)
- 拆模块:net_pending.c/h(363/94 行)承载挂起 recv 模型,
net_socket.c 4059→3661 行;tick 收控制块表参数、settle_close 双参显式传;
net_pending_active 声明移配对头(S17 2.2);仅注册 uvprojx +
check_registration MCU-only 白名单(同 net_listener.c 机制,
模拟器走 net_socket_sim.c 按外部语义模拟)
- 文档:阻塞模型新增全过程小节(单主干流程图)+ §9 排查辅助;
NET README / 函数调用关系 / 自愈架构 / BSD 指南同步;引用关系图重生成
- 台架回归:启动闭环 PASS([ERR]/Fault 零命中、回读一致)、
:7003 重连探针 10/10、FTP 50 连接 STOR 50/50、回归窗口串口日志无异常
- RAM:ER_IROM1 230004B(探针门控后约 -150B),台账已回填
|
2026-10-14 09:53:38 +08:00 |
|
wandering1
|
a12367981d
|
fix(N34): E14 丢中断复核——芯片不丢事件;listen 排事件挪至 LISTEN 前+全局读收口+全库归因更正
48 轮直读 SINT 矩阵(8 周期×6 变体)复核历史"丢中断"说法:芯片侧事件
丢失 = 0。归类:drain 读清消费 3/48(drain-int 探针现场抓获)、门控
竞态 2/48、主机同步 1/48、幽灵态 0/48 未复现。
根除性修复:net_listen_locked / net_listener_try 的排事件读清从
listen 后挪至 LISTEN 命令之前——新连接 CONNECT 落进该窗即被本方读清
吞掉,即"数据被吞"的生产侧自伤机制(台架 3/48 为同形态放大版)。
全局读收口:全局中断寄存器唯一读者 = net_poll(I7);生产/测试/台架
游离全局读全部删除,ch395f.h 声明处加护栏注释。
归因更正:17 文件约 40 处"丢中断"措辞改为"事件未收到/读清消费竞态"
(机制全部保留,仅归因更正);设计文档 §5.2 新增 E14 锚点;Trap
Records TRAP-NET-17/-20/B3 归因更正段;配图生成器与 SVG 重生成。
台架:事件未收到复核探针保留(drain-int / SINT 补读×3 / 超时归类),
下次跑矩阵自动归类;实验注册(main.c/uvprojx)已完全还原。
验证:@build 0 错误 0 警告;ci_local L0 32/0 + gitlint + L0.5
953/953;doc-links --all --sections-strict 通过;@test PASS(无
[ERR],net init 619ms);回归 :7003 300ms×10 = 10/10、:21 n30×50 =
0/50 失败。
|
2026-10-14 02:48:50 +08:00 |
|
wandering1
|
1a35b3684c
|
docs(N34): 自愈审计目录 7 份文档合并为单文档,全库引用同步
CI / L0 静态门禁 (pre-commit) (push) Failing after 44s
CI / L0.5 主机侧单测 (MSVC) (push) Failing after 43s
- `docs/网络/N34-自愈审计/` 目录 7 份文档(根因总览 / net 层盘点 /
驱动层审计 / 主流对照 / 汇总裁决 / 实施方案 / 实验方案)合并为
`docs/网络/N34-自愈审计.md`(§0~§6),原目录删除;docs/README.md
索引与变更日志登记归档
- 全库引用同步:4 篇文档 + 驱动/NET/test 代码注释 + 配图生成器与 SVG
- 内容零丢失抽查:E0~E13 实验记录、E6 裁决(命中=0 不立项)、
提交表(含 `925058a` 收口行)均在位
- 门禁:@build 0/0(注释级路径更新);check_doc_links --all 143 文档
通过(净 −6 = 删 7 增 1 吻合);ci_local L0+L0.5 全绿
|
2026-10-13 23:23:55 +08:00 |
|
wandering1
|
491dd031f1
|
docs(任务规划): N-32 销项——监听生命周期根治已在 N34 全量落地
CI / L0 静态门禁 (pre-commit) (push) Failing after 46s
CI / L0.5 主机侧单测 (MSVC) (push) Failing after 43s
- 登记簿删 N-32 行:P1(`session_dead` 电平)/P2(单一重建所有者)均已
实施转正;pump 于 N34 阶段 3 并入 `net_reconcile_tick` 形态③④
- 结论沉淀核对齐备:设计文档 §10(已执行)+ D1~D10、N34 实施方案阶段 0~3、
陷阱记录 B10 行(✅ 已修 + `net_drop_conn` 根治出口)
- 设计文档勾掉两条 N-32 时代遗留清单项:U11~U15 实际落点=N34 机制盘点 +
E6 观察项;B10 行 2026-10-13 复核在位
- N34 README 提交表补终笔 `925058a` 行
- 正文其余 N-32 引用均为架构溯源名(pump/不变量 I),不动
- 门禁:`check_doc_links --all` 149 文档通过;ci_local L0+L0.5 全绿
|
2026-10-13 21:50:48 +08:00 |
|
wandering1
|
925058a5ae
|
fix(NET)+docs: lftpd 对端地址修复、E6 裁决收口、陷阱编号迁移重排 TRAP-NET-01~21
- lftpd:net_inet_ntoa 段序改 MSB 首 + 新增 net_getpeername,FTP 日志打印
真实对端地址(真机实证 192.168.1.2:55524,登记 TRAP-NET-21)
- E6:NET_U15_PROBE 命中=0(含压测)→ 阶段 3 项 4 不立项,U15 登记观察项;
插桩留仓(宏=0 零成本),soak 驱动 test/host/e6_soak.py 入库
- 编号:全库 Trap NN → TRAP-NET-<nn> 迁移并重排连续 01~21(单调映射,
沿革见 CH395F_Trap_Records.md 头注);死号 12/13/19/21 引用全部清除;
GD5F 域引用补正为 TRAP-GD5F-NN
- 陷阱文档全新化:索引 21 行行行真陷阱;删误判存档/发现时间/git 考古/
FTP 附录;台架纪律教训沉淀第六章方法论
- RAM:Code 211348→211456(+108 lftpd 修复),RW+ZI 净增 +4B;
优化方案/台账受管区/tsv 同笔同步
- ftp_abort_probe.py 挪 test/host/;引用关系图重生成
- 回归:@build 0/0;@test PASS;ftp_abort 10/10;relisten :7003 20/20;
ci_local L0+L0.5 全绿;E6 窗口零复位,7 条 WD stall 登记压测假象备查
|
2026-10-13 20:54:31 +08:00 |
|
wandering1
|
c7459b393f
|
docs(N34): 网络不稳根因复盘总览(比喻版)+ 全景图 SVG 生成器
- 新增 网络不稳根因总览.md:七个误会(传达室比喻+机制+证据出处)→
环↔拆法↔落点对照表 → E13 僵尸会话 Mermaid 时序图 → 一句话总结
- 新增 tools/arch_diagram/gen_net_instability_svg.py(draw-diagram 规范,
纯标准库)与产物 docs/images/网络不稳根因总览.svg(headless Edge 目检两轮)
- N34 README:实施状态表补全阶段 1.5/2/3 与 E6 插桩行(原「阶段 2/3
未开始」陈旧口径修正);挂复盘总览为第一入口;§5.56 改紧邻写法
- 门禁:check_doc_links --sections-strict 本批 4 文件通过
|
2026-10-13 17:12:36 +08:00 |
|
wandering1
|
f51c0833ae
|
docs(N34): 阶段3 文档同步——reconciler 合并口径+net_drop_conn+Trap 补充
- BSD_Socket_API_使用指南:五层自愈→四层(合一 reconciler 形态①~⑤+U11,
分级去抖②1/③④⑤2/①4轮+1s冷却);新增 net_drop_conn 小节(拆会话保
监听/幂等/EOF 不得调);变更记录追加 2026-10-13 行
- BSD_Socket_API_函数调用关系:pump 节点删除、net_drop_conn 链路新增、
驱动接口表补 sock_reset/cmd_done/缓存行、常量清单更正
- 网络Socket监听生命周期设计说明:新增 §10.10 合并说明,历史文本保留+注记
- Net层阻塞模型架构设计:主循环 3 tick 口径 + 附录 B 追加
- RAM使用分析与优化方案:netTask 链尾改 retry_tick→relisten(1944 B 不变)
- CH395F_Trap_Records:Trap 07 补充(close 无 RST:对端内核存活不 close
→ FIN_WAIT_2 长尾,兜底 E13);Trap 09 补充(LISTEN 态二段关闭)
- 实施方案 §5:项1/2/3/5 ✅、项4 受 E6 暂缓、§5.1 E-02 收口、§5.2 延后项
- 实验方案:E-02 收口台架小节(FIN_WAIT_2/TIME_WAIT ~150ms/双 PASS)
- N34 README 裁决行更正;Test_Guide TC-NET-1101 pump→reconciler 形态③④
历史变更记录与历史事故描述一律原文保留、只追加;check_doc_links
--sections-strict 对改动文件 0 问题;乱码 0、无 BOM 变化。
|
2026-10-13 15:10:54 +08:00 |
|
wandering1
|
83a70721bd
|
docs(N34): E2/E3/E4 实验结果与定案 + bench 实验区复活
E2:状态回读 18.1us(N=1000x2 逐值一致);LISTEN 可见延迟 100%
<=10ms 无长尾(24 轮)-> "每 poll 全量刷新"成立、reconciler 去抖
可减为 1。
E3:GET_CMD_STATUS 对 OPEN/LISTEN/CLOSE 无判别力(残留假阳性),
定案 cmd_done 用状态回读判据;SET 类命令态永不更新。
E4:排渣序列定案=读空 RX -> CLOSE -> 排空事件(quiescent) ->
轮询 byte0=00H;C 变体(不排渣)0/20 且级联自持,Trap 23 残渣
恰等于单 Socket RX 缓冲整容(rxdrain=2048,19/20)。
E2 补充发现(Phase 15 板测):LISTEN 态 CLOSE_SOCKET 二段关闭
(一次只拆监听 byte0 恒 05,再发一次才落 00)——Trap 09 open
重试环的芯片级原因。
bench:ch395f_reuse_bench.c 复活 N30_CHIP_BENCH 门控实验区
(旧 N-30 矩阵 s_bench_legacy=0 停泊),ch395f_reuse_host.py
增 --mode e4。注册(uvprojx/main.c)实验完已还原不入库。
|
2026-10-13 12:43:56 +08:00 |
|
wandering1
|
33405a57b5
|
docs(N34)+test: E13 僵尸会话根因坐实;Phase 11 判据修正+一次性报告
E13(实验方案.md 新增 + E8/E11/E12 口径修正):
- 风暴态根因=僵尸会话,非芯片残渣:PC 网卡禁用/链路断开时
Windows 直接丢弃 socket 不发 FIN/RST → 芯片侧 ESTABLISHED 僵尸
→ 单连接监听被占(:21 拒连)→ 下一 PASV 重监听与僵尸竞态
(accept 为垂死僵尸开枪 20ms 后 DISCONNECT)→ lftpd 5s 窗空转
→ 425;每失败轮再生僵尸 → 自续数分钟
- "残渣跨烧录存活/需断电冷启动"口径作废:板上 CH395F RSTI 接
MCU NRST(V0.0 网表 :174),每次烧录即芯片硬件复位;"存活"是
锤击再生错觉。正确控制=下一臂前静置 ≥90s 清僵尸窗
- 自愈链端到端验证:TIMEOUT(在途 TX ≈30s)/keepalive(空闲 60/5/3)
→ pump → relisten → 端口恢复;E11 产品路径验证 17s 判死 PASS
- 4 元组复用假设被否(pasv_probe.py:PASV 端口递增、PC 源端口随机)
- e02_probe listener=FAIL 重解读:探针挂起 socket 未关(PC 内核
代 ACK keepalive)→ 拒连是单连接正确行为;真缺口=应用无法主动
拆会话 → 阶段 2 sock_reset 职责
Phase 11 测试修复(net_test_task.c,实跑暴露):
- 判据 >=60000ms 是按手册公式写的,实测判死 18~31s 会在正确固件
上假 FAIL → 改有界窗 10s~120s(下限防误杀存活空闲会话,上限
防判死缺位)
- 报告后不释放 phase_active → 对已死连接 10ms 节奏刷 594 条假
FAIL → phase11_run 返回完成态,主循环释放等新连接再测
- 复跑两轮验证:30137ms 单次 PASS → 自动等新连接 → 二轮 accept 正常
- Test_Guide TC-NET-1101 判据/耗时同步;ch395f_test.h Phase 14
共存安全性注释(有整体超时不永久挡 accept)
工具:test/host/pasv_probe.py(每轮打印 PASV 端口+PC 源端口+结果)
|
2026-10-13 11:23:40 +08:00 |
|
wandering1
|
d346e4ee84
|
feat(NET): N34 阶段 1.5 recv 语义主流化——无限默认+具名非阻塞+模式属性
核心语义(实施方案 §3.5):
- net_recv 默认无限阻塞:删除 NET_RECV_TIMEOUT_MS(30s 隐藏默认预算),
超时归调用方策略;唤醒源=数据/EOF/close/网络重建(CONNRESET),
会话死亡由对账① ~400ms 判死兜底,无"对端消失永久挂死"窗口
- 新增 net_recv_nb(NET_MSG_DONTWAIT 路径转正具名)与
net_setblocking(fd,on)(阻塞模式挂控制块属性,对齐 O_NONBLOCK/
Python setblocking;直写单字节,net_set_event_cb 先例)
- net_types.h net_sock_t 新增 blocking 属性;net_socket() 默认置 1
(close memset 清零后显式重置,同 released_abnormal 纪律)
- 原 1s 强制了结看门狗降级为 60s tripwire:只 [ERR] 留痕一次,
绝不伪造 TIMEDOUT 返回值(旧实现掩盖完成路径缺陷)
- net_recvfrom 删 30s 自旋超时、同判据对齐(零生产调用者,注释警示)
- 文档契约:IWDG required_mask 内任务禁止无限阻塞 recv(BSD 指南
§3.5/§10.1 + net_socket.h 注释)
调用点审计(§3.5.5):零生产调用点采用无限默认——iec104_serv/
ui_net_sink 转 net_recv_nb(受监控任务逐位等价);lftpd/time_sync
已是显式预算 net_recv_to 不动;32 轮盲收兜底未动(阶段 3 E6 门禁)
模拟器双端镜像 net_recv_nb/net_recv_to/net_setblocking(包装层
Sleep(1) 轮询模拟阻塞);差距清单 N-3/N-6 登记义务已履行
门禁与台架:
- @build 0/0:Code 209580→209780(+200B) ZI +32B;RAM 受管区官方
脚本同步;ci_local L0 32/32 + L0.5 951/951
- 台架全回归:relisten :7003 50/50、iec104 18/18、对时正常、
ftp_regression 11/11、Trap23 RST 5/5+FIN 5/5、ftp_integrity
20/20 字节一致、n30 0/10、@test PASS
- 模拟器 build_sim OK + check_remo_sink 黄金参考 0/25600 位差
队友 p15-recv-semantics 实施,Lead 全量审阅 + 独立复跑门禁与回归
|
2026-10-13 11:23:19 +08:00 |
|
wandering1
|
13a4a40a14
|
feat(net): 服务器侧 KeepAlive 转正(§5.56,E11)+ Phase 11 重开回归
E11(d96113b)证据链:"链路在、对端静默"注入下生产参数 60/5/3 实测
判死 ≈30s → TIM_OUT → QUARANTINE → pump 重建;静默但存活对端不误杀。
handle_connect_event LISTENING 分支按手册规定位置开启;反汇编确认
编译器把两分支尾部合并(LISTENING 跳入含 keepalive+fire_event 的公共
尾部,hex 全片仅该分支偏移 1 行差异,Code 尺寸不变属填充巧合)。
Phase 11 重开时发现其拉入 32KB s_rx_buf 超产品 RAM 余量(L6406E 链接
失败)→ 改专用 64B 探针缓冲(本 Phase 仅 64B 探针读,门控注释已留
"勿加回"警示),套件恢复 0 错 0 警;TC-NET-1101 步骤同步死对端注入法
(禁用网卡;Windows 防火墙规则对已建立连接无效,E11 实证)。
验证:产品/套件双构建 0 错 0 警 + 反汇编确认调用落地;台架确认
(:7003 静默对端判死 + Phase 11 实跑)待设备冷启动断电重上电后补做。
|
2026-10-13 09:25:06 +08:00 |
|
wandering1
|
d96113bcc4
|
docs(net): N34 E11/E12 实验记录与台架脚本(KeepAlive 服务器侧缺口、TSL 规格偏离)
E11:服务器侧 KeepAlive 未开启(静态证据链 + 注入手段两次修正 + 实测
生产参数 30.0s 判死、空闲存活会话不误杀),给出采纳建议;防火墙规则
对已建立连接无效、有效注入 = 禁用 PC 网卡,两条方法学留痕。
E12:缓存区读写路径长度→数据零间隔属规格偏离(读 0.4us/写 0.2us),
但 460 轮/约 58MB 字节级校验未测得可复现危害;依 Trap 25 登记偏离、
B 变体(两段+TSL,+28B,吞吐无回退)留作待用补丁。
残渣风暴态跨烧录存活污染 A/B 连接级对比,教训写入 E12:实验前后必须
冷启动(断电重上电),MCU 覆写烧录/RESET_ALL 不足以清除。
新增 test/host/e11_keepalive_probe.py(idle/block 两模式 + 注入正对照)
与 test/host/ftp_integrity_test.py(STOR→RETR 全量 SHA-256 比对,
建议纳入常备回归集)。
|
2026-10-13 09:10:17 +08:00 |
|
wandering1
|
eac36526e7
|
docs(net): E10 补收尾门禁结论(ci_local L0 32/32 + L0.5 951/951)与两处修复留痕
|
2026-10-13 06:53:42 +08:00 |
|
wandering1
|
d5bdc6eb54
|
docs(net): N34 阶段0/1 实施结果与台架留痕(E10)
- README:新增"实施状态"表(9ac9879/ae17d36/4c0a0af/b8c6a3d);§2 逐机制
裁决表补"✅ 已实施"与关键坑位索引
- 实验方案:新增 E10 —— 阶段 0/1 转正验证全记录,含阶段 1 首版台架失败的
根因链(armed 漏放行 ESTABLISHED → i104 整场饿死 18/18 FAIL → 修复后
18/18 PASS、127s→8.3s)、M3 无辜旁证、time_sync 连续 6 轮实测、
两处实施偏差(lftpd 未走 listener_try;阶段 0 提交合并)
- 实施方案:阶段 0/§2、阶段 1/§3 标注完成与验证判据;P0 转正标注
- 盘点:F-NET-2/3/4/13/14 补实施结论;⚠ F-NET-4 补"门控迁移必须给
net_listener_armed 补 ESTABLISHED 放行"的坑位说明;net_listener_try
调用点计数 5→4;§2/§4 的缺口表述改闭环状态
- 顺带修正两条既有 doc-links 违规(实验方案 §4.4 → 实施方案 §4 第 4 项;
盘点 §5.29 → docs/芯片手册/CH395F.md §5.29),该 4 份文档 doc-links
现 Passed
无代码改动(纯文档)。
|
2026-10-13 06:46:40 +08:00 |
|
wandering1
|
b8c6a3dab0
|
refactor(net)!: N34 阶段1 API 面收敛(对账⑤ + 删 3 个手动自愈 API)
BREAKING CHANGE: 删除公开 API net_relisten / net_resync_listen /
net_can_accept 与消息类型 NET_MSG_RESYNC_LISTEN / NET_MSG_RELISTEN。
生产调用者为零(仅看门狗文档与 iec104 门控),应用侧无迁移成本;
如有外部消费者须改用对账/pump 自动机制(见下)。
1. 对账①扩展为①②⑤(F-NET-2 缺口,先补缺口再删 API)
net_reconcile_tick 新增 bad=5:本层 ESTABLISHED 且芯片 0x05/0x01
(Socket OPEN + TCP LISTEN,静默回收回监听、不发 DISCONNECT)
→ RESYNC 语义只修本层(state→LISTENING + last_peer_port 转登 +
lost_conn_seen 清零 + 取消挂起 recv),**不发任何芯片命令**
(纪律同 pump③ U11,run8 实证重下发会 170s 永拒)。
原判据①要求 TCP==CLOSED、②要求本层 LISTENING,均不命中此形态
——此前生产无人认领(仅手动 API 能修)。
2. 删 net_relisten(net_socket.c 函数 + 消息分派 + 头文件声明)
footgun:对健康监听器无条件 open→USE→close 自毁 ~1s(原注释自认);
与 pump(100ms)/D10(30ms) 完全重叠。
3. 删 net_resync_listen(同上;语义并入第 1 条)
4. 删 net_can_accept(net_socket.c + net_socket.h + sim 三处)
只认 ESTABLISHED 的旧门控把"监听器在服役、待 CONNECT"窗口全挡掉,
:2404 丢 CONNECT 探针因此从不运行;iec104 门控迁 net_listener_armed。
5. timeSync :8888 会话收尾不再 net_close(同 fd 续 accept,监听跨会话
常驻;原 close→重建每会话一个 Trap 09 沉降窗)。server 脚本注释同步
新契约(PC 侧 2s 宽限后自行关闭)。
6. lftpd 应用层阻塞重试退役:lftpd_inet_listen 5 轮(500ms/2000ms,最坏
10s 阻塞 ftpTask) → 单次 + 失败即 425;cmd_pasv 3×200ms 同删。
就绪屏障已消除 Trap 09 启动形态,客户端自带传输重试语义。
台架实证修正(本提交内二次修复,务必留痕):
- net_listener_armed 补齐 **ESTABLISHED 放行**。首版迁移只放行
LISTENING/CLOSED+残留,漏了 ESTABLISHED=单连接模型的"待 accept"电平
→ iec104 200ms 任务周期抢不过对账② 的 ~400ms 去抖,对账②先 standalone
accept 转 ESTABLISHED 后 armed=0 → 应用整场不 accept,18/18 检查全 FAIL
(设备日志证据:sock1 standalone accept 后无 i104 accepted,直至对端 FIN
才由 closed-with-data 救回)。补放行后 18/18 PASS,且耗时 127s→8.3s。
该态 accept 必返 fd,无 RPC 风暴风险。
- 期间顺带验证 M3 无辜:sock1 suspect DISCONNECT on live conn 命中后
defer→对账①→closed-with-data accept 把未 accept 的 RX 数据救回,
正是 M3 设计意图(资产门保护)。
验证(全绿):@build 0/0(Code=209580;含 CH395F 套件+Phase13 全量重编
0/0 的编译验证);@test PASS(回读无差异);iec104 18/18(8.3s);
n30 0/50;:21 @0ms 50/50 p50=512;:7003 50/50 p50=517;ftp_regression
11/11;Trap23 RST 5/5 + FIN 5/5;time_sync :8888 连续推送正常(RTC 更新、
无 [ERR])。文档同步:BSD 指南(§3.3/3.6/10.1/10.2/12 + 变更记录)、
函数调用关系、监听生命周期设计说明、IEC104 上行设计说明、模拟器差距
清单、链路延迟测试说明。
门禁说明:doc-links 工作树 junction 伪影按既定口径 SKIP;mem-budget
分支 .map 漂移同前;cppcheck/coding-standard 手跑 Passed。
|
2026-10-13 06:44:26 +08:00 |
|
wandering1
|
b8d87c62d7
|
docs(net): N34 E8 风暴态深查 + T6 核实 + E9 M3 记录
- 实验方案:E8(状态依赖矩阵 2%~54%、风暴签名、三缺陷机制)
+ E9(M3 三轮迭代判据演进表与裁决、遗留观察归因)
- 盘点:F-NET-17 风暴态节 + T6 补充节(TC-NET-204 模式 C 证伪
"close 产生锁存"强形式,锁存生成者=拆链完成事件;泵/救回同
缓冲竞态证实;M3 补丁设计与 M5 drain-until-quiescent 状态机草案)
- 实施方案:§1.5 E8 修正(残余非稳定 3% 而是风暴态,M3/M5 互补)
|
2026-10-13 05:38:21 +08:00 |
|
wandering1
|
a0b9d27821
|
docs(net): N34 BSD 自愈审计与实施/实验方案(E0-E7b 台架记录)
五层自愈机制盘点(F-NET-1..15)、CH395F 驱动层审计(F-DRV-1..16)、
主流方案对照(ioLibrary/FreeRTOS+TCP/mbed/Zephyr)、实施方案
(阶段 0..3 + P0 止血包 + 阶段 1.5 recv 语义主流化)、实验方案
(E0/E1/E5/E7/E7b 实测数据与判据)。
关键结论:
- 对账是冷路径(E0:3.5h 零命中);D10 沉降/重试是每次断连热路径
- 断连→pump→重建产生 ~0.3-1s 监听空窗/会话(E1 :7003 p50=1020ms)
- n30 背靠背 STOR 基线 4/50(F-NET-15 自持失效循环,首个入库可复核
背靠背数据;Trap 25 终版回归只含有间隔 ftp_regression 是测试面根因)
- E7b:M1+M2+M4-lite 止血包 116/120,残余 ~3% 偶发(M3 域)
- 静默回收形态 ~110 次连接零复现(F-NET-2 降为阶段 1 顺带修)
|
2026-10-13 00:05:49 +08:00 |
|
wandering1
|
1a17d73e35
|
docs(net): N-32 监听生命周期文档同步(4 tick/五层自愈/net_listener.c)
N-32 把监听生命周期抽为 net_listener.c,并把周期性重建收敛到
唯一入口 net_listener_pump;文档与代码注释滞后于实现,本次同步:
- 主循环自愈 tick 3 → 4(新增 net_listener_pump,100ms)
- 自愈分层 四层 → 五层(新增 N-32 pump 行)
- net_reconcile_tick 对账收窄为 ①②,③④ 移交 pump
- 函数更名:net_relisten_try/clear/retry_tick → net_listener_*
- Trap 23 沉降等级订正:异常 400ms / 正常 100ms(正常 FIN 亦沉降)
- net_socket.c 注释同步(四个自愈 tick、函数名、pump 条目)
权威设计见 docs/子系统设计/网络Socket监听生命周期设计说明.md §10。
|
2026-10-12 19:16:31 +08:00 |
|
wandering1
|
d3107f374f
|
docs: 待处理内容.md 解耦为 docs/任务规划/ 文件夹(README 排序权威 + 6 个职责单一文件)
- rename_ref.py 搬迁:git mv + 全库引用改写 33 文件 82 处
- README.md 保留 §0 编号空间 / §1 未闭环一览 / §2 推进顺序权威 / §3 维护约定
- 拆出 6 文件:W1-采集保护收尾(任务卡五字段)、排期详述、暂缓-RS485、
登记簿、测试与架构专项、基线与待确认
- 外部引用重定位 ~50 处:裸「登记簿 §X」、§5.1→基线与待确认 §2.1、
§2.4→暂缓-RS485、§6→基线与待确认 §3、脚本注释 T-x/N-x→登记簿
- 新增并行写纪律:任务分支不改本文件夹,状态列由 Lead 主工作树更新
- 验证:doc-links 141 文档全绿;mem-numbers 一致;refgraph 重生成;
@build 0 错误 0 警告;新文件无 BOM / LF / 零乱码
|
2026-10-12 13:42:47 +08:00 |
|
wandering1
|
d758d5cd7b
|
docs+net: FUN_PARA 定案 0x08——bit0 保留位证伪,Trap18 定案更正 + N-31
CH395F FUN_PARA 的 bit0 之争定案:取 0x08(bit3 SOCKET_CLOSE=1,bit0=0)。
证据(一手,按强度):
- 官方手册 V2.2/V2.3 与旧版 V1C/V1E/2020 版 §5.52 位表:bit0 一律
「保留,必须为0」,任何版本都不存在「bit0=多 Socket」这一行。
- 官方 SDK CH395INC.H:349-353 位宏只有 bit1/3/4/7/8,无 bit0 宏。
- 官方例程直接反例:EXAM5_TCP_Server 传 0x02(bit0=0)却给 Socket 0~7
全部配缓冲;EXAM11_FTPClient 直接传 0x08;全 EVT 包无一处 0x09。
- 手册命令章前言:8 Socket 是芯片原生能力,靠 _SN 索引寻址;§5.45
真正的门槛是缓冲分配(Socket 个数 >4 须重分配缓冲)。
- 概念讹传源是 bit1 FUN_PARA_FLAG_TCP_SERVER(服务器多连接,§9.2.6)。
- 互联网检索无任何出处称 bit0 为单/多 Socket 模式。
Trap 18 的「bit0 决定 Socket 数量」是推论而非实测:无日志、无 TC 号,
且当年 Socket 1~7 未显式配缓冲(Trap 01/02 混淆因子未排除);TC704
40/40 与结论出自同一提交,属自证,不构成 0x08 的对照。
改动:
- net_socket.c:0x09→0x08(原为未提交改动,现已过编译门禁)+ 版本留痕
- ch395f_reuse_bench.c:0x09→0x08,与生产 net_init 同构
- net_test_task.c:TC704 注释纠正(Socket 可用性不依赖 FUN_PARA)
- Trap 18 新增「定案更正」完整证据链;Trap 25 疑点改判为定案
- Test_Guide / 产品需求 / 架构总览 / BSD 调用关系:0x09→0x08 改口径
- 待处理内容.md 登记 N-31:0x08 下多 Socket 台架复测(TC704 降并发
≤5 + FTP 回归),补 Trap 25 销项时漏登记的尾巴
验证:@build 0 错误 0 警告;check_doc_links --all 通过;无 U+FFFD。
|
2026-10-11 20:05:22 +08:00 |
|
wandering1
|
d1e6bb4ba7
|
W5波+N-19收口:FTP鉴权落地、Trap25三连定案修复(N-30)、N-20/N-23/N-26
N-19 FTP 鉴权:
- lftpd_auth(USER/PASS 状态机 + 连续5次失败锁60s)+ SHA-256
(user||pwd) 口令哈希;config.ini [ftp] 段 user/pwd_hash/write,
出厂 admin/admin 在用有启动告警;lftpd_log.c 删除并入 lftpd_auth
- ftp_cfg 配置读写;台架 ftp_auth_bench.py 13/13
N-30 / Trap 25(CH395F_Trap_Records.md 四次定案全记录):
- 修复1 closed-with-data accept:客户端发完正常 FIN 后芯片按
FUN_PARA(0x09) §5.52② 保留 Socket+RX 缓冲,旧代码把 CLOSED 一律
relisten 自毁缓冲 → STOR 必挂 425;改为接受"已关但可读"连接排空
- 修复2 丢 CONNECT 中断探针 net_lost_connect_probe + last_peer_port
幽灵甄别(拆链窗口握手完成但中断丢失,双信源去抖补 accept)
- 修复3 send_list/send_nlst 批量单发:背靠背 ~60B 小段毒化芯片 TX
(芯片报 SEND_OK 但对端全丢),整份目录一次性写入
- 证伪存档:固定沉降/Socket 轮换冷却/listen 门控(台架 v7 矩阵)
- 台架工具 test/board/ch395f_reuse_bench.{c,h} + host 脚本存档
(不注册编译;实验分支 n30-chip-bench 保留)
N-20:Error_Handler 死循环降级(记录+复位路径)
N-23:scripts/check_registration.py 双端注册反向校验(pre-commit)
N-26:GD5F NAND 直 DMA 调用方缓冲窗口断言
验证:BUILD_OK 0/0;ftp_regression 连跑 4 轮 11/11(修复前
LIST#4/#7 100% 挂、STOR#2 曾 100% 425);ftp_auth_bench 13/13;
@test 启动标记 PASS;ci_local L0+L0.5 全过;doc-links 通过。
登记簿 N-30 已销项。
|
2026-10-11 18:50:24 +08:00 |
|
wandering1
|
54d6d2d5d5
|
docs: 删除 Task #32 停摆分析(已结案),可复用结论并入看门狗设计说明 §11
按登记簿"完成即销项"规则删除 docs/问题记录/UI任务看门狗停摆分析.md
(560 行)。结案依据:累计 38 次上板启动 0 复现(原 L2 基线 3/10),
P0/P1-4a/P1-5/P2/方案 A 全部落地,方案 B 已评估决定不做。
并入 docs/子系统设计/看门狗设计说明.md 新增 §11(只留可复用部分):
- §11.1 三条易误读的判读口径:启动期 MISS start 0x67 是良性 episode;
miss= 是累计不是连续(连续数饱和在 WD_MISS_TOLERANCE=8);
reset cause 不能区分 IWDG 溢出与台架软件复位
- §11.2 诊断四步:先看掩码缺几位(只缺 1 位 = 定点打击,多位 = 全局
饥饿)→ 逐项量化占空比(实测 10%~13%,否掉"CPU 饱和"直觉)→
用计数速率反证空转(ring 恰好 1000/s)→ 用 [PROF] 指认占用者
- §11.3 三条结构性脆弱点(uiTask 唯一 BelowNormal/心跳曾依赖 netTask
往返/自定截止期不可恢复)+ 两个顺带修掉的正确性缺陷(无新帧仍压环
≈3% 频率失配、失败拍静默沿用旧值)
- §11.4 [PROF]/[PROF2] 全字段语义 + v2.8 实测基线(netp=0 是真实值、
adcm 峰值来自心跳日志、uip 地板 = LVGL 帧周期)与三机理判读口诀
- §11.5 三条教训:门控类优化必须保留低频兜底;门控会顺手消灭暴露路径;
事件驱动要核对节拍源启动时刻 vs 消费者创建时刻
- §11.6 明确不做的四条及理由(提 uiTask 优先级会掩盖真缺陷、net_* 有界
等待版会串回执、推流搬出 uiTask、推流塞进 netTask)
UI 推流门控与方案 B 否决理由收进 RemoDispBus 协议说明 §3(该处原本已有
摘要,改为自洽不再回指);就绪门控 API 的约束已在 BSD Socket 指南 §10.1。
引用改指 12 处:ui_task.c、task_prof.c/.h、ui_net_sink.c/.h、docs/README、
RemoDispBus、看门狗设计说明 R7 行、ADC 采样节拍设计说明、BSD Socket 指南
×2、项目审查报告 N-10 ×2。
⚠ ui_task.c / ui_net_sink.c / ui_net_sink.h 是带 BOM 文件,Edit 剥掉了
BOM,已按原样补回 3 字节 EF BB BF(未整文件重写)。
验证:check_doc_links --all 通过(127 个文档,无悬空引用);
@build 0 错 0 警,Code=257660 与删除前一字不差(纯注释改动)。
|
2026-10-11 00:38:50 +08:00 |
|
wandering1
|
1d1a9d4656
|
net/ui: UI 推流加就绪门控,刷新脱离 netTask 往返(销项 N-10)
新增 net_can_accept() / net_can_read():纯 RAM 读 Socket 控制块,不入队、
不等 netTask 回执,供实时性敏感任务在发 RPC 前判断"有没有活"。
ui_net_sink_poll() 改为先门控再 RPC;无客户端时 RPC 从 100 msg/s 降到 0。
两条兜底(门控引入的新卡死路径,设计阶段未预见):
- I-2 每 32 轮无条件 recv:readable 仅由 RECV_OK 中断置位,Trap 22 三类
对账不含"RX 非空但 readable=0",纯门控会把已到达的数据永久藏住;
- I-3 门控返 0 时查监听控制块,消失即 g_listen=-1 重建(改前靠每轮
accept 撞 BADF 暴露,门控会连这条暴露路径一起消掉)。
net_can_read() 对非 ESTABLISHED / 非法 fd 故意返 1,让上层必得 EOF/BADF
走既有错误分支——返 0 会把死连接永久藏住。
模拟器后端恒返 1(Winsock 无 RPC 成本,行为逐位不变)。
实测:uis 50ms→1µs、uiw 50ms→11.4ms(只剩 LVGL);@build 0 错 0 警、
@test 10/10 PASS(uis≤1µs、uisn≡0、0 task stall、0 [ERR])、
check_remo_sink.py e2e 0/25600 位差异、内容页文本断言 50/50。
uip 最坏 61ms 是 LVGL 帧周期地板、与网络无关,判据已按实测修订。
方案 B(把推流搬出 uiTask + 帧 seqlock)已评估并决定不做:搬任务不会
让刷新变快,收益只剩极端并发下的观感隔离,成本含必改 .ioc 的 CubeMX
重生成。残留暴露与观测手段(uis/uisn)如实记录在 §9.4。
N-19 / C7 不入登记簿(当日结案),结论沉淀进问题记录 §9。
|
2026-10-10 20:47:59 +08:00 |
|
wandering1
|
de1b50efe9
|
修复 P1-7:MAC 写入顺序改为 INIT_CH395 之前
- 手册 §9.2.1:SET_MAC(步骤①) 必须先于 INIT_CH395(步骤⑤);SET_MAC 写
芯片 EEPROM,INIT 从中加载 MAC——原顺序反了则本次上电 MAC 不生效
(回落芯片内置/上次值),UI 显示与设备在线身份不符
- net_socket.c net_init():SET_MAC 移到 ch395f_init() 之前(对齐步骤①)
- ch395f.c:四个 SET(MAC/IP/GWIP/MASK)限定条件注释由"芯片已初始化"
订正为"必须在 ch395f_init() 之前调用"
- net_socket.h / BSD_Socket_API_函数调用关系.md:同步顺序描述
- CH395F_Trap_Records.md:新增 Trap 24 沉淀根因与修复
- 待处理内容.md:P1-7 销项(§1/§2 阶段 A/§3.1/§4);阶段 A 清空后重编号
- 验证:Keil 构建 0 错 0 警;pre-commit 17/17 全通过
|
2026-10-04 23:07:00 +08:00 |
|
wandering1
|
f4fea70749
|
docs: 合并 4 份待办文档为统一登记簿 待处理内容.md
合并 docs/待处理内容.md(N/S/T-x)、审查记录/项目审计改进清单.md(P-x)、
审查记录/下一步任务规划.md(阶段与基线)、审查记录/测试与架构改进建议.md
(S1x/A-x)为单一《待处理内容(统一待办登记簿)》。
- 结构:编号空间与来源 / 未闭环一览 / 任务排序(阶段 A~D)/
逐条详述 / 待验证与待确认 / 设计基线 / 诊断基线 / 内存预算 / 维护约定。
- 编号沿用且不回收;E-xx 仍由 错误码传播审计.md 独立维护。
- 删除 3 份被合并文档;重定向下游引用:README、AGENTS、审查报告、
实机测试实施指南、Net 层架构、NET/cfg 模块 README、脚本注释。
- 同步订正计数:P1=2(+1 收尾) / P2=10 / P3=6。
pre-commit 17/17 Passed。
|
2026-10-04 02:28:52 +08:00 |
|
wandering1
|
aef1d92b3f
|
实机测试实施指南重构为纯执行流程:步骤1~7+状态标记,已完成事项(S7/A1~A4)细节与证据移出至各模块文档,§1改执行流程总览,外部引用同步
|
2026-10-03 22:45:19 +08:00 |
|
wandering1
|
0ddf8c9aca
|
Net 层阻塞模型架构设计 §2 架构总览改用 SVG 矢量图
|
2026-09-29 06:00:48 +08:00 |
|
wandering1
|
0485e79da0
|
Net 阻塞模型文档改写为架构设计并迁入 docs/网络
|
2026-09-29 05:51:16 +08:00 |
|
wandering1
|
b46e6bffed
|
Net 阻塞模型调研文档退役:客观实施记录留存,二期基线迁入任务规划
|
2026-09-26 14:21:13 +08:00 |
|
wandering1
|
a6cdebde62
|
文档体系重组与 D-7 一致性门禁落地,清理芯片手册孤儿图片
- D-6 目录规范化:docs 根目录散落文档归入 UI设计/子系统设计/架构设计/审查记录/
环境与部署/网络 等子目录,去掉目录名空格,重命名 嵌入式C语言代码规范_V1.0.md
- D-7 三档一致性门禁:新增 scripts/check_doc_links.py(链接存在性)、
scripts/gen_task_table.py(FreeRTOS 任务表数值)、scripts/check_mem_numbers.py
(内存/Flash 体积),均支持 --check/--write/--diff,pre-commit 钩子同步注册
- D-5 文档索引:新建 docs/README.md,新建 docs/文档规范.md 约束目录命名与链接写法
- D-1 芯片手册瘦身:删除 1069 张无引用孤儿图片(77.06 MB),
docs/芯片手册 120 MB → 41 MB,已引用图片零断链
- 同步 C 源码注释中的文档路径引用(D-6 重组后),构建 0 错误 0 警告
|
2026-09-26 00:51:53 +08:00 |
|