docs(cfg): 配置设计档重写为现状版,删除旧二进制档叙述

原「配置文件设计说明.md」是 2026-09 的规划文档(P1~P8 实施计划、D1~D15
决策表、差距调研、模块清单动作列、已终结的开放问题),与现在跑的系统
已有明显出入。改写成只描述当前状态的「配置文件设计.md」。

新文档 9 节:概览 / 文件格式(路径与容量、语法、出厂模板原文、值类型)/
运行时机制(上电加载、外科手术式保存、2s 轮询与沉降、视图一致性守卫、
写者归属)/ 段与键表(8 段全满、注册顺序、接入新段模板、段回调)/
接口(引擎 API、平台后端)/ 内存占用(编译期钉死的 9217B 暂存)/
异常与恢复 / 双端差异 / 已知限制。

顺带修正一处事实错误:旧文档称 FTP STOR 是「写 .TMP 再 rename 原子更新」,
实际 lftpd receive_file 是原地覆写,已按代码现状改写。

旧二进制档(NCFG)的叙述按裁定从全仓移除:文档只描述当前状态,不再
交代旧版本兼容性。删掉网络配置说明 §3.2 整节(后续小节重排为 3.2~3.5),
并清理 README / 架构总览 / 产品需求 / 部署环境等 11 处同类叙述。

同步:
- 8 段注册、FTP 原地覆写、2s FAT mtime 粒度等数据更新进配置分层架构图,
  重跑后与生成器逐字节一致,check_generated_fresh 里这条存量基线下架
- 全仓 24 处引用改用新文档名,旧节号逐条映射到新节号
- 文档规范 §7.1 变更记录例外名单 4 篇减为 3 篇(该档实际无变更记录表)

验证:48 个提交期钩子全通过;Keil 构建 0 错误 0 警告;
check_doc_links / check_mermaid / check_generated_fresh 均通过。
This commit is contained in:
2026-11-15 20:55:04 +08:00
parent 26293f5054
commit 007f6a0e2f
41 changed files with 501 additions and 719 deletions
+2 -2
View File
@@ -9,7 +9,7 @@
|---|---|
| `net_cfg.c/h` | 网络配置加载(`net_cfg_load`)/ 保存(`net_cfg_save_run`)+ RAM 副本管理 |
> **已删除(2026-10-10)**:`net_cfg_legacy.c/h`——旧二进制档 `/cfg/netcfg.bin` 的"首启自动迁移"。
> **已删除(2026-10-10)**:`net_cfg_legacy.c/h`——旧二进制档的"首启自动迁移"。
> 现口径:旧档若存在则被**忽略**(不读、不删、不迁移),配置直接回落工厂默认(`/config.ini`
> `[network]` 段)。删除理由:该一次性路径把整条配置写链(`net_cfg_save → cfg_file_save →
> cfg_store_write_atomic → f_rename → FatFS → dhara FTL`)挂进启动期调用图,使 defaultTask 的
@@ -37,5 +37,5 @@ netTask 消费 SYS_EVT_NET_RECONFIG → 立即重建网络(新 IP 免重启生
## 相关文档
- `docs/子系统设计/网络配置说明.md` — 网口设置页与即时生效机制
- `docs/子系统设计/配置文件设计说明.md` — 配置引擎
- `docs/子系统设计/配置文件设计.md` — 配置引擎
- `docs/架构设计/项目启动顺序管理.md` — 就绪屏障
+6 -6
View File
@@ -8,14 +8,14 @@
* 创建日期:2026-09-10
* 修改记录:
* v1.0 2026-09-10 王建锋 创建初始版本
* v1.1 2026-09-14 王建锋 存储迁移至 cfg_file 引擎(INI);旧 NCFG 代码移至 net_cfg_legacy
* v1.1 2026-09-14 王建锋 存储迁移至 cfg_file 引擎(INI);旧二进制档代码移至 net_cfg_legacy
* v1.2 2026-09-15 王建锋 保存改跨任务交接(request/state/run + 通知回调);
* 引擎属主 = defaultTask(竞态修复)
* v1.3 2026-10-10 王建锋 **删除旧档 NCFG 迁移**(net_cfg_legacy 整体移除):该兼容
* v1.3 2026-10-10 王建锋 **删除旧档迁移**(net_cfg_legacy 整体移除):该兼容
* 路径把整条配置写链(net_cfg_save → cfg_file_save →
* cfg_store_write_atomic → f_rename → FTL)挂进启动期调用图,
* 使 defaultTask 静态最坏链 +600 B;本仓库无携带
* /cfg/netcfg.bin 的设备,故按"不保留旧档兼容"处置。
* 使 defaultTask 静态最坏链 +600 B;本仓库无携带旧二进制档
* 的设备,故按"不保留旧档兼容"处置。
* 旧档若存在 → 被忽略(不读、不删、不迁移),配置回落工厂默认
*/
@@ -194,8 +194,8 @@ int net_cfg_load(void) {
ftp_cfg_register();
s_sntp_register();
/* 旧档 NCFG 迁移已于 2026-10-10 删除(net_cfg_legacy 移除;理由见文件头 v1.3)。
* 若卷上仍残留 /cfg/netcfg.bin:不读、不删、不迁移 → 配置回落工厂默认 */
/* 旧档迁移已于 2026-10-10 删除(net_cfg_legacy 移除;理由见文件头 v1.3)。
* 若卷上仍残留旧格式文件:不读、不删、不迁移 → 配置回落工厂默认 */
if (cfg_file_load() != 0) {
/* 严重错误:引擎已将 RAM 副本复位工厂默认,行为仍安全 */
DBG_ERROR("load: cfg_file_load FAIL");
+3 -3
View File
@@ -7,8 +7,8 @@
* = 不覆盖芯片内置 MAC。cfg_file 引擎为静态单任务设计,调用收敛于
* 单一属主任务(MCU = defaultTask:就绪屏障前加载 / 保存执行 / 2s
* poll;模拟器 = 主循环);UI 保存只投递请求,netTask 只读 RAM 副本
* 函数说明:旧版 NCFG 二进制格式(magic+ver+CRC-16+18B 字段)的迁移路径
* (net_cfg_legacy)**已于 2026-10-10 删除** → 旧档 /cfg/netcfg.bin
* 函数说明:旧版二进制格式(magic+ver+CRC-16+18B 字段)的迁移路径
* (net_cfg_legacy)**已于 2026-10-10 删除** → 旧二进制档
* 不再读取/迁移,携带旧档的设备升级后回落工厂默认(理由见 net_cfg.c v1.3)
* 适用平台:STM32F407ZGTx / PC 模拟器(两端共用)
* 作者:王建锋
@@ -50,7 +50,7 @@ typedef struct {
* SYS_EVT_STORAGE_READY 前;模拟器 = 主循环启动期);文件读失败
* 自动回退工厂默认(不阻塞网络启动)
* 函数说明: 1. 注册 [network] 段(幂等)
* 2. 文件缺失 → 先迁旧档 NCFG(有效 → 旧值物化进新文件),否则
* 2. 文件缺失 → 先迁旧档(有效 → 旧值物化进新文件),否则
* 生成出厂模板
* 3. 解析文件:有效键 → RAM 副本;无效/缺失键 → 工厂默认并留痕
* 4. 严重错误 → RAM 副本 = 工厂默认(不让坏配置带崩网络)
+1 -1
View File
@@ -13,7 +13,7 @@
| `SD2506/` | SD2506 RTC | I2C | 实时时钟驱动 | `docs/问题记录/SD2506_Trap_Records.md` |
| `RS485/` | RS-485 半双工 | UART5 | 收发方向控制(DE 引脚)+ 时序 | — |
| `NET/` | BSD Socket 网络抽象层 | — | Socket API + select + 轻量 FTP 服务器 | `docs/网络/`(含 `Net层阻塞模型架构设计.md`) |
| `NETCFG/` | 网络配置 | — | `/config.ini` 网络段的加载/保存(旧 NCFG 档已删除,2026-10-10) | `docs/子系统设计/网络配置说明.md` |
| `NETCFG/` | 网络配置 | — | `/config.ini` 网络段的加载/保存 | `docs/子系统设计/网络配置说明.md` |
| `UI/` | LVGL UI 组件 | — | 菜单/内容页/组件/中文字体 | `docs/UI设计/` |
## 根级文件