# 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`——旧二进制档 `/cfg/netcfg.bin` 的"首启自动迁移"。 > 现口径:旧档若存在则被**忽略**(不读、不删、不迁移),配置直接回落工厂默认(`/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` — 就绪屏障