Commit Graph

52 Commits

Author SHA1 Message Date
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 0779d3a075 栈整改不抬栈:删旧档迁移、FIL静态化、日志行缓冲按模块收紧、钩子脱离HAL,defaultTask链5312→2776B 2026-10-10 10:17:00 +08:00
wandering1 718d399f70 net_drain_chip_rx 补实测注释:scratch 静态化反亏,勿再"优化"
ARMCC 把 256B 分块 scratch 与同函数内不重叠的 192B 日志缓冲叠放
实测静态化只省 ~16B 栈、反增 256B BSS,已回退并留注释防重复尝试
2026-10-09 17:17:48 +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 1b46e2a340 修复E-03:s_net_errno 改按任务隔离槽位,消除跨任务错误码错报 2026-09-25 19:17:18 +08:00
wandering1 78ea81aecb net_socket.c 全部 59 个函数体注释改为逐行风格(纯注释改动,构建 0/0) 2026-09-25 15:00:36 +08:00
wandering1 df79cf2be3 net_process_messages注释改为标准字段格式(功能/返回值/限定/说明),内容不变,二进制零差异 2026-09-25 05:55:03 +08:00
wandering1 c12139da06 Trap23待办3: 异常释放(TIMEOUT/RST)挂起recv以CONNRESET了结, STOR异常结束回450并删除截断文件, 探针加--check-abort 2026-09-25 02:04:46 +08:00
wandering1 a1f1f46262 Trap23两阶段修复: 异常释放400ms隔离+正常释放100ms沉降(仅收过数据), 修复中止后新传输首笔静默截断 2026-09-25 01:57:03 +08:00
wandering1 c075cfa076 修复F1:lftpd会话结束复用auto_relisten监听器不再关闭控制监听,net关闭时清隔离标志防跨轮残留 2026-09-24 22:49:33 +08:00
wandering1 86e261d6df net_socket.c补net_process_messages分派文档:三个自愈tick机制、各消息类型处理说明与结果回传路径 2026-09-24 22:49:15 +08:00
wandering1 95e7f42aa2 修复发送中途断连空等1s:send等待循环加状态检查,断连立即失败回传CONNRESET 2026-09-24 17:14:12 +08:00
wandering1 77ee778605 修复Trap22快速复连丢中断致监听死亡:net层周期对账自愈(去抖+冷却),复现用例与回归全绿 2026-09-23 02:27:10 +08:00
wandering1 3ac8eb807d TC-NET-604结案为非缺陷:Trap21改短+删机理图解+N-7作废,清理源码误导注释 2026-09-23 01:36:57 +08:00
wandering1 7d70445c16 修复Trap23:异常释放后复监听隔离并排空RX残渣,上传中止截断消除(RST10/10+FIN5/5通过,正常50/50) 2026-09-23 01:31:07 +08:00
wandering1 cca3b60d64 Trap21定案部分窗口重通告机制:N-7改非阻塞RX读强制排空至空,netcmd日志入库 2026-09-23 00:07:45 +08:00
wandering1 93bae35e21 TC-NET-604 根因闭环:芯片 RX 窗口冻结角(Trap 21),MSS=512 裕量方案证伪回退,缓冲布局与 MSS 解耦 + 超限读金丝雀
- 根因:CH395F 片内 TCP 状态机角(WCH 官方 FAQ 留档,W5500 同类):窗口=接收缓冲剩余空间,
  缓冲恰好填满 + 排空时序交叠后芯片 RX 静默冻结(不 RST、不自恢复),触发模式 = 同连接前序突发 +
  新突发 + 任务负载;驱动超限读丢弃与 L3 pending 均经插桩台架排除
- MSS=512 裕量实验证伪(原序列 10/10 仍停摆,且新连接 4096B 确定性停摆恒剩 64B)→ 维持 1024
- 缓冲块布局(RX 4/TX 2 块)与 SPI DMA 缓冲(接收缓冲+4)与 MSS 解耦,杜绝改 MSS 连带缩小布局
- ch395f_read_recv_buf 超限守卫改为 OVERSIZE 留痕(原静默 return 会把窗口锁死 0 且无从诊断)
- 文档:Trap 21 全记录(含 MSS=512 负结果/64B 残留/FAQ 引文/触发模式);N-1 改写(残留决策项 =
  lftpd 数据通道停摆预算 30s→10-15s 待用户决策);E-02 STOR 预测机制修正;延迟说明基线免重锁注记
- 台架复验:新连接 4096B 31ms PASS(4x1024 粒度)、竞争序列停摆复现(芯片角,已文档化)、
  停摆后重连 520ms 恢复(auto-relisten + 回显正常);芯片行为参数零变化 → M3 基线全部继续有效
2026-09-22 18:57:48 +08:00
wandering1 a45c0cb883 L3 pending化一期:阻塞recv改挂起请求+主循环节拍完成(netTask零占用),lftpd/timeSync分片协议退役 2026-09-22 16:29:31 +08:00
wandering1 4ce966dfb8 net_recv_to补全分步注释:片超时-2返回码不依赖errno依据、值拷贝队列陷阱、三分支返回语义(E-02配套留档,无逻辑变化) 2026-09-22 15:37:19 +08:00
wandering1 7fb5d66799 清除 net 层调试残留:ch395f_reset 六行与 net_init 七行步骤打印 2026-09-22 12:17:31 +08:00
wandering1 894b51feb3 移除 P0-a 验收探针(台架验收完成),开机省去 60ms 状态轮询与证据行 2026-09-22 12:03:11 +08:00
wandering1 06d4064366 修复 P0-a 重传周期 200ms 与 P0-b per-recv 日志,台架重锁 M2/M3 基线并复验 2026-09-22 11:36:16 +08:00
wandering1 2cffd1d2cf 文档统一:三份链路时延文档合并为链路延迟测试说明,删过程性历史,更新全部交叉引用 2026-09-22 06:52:58 +08:00
wandering1 e5733b3454 链路时延M1-M3收尾:Phase12-14基线与生产路径Δ实测、D10/E-02/D17修复、D20定位与硬化、文档整理 2026-09-22 06:12:40 +08:00
wandering1 472c8172fb 修复远端推流整帧纯白:MCU端补dark mono主题应用与I1调色板,net发送侧加停顿/短写诊断 2026-09-21 05:12:18 +08:00
wandering1 5cb7614959 修复net公开API错误码被覆盖致UI推流连上即断(改用通知值回传,单连接EOF不关监听) 2026-09-21 04:46:47 +08:00
wandering1 4515ee4c80 修复了网络参数的保存逻辑 2026-09-10 14:21:07 +08:00
wandering1 2b80d34e74 增加网络配置界面 2026-09-10 11:36:33 +08:00
wandering1 02c10fa5ef 修复Yoda条件(常量右置)与函数定义括号同行
- net_select.c/net_socket.c 共 62 处 Yoda 条件改为常量在右(规范 6.3.1)

- 11 个文件 58 处函数定义左大括号由换行改为与右括号同行(规范 4.4.2)
2026-09-01 16:57:34 +08:00
wandering1 2b66f96d01 新增代码规范检查钩子(规范V1.0 可机械校验项)并修复存量违规
新增 scripts/check_coding_standard.py + coding-standard 钩子(S1~S9:
头文件保护宏、文件头注释、宏大写、_t 后缀、switch default、
禁 strcpy/sprintf/goto/Tab、函数注释)
修复存量违规:NET_* 字节序宏大写化、net_fd_set 等类型加 _t 后缀、
net_inet_ntoa 的 sprintf 改 snprintf、补 4 处函数注释与 ui_task.c 文件头
docs/代码规范/pre-commit使用说明.md:新增 2.8 节,修正失效文档路径
2026-09-01 15:41:25 +08:00
wandering1 07afb7b468 启用constVariablePointer检查并修复6处指针const化
.pre-commit-config.yaml: 移除 --suppress=constVariablePointer
net_select.c: 5 处 p_sock 改 const net_sock_t *(仅只读使用)
net_socket.c: net_getsockname 的 p_sock 改 const(只读字段)
docs/代码规范/cppcheck使用说明.md: 同步抑制表与处理记录
2026-09-01 15:11:17 +08:00
wandering1 6307c3f635 缩小变量作用域:消除18处variableScope,声明移入实际使用块 2026-09-01 13:59:44 +08:00
wandering1 45307363a1 修复net_socket.c动态端口溢出检查:uint16_t>65535恒假改为==0 2026-09-01 13:40:06 +08:00
wandering1 ae8b1aead5 清理全库行尾空格与文件尾换行(pre-commit 自动修复基线) 2026-09-01 10:24:50 +08:00
wandering1 ad154b2f7e 时间同步已经完成 2026-08-28 16:42:44 +08:00
wandering1 b43dede98d FTP 测试通过 2026-08-28 12:22:10 +08:00
wandering1 db64e6acf4 网络主要内容测试完成 2026-08-26 13:54:52 +08:00
wandering1 319d00e3e5 删除多连接内容,只支持单连接 2026-08-25 12:41:33 +08:00
wandering1 d92b086c5b 修改一些注释 2026-08-25 11:49:31 +08:00
wandering1 572313d430 CH395F 硬件测试完毕 2026-08-24 16:16:18 +08:00
wandering1 b0feaff5ac 修改测试 2026-07-22 11:14:22 +08:00
wandering1 ccf2dc85b7 FTP可以上传文件 2026-07-22 01:46:29 +08:00
wandering1 b565702c46 FTP可以连接成功 2026-07-21 22:42:39 +08:00
wandering1 6113b3252b 成功启动 2026-07-21 22:24:47 +08:00
wandering1 02963441b5 初始创建FTP服务器 2026-07-21 22:08:11 +08:00
wandering1 fd13ad0e06 修改网络的初始化,异步支持问题 2026-07-21 01:22:09 +08:00
wandering1 01ad5e476f 增加文件系统 2026-07-21 00:30:59 +08:00
wandering1 e862009bcd 修复多连接的问题 2026-07-19 15:27:49 +08:00
wandering1 a08d26bcb0 freeRTOS支持 2026-07-19 13:09:06 +08:00
wandering1 7a8a97f42a 通过测试排除了一些问题 2026-07-19 04:32:18 +08:00