007f6a0e2f
原「配置文件设计说明.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 均通过。
1.9 KiB
1.9 KiB
Drivers/BSP/NETCFG/ — 网络配置
网络参数的加载 / 保存(IP、掩码、网关等)。 本模块是网络配置的持久化层,与
App/cfg/cfg_file.c(配置引擎)配合工作。
文件一览
| 文件 | 作用 |
|---|---|
net_cfg.c/h |
网络配置加载(net_cfg_load)/ 保存(net_cfg_save_run)+ RAM 副本管理 |
已删除(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 的 armlink 静态最坏栈链 +600 B,而本仓库不存在携带旧档的设备。
工作流
defaultTask:net_cfg_load → 置 STORAGE_READY
↓ (网络配置在屏障前已加载)
netTask:只读 RAM 副本 → net_stack_bring_up(不在 netTask 里读盘)
↓
UI 改配置 → SYS_EVT_CFG_SAVE 事件 → defaultTask 执行 net_cfg_save_run + cfg_file_poll
↓
netTask 消费 SYS_EVT_NET_RECONFIG → 立即重建网络(新 IP 免重启生效)
⚠️ 约束
- 网络配置在
STORAGE_READY屏障之前由 defaultTask 加载完毕,netTask 只读 RAM 副本 - UI 保存请求经
SYS_EVT_CFG_SAVE事件交由 defaultTask(配置引擎属主)执行, netTask/uiTask 不得直接触碰配置引擎(cfg_file是静态态、单任务收敛) - 网络代次号(generation)用于各 TCP 服务判断是否需重建监听
相关文档
docs/子系统设计/网络配置说明.md— 网口设置页与即时生效机制docs/子系统设计/配置文件设计.md— 配置引擎docs/架构设计/项目启动顺序管理.md— 就绪屏障