wandering1
|
e90486524d
|
CI:Gitea Actions 落地 L0+L0.5(补 T-6)
新增 .gitea/workflows/ci.yml:push/PR 触发两个 Windows job——
l0-gates 跑 pre-commit --all-files(无 Keil .map 时自适应跳过 mem-numbers),
l05-host-unit-tests 遍历 test/host/**/run_unit_test.py(缺 MSVC 则告警降级跳过)。
刻意不跑 @build(需 Keil 授权);L1/L2/L3 需真机+ST-LINK,不上 CI。
新增 scripts/ci_local.py:本地跑与 CI 等价的门禁(自动选用装了 pre-commit
的解释器;.map 自适应;退出码 0/1/2 与 CI 对齐),供提交前自查与 runner 就绪前过渡。
文档同步:测试开发标准流程 §9(CI 章节)/§1/§4.1、待处理内容 T-6 销项、
项目部署环境要求 §2.11(runner 前置)、pre-commit 使用说明 §1、scripts/README.md、AGENTS.md。
验证:scripts/ci_local.py rc=0(L0 14 钩子全过 + L0.5 39/39)。
|
2026-10-01 10:19:38 +08:00 |
|
wandering1
|
2055de0303
|
测试:落地测试架构改进 T-1~T-5(套件开关门禁/汇总行校验/通用 harness/公共断言宏/多套件编排)
背景:L0.5 主机侧单测落地后复审测试架构,给出 6 条改进意见(P0~P3),
登记进 docs/待处理内容.md「测试与验证基础设施」后逐条实施。
- T-1(P0) 测试套件开关门禁:新增 scripts/check_test_suite.py + pre-commit 钩子
test-suite-switch,默认要求产品构建(全部 TEST_SUITE_* 注释),跑套件回归用
--allow-test-build / ALLOW_TEST_BUILD=1 显式放行。顺带把 test_config.h 中长期
开启的 TEST_SUITE_CH395F 改回注释(仓库此前躺着的是测试固件)。
- T-2(P1) verify_log.py 增加 --require-suite-summary:要求
"=== <名称>: N/M PASSED (failed=0) ===" 且 N>0,堵住"套件没跑到汇总行/
断言数为 0 仍判 PASS"的盲区;run_boot_test.py 同名参数透传。不传参向后兼容。
- T-3(P1) 抽取通用 harness test/host/common/unit_test_harness.py(工具链探测/
INCLUDE-LIB 拼接/wd4819/GBK 解码/退出码契约);watchdog 运行器 170→55 行,只声明 TestBuild。
- T-4(P2) 新增 test/board/test_common.h 集中断言内核(TEST_CHECK_IMPL/TEST_REPORT_IMPL),
4 套件各用一行宏绑定自身统计变量(保持 g_xxx_stats 独立、防跨套件串数)。
刻意不 include dbg_log.h——否则冻结 DBG_TAG 默认值触发 #47-D 重定义警告。
- T-5(P2) 新增 test/run_all_suites.py 多套件回归编排,try/finally 无条件还原套件开关。
验证:@build 产品构建 0 错 0 警;4 套件逐一构建均 0/0;看门狗单测 39/39 PASS;
pre-commit 14 钩子全通过;编排脚本 dry-run/开关切换/异常还原均实测通过。
|
2026-10-01 07:28:57 +08:00 |
|
wandering1
|
6b90fa0581
|
文档:补充主机侧单元测试(L0.5)的环境要求
新增 L0.5 主机侧单测需 MSVC(cl.exe)离线编译真实源码,此前环境
文档未覆盖该依赖。本次补齐环境侧全部引用点:
- 项目部署环境要求.md:
· §2.3 由"PC 模拟器环境"扩为"PC 侧编译环境(模拟器 + 主机侧单元
测试)",明确同一套 VS 的 cl.exe 同时服务两者,MSVC 由"仅模拟器
需要"升级为"提交门禁需要"
· §2.7 pre-commit 表补 watchdog-unit-test 钩子 + "未装 VS 会被拦截"
· 总览拓扑图加 MSVC 节点;第 3 步 / 第 10 步冒烟 / 搭建清单 /
§2.10 下载表(补 VS2022/2026)/ 速查表(补 cl.exe 缺失、
C1083 stdio.h 两条)/ 相关文档 / 变更记录同步
- 测试开发标准流程.md:
· §4.2 补 L0.5 环境要求表(cl.exe / SDK / 纯标准库 Python / 缺失时
退出码 2 且钩子拦截)+ "不调 vcvars64.bat(reg.exe 受限)"原因
· §4.1 工具清单标注该运行器需 VS
|
2026-10-01 07:03:53 +08:00 |
|
wandering1
|
73941da6b1
|
看门狗判定状态机增加主机侧单元测试(L0.5 层)
为 task_watchdog.c 的判定逻辑(位图取走清零 / 必需掩码 0x37 判定 /
miss_streak 连续 8 次停喂 / 100ms 抽样节流 / tick 回绕安全)补一层
主机侧纯逻辑单元测试,弥补此前只能靠真机或模拟器才能发现回归的空白。
架构(沿用项目既有"共享核心 + 平台后端"做法,参照 cfg_file_store):
- task_watchdog.h 末段新增"平台后端(内部)"声明 3 个钩子
(wd_platform_feed / _start / _tick_ms),MCU 端以 __weak 提供默认实现,
行为与重构前逐字一致(@build 0 错误 0 警告,Flash +20B)。
- 主机侧单测以同名强符号覆盖三钩子,即可离线注入/观测,无需碰 MCU 代码。
- 测试文件 #include 生产源文件本身,保证测的是真代码而非副本。
- 测试专用复位 task_wd_test_reset() 仅 TASK_WATCHDOG_UNIT_TEST 下编入,
MCU 构建零代码零符号。
测试(test/host/watchdog/,MSVC 离线编译,纯标准库驱动):
- 39 项断言全过(退出码 0);注入故障可复现退出码 1。
- run_unit_test.py 直接拼 INCLUDE/LIB 调 cl.exe,绕开本机被禁的 reg.exe。
- stub/ 三桩头覆盖 main.h / iwdg.h / dbg_log.h。
门禁:pre-commit 新增 watchdog-unit-test 本地钩子(L0.5 层),仅被测文件
或其测试变动时触发;测试开发标准流程.md 新增 L0.5 层说明。
顺带改善:task_watchdog.c 的节流基线 s_last_tick 由函数内 static 提为文件
static(可测性 + 模块状态归一)。
|
2026-10-01 06:57:01 +08:00 |
|
wandering1
|
0ac68605dd
|
看门狗 §3.2 流程图重绘为 SVG:任务置位→校验者判定→喂狗 + 时间轴
|
2026-10-01 06:35:57 +08:00 |
|
wandering1
|
2d414f8aa9
|
查证 SHCSR 的 Fault 使能位无法在 CubeMX 配置,补入文档与审计提示
用户问 fault_handler_enable() 能否通过 CubeMX 配置。查 CubeMX 安装目录的
模板源码后确认:不能。三重证据:
1. tpl_main_c.ftl 的 MX_NVIC_Init() 用 [#if vector.systemHandler=="false"]
才生成 HAL_NVIC_EnableIRQ;而 NVIC-STM32F417_Modes.xml 里
MemoryManagement/BusFault/UsageFault_IRQn 都标 Y(=systemHandler),
故 CubeMX 对这三个永不生成使能代码(只生成优先级,且仅当优先级 != 0)。
2. 全部模板中 SHCSR 只出现 1 次(tpl_main_c.ftl:2269),且是 MPU 清理时的
SCB->SHCSR &= ~SCB_SHCSR_MEMFAULTENA_Msk(禁用),无任何 |= 置位。
3. MPU 路径也堵死:.ioc 的 Mcu.IP 列表无 MPU,且 HAL_MPU_Enable 只置
MEMFAULTENA 一位,BUSFAULTENA/USGFAULTENA 仍拿不到。
实测印证:Src/stm32f4xx_hal_msp.c 的 HAL_MspInit() 里只有
HAL_NVIC_SetPriority(PendSV_IRQn, 15, 0),三个 Fault 一行代码都没生成。
结论:只能手工写。但函数体在 USER CODE BEGIN 1 区(L2),重生成不会丢,
另有审计项 fault-handler-enable 兜底 -- 故这不是风险,只是无法享受 L1。
顺带记录一个易踩的误解:.ioc 里 NVIC.MemoryManagement_IRQn=true 的第 1 段
只是"向量在 NVIC 表里可见/已配优先级",与 SHCSR 使能位无关,
不要以为勾了 NVIC 面板的 Enabled 就等于使能了故障。
改动:
- 看门狗设计说明.md:§10.2 新增"为什么 fault_handler_enable() 写不进 .ioc"
(三路径对照表 + 实测印证 + 结论);四个 Fault 采集小节加警示;
L1 表格补该行;变更记录新增 2026-10-01 条。
- AGENTS.md:新增"SHCSR 的 Fault 使能位无法在 CubeMX 配置"铁律条目。
- scripts/check_cubemx_survival.py:fault-handler-enable 的 hint 补上
"无法 CubeMX 配置"及其原因,便于日后重生成后看提示就能回忆。
验证:pre-commit 13 钩子全通过;审计 18 通过 / 1 警告 / 0 失败。本次仅改
文档与脚本注释,未动代码,无需重编译。
|
2026-10-01 06:20:50 +08:00 |
|
wandering1
|
8a18e388c7
|
四个 Fault 全部采集现场:MemManage/BusFault/UsageFault 由空死循环升级
原状:HardFault 已有崩溃采集,但 MemManage / BusFault / UsageFault 仍是空
while(1) —— 这三类故障发生时日志完全静默,且因 SHCSR 默认未使能,实际会
被升级成 HardFault,报告出笼统的 "HARDFAULT"、看不出根因。
改动:
- Src/stm32f4xx_it.c:三个 Handler 升级为手工 __asm 版(取 MSP/PSP 帧指针)
-> B 到 per-fault C 入口 fault_entry_{mem,bus,usage} -> hard_fault_report()。
hard_fault_report 增加 tag 参数,日志统一为
"[ERR] <TAG> PC=.. LR=.. xPSR=.. R0-R3=.. CFSR=.. HFSR=..[/BFAR][/MMFAR]"。
生成实体经 #define X X_Gen 改名保留,链接器各移除 2 字节(.map 已验)。
三个各带独立锚点 MEMFAULT/BUSFAULT/USAGEFAULT-ANCHOR。
- 新增 fault_handler_enable()(USER CODE BEGIN 1 区):使能 SHCSR 的
MEMFAULTENA/BUSFAULTENA/USGFAULTENA。声明入 Inc/stm32f4xx_it.h,调用在
app_main_init() 第一行(纯寄存器写,不依赖日志/时钟)。
- 刻意不启用 CCR.UNALIGN_TRP / CCR.DIV_0_TRP:会把普通 bug 升级成死机,
对本项目弊大于利(说明写进函数注释)。
实现约束(本轮踩坑):ARMCC 的 __asm 块取不到 C 的数据符号(ADR r1, xxx_tag
报 A1516E: Bad symbol,去 static 也无效),也无法给 C 函数传字符串参数,
故故障名必须由 C 侧 per-fault 入口带上。
配套:
- check_cubemx_survival.py:新增 fault-handlers-3 / fault-handler-enable 两项,
UNPROTECTED_LEGACY 清掉三个 Fault(WARN 2->1),清单 16 -> 18 项。
- AGENTS.md:新增"4 个 Fault 全部采集"条目;ARMCC 汇编条目补 A1516E 第 3 坑;
校验标记补 [ERR](四个 Fault 日志都以它开头 -> 一律判 FAIL,刻意)。
- 看门狗设计说明.md:§6.1 补 4 条 Fault 标记与 @test 禁项关系;
§10.2 L3 清单与四个 Fault 采集小节;§11 结论表与变更记录。
- 待处理内容.md:新增 N-03d(已完成),N-03c 补第二次重生成结论。
验证:@build 0 错误 0 警告(Flash +156 B,RAM 无变化);pre-commit 13 钩子
全通过;审计 18 通过 / 1 警告 / 0 失败。
|
2026-09-29 09:16:19 +08:00 |
|
wandering1
|
67d26ac37a
|
修正 CubeMX 重生成防丢失机制:审计脚本实测有效,恢复 5 处被覆盖定制
第二次重生成验证了审计机制,并证伪了上一轮的一处假设:
- 审计脚本 check_cubemx_survival.py 准确检出全部 5 处覆盖(16 项中 5 FAIL),
机制有效;Src/main.c 复位原因锁存(USER CODE BEGIN Init 区)完好,
是"USER CODE 区有效"的正向证据。
- 关键发现:CubeMX 本次换了一代中断函数模板(旧 HardFault_Handler /
HardFault_Report 自造区 → 新函数体内 HardFault_IRQn 0 / W1_HardFault_IRQn 0),
"生成区之外的自造标记区"同样不被保留,旧假设被证伪。
恢复方案(第二次升级):
- stm32f4xx_it.c:报告实现迁入 USER CODE BEGIN 0(区名从未变过的标准保护位);
Handler 本体改为生成区整函数替换,用 #define HardFault_Handler
HardFault_Handler_Gen 把生成实体改名保留,链接器自动移除(.map 实证
Removing ... (2 bytes)),向量表指向手工 __asm 版(0x080001a1,18 字节)。
- iwdg.c:去掉 HAL_IWDG_Init() 调用,补 IWDG-DEFER-START-ANCHOR 锚点注释。
- FreeRTOSConfig.h:恢复 FREE_RTOS_CONFIG_HARDENING 块(两个加固宏)。
- freertos.c:补回两处任务栈中文注释(栈值未丢,.ioc 已同步)。
配套:
- check_cubemx_survival.py:hardfault-handler 改 wholefile + 锚点检查;
UNPROTECTED_LEGACY 清单更新。
- AGENTS.md:新增"CubeMX 换模板"与"ARMCC 内联汇编语法"两条铁律,
以及"uvprojx 被 Keil 自动改写不入库"条目。
- 看门狗设计说明.md:§10.1 补第二次重生成验证结论与模板换代发现,
§10.2 L2/L3 全面改写(自造区名不可依赖)。
验证:@build 0 错误 0 警告;pre-commit 13 钩子全通过;审计 16 通过 / 2 警告 / 0 失败。
|
2026-09-29 07:52:39 +08:00 |
|
wandering1
|
7a18d2ce28
|
加 CubeMX 重生成存活审计:防标记区外定制被静默覆盖
背景:.ioc 的 KeepUserCode 只保护 USER CODE 标记区,标记之外的手工改动
重生成即被覆盖,且多数不报编译错(2026-09-29 实测一次覆盖 4 处,含
HardFault_Handler 崩溃采集被打回空 while(1)、两个 FreeRTOS 加固宏被删)。
新增 scripts/check_cubemx_survival.py:
- 16 项易失清单(IWDG 延后启动 / 崩溃采集 / 栈溢出检测 / 堆失败钩子 /
断言改造 / 看门狗模块与工程挂载 / 复位原因锁存 / HAL 驱动与使能 /
.ioc 关键项),断言前剥掉 C 注释防误报
- 哈希基线漂移检测(.cubemx_survival_baseline.json),--write 重建
- 标记区外存量以 WARN 提示(3 个 Fault 处理函数、栈注释)
已挂 pre-commit cubemx-survival 钩子(改动 .ioc / Src / Inc /
task_watchdog / .uvprojx 时触发)。
文档:看门狗设计说明 §10.2 新增"重生成不丢的三层手段"方法论
(L1 写 .ioc > L2 搬进 USER CODE 区(可自造标记区)> L3 审计兜底)
及 .ioc / USER CODE 区可用位置 / 存量清单三张对照表;AGENTS.md 平台约束
新增该规则;pre-commit 使用说明 §2.12 新增钩子详解。
门禁:build 0 错误 0 警告;pre-commit 全通过。
|
2026-09-29 07:30:00 +08:00 |
|
wandering1
|
7feeea6c56
|
实现独立看门狗:CubeMX 配置 IWDG + 任务心跳位图,恢复三处被覆盖定制
经 CubeMX 图形界面启用 IWDG(Prescaler=64 / Reload=1249,标称 2498ms /
最坏 1701ms),并落地心跳位图判定、各任务埋点、RCC_CSR 复位原因上报与
configASSERT 改造。重生成覆盖的既有定制已全部恢复。
P0(开机死循环):HAL_IWDG_Init() 内部立即启动看门狗,而 CubeMX 把
MX_IWDG_Init() 插在 app_main_init() 之前——该段 NAND/RTC/ADC 初始化耗时
数秒无喂狗点,按 2.5s 超时必然复位。改 Src/iwdg.c 为只填参数不启动,
启动移交 task_wd_start(),由 defaultTask 在存储 bring-up 完成后调用。
恢复的三处定制(重生成覆盖):
- Src/stm32f4xx_it.c:HardFault_Handler 崩溃现场采集被打回空 while(1)
- Inc/FreeRTOSConfig.h:栈溢出检测与堆失败钩子两个宏被整块删除
- Src/freertos.c:三处任务栈实测记录中文注释丢失(数值未丢)
新增:
- App/util/task_watchdog.{c,h}:心跳位图 + 抽样判定 + IWDG 延后启动
- time_sync.c 长等待切片:net_recv_to 单次可睡满 30s 预算,切成 200ms 片
- Src/main.c 复位原因锁存(读后即清 RMVF,防残留误判)
埋点:defaultTask(唯一喂狗者)/ netTask(含 PHY 等待循环)/ uiTask /
timeSyncTask。ftpTask 首期剔除掩码,待二期改 lftpd。
门禁:build 0 错误 0 警告;pre-commit 10 钩子全通过;Flash +2956B / RAM +40B。
|
2026-09-29 07:22:04 +08:00 |
|
wandering1
|
e18e9f2cfd
|
新增看门狗设计说明:IWDG 选型与任务心跳位图方案
|
2026-09-29 06:46:27 +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
|
5c049daa7c
|
Net 阻塞模型文档销项修正 + 新增项目下一步任务规划
|
2026-09-26 14:15:56 +08:00 |
|
wandering1
|
22559365b9
|
整理 App 与 test 目录:按职责分子目录并同步全库引用
|
2026-09-26 12:52:39 +08:00 |
|
wandering1
|
39bd06adea
|
为自建代码目录补齐 README,建立目录级导航体系
- 新增 26 份目录 README:App/(+log,task,util,protocol)、Drivers/BSP/(+8子系统)、
Src/、Inc/、scripts/、tools/(+6子工具)、test/、MDK-ARM/、simulator/(+sim,tests)
- 每份含:定位、文件清单表、关键约束/陷阱、指向 docs 权威文档
- 第三方库与生成代码目录排除(CMSIS/HAL/Middlewares/Lib/SDL2)
- docs/文档规范.md 新增 §1.1b 代码目录 README 约定;根 README 目录结构加入说明
|
2026-09-26 12:25:36 +08:00 |
|
wandering1
|
8d86fb1149
|
登记簿完成即销项:待处理内容.md 删4项已闭环条目并清理全库引用
- 删 N-1/N-5/N-6/N-8(结论已沉淀于 Trap21/22/23 与 E-03,先验证后删)
- 同步清理 3 处外部引用(错误码传播审计、CH395F_Trap_Records、Net层阻塞模型)
- 文件头说明改写为「完成即销项,不保留已消化行」
- AGENTS.md 新增登记簿销项规定
|
2026-09-26 12:12:14 +08:00 |
|
wandering1
|
e1ae58b52b
|
CH395F 手册图片从外部图床迁回本地,18 张图编入版本库
|
2026-09-26 11:39:59 +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 |
|
wandering1
|
1b46e2a340
|
修复E-03:s_net_errno 改按任务隔离槽位,消除跨任务错误码错报
|
2026-09-25 19:17:18 +08:00 |
|
wandering1
|
c39ff11bb9
|
Trap 23: 4个可复用台架探针迁入MDK-ARM/bench_diag/并提交,10个一次性甄别脚本已删除
|
2026-09-25 05:38: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
|
d0cbeb6b5b
|
控制台日志实现迁出HAL生成文件至App/log并新增设计说明;defaultTask任务体迁至App/task,freertos.c恢复纯CubeMX接线形态
|
2026-09-25 01:32:09 +08:00 |
|
wandering1
|
b09e1c1ee5
|
新增BSD_Socket_API函数调用关系与设计说明:总体调用图、各函数设计作用、端到端时序、设计铁律,使用指南补伴读指引
|
2026-09-24 14:24:20 +08:00 |
|
wandering1
|
70bc4966c7
|
更新BSD_Socket_API使用指南至现状:新增net_recv_to/net_relisten/对账等新增机制,§3.6/§11.2/§12.10
|
2026-09-23 12:09:27 +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
|
5a41b966fc
|
新增Trap23:上传中止后首笔复连上传被静默截断(2048B)并误报成功,可信复现15/15,N-8待修
|
2026-09-23 01:10:37 +08:00 |
|
wandering1
|
0e6efb44a3
|
可信复现首轮:真实FTP生产路径177轮全过(SHA-256全匹配)+并发UI 600帧,未复现冻结
|
2026-09-23 01:06:19 +08:00 |
|
wandering1
|
685a860635
|
撤回Trap21精确定位轮冻结结论(台架假象:分类器误判+固件读者吞噬数据),N-7暂不实施
|
2026-09-23 00:54:00 +08:00 |
|
wandering1
|
563584744d
|
共用中转槽方案定案:+3KB(数据筐2KB+单槽),Trap21图解与N-7同步
|
2026-09-23 00:28:15 +08:00 |
|
wandering1
|
49458048fd
|
新增Trap21机制图解文档:读必读空方案、5处读路径落点与RAM账,N-7细化
|
2026-09-23 00:17:35 +08:00 |
|
wandering1
|
cca3b60d64
|
Trap21定案部分窗口重通告机制:N-7改非阻塞RX读强制排空至空,netcmd日志入库
|
2026-09-23 00:07:45 +08:00 |
|
wandering1
|
a5a14e5fe8
|
Trap 21 主因定案:排空后50-100ms内第二条RX命令(剂量台架证伪满态时长说);新增N-7排空后RX守卫方案、指南最小复现配方
|
2026-09-22 21:21:05 +08:00 |
|
wandering1
|
1a872b05bc
|
Trap 21 触发模型修订为三因子(2×2 台架实证);新增 Trap 22 快速重连监听死亡与 N-6 待办、604 复现/对照规则
|
2026-09-22 20:20:58 +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
|
7ff2958b3b
|
L3 pending化文档闭环:E-02审计两阶段闭环+演进方案§6.7实施记录+M3基线重锁(pending构建)+待处理内容.md建立(台架A/B归因)
|
2026-09-22 17:50:05 +08:00 |
|
wandering1
|
954a145c4a
|
E-02配套调研留档:Net层阻塞模型五类业界模式对照与pending演进方案利弊/改动量/验证门禁
|
2026-09-22 15:35:37 +08:00 |
|
wandering1
|
0cacdec598
|
E-02审计闭环:timeSync分片修复留档(4a1605b台架A/B 28.6s→109ms)与E-02专项回归探针
|
2026-09-22 13:17:44 +08:00 |
|
wandering1
|
894b51feb3
|
移除 P0-a 验收探针(台架验收完成),开机省去 60ms 状态轮询与证据行
|
2026-09-22 12:03:11 +08:00 |
|
wandering1
|
4ffc097218
|
芯片手册图片补充
|
2026-09-22 11:42:10 +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
|
4b78e0d36c
|
D20调查记录修正:提交前日志复核确认成败差异为首次accept与延迟DISCONNECT事件的竞态(未改代码)
|
2026-09-22 06:15:57 +08:00 |
|
wandering1
|
e5733b3454
|
链路时延M1-M3收尾:Phase12-14基线与生产路径Δ实测、D10/E-02/D17修复、D20定位与硬化、文档整理
|
2026-09-22 06:12:40 +08:00 |
|
wandering1
|
ac48c6d716
|
E-01审计闭环:修复留档(d030cb0/70f1cc8台架验证全记录)与配置引擎超长契约同步
|
2026-09-22 01:37:13 +08:00 |
|
wandering1
|
c3f424abc0
|
E-31回归留档:产品固件台架验证PASS(@test闭环+既有卷resume+配置保留+全片回读一致)
|
2026-09-21 19:23:25 +08:00 |
|