From d3107f374f8270fd95a5008dbc0e996bf31b3ccf Mon Sep 17 00:00:00 2001 From: Wanderingss <1624155937@qq.com> Date: Mon, 12 Oct 2026 13:42:47 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E5=BE=85=E5=A4=84=E7=90=86=E5=86=85?= =?UTF-8?q?=E5=AE=B9.md=20=E8=A7=A3=E8=80=A6=E4=B8=BA=20docs/=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E8=A7=84=E5=88=92/=20=E6=96=87=E4=BB=B6=E5=A4=B9?= =?UTF-8?q?=EF=BC=88README=20=E6=8E=92=E5=BA=8F=E6=9D=83=E5=A8=81=20+=206?= =?UTF-8?q?=20=E4=B8=AA=E8=81=8C=E8=B4=A3=E5=8D=95=E4=B8=80=E6=96=87?= =?UTF-8?q?=E4=BB=B6=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - rename_ref.py 搬迁:git mv + 全库引用改写 33 文件 82 处 - README.md 保留 §0 编号空间 / §1 未闭环一览 / §2 推进顺序权威 / §3 维护约定 - 拆出 6 文件:W1-采集保护收尾(任务卡五字段)、排期详述、暂缓-RS485、 登记簿、测试与架构专项、基线与待确认 - 外部引用重定位 ~50 处:裸「登记簿 §X」、§5.1→基线与待确认 §2.1、 §2.4→暂缓-RS485、§6→基线与待确认 §3、脚本注释 T-x/N-x→登记簿 - 新增并行写纪律:任务分支不改本文件夹,状态列由 Lead 主工作树更新 - 验证:doc-links 141 文档全绿;mem-numbers 一致;refgraph 重生成; @build 0 错误 0 警告;新文件无 BOM / LF / 零乱码 --- .dsh/skills/task-worktree/SKILL.md | 2 +- .pre-commit-config.yaml | 2 +- AGENTS.md | 6 +- App/app/app_cfg.h | 2 +- App/log/console_log.c | 2 +- App/protocol/iec104/iec104_asdu.h | 2 +- App/task/rs485_task.c | 2 +- App/util/README.md | 2 +- Drivers/BSP/NET/README.md | 4 +- README.md | 4 +- docs/README.md | 8 +- docs/UI设计/UI_设计架构.md | 2 +- docs/images/引用关系图.dot | 203 + docs/images/引用关系图.json | 1484 +++- docs/images/引用关系图.svg | 7522 +++++++++++-------- docs/images/引用关系图_模块.dot | 60 +- docs/images/引用关系图_模块.svg | 1426 ++-- docs/产品需求/产品需求设计文档.md | 6 +- docs/代码规范/pre-commit使用说明.md | 2 +- docs/任务规划/README.md | 137 + docs/任务规划/W1-采集保护收尾.md | 68 + docs/任务规划/基线与待确认.md | 93 + docs/任务规划/排期详述.md | 26 + docs/任务规划/暂缓-RS485.md | 12 + docs/任务规划/测试与架构专项.md | 97 + docs/任务规划/登记簿.md | 53 + docs/内存管理/RAM使用分析与优化方案.md | 2 +- docs/内存管理/RAM预算台账.md | 4 +- docs/子系统设计/ADC采样节拍设计说明.md | 2 +- docs/子系统设计/IEC104上行设计说明.md | 4 +- docs/子系统设计/控制台单写者日志设计说明.md | 4 +- docs/子系统设计/看门狗设计说明.md | 2 +- docs/待处理内容.md | 409 - docs/文档规范.md | 2 +- docs/测试说明/boot_log_data/README.md | 4 +- docs/测试说明/实机测试实施指南.md | 12 +- docs/测试说明/时间同步单元测试说明.md | 2 +- docs/测试说明/模拟器差距清单.md | 2 +- docs/测试说明/测试开发标准流程.md | 4 +- docs/测试说明/链路延迟测试说明.md | 2 +- docs/环境与部署/CI配置指南.md | 2 +- docs/环境与部署/并行任务工作树方案.md | 31 +- docs/环境与部署/项目部署环境要求.md | 2 +- docs/算法/继电保护功能复现规划.md | 4 +- docs/网络/Net层阻塞模型架构设计.md | 6 +- docs/问题记录/CH395F_Trap_Records.md | 2 +- docs/问题记录/错误码传播审计.md | 4 +- docs/问题记录/项目审查与优化建议报告.md | 20 +- scripts/check_registration.py | 2 +- scripts/check_test_suite.py | 2 +- scripts/ram_baseline.py | 4 +- test/host/common/unit_test_harness.py | 2 +- test/host/time_sync/run_unit_test.py | 2 +- test/host/watchdog/run_unit_test.py | 2 +- test/run_all_suites.py | 2 +- 55 files changed, 7366 insertions(+), 4403 deletions(-) create mode 100644 docs/任务规划/README.md create mode 100644 docs/任务规划/W1-采集保护收尾.md create mode 100644 docs/任务规划/基线与待确认.md create mode 100644 docs/任务规划/排期详述.md create mode 100644 docs/任务规划/暂缓-RS485.md create mode 100644 docs/任务规划/测试与架构专项.md create mode 100644 docs/任务规划/登记簿.md delete mode 100644 docs/待处理内容.md diff --git a/.dsh/skills/task-worktree/SKILL.md b/.dsh/skills/task-worktree/SKILL.md index 3ec5084e..7fc10574 100644 --- a/.dsh/skills/task-worktree/SKILL.md +++ b/.dsh/skills/task-worktree/SKILL.md @@ -57,7 +57,7 @@ whenToUse: 要同时推进多个任务、担心同分支同文档互相冲突; 2. **`done` 不 push**。它结束于本地合入 + 门禁全绿;推送需用户明确许可(项目既有纪律)。 3. **`build` 与 `bench` 都必须持锁**:UV4 不能两个实例同时 `-b`;串口 COM6、ST-LINK、 设备 IP `192.168.1.100` 各只有一份。**构建与烧录都不可并发。** -4. **单写者文档**:`docs/待处理内容.md`、`AGENTS.md` 的任务表块、`MDK-ARM/*.uvprojx`、 +4. **单写者文档**:`docs/任务规划/`(整个文件夹)、`AGENTS.md` 的任务表块、`MDK-ARM/*.uvprojx`、 `.pre-commit-config.yaml`、内存快照 —— 任务期**不在任务工作树里改**,留到 `done` 统一处理。 5. **清场必须先摘联接**:脚本会先 `os.rmdir` 掉 `.venv` / `simulator/SDL2` 联接再 `git worktree remove`。**手工清场时千万别直接 `git worktree remove`**——git 可能递归进联接, diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 6e7a90e3..8aceebb4 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -397,7 +397,7 @@ repos: # TEST_SUITE_CH395F 就是开启状态(.map 含 34 处 test 代码),即仓库里 # 躺着的是测试固件。本钩子抓这个静默漏网:默认要求产品构建,跑套件回归 # 确需提交测试构建时用 `--allow-test-build` / ALLOW_TEST_BUILD=1 显式放行。 - # 详见 docs/待处理内容.md T-1 + # 详见 docs/任务规划/登记簿.md T-1 - id: test-suite-switch name: 测试套件开关=产品构建 entry: python scripts/check_test_suite.py diff --git a/AGENTS.md b/AGENTS.md index df7607b2..c46a9c43 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -10,7 +10,7 @@ ## 项目概况 -**现状一句话**:平台能力(网络 / 存储 / 时间 / UI / 日志 / 看门狗 / FTP / 配置)**已实现并台架验收**;采集主线已闭环到业务消费者(L1→L2 相量→L3 保护判据 protectTask→104 遥信,B5);**RS-485 采集尚未接线**(B2 按用户决策冻结,见登记簿 §2.4)——当前最大功能缺口,接线节奏受 E-59 门禁约束(见「平台约束」)。 +**现状一句话**:平台能力(网络 / 存储 / 时间 / UI / 日志 / 看门狗 / FTP / 配置)**已实现并台架验收**;采集主线已闭环到业务消费者(L1→L2 相量→L3 保护判据 protectTask→104 遥信,B5);**RS-485 采集尚未接线**(B2 按用户决策冻结,见 `docs/任务规划/暂缓-RS485.md`)——当前最大功能缺口,接线节奏受 E-59 门禁约束(见「平台约束」)。 **数据主线**(能力视角;分层图与跨层依赖表 → `docs/架构设计/项目架构总览.md`): @@ -150,7 +150,7 @@ ## 文档与图形 -- **登记簿类文档「完成即销项」**:`docs/待处理内容.md` 这类待办登记簿,事项修复/关闭后**直接从表中删除该行**(不保留"已消化"行)——结论与证据应已沉淀进对应模块文档/问题记录。销项时必须:① 先核对目标文档确已含完整记录 ② 同步清理其他文档对该编号的引用 ③ 改完跑 `check_doc_links.py --all` + pre-commit +- **登记簿类文档「完成即销项」**:`docs/任务规划/README.md` 这类待办登记簿,事项修复/关闭后**直接从表中删除该行**(不保留"已消化"行)——结论与证据应已沉淀进对应模块文档/问题记录。销项时必须:① 先核对目标文档确已含完整记录 ② 同步清理其他文档对该编号的引用 ③ 改完跑 `check_doc_links.py --all` + pre-commit - 图形走 **`draw-diagram` skill**:精确布局图用 `tools/arch_diagram/gen_*.py` 生成器(产物放 `docs/images/`,脚本与 .svg 一并提交);拓扑图用 Mermaid;**勿手绘 ASCII 框图**。文件引用关系图走 `tools/refgraph`(`& 'tools\refgraph\gen_refgraph.bat'`) - **改名 / 挪目录一律走 `scripts/rename_ref.py`(先 dry-run,确认后 `--apply`)**:`git mv` + 自动改写全库引用(反引号引用 / Markdown 链接 / 图片 `../` 层级换算 / `#include` / `uvprojx` `` / `CMakeLists.txt`),落盘后自动跑 `check_doc_links --all` 复核——手工扫引用既慢又漏(一次改名历史上波及 10~30 文件)。引用章节用「`路径.md` §N.M」**紧邻写法**(`doc-links` 校验编号是否还在:紧邻/裸名/前缀/别名/自引用**全部拦提交**(钩子带 `--sections-strict`);每次跑打印「可判定比例」,`--section-todo` 出待改清单,昵称歧义就登记 `scripts/section_aliases.json` 或写清楚)→ `docs/文档规范.md` §3.5 / §3.6 - 文档写作规范(编码/BOM/链接/表格/一致性钩子)→ `docs/文档规范.md`;全量索引与推荐阅读顺序 → `docs/README.md` @@ -178,6 +178,6 @@ | 烧录与复位语义 | `docs/测试说明/ST-LINK_CLI_复位使用说明.md` | | 串口助手 | **`serial-assistant` skill**(命令/判据/陷阱,用到自动加载)、`docs/测试说明/串口助手使用指南.md`、`串口助手设计说明.md` | | UI 架构 / 模拟器 / UI 自动化回归 | **`lvgl-simulator` skill**(构建/自检/报错速查,用到自动加载)、`docs/UI设计/UI_设计架构.md`、`LVGL模拟器部署与使用说明.md`、`UI_自动化测试流程.md`;UI 改动回归走 **`ui-verify` skill** | -| 待办与审计发现登记簿 | `docs/待处理内容.md` | +| 待办与审计发现登记簿 | `docs/任务规划/README.md` | | 多任务并行开发(开空间 / 合并回收 / 台架与构建排队) | **`task-worktree` skill**(`@task`,用到自动加载)、`docs/环境与部署/并行任务工作树方案.md` | | 换机 / 工具路径环境变量 / CI | `docs/环境与部署/` | diff --git a/App/app/app_cfg.h b/App/app/app_cfg.h index c7464ff5..2c880253 100644 --- a/App/app/app_cfg.h +++ b/App/app/app_cfg.h @@ -10,7 +10,7 @@ * 零代码引用(grep 仅本文件有定义)——"开关名存实亡"会 * 误导评审者以为模块可裁剪。现如实标注为**预留占位**: * 当前**不门控任何代码**,各模块一律编译进产品。是否/ - * 如何接线取决于产品定义(待处理内容.md §2 阶段 B0), + * 如何接线取决于产品定义(docs/任务规划/README.md §2 阶段 B0), * 确认后再在真实初始化点(如 app_main.c 的 rs485_init / * tpafe5160_init)加门控;在此之前**不要**把它们当开关用。 */ diff --git a/App/log/console_log.c b/App/log/console_log.c index 8836d021..994a9c43 100644 --- a/App/log/console_log.c +++ b/App/log/console_log.c @@ -16,7 +16,7 @@ * 无 stall 日志,纯节奏性饥饿)。修复:发送故障后立即结束本轮 * drain 并进入 300ms 发送冷却(冷却期内 drain 直接让位主循环), * 保证喂狗节奏 ≤ ~300ms。根治(USART1 TX-only 灭 ORE 机制) - * 另行推进(.ioc 结构性修改 + CubeMX 重生成,见待处理内容①)。 + * 另行推进(.ioc 结构性修改 + CubeMX 重生成,见 docs/任务规划/登记簿.md S-3)。 * 2026-10-02 王建锋 round 8b 加固:发送超时判据改用 DWT CYCCNT(时间源无关)。 * 台架 round 8a 取证(见 docs/子系统设计/看门狗设计说明.md 2026-10-02 变更记录)定位到:defaultTask * 冻结在 console 突发行内、无 STALL、复位为 IWDGRSTF。唯一自洽机理 = diff --git a/App/protocol/iec104/iec104_asdu.h b/App/protocol/iec104/iec104_asdu.h index 492b9c2d..7f47d631 100644 --- a/App/protocol/iec104/iec104_asdu.h +++ b/App/protocol/iec104/iec104_asdu.h @@ -10,7 +10,7 @@ * 帧结构(本层只管 ASDU,APCI 6 字节头归 iec104_link): * [type 1B][vsq 1B][cot 2B][ca 2B]( [ioa 3B][元素...] )*n * 多信息体地址对象(SQ=0)每对象带独立 IOA;顺序对象(SQ=1)单 IOA + n 元素。 - * 创建日期:2026-10-12(B4,登记簿 §2.1 W1) + * 创建日期:2026-10-12(B4,W1 功能主线,登记簿见 docs/任务规划/) */ #ifndef IEC104_ASDU_H #define IEC104_ASDU_H diff --git a/App/task/rs485_task.c b/App/task/rs485_task.c index 36961be7..494561bd 100644 --- a/App/task/rs485_task.c +++ b/App/task/rs485_task.c @@ -2,7 +2,7 @@ * 模块名称:RS485 Communication Task * 模块功能:RS-485 轮询收发、协议帧解析与响应 * 状态说明:**预留桩(未启用)**——采集/协议链路尚未实现,产品定义未定 - * (见 docs/待处理内容.md 阶段 B0/B2)。当前 init/func 为空实现, + * (见 docs/任务规划/暂缓-RS485.md,B2 暂缓)。当前 init/func 为空实现, * 不收发、不解析。 * 适用平台:STM32F407ZGTx * 作者:王建锋 diff --git a/App/util/README.md b/App/util/README.md index 93e94ac0..69a164b8 100644 --- a/App/util/README.md +++ b/App/util/README.md @@ -13,7 +13,7 @@ > 两模块**零调用者**且未编入任何构建——CRC 从未被链接使用:名义上的关联点 `net_cfg_legacy.c` > (旧档 `/cfg/netcfg.bin` 迁移,**该文件亦已于 2026-10-10 删除**)自带静态 `s_crc16_modbus()`, > 从不调用本模块;环形缓冲由 `App/log/console_log.c` 内联实现(`s_con_ring`)。 -> 保留只会造成"有统一实现"的误导,故整体移除(详见 `docs/待处理内容.md` E-15 销项)。 +> 保留只会造成"有统一实现"的误导,故整体移除(详见 `docs/任务规划/排期详述.md` E-15(C5))。 ## 设计要点 diff --git a/Drivers/BSP/NET/README.md b/Drivers/BSP/NET/README.md index 7aa85a2b..90423db7 100644 --- a/Drivers/BSP/NET/README.md +++ b/Drivers/BSP/NET/README.md @@ -18,7 +18,7 @@ ### 阻塞模型(L3 pending) - 一期(RECV)已落地:`net_recv` 等支持带超时的阻塞(`pending` 挂起 + tick 唤醒) -- 二期(ACCEPT + SEND)待做 → `docs/待处理内容.md` N-4 +- 二期(ACCEPT + SEND)待做 → `docs/任务规划/登记簿.md` N-4 ### 周期对账自愈(Trap 22 修复) @@ -61,5 +61,5 @@ - 上层用法:`docs/网络/BSD_Socket_API_使用指南.md` - 内部调用关系:`docs/网络/BSD_Socket_API_函数调用关系.md` - 架构设计:`docs/网络/Net层阻塞模型架构设计.md`(阻塞等待 / pending 请求模型) -- 二期设计基线:`docs/待处理内容.md` §5.1 +- 二期设计基线:`docs/任务规划/基线与待确认.md` §2.1 - 测试:`docs/测试说明/CH395F_Test_Guide.md`、`docs/测试说明/FTP_Test_Guide.md` diff --git a/README.md b/README.md index 86bf7dd5..13436d06 100644 --- a/README.md +++ b/README.md @@ -81,7 +81,7 @@ main.c > 上表与 `Src/freertos.c` 的 `osThreadAttr_t` 一致(2026-09-25 校准);改动栈大小前先读 -> `docs/内存管理/RAM使用分析与优化方案.md` 的定栈规则与 `docs/待处理内容.md` 的内存预算项。 +> `docs/内存管理/RAM使用分析与优化方案.md` 的定栈规则与 `docs/任务规划/基线与待确认.md` 的内存预算项。 ### 任务启动顺序管理 @@ -165,7 +165,7 @@ STM32F4-Base/ │ └── time_sync_server.py # 时间同步推送服务 ├── docs/ # 项目文档(全量索引见 docs/README.md) │ ├── README.md # 文档索引:目录结构 + 推荐阅读顺序 + 全量清单 -│ ├── 待处理内容.md # 统一待办登记簿 +│ ├── 任务规划/ # 统一待办登记簿(README 排序权威 + 拆分文件) │ ├── 架构设计/ # 项目架构总览 / 存储架构 / 启动顺序 / 配图流程 / 引用关系图 │ ├── 子系统设计/ # 配置 / 网络 / 墙钟 / 日志 / 运行自检记录 设计说明 │ ├── 网络/ # BSD Socket API 使用指南 + 内部函数调用关系 diff --git a/docs/README.md b/docs/README.md index 659cecbd..cca2ac08 100644 --- a/docs/README.md +++ b/docs/README.md @@ -11,7 +11,7 @@ ``` docs/ ├── README.md 本索引(阅读顺序 + 全量清单) -├── 待处理内容.md 统一待办登记簿(高频入口,保留在顶层) +├── 任务规划/ 统一待办登记簿(README 排序权威 + 6 个拆分文件) ├── 产品需求/ 产品需求设计文档(面向产品的需求基线) ├── 架构设计/ 全局架构与设计方法论 ├── 子系统设计/ 各功能子系统的设计说明 @@ -53,7 +53,7 @@ docs/ - **应用/驱动开发** → §4 架构设计 → §5 子系统设计 → §7 问题记录(**改驱动前必读对应 Trap Records**) - **测试/验证** → §6 测试说明 → §9.2 环境与部署 - **UI 开发** → §8 UI 设计 → §6 测试说明(串口助手、UI 自动化测试流程) -- **接手/评审** → §9.1 评审报告 → §9.3 待处理内容(统一待办登记簿) +- **接手/评审** → §9.1 评审报告 → §9.3 任务规划(统一待办登记簿,见 `任务规划/README.md`) --- @@ -213,7 +213,7 @@ docs/ | 文档 | 内容 | |---|---| -| [`问题记录/项目审查与优化建议报告.md`](问题记录/项目审查与优化建议报告.md) | 项目全景审查:文档/代码/架构/可靠性问题清单(未闭环项:D-1、N-xx、Px-xx;**已修复项按「修复即销项」删除**,去处见其变更记录)——**体系层评审报告,非待办池**(待办见 §9.3 `待处理内容.md`) | +| [`问题记录/项目审查与优化建议报告.md`](问题记录/项目审查与优化建议报告.md) | 项目全景审查:文档/代码/架构/可靠性问题清单(未闭环项:D-1、N-xx、Px-xx;**已修复项按「修复即销项」删除**,去处见其变更记录)——**体系层评审报告,非待办池**(待办见 `任务规划/README.md`) | ### 9.2 环境与部署 @@ -226,7 +226,7 @@ docs/ | 位置 | 内容 | |---|---| -| [`待处理内容.md`](待处理内容.md) | **统一待办登记簿**——审计缺陷(P-x)+ 台架/审计观察(N/S/T-x)+ 测试与架构专项(S1x/A-x)+ 任务排序(阶段 A/B/C/D)+ 诊断基线;只保留未闭环项,完成即删 | +| [`任务规划/`](任务规划/README.md) | **统一待办登记簿(文件夹)**——`README.md` = 排序权威(波次 W1~W7)+ 编号空间 + 维护约定;`W1-采集保护收尾.md` = 当前波次任务卡(里程碑 × 并行道 × 五字段);`登记簿.md` = N/S/T-x 长期观察;`排期详述.md` / `暂缓-RS485.md` / `测试与架构专项.md` / `基线与待确认.md` = 波内详表 / 冻结簇 / 专项 / 基线;只保留未闭环项,完成即删 | | `硬件平台/` | 网表详细分析报告与语义图(V0.0 / V0.1);**[`ADC通道映射说明.md`](硬件平台/ADC通道映射说明.md)——V0.1 十七路 ADC 语义/网名/通道号权威映射表(固件取数、UI 显示、自检注入以此为准)** | | `芯片手册/` | 外部芯片数据手册转录(CH395F / GD5F2GQ5UE / SD2506 / TPAFE5160 / RTL8305NBI 等) | | `images/` | 文档技术配图(`.svg` 产物,由 `tools/arch_diagram/`、`tools/refgraph/` 生成) | diff --git a/docs/UI设计/UI_设计架构.md b/docs/UI设计/UI_设计架构.md index 7cbee291..0795abe7 100644 --- a/docs/UI设计/UI_设计架构.md +++ b/docs/UI设计/UI_设计架构.md @@ -43,7 +43,7 @@ MCU **无物理屏幕**:LVGL 做 160×160 **1bpp 单色离屏渲染**,帧缓 ### 1.4 硬约束(改 UI 必须遵守) -1. **RAM 紧张**:新增页面/控件/缓冲前必须核算 LVGL 池(40KB)与任务栈余量(见 `待处理内容.md`) +1. **RAM 紧张**:新增页面/控件/缓冲前必须核算 LVGL 池(40KB)与任务栈余量(见 `docs/任务规划/基线与待确认.md` §4 内存预算) 2. **新增汉字必须重新生成字体**(`tools/font_gen/` 两步),否则显示空白 3. 文本一律用静态字符串(`lv_label_set_text_static`),不 strdup 4. UI 相关文件为 **UTF-8 带 BOM**(`Drivers/BSP/UI/*`、`ui_task.c`、`Lib/lv_conf.h`),其余源码无 BOM;禁止 PowerShell 整文件重写(编码铁律,见 AGENTS.md) diff --git a/docs/images/引用关系图.dot b/docs/images/引用关系图.dot index 5440d533..792167f0 100644 --- a/docs/images/引用关系图.dot +++ b/docs/images/引用关系图.dot @@ -2,6 +2,18 @@ digraph refgraph_full { graph [rankdir=LR, bgcolor="white", labelloc=t, label="STM32F4-Base 项目文件引用关系图(项目代码视图)", fontname="Microsoft YaHei", fontsize=18]; node [fontname="Microsoft YaHei", fontsize=10, shape=box, style="rounded,filled"]; edge [fontname="Microsoft YaHei", fontsize=8]; + "App/algo/adc_health.c" [fillcolor="#dbeafe", color="#1d4ed8"]; + "App/algo/adc_health.h" [fillcolor="#dbeafe", color="#1d4ed8"]; + "App/algo/adc_input.c" [fillcolor="#dbeafe", color="#1d4ed8"]; + "App/algo/adc_input.h" [fillcolor="#dbeafe", color="#1d4ed8"]; + "App/algo/phasor.c" [fillcolor="#dbeafe", color="#1d4ed8"]; + "App/algo/phasor.h" [fillcolor="#dbeafe", color="#1d4ed8"]; + "App/algo/prot_elm.c" [fillcolor="#dbeafe", color="#1d4ed8"]; + "App/algo/prot_elm.h" [fillcolor="#dbeafe", color="#1d4ed8"]; + "App/algo/prot_set.c" [fillcolor="#dbeafe", color="#1d4ed8"]; + "App/algo/prot_set.h" [fillcolor="#dbeafe", color="#1d4ed8"]; + "App/algo/sample_ring.c" [fillcolor="#dbeafe", color="#1d4ed8"]; + "App/algo/sample_ring.h" [fillcolor="#dbeafe", color="#1d4ed8"]; "App/app/app_cfg.h" [fillcolor="#dbeafe", color="#1d4ed8"]; "App/app/app_main.c" [fillcolor="#dbeafe", color="#1d4ed8"]; "App/app/app_main.h" [fillcolor="#dbeafe", color="#1d4ed8"]; @@ -16,20 +28,34 @@ digraph refgraph_full { "App/log/console_log.h" [fillcolor="#dbeafe", color="#1d4ed8"]; "App/log/sys_log.h" [fillcolor="#dbeafe", color="#1d4ed8"]; "App/log/sys_log_mcu.c" [fillcolor="#dbeafe", color="#1d4ed8"]; + "App/protocol/iec104/iec104_asdu.c" [fillcolor="#dbeafe", color="#1d4ed8"]; + "App/protocol/iec104/iec104_asdu.h" [fillcolor="#dbeafe", color="#1d4ed8"]; + "App/protocol/iec104/iec104_link.c" [fillcolor="#dbeafe", color="#1d4ed8"]; + "App/protocol/iec104/iec104_link.h" [fillcolor="#dbeafe", color="#1d4ed8"]; + "App/protocol/iec104/iec104_pts.c" [fillcolor="#dbeafe", color="#1d4ed8"]; + "App/protocol/iec104/iec104_pts.h" [fillcolor="#dbeafe", color="#1d4ed8"]; "App/sync/time_sync.c" [fillcolor="#dbeafe", color="#1d4ed8"]; "App/sync/time_sync.h" [fillcolor="#dbeafe", color="#1d4ed8"]; "App/task/adc_task.c" [fillcolor="#dbeafe", color="#1d4ed8"]; "App/task/adc_task.h" [fillcolor="#dbeafe", color="#1d4ed8"]; "App/task/default_task.c" [fillcolor="#dbeafe", color="#1d4ed8"]; "App/task/default_task.h" [fillcolor="#dbeafe", color="#1d4ed8"]; + "App/task/iec104_serv.c" [fillcolor="#dbeafe", color="#1d4ed8"]; + "App/task/iec104_serv.h" [fillcolor="#dbeafe", color="#1d4ed8"]; "App/task/net_task.c" [fillcolor="#dbeafe", color="#1d4ed8"]; "App/task/net_task.h" [fillcolor="#dbeafe", color="#1d4ed8"]; + "App/task/protect_task.c" [fillcolor="#dbeafe", color="#1d4ed8"]; + "App/task/protect_task.h" [fillcolor="#dbeafe", color="#1d4ed8"]; "App/task/rs485_task.c" [fillcolor="#dbeafe", color="#1d4ed8"]; "App/task/rs485_task.h" [fillcolor="#dbeafe", color="#1d4ed8"]; "App/task/ui_task.c" [fillcolor="#dbeafe", color="#1d4ed8"]; "App/task/ui_task.h" [fillcolor="#dbeafe", color="#1d4ed8"]; + "App/util/sha256.c" [fillcolor="#dbeafe", color="#1d4ed8"]; + "App/util/sha256.h" [fillcolor="#dbeafe", color="#1d4ed8"]; "App/util/sys_clock.c" [fillcolor="#dbeafe", color="#1d4ed8"]; "App/util/sys_clock.h" [fillcolor="#dbeafe", color="#1d4ed8"]; + "App/util/task_prof.c" [fillcolor="#dbeafe", color="#1d4ed8"]; + "App/util/task_prof.h" [fillcolor="#dbeafe", color="#1d4ed8"]; "App/util/task_watchdog.c" [fillcolor="#dbeafe", color="#1d4ed8"]; "App/util/task_watchdog.h" [fillcolor="#dbeafe", color="#1d4ed8"]; "Drivers/BSP/CH395F/ch395f.c" [fillcolor="#dbeafe", color="#1d4ed8"]; @@ -39,12 +65,15 @@ digraph refgraph_full { "Drivers/BSP/GD5F2GQ5UE/nand_ftl.c" [fillcolor="#dbeafe", color="#1d4ed8"]; "Drivers/BSP/GD5F2GQ5UE/nand_ftl.h" [fillcolor="#dbeafe", color="#1d4ed8"]; "Drivers/BSP/NET/lftpd/lftpd.h" [fillcolor="#f3f4f6", color="#9ca3af"]; + "Drivers/BSP/NET/lftpd/lftpd_auth.c" [fillcolor="#f3f4f6", color="#9ca3af"]; "Drivers/BSP/NET/net_config.h" [fillcolor="#dbeafe", color="#1d4ed8"]; "Drivers/BSP/NET/net_select.c" [fillcolor="#dbeafe", color="#1d4ed8"]; "Drivers/BSP/NET/net_select.h" [fillcolor="#dbeafe", color="#1d4ed8"]; "Drivers/BSP/NET/net_socket.c" [fillcolor="#dbeafe", color="#1d4ed8"]; "Drivers/BSP/NET/net_socket.h" [fillcolor="#dbeafe", color="#1d4ed8"]; "Drivers/BSP/NET/net_types.h" [fillcolor="#dbeafe", color="#1d4ed8"]; + "Drivers/BSP/NETCFG/ftp_cfg.c" [fillcolor="#dbeafe", color="#1d4ed8"]; + "Drivers/BSP/NETCFG/ftp_cfg.h" [fillcolor="#dbeafe", color="#1d4ed8"]; "Drivers/BSP/NETCFG/net_cfg.c" [fillcolor="#dbeafe", color="#1d4ed8"]; "Drivers/BSP/NETCFG/net_cfg.h" [fillcolor="#dbeafe", color="#1d4ed8"]; "Drivers/BSP/RS485/rs485.c" [fillcolor="#dbeafe", color="#1d4ed8"]; @@ -114,6 +143,7 @@ digraph refgraph_full { "Inc/spi.h" [fillcolor="#dbeafe", color="#1d4ed8"]; "Inc/stm32f4xx_hal_conf.h" [fillcolor="#dbeafe", color="#1d4ed8"]; "Inc/stm32f4xx_it.h" [fillcolor="#dbeafe", color="#1d4ed8"]; + "Inc/tim.h" [fillcolor="#dbeafe", color="#1d4ed8"]; "Inc/usart.h" [fillcolor="#dbeafe", color="#1d4ed8"]; "Lib/FatFs/diskio.h" [fillcolor="#f3f4f6", color="#9ca3af"]; "Lib/FatFs/ff.h" [fillcolor="#f3f4f6", color="#9ca3af"]; @@ -136,6 +166,7 @@ digraph refgraph_full { "Src/stm32f4xx_hal_timebase_tim.c" [fillcolor="#dbeafe", color="#1d4ed8"]; "Src/stm32f4xx_it.c" [fillcolor="#dbeafe", color="#1d4ed8"]; "Src/system_stm32f4xx.c" [fillcolor="#dbeafe", color="#1d4ed8"]; + "Src/tim.c" [fillcolor="#dbeafe", color="#1d4ed8"]; "Src/usart.c" [fillcolor="#dbeafe", color="#1d4ed8"]; "simulator/SDL2/SDL2-2.32.10/include/SDL.h" [fillcolor="#f3f4f6", color="#9ca3af"]; "simulator/dbg_log.h" [fillcolor="#dbeafe", color="#1d4ed8"]; @@ -148,6 +179,8 @@ digraph refgraph_full { "simulator/sim/sim_port.h" [fillcolor="#dbeafe", color="#1d4ed8"]; "simulator/sim/sim_syslog.c" [fillcolor="#dbeafe", color="#1d4ed8"]; "simulator/sim/ui_net_sink_backend_sim.c" [fillcolor="#dbeafe", color="#1d4ed8"]; + "test/board/ch395f_reuse_bench.c" [fillcolor="#dbeafe", color="#1d4ed8"]; + "test/board/ch395f_reuse_bench.h" [fillcolor="#dbeafe", color="#1d4ed8"]; "test/board/ch395f_test.h" [fillcolor="#dbeafe", color="#1d4ed8"]; "test/board/ch395f_test_task.c" [fillcolor="#dbeafe", color="#1d4ed8"]; "test/board/ch395f_test_task.h" [fillcolor="#dbeafe", color="#1d4ed8"]; @@ -164,18 +197,65 @@ digraph refgraph_full { "test/board/test_common.h" [fillcolor="#dbeafe", color="#1d4ed8"]; "test/board/test_config.c" [fillcolor="#dbeafe", color="#1d4ed8"]; "test/board/test_config.h" [fillcolor="#dbeafe", color="#1d4ed8"]; + "test/host/adc_health/adc_health_test.c" [fillcolor="#dbeafe", color="#1d4ed8"]; + "test/host/adc_input/adc_input_test.c" [fillcolor="#dbeafe", color="#1d4ed8"]; + "test/host/adc_input/stub/adc.h" [fillcolor="#dbeafe", color="#1d4ed8"]; + "test/host/adc_input/stub/tpafe5160.h" [fillcolor="#dbeafe", color="#1d4ed8"]; "test/host/cfg_file/cfg_file_test.c" [fillcolor="#dbeafe", color="#1d4ed8"]; "test/host/cfg_file/stub/dbg_log.h" [fillcolor="#dbeafe", color="#1d4ed8"]; + "test/host/ftp_auth/ftp_auth_test.c" [fillcolor="#dbeafe", color="#1d4ed8"]; + "test/host/iec104/iec104_test.c" [fillcolor="#dbeafe", color="#1d4ed8"]; + "test/host/phasor/phasor_test.c" [fillcolor="#dbeafe", color="#1d4ed8"]; + "test/host/prot_elm/prot_elm_test.c" [fillcolor="#dbeafe", color="#1d4ed8"]; + "test/host/prot_set/prot_set_test.c" [fillcolor="#dbeafe", color="#1d4ed8"]; + "test/host/sha256/sha256_test.c" [fillcolor="#dbeafe", color="#1d4ed8"]; "test/host/sys_clock/stub/FreeRTOS.h" [fillcolor="#dbeafe", color="#1d4ed8"]; "test/host/sys_clock/stub/dbg_log.h" [fillcolor="#dbeafe", color="#1d4ed8"]; "test/host/sys_clock/stub/main.h" [fillcolor="#dbeafe", color="#1d4ed8"]; "test/host/sys_clock/stub/task.h" [fillcolor="#dbeafe", color="#1d4ed8"]; "test/host/sys_clock/sys_clock_test.c" [fillcolor="#dbeafe", color="#1d4ed8"]; + "test/host/time_sync/stub/FreeRTOS.h" [fillcolor="#dbeafe", color="#1d4ed8"]; + "test/host/time_sync/stub/cmsis_os2.h" [fillcolor="#dbeafe", color="#1d4ed8"]; + "test/host/time_sync/stub/dbg_log.h" [fillcolor="#dbeafe", color="#1d4ed8"]; + "test/host/time_sync/stub/net_socket.h" [fillcolor="#dbeafe", color="#1d4ed8"]; + "test/host/time_sync/stub/sys_clock.h" [fillcolor="#dbeafe", color="#1d4ed8"]; + "test/host/time_sync/stub/sys_events.h" [fillcolor="#dbeafe", color="#1d4ed8"]; + "test/host/time_sync/stub/task.h" [fillcolor="#dbeafe", color="#1d4ed8"]; + "test/host/time_sync/time_sync_test.c" [fillcolor="#dbeafe", color="#1d4ed8"]; + "test/host/vol_lock/stub/cmsis_os.h" [fillcolor="#dbeafe", color="#1d4ed8"]; + "test/host/vol_lock/vol_lock_test.c" [fillcolor="#dbeafe", color="#1d4ed8"]; "test/host/watchdog/stub/dbg_log.h" [fillcolor="#dbeafe", color="#1d4ed8"]; "test/host/watchdog/stub/iwdg.h" [fillcolor="#dbeafe", color="#1d4ed8"]; "test/host/watchdog/stub/main.h" [fillcolor="#dbeafe", color="#1d4ed8"]; "test/host/watchdog/watchdog_test.c" [fillcolor="#dbeafe", color="#1d4ed8"]; "外部/系统头文件" [shape=ellipse, fillcolor="#fef3c7", color="#d97706", fontsize=12]; + "App/algo/adc_health.c" -> "App/algo/adc_health.h" [color="#2563eb", penwidth=1.0]; + "App/algo/adc_health.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; + "App/algo/adc_input.c" -> "App/algo/adc_input.h" [color="#2563eb", penwidth=1.0]; + "App/algo/adc_input.c" -> "Drivers/BSP/TPAFE5160/tpafe5160.h" [color="#2563eb", penwidth=1.0]; + "App/algo/adc_input.c" -> "Inc/adc.h" [color="#2563eb", penwidth=1.0]; + "App/algo/adc_input.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; + "App/algo/adc_input.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; + "App/algo/phasor.c" -> "App/algo/phasor.h" [color="#2563eb", penwidth=1.0]; + "App/algo/phasor.c" -> "App/algo/sample_ring.h" [color="#2563eb", penwidth=1.0]; + "App/algo/phasor.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; + "App/algo/phasor.h" -> "App/algo/adc_input.h" [color="#2563eb", penwidth=1.0]; + "App/algo/phasor.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; + "App/algo/prot_elm.c" -> "App/algo/phasor.h" [color="#2563eb", penwidth=1.0]; + "App/algo/prot_elm.c" -> "App/algo/prot_elm.h" [color="#2563eb", penwidth=1.0]; + "App/algo/prot_elm.c" -> "App/algo/prot_set.h" [color="#2563eb", penwidth=1.0]; + "App/algo/prot_elm.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; + "App/algo/prot_elm.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; + "App/algo/prot_set.c" -> "App/algo/prot_set.h" [color="#2563eb", penwidth=1.0]; + "App/algo/prot_set.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; + "App/algo/sample_ring.c" -> "App/algo/sample_ring.h" [color="#2563eb", penwidth=1.0]; + "App/algo/sample_ring.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; + "App/algo/sample_ring.h" -> "App/algo/adc_input.h" [color="#2563eb", penwidth=1.0]; + "App/algo/sample_ring.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; + "App/app/app_main.c" -> "App/algo/adc_input.h" [color="#2563eb", penwidth=1.0]; + "App/app/app_main.c" -> "App/algo/phasor.h" [color="#2563eb", penwidth=1.0]; + "App/app/app_main.c" -> "App/algo/prot_elm.h" [color="#2563eb", penwidth=1.0]; + "App/app/app_main.c" -> "App/algo/prot_set.h" [color="#2563eb", penwidth=1.0]; "App/app/app_main.c" -> "App/app/app_cfg.h" [color="#2563eb", penwidth=1.0]; "App/app/app_main.c" -> "App/app/app_main.h" [color="#2563eb", penwidth=1.0]; "App/app/app_main.c" -> "App/log/sys_log.h" [color="#2563eb", penwidth=1.0]; @@ -188,7 +268,9 @@ digraph refgraph_full { "App/app/app_main.c" -> "Drivers/BSP/dbg_log.h" [color="#2563eb", penwidth=1.0]; "App/app/app_main.c" -> "Inc/main.h" [color="#2563eb", penwidth=1.0]; "App/app/app_main.c" -> "Inc/stm32f4xx_it.h" [color="#2563eb", penwidth=1.0]; + "App/app/app_main.c" -> "Inc/tim.h" [color="#2563eb", penwidth=1.0]; "App/app/app_main.c" -> "Inc/usart.h" [color="#2563eb", penwidth=1.0]; + "App/app/app_main.c" -> "test/board/test_config.h" [color="#2563eb", penwidth=1.0]; "App/app/app_main.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; "App/app/sys_events.h" -> "Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.h" [color="#94a3b8", penwidth=0.7]; "App/cfg/cfg_file.c" -> "App/cfg/cfg_file.h" [color="#2563eb", penwidth=1.0]; @@ -222,6 +304,22 @@ digraph refgraph_full { "App/log/sys_log_mcu.c" -> "Lib/FatFs/ff.h" [color="#94a3b8", penwidth=0.7]; "App/log/sys_log_mcu.c" -> "Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h" [color="#94a3b8", penwidth=0.7]; "App/log/sys_log_mcu.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; + "App/protocol/iec104/iec104_asdu.c" -> "App/protocol/iec104/iec104_asdu.h" [color="#2563eb", penwidth=1.0]; + "App/protocol/iec104/iec104_asdu.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; + "App/protocol/iec104/iec104_asdu.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; + "App/protocol/iec104/iec104_link.c" -> "App/protocol/iec104/iec104_asdu.h" [color="#2563eb", penwidth=1.0]; + "App/protocol/iec104/iec104_link.c" -> "App/protocol/iec104/iec104_link.h" [color="#2563eb", penwidth=1.0]; + "App/protocol/iec104/iec104_link.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; + "App/protocol/iec104/iec104_link.h" -> "App/protocol/iec104/iec104_pts.h" [color="#2563eb", penwidth=1.0]; + "App/protocol/iec104/iec104_link.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; + "App/protocol/iec104/iec104_pts.c" -> "App/algo/adc_input.h" [color="#2563eb", penwidth=1.0]; + "App/protocol/iec104/iec104_pts.c" -> "App/algo/phasor.h" [color="#2563eb", penwidth=1.0]; + "App/protocol/iec104/iec104_pts.c" -> "App/algo/prot_elm.h" [color="#2563eb", penwidth=1.0]; + "App/protocol/iec104/iec104_pts.c" -> "App/algo/prot_set.h" [color="#2563eb", penwidth=1.0]; + "App/protocol/iec104/iec104_pts.c" -> "App/protocol/iec104/iec104_asdu.h" [color="#2563eb", penwidth=1.0]; + "App/protocol/iec104/iec104_pts.c" -> "App/protocol/iec104/iec104_pts.h" [color="#2563eb", penwidth=1.0]; + "App/protocol/iec104/iec104_pts.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; + "App/protocol/iec104/iec104_pts.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; "App/sync/time_sync.c" -> "App/app/sys_events.h" [color="#2563eb", penwidth=1.0]; "App/sync/time_sync.c" -> "App/sync/time_sync.h" [color="#2563eb", penwidth=1.0]; "App/sync/time_sync.c" -> "App/util/sys_clock.h" [color="#2563eb", penwidth=1.0]; @@ -230,7 +328,15 @@ digraph refgraph_full { "App/sync/time_sync.c" -> "Drivers/BSP/dbg_log.h" [color="#2563eb", penwidth=1.0]; "App/sync/time_sync.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; "App/sync/time_sync.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; + "App/task/adc_task.c" -> "App/algo/adc_health.h" [color="#2563eb", penwidth=1.0]; + "App/task/adc_task.c" -> "App/algo/adc_input.h" [color="#2563eb", penwidth=1.0]; + "App/task/adc_task.c" -> "App/algo/phasor.h" [color="#2563eb", penwidth=1.0]; + "App/task/adc_task.c" -> "App/algo/sample_ring.h" [color="#2563eb", penwidth=1.0]; + "App/task/adc_task.c" -> "App/log/console_log.h" [color="#2563eb", penwidth=1.0]; + "App/task/adc_task.c" -> "App/log/sys_log.h" [color="#2563eb", penwidth=1.0]; "App/task/adc_task.c" -> "App/task/adc_task.h" [color="#2563eb", penwidth=1.0]; + "App/task/adc_task.c" -> "App/util/task_prof.h" [color="#2563eb", penwidth=1.0]; + "App/task/adc_task.c" -> "App/util/task_watchdog.h" [color="#2563eb", penwidth=1.0]; "App/task/adc_task.c" -> "Drivers/BSP/TPAFE5160/tpafe5160.h" [color="#2563eb", penwidth=1.0]; "App/task/adc_task.c" -> "Drivers/BSP/dbg_log.h" [color="#2563eb", penwidth=1.0]; "App/task/adc_task.c" -> "Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h" [color="#94a3b8", penwidth=0.7]; @@ -239,6 +345,7 @@ digraph refgraph_full { "App/task/default_task.c" -> "App/fs/vol_lock.h" [color="#2563eb", penwidth=1.0]; "App/task/default_task.c" -> "App/log/sys_log.h" [color="#2563eb", penwidth=1.0]; "App/task/default_task.c" -> "App/task/default_task.h" [color="#2563eb", penwidth=1.0]; + "App/task/default_task.c" -> "App/util/task_prof.h" [color="#2563eb", penwidth=1.0]; "App/task/default_task.c" -> "App/util/task_watchdog.h" [color="#2563eb", penwidth=1.0]; "App/task/default_task.c" -> "Drivers/BSP/GD5F2GQ5UE/nand_ftl.h" [color="#2563eb", penwidth=1.0]; "App/task/default_task.c" -> "Drivers/BSP/NETCFG/net_cfg.h" [color="#2563eb", penwidth=1.0]; @@ -249,9 +356,20 @@ digraph refgraph_full { "App/task/default_task.c" -> "Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h" [color="#94a3b8", penwidth=0.7]; "App/task/default_task.c" -> "Middlewares/Third_Party/FreeRTOS/Source/include/task.h" [color="#94a3b8", penwidth=0.7]; "App/task/default_task.c" -> "test/board/test_config.h" [color="#2563eb", penwidth=1.0]; + "App/task/iec104_serv.c" -> "App/app/sys_events.h" [color="#2563eb", penwidth=1.0]; + "App/task/iec104_serv.c" -> "App/protocol/iec104/iec104_link.h" [color="#2563eb", penwidth=1.0]; + "App/task/iec104_serv.c" -> "App/protocol/iec104/iec104_pts.h" [color="#2563eb", penwidth=1.0]; + "App/task/iec104_serv.c" -> "App/task/iec104_serv.h" [color="#2563eb", penwidth=1.0]; + "App/task/iec104_serv.c" -> "App/util/sys_clock.h" [color="#2563eb", penwidth=1.0]; + "App/task/iec104_serv.c" -> "App/util/task_watchdog.h" [color="#2563eb", penwidth=1.0]; + "App/task/iec104_serv.c" -> "Drivers/BSP/NET/net_socket.h" [color="#2563eb", penwidth=1.0]; + "App/task/iec104_serv.c" -> "Drivers/BSP/dbg_log.h" [color="#2563eb", penwidth=1.0]; + "App/task/iec104_serv.c" -> "Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.h" [color="#94a3b8", penwidth=0.7]; + "App/task/iec104_serv.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; "App/task/net_task.c" -> "App/app/sys_events.h" [color="#2563eb", penwidth=1.0]; "App/task/net_task.c" -> "App/log/sys_log.h" [color="#2563eb", penwidth=1.0]; "App/task/net_task.c" -> "App/task/net_task.h" [color="#2563eb", penwidth=1.0]; + "App/task/net_task.c" -> "App/util/task_prof.h" [color="#2563eb", penwidth=1.0]; "App/task/net_task.c" -> "App/util/task_watchdog.h" [color="#2563eb", penwidth=1.0]; "App/task/net_task.c" -> "Drivers/BSP/CH395F/ch395f.h" [color="#2563eb", penwidth=1.0]; "App/task/net_task.c" -> "Drivers/BSP/NET/net_select.h" [color="#2563eb", penwidth=1.0]; @@ -261,6 +379,13 @@ digraph refgraph_full { "App/task/net_task.c" -> "Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h" [color="#94a3b8", penwidth=0.7]; "App/task/net_task.c" -> "test/board/test_config.h" [color="#2563eb", penwidth=1.0]; "App/task/net_task.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; + "App/task/protect_task.c" -> "App/algo/adc_health.h" [color="#2563eb", penwidth=1.0]; + "App/task/protect_task.c" -> "App/algo/prot_elm.h" [color="#2563eb", penwidth=1.0]; + "App/task/protect_task.c" -> "App/algo/prot_set.h" [color="#2563eb", penwidth=1.0]; + "App/task/protect_task.c" -> "App/task/protect_task.h" [color="#2563eb", penwidth=1.0]; + "App/task/protect_task.c" -> "App/util/task_watchdog.h" [color="#2563eb", penwidth=1.0]; + "App/task/protect_task.c" -> "Drivers/BSP/dbg_log.h" [color="#2563eb", penwidth=1.0]; + "App/task/protect_task.c" -> "Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.h" [color="#94a3b8", penwidth=0.7]; "App/task/rs485_task.c" -> "App/task/rs485_task.h" [color="#2563eb", penwidth=1.0]; "App/task/rs485_task.c" -> "Drivers/BSP/RS485/rs485.h" [color="#2563eb", penwidth=1.0]; "App/task/rs485_task.c" -> "Drivers/BSP/dbg_log.h" [color="#2563eb", penwidth=1.0]; @@ -268,6 +393,7 @@ digraph refgraph_full { "App/task/ui_task.c" -> "App/app/sys_events.h" [color="#2563eb", penwidth=1.0]; "App/task/ui_task.c" -> "App/task/ui_task.h" [color="#2563eb", penwidth=1.0]; "App/task/ui_task.c" -> "App/util/sys_clock.h" [color="#2563eb", penwidth=1.0]; + "App/task/ui_task.c" -> "App/util/task_prof.h" [color="#2563eb", penwidth=1.0]; "App/task/ui_task.c" -> "App/util/task_watchdog.h" [color="#2563eb", penwidth=1.0]; "App/task/ui_task.c" -> "Drivers/BSP/UI/ui_menu.h" [color="#2563eb", penwidth=1.0]; "App/task/ui_task.c" -> "Drivers/BSP/UI/ui_net_sink.h" [color="#2563eb", penwidth=1.0]; @@ -278,6 +404,9 @@ digraph refgraph_full { "App/task/ui_task.c" -> "test/board/net_latency_test.h" [color="#2563eb", penwidth=1.0]; "App/task/ui_task.c" -> "test/board/test_config.h" [color="#2563eb", penwidth=1.0]; "App/task/ui_task.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; + "App/util/sha256.c" -> "App/util/sha256.h" [color="#2563eb", penwidth=1.0]; + "App/util/sha256.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; + "App/util/sha256.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; "App/util/sys_clock.c" -> "App/util/sys_clock.h" [color="#2563eb", penwidth=1.0]; "App/util/sys_clock.c" -> "Drivers/BSP/dbg_log.h" [color="#2563eb", penwidth=1.0]; "App/util/sys_clock.c" -> "Inc/main.h" [color="#2563eb", penwidth=1.0]; @@ -286,6 +415,11 @@ digraph refgraph_full { "App/util/sys_clock.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; "App/util/sys_clock.h" -> "Drivers/BSP/SD2506/sd2506.h" [color="#2563eb", penwidth=1.0]; "App/util/sys_clock.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; + "App/util/task_prof.c" -> "App/log/console_log.h" [color="#2563eb", penwidth=1.0]; + "App/util/task_prof.c" -> "App/util/task_prof.h" [color="#2563eb", penwidth=1.0]; + "App/util/task_prof.c" -> "Inc/main.h" [color="#2563eb", penwidth=1.0]; + "App/util/task_prof.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; + "App/util/task_prof.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; "App/util/task_watchdog.c" -> "App/log/console_log.h" [color="#2563eb", penwidth=1.0]; "App/util/task_watchdog.c" -> "App/log/sys_log.h" [color="#2563eb", penwidth=1.0]; "App/util/task_watchdog.c" -> "App/util/task_watchdog.h" [color="#2563eb", penwidth=1.0]; @@ -341,7 +475,12 @@ digraph refgraph_full { "Drivers/BSP/NET/net_socket.h" -> "Middlewares/Third_Party/FreeRTOS/Source/include/task.h" [color="#94a3b8", penwidth=0.7]; "Drivers/BSP/NET/net_types.h" -> "Drivers/BSP/NET/net_config.h" [color="#2563eb", penwidth=1.0]; "Drivers/BSP/NET/net_types.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; + "Drivers/BSP/NETCFG/ftp_cfg.c" -> "App/cfg/cfg_file.h" [color="#2563eb", penwidth=1.0]; + "Drivers/BSP/NETCFG/ftp_cfg.c" -> "Drivers/BSP/NETCFG/ftp_cfg.h" [color="#2563eb", penwidth=1.0]; + "Drivers/BSP/NETCFG/ftp_cfg.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; + "Drivers/BSP/NETCFG/ftp_cfg.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; "Drivers/BSP/NETCFG/net_cfg.c" -> "App/cfg/cfg_file.h" [color="#2563eb", penwidth=1.0]; + "Drivers/BSP/NETCFG/net_cfg.c" -> "Drivers/BSP/NETCFG/ftp_cfg.h" [color="#2563eb", penwidth=1.0]; "Drivers/BSP/NETCFG/net_cfg.c" -> "Drivers/BSP/NETCFG/net_cfg.h" [color="#2563eb", penwidth=1.0]; "Drivers/BSP/NETCFG/net_cfg.c" -> "Drivers/BSP/dbg_log.h" [color="#2563eb", penwidth=1.0]; "Drivers/BSP/NETCFG/net_cfg.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; @@ -474,13 +613,17 @@ digraph refgraph_full { "Inc/stm32f4xx_hal_conf.h" -> "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim.h" [color="#94a3b8", penwidth=0.7]; "Inc/stm32f4xx_hal_conf.h" -> "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_uart.h" [color="#94a3b8", penwidth=0.7]; "Inc/stm32f4xx_hal_conf.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; + "Inc/tim.h" -> "Inc/main.h" [color="#2563eb", penwidth=1.0]; "Inc/usart.h" -> "Inc/main.h" [color="#2563eb", penwidth=1.0]; "Src/adc.c" -> "Inc/adc.h" [color="#2563eb", penwidth=1.0]; "Src/dma.c" -> "Inc/dma.h" [color="#2563eb", penwidth=1.0]; "Src/freertos.c" -> "App/app/sys_events.h" [color="#2563eb", penwidth=1.0]; "Src/freertos.c" -> "App/sync/time_sync.h" [color="#2563eb", penwidth=1.0]; + "Src/freertos.c" -> "App/task/adc_task.h" [color="#2563eb", penwidth=1.0]; "Src/freertos.c" -> "App/task/default_task.h" [color="#2563eb", penwidth=1.0]; + "Src/freertos.c" -> "App/task/iec104_serv.h" [color="#2563eb", penwidth=1.0]; "Src/freertos.c" -> "App/task/net_task.h" [color="#2563eb", penwidth=1.0]; + "Src/freertos.c" -> "App/task/protect_task.h" [color="#2563eb", penwidth=1.0]; "Src/freertos.c" -> "App/util/task_watchdog.h" [color="#2563eb", penwidth=1.0]; "Src/freertos.c" -> "Drivers/BSP/CH395F/ch395f.h" [color="#2563eb", penwidth=1.0]; "Src/freertos.c" -> "Drivers/BSP/NET/lftpd/lftpd.h" [color="#94a3b8", penwidth=0.7]; @@ -498,6 +641,7 @@ digraph refgraph_full { "Src/i2c.c" -> "Inc/i2c.h" [color="#2563eb", penwidth=1.0]; "Src/iwdg.c" -> "Inc/iwdg.h" [color="#2563eb", penwidth=1.0]; "Src/main.c" -> "App/app/app_main.h" [color="#2563eb", penwidth=1.0]; + "Src/main.c" -> "App/task/adc_task.h" [color="#2563eb", penwidth=1.0]; "Src/main.c" -> "App/util/sys_clock.h" [color="#2563eb", penwidth=1.0]; "Src/main.c" -> "App/util/task_watchdog.h" [color="#2563eb", penwidth=1.0]; "Src/main.c" -> "Drivers/BSP/CH395F/ch395f.h" [color="#2563eb", penwidth=1.0]; @@ -515,6 +659,7 @@ digraph refgraph_full { "Src/main.c" -> "Inc/iwdg.h" [color="#2563eb", penwidth=1.0]; "Src/main.c" -> "Inc/main.h" [color="#2563eb", penwidth=1.0]; "Src/main.c" -> "Inc/spi.h" [color="#2563eb", penwidth=1.0]; + "Src/main.c" -> "Inc/tim.h" [color="#2563eb", penwidth=1.0]; "Src/main.c" -> "Inc/usart.h" [color="#2563eb", penwidth=1.0]; "Src/main.c" -> "Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h" [color="#94a3b8", penwidth=0.7]; "Src/main.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; @@ -526,6 +671,7 @@ digraph refgraph_full { "Src/stm32f4xx_it.c" -> "Inc/stm32f4xx_it.h" [color="#2563eb", penwidth=1.0]; "Src/stm32f4xx_it.c" -> "Inc/usart.h" [color="#2563eb", penwidth=1.0]; "Src/system_stm32f4xx.c" -> "Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h" [color="#94a3b8", penwidth=0.7]; + "Src/tim.c" -> "Inc/tim.h" [color="#2563eb", penwidth=1.0]; "Src/usart.c" -> "Inc/usart.h" [color="#2563eb", penwidth=1.0]; "simulator/dbg_log.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; "simulator/main.c" -> "App/cfg/cfg_file.h" [color="#2563eb", penwidth=1.0]; @@ -554,6 +700,10 @@ digraph refgraph_full { "simulator/sim/ui_net_sink_backend_sim.c" -> "Drivers/BSP/UI/ui_port.h" [color="#2563eb", penwidth=1.0]; "simulator/sim/ui_net_sink_backend_sim.c" -> "Lib/lvgl/lvgl.h" [color="#94a3b8", penwidth=0.7]; "simulator/sim/ui_net_sink_backend_sim.c" -> "simulator/sim/sim_port.h" [color="#2563eb", penwidth=1.0]; + "test/board/ch395f_reuse_bench.c" -> "Drivers/BSP/CH395F/ch395f.h" [color="#2563eb", penwidth=1.0]; + "test/board/ch395f_reuse_bench.c" -> "Drivers/BSP/dbg_log.h" [color="#2563eb", penwidth=1.0]; + "test/board/ch395f_reuse_bench.c" -> "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h" [color="#94a3b8", penwidth=0.7]; + "test/board/ch395f_reuse_bench.c" -> "test/board/ch395f_reuse_bench.h" [color="#2563eb", penwidth=1.0]; "test/board/ch395f_test.h" -> "test/board/test_common.h" [color="#2563eb", penwidth=1.0]; "test/board/ch395f_test.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; "test/board/ch395f_test_task.c" -> "App/app/sys_events.h" [color="#2563eb", penwidth=1.0]; @@ -632,12 +782,44 @@ digraph refgraph_full { "test/board/test_config.h" -> "test/board/sd2506_test.h" [color="#2563eb", penwidth=1.0]; "test/board/test_config.h" -> "test/board/storage_test.h" [color="#2563eb", penwidth=1.0]; "test/board/test_config.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; + "test/host/adc_health/adc_health_test.c" -> "App/algo/adc_health.c" [color="#2563eb", penwidth=1.0]; + "test/host/adc_health/adc_health_test.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; + "test/host/adc_input/adc_input_test.c" -> "App/algo/adc_input.c" [color="#2563eb", penwidth=1.0]; + "test/host/adc_input/adc_input_test.c" -> "App/algo/adc_input.h" [color="#2563eb", penwidth=1.0]; + "test/host/adc_input/adc_input_test.c" -> "Drivers/BSP/TPAFE5160/tpafe5160.h" [color="#2563eb", penwidth=1.0]; + "test/host/adc_input/adc_input_test.c" -> "Inc/adc.h" [color="#2563eb", penwidth=1.0]; + "test/host/adc_input/adc_input_test.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; + "test/host/adc_input/stub/adc.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; + "test/host/adc_input/stub/tpafe5160.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; "test/host/cfg_file/cfg_file_test.c" -> "App/cfg/cfg_file.c" [color="#2563eb", penwidth=1.0]; "test/host/cfg_file/cfg_file_test.c" -> "App/cfg/cfg_file_store.h" [color="#2563eb", penwidth=1.0]; "test/host/cfg_file/cfg_file_test.c" -> "App/log/sys_log.h" [color="#2563eb", penwidth=1.0]; "test/host/cfg_file/cfg_file_test.c" -> "Drivers/BSP/dbg_log.h" [color="#2563eb", penwidth=1.0]; "test/host/cfg_file/cfg_file_test.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; "test/host/cfg_file/stub/dbg_log.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; + "test/host/ftp_auth/ftp_auth_test.c" -> "App/util/sha256.c" [color="#2563eb", penwidth=1.0]; + "test/host/ftp_auth/ftp_auth_test.c" -> "Drivers/BSP/NET/lftpd/lftpd_auth.c" [color="#94a3b8", penwidth=0.7]; + "test/host/ftp_auth/ftp_auth_test.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; + "test/host/iec104/iec104_test.c" -> "App/algo/phasor.c" [color="#2563eb", penwidth=1.0]; + "test/host/iec104/iec104_test.c" -> "App/algo/prot_elm.c" [color="#2563eb", penwidth=1.0]; + "test/host/iec104/iec104_test.c" -> "App/algo/prot_set.c" [color="#2563eb", penwidth=1.0]; + "test/host/iec104/iec104_test.c" -> "App/algo/sample_ring.c" [color="#2563eb", penwidth=1.0]; + "test/host/iec104/iec104_test.c" -> "App/protocol/iec104/iec104_asdu.c" [color="#2563eb", penwidth=1.0]; + "test/host/iec104/iec104_test.c" -> "App/protocol/iec104/iec104_link.c" [color="#2563eb", penwidth=1.0]; + "test/host/iec104/iec104_test.c" -> "App/protocol/iec104/iec104_pts.c" [color="#2563eb", penwidth=1.0]; + "test/host/iec104/iec104_test.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; + "test/host/phasor/phasor_test.c" -> "App/algo/phasor.c" [color="#2563eb", penwidth=1.0]; + "test/host/phasor/phasor_test.c" -> "App/algo/sample_ring.c" [color="#2563eb", penwidth=1.0]; + "test/host/phasor/phasor_test.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; + "test/host/prot_elm/prot_elm_test.c" -> "App/algo/phasor.c" [color="#2563eb", penwidth=1.0]; + "test/host/prot_elm/prot_elm_test.c" -> "App/algo/prot_elm.c" [color="#2563eb", penwidth=1.0]; + "test/host/prot_elm/prot_elm_test.c" -> "App/algo/prot_set.c" [color="#2563eb", penwidth=1.0]; + "test/host/prot_elm/prot_elm_test.c" -> "App/algo/sample_ring.c" [color="#2563eb", penwidth=1.0]; + "test/host/prot_elm/prot_elm_test.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; + "test/host/prot_set/prot_set_test.c" -> "App/algo/prot_set.c" [color="#2563eb", penwidth=1.0]; + "test/host/prot_set/prot_set_test.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; + "test/host/sha256/sha256_test.c" -> "App/util/sha256.c" [color="#2563eb", penwidth=1.0]; + "test/host/sha256/sha256_test.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; "test/host/sys_clock/stub/FreeRTOS.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; "test/host/sys_clock/stub/dbg_log.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; "test/host/sys_clock/stub/main.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; @@ -650,6 +832,27 @@ digraph refgraph_full { "test/host/sys_clock/sys_clock_test.c" -> "Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h" [color="#94a3b8", penwidth=0.7]; "test/host/sys_clock/sys_clock_test.c" -> "Middlewares/Third_Party/FreeRTOS/Source/include/task.h" [color="#94a3b8", penwidth=0.7]; "test/host/sys_clock/sys_clock_test.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; + "test/host/time_sync/stub/FreeRTOS.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; + "test/host/time_sync/stub/cmsis_os2.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; + "test/host/time_sync/stub/dbg_log.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; + "test/host/time_sync/stub/net_socket.h" -> "test/host/time_sync/stub/FreeRTOS.h" [color="#2563eb", penwidth=1.0]; + "test/host/time_sync/stub/net_socket.h" -> "test/host/time_sync/stub/task.h" [color="#2563eb", penwidth=1.0]; + "test/host/time_sync/stub/net_socket.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; + "test/host/time_sync/stub/sys_clock.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; + "test/host/time_sync/stub/sys_events.h" -> "test/host/time_sync/stub/cmsis_os2.h" [color="#2563eb", penwidth=1.0]; + "test/host/time_sync/stub/task.h" -> "test/host/time_sync/stub/FreeRTOS.h" [color="#2563eb", penwidth=1.0]; + "test/host/time_sync/time_sync_test.c" -> "App/app/sys_events.h" [color="#2563eb", penwidth=1.0]; + "test/host/time_sync/time_sync_test.c" -> "App/sync/time_sync.c" [color="#2563eb", penwidth=1.0]; + "test/host/time_sync/time_sync_test.c" -> "App/util/sys_clock.h" [color="#2563eb", penwidth=1.0]; + "test/host/time_sync/time_sync_test.c" -> "App/util/task_watchdog.h" [color="#2563eb", penwidth=1.0]; + "test/host/time_sync/time_sync_test.c" -> "Drivers/BSP/NET/net_socket.h" [color="#2563eb", penwidth=1.0]; + "test/host/time_sync/time_sync_test.c" -> "Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h" [color="#94a3b8", penwidth=0.7]; + "test/host/time_sync/time_sync_test.c" -> "Middlewares/Third_Party/FreeRTOS/Source/include/task.h" [color="#94a3b8", penwidth=0.7]; + "test/host/time_sync/time_sync_test.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; + "test/host/vol_lock/stub/cmsis_os.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; + "test/host/vol_lock/vol_lock_test.c" -> "App/fs/vol_lock.c" [color="#2563eb", penwidth=1.0]; + "test/host/vol_lock/vol_lock_test.c" -> "Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h" [color="#94a3b8", penwidth=0.7]; + "test/host/vol_lock/vol_lock_test.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; "test/host/watchdog/stub/dbg_log.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; "test/host/watchdog/stub/iwdg.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; "test/host/watchdog/stub/main.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed]; diff --git a/docs/images/引用关系图.json b/docs/images/引用关系图.json index 9e36ca10..e5d8a2cf 100644 --- a/docs/images/引用关系图.json +++ b/docs/images/引用关系图.json @@ -1,6 +1,54 @@ { "title": "STM32F4-Base 项目文件引用关系图(项目代码视图)", "nodes": [ + { + "path": "App/algo/adc_health.c", + "class": "fp" + }, + { + "path": "App/algo/adc_health.h", + "class": "fp" + }, + { + "path": "App/algo/adc_input.c", + "class": "fp" + }, + { + "path": "App/algo/adc_input.h", + "class": "fp" + }, + { + "path": "App/algo/phasor.c", + "class": "fp" + }, + { + "path": "App/algo/phasor.h", + "class": "fp" + }, + { + "path": "App/algo/prot_elm.c", + "class": "fp" + }, + { + "path": "App/algo/prot_elm.h", + "class": "fp" + }, + { + "path": "App/algo/prot_set.c", + "class": "fp" + }, + { + "path": "App/algo/prot_set.h", + "class": "fp" + }, + { + "path": "App/algo/sample_ring.c", + "class": "fp" + }, + { + "path": "App/algo/sample_ring.h", + "class": "fp" + }, { "path": "App/app/app_cfg.h", "class": "fp" @@ -57,6 +105,30 @@ "path": "App/log/sys_log_mcu.c", "class": "fp" }, + { + "path": "App/protocol/iec104/iec104_asdu.c", + "class": "fp" + }, + { + "path": "App/protocol/iec104/iec104_asdu.h", + "class": "fp" + }, + { + "path": "App/protocol/iec104/iec104_link.c", + "class": "fp" + }, + { + "path": "App/protocol/iec104/iec104_link.h", + "class": "fp" + }, + { + "path": "App/protocol/iec104/iec104_pts.c", + "class": "fp" + }, + { + "path": "App/protocol/iec104/iec104_pts.h", + "class": "fp" + }, { "path": "App/sync/time_sync.c", "class": "fp" @@ -81,6 +153,14 @@ "path": "App/task/default_task.h", "class": "fp" }, + { + "path": "App/task/iec104_serv.c", + "class": "fp" + }, + { + "path": "App/task/iec104_serv.h", + "class": "fp" + }, { "path": "App/task/net_task.c", "class": "fp" @@ -89,6 +169,14 @@ "path": "App/task/net_task.h", "class": "fp" }, + { + "path": "App/task/protect_task.c", + "class": "fp" + }, + { + "path": "App/task/protect_task.h", + "class": "fp" + }, { "path": "App/task/rs485_task.c", "class": "fp" @@ -105,6 +193,14 @@ "path": "App/task/ui_task.h", "class": "fp" }, + { + "path": "App/util/sha256.c", + "class": "fp" + }, + { + "path": "App/util/sha256.h", + "class": "fp" + }, { "path": "App/util/sys_clock.c", "class": "fp" @@ -113,6 +209,14 @@ "path": "App/util/sys_clock.h", "class": "fp" }, + { + "path": "App/util/task_prof.c", + "class": "fp" + }, + { + "path": "App/util/task_prof.h", + "class": "fp" + }, { "path": "App/util/task_watchdog.c", "class": "fp" @@ -153,6 +257,14 @@ "path": "Drivers/BSP/NET/lftpd/lftpd.h", "class": "tp" }, + { + "path": "Drivers/BSP/NET/lftpd/lftpd_auth.c", + "class": "tp" + }, + { + "path": "Drivers/BSP/NET/lftpd/lftpd_auth.h", + "class": "tp" + }, { "path": "Drivers/BSP/NET/lftpd/lftpd_inet.c", "class": "tp" @@ -161,10 +273,6 @@ "path": "Drivers/BSP/NET/lftpd/lftpd_io.c", "class": "tp" }, - { - "path": "Drivers/BSP/NET/lftpd/lftpd_log.c", - "class": "tp" - }, { "path": "Drivers/BSP/NET/lftpd/lftpd_string.c", "class": "tp" @@ -213,6 +321,14 @@ "path": "Drivers/BSP/NET/net_types.h", "class": "fp" }, + { + "path": "Drivers/BSP/NETCFG/ftp_cfg.c", + "class": "fp" + }, + { + "path": "Drivers/BSP/NETCFG/ftp_cfg.h", + "class": "fp" + }, { "path": "Drivers/BSP/NETCFG/net_cfg.c", "class": "fp" @@ -669,6 +785,10 @@ "path": "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_system.h", "class": "tp" }, + { + "path": "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_tim.h", + "class": "tp" + }, { "path": "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_usart.h", "class": "tp" @@ -805,6 +925,10 @@ "path": "Inc/stm32f4xx_it.h", "class": "fp" }, + { + "path": "Inc/tim.h", + "class": "fp" + }, { "path": "Inc/usart.h", "class": "fp" @@ -4789,6 +4913,10 @@ "path": "Src/system_stm32f4xx.c", "class": "fp" }, + { + "path": "Src/tim.c", + "class": "fp" + }, { "path": "Src/usart.c", "class": "fp" @@ -5537,6 +5665,14 @@ "path": "simulator/sim/ui_net_sink_backend_sim.c", "class": "fp" }, + { + "path": "test/board/ch395f_reuse_bench.c", + "class": "fp" + }, + { + "path": "test/board/ch395f_reuse_bench.h", + "class": "fp" + }, { "path": "test/board/ch395f_test.h", "class": "fp" @@ -5601,6 +5737,22 @@ "path": "test/board/test_config.h", "class": "fp" }, + { + "path": "test/host/adc_health/adc_health_test.c", + "class": "fp" + }, + { + "path": "test/host/adc_input/adc_input_test.c", + "class": "fp" + }, + { + "path": "test/host/adc_input/stub/adc.h", + "class": "fp" + }, + { + "path": "test/host/adc_input/stub/tpafe5160.h", + "class": "fp" + }, { "path": "test/host/cfg_file/cfg_file_test.c", "class": "fp" @@ -5609,6 +5761,30 @@ "path": "test/host/cfg_file/stub/dbg_log.h", "class": "fp" }, + { + "path": "test/host/ftp_auth/ftp_auth_test.c", + "class": "fp" + }, + { + "path": "test/host/iec104/iec104_test.c", + "class": "fp" + }, + { + "path": "test/host/phasor/phasor_test.c", + "class": "fp" + }, + { + "path": "test/host/prot_elm/prot_elm_test.c", + "class": "fp" + }, + { + "path": "test/host/prot_set/prot_set_test.c", + "class": "fp" + }, + { + "path": "test/host/sha256/sha256_test.c", + "class": "fp" + }, { "path": "test/host/sys_clock/stub/FreeRTOS.h", "class": "fp" @@ -5629,6 +5805,46 @@ "path": "test/host/sys_clock/sys_clock_test.c", "class": "fp" }, + { + "path": "test/host/time_sync/stub/FreeRTOS.h", + "class": "fp" + }, + { + "path": "test/host/time_sync/stub/cmsis_os2.h", + "class": "fp" + }, + { + "path": "test/host/time_sync/stub/dbg_log.h", + "class": "fp" + }, + { + "path": "test/host/time_sync/stub/net_socket.h", + "class": "fp" + }, + { + "path": "test/host/time_sync/stub/sys_clock.h", + "class": "fp" + }, + { + "path": "test/host/time_sync/stub/sys_events.h", + "class": "fp" + }, + { + "path": "test/host/time_sync/stub/task.h", + "class": "fp" + }, + { + "path": "test/host/time_sync/time_sync_test.c", + "class": "fp" + }, + { + "path": "test/host/vol_lock/stub/cmsis_os.h", + "class": "fp" + }, + { + "path": "test/host/vol_lock/vol_lock_test.c", + "class": "fp" + }, { "path": "test/host/watchdog/stub/dbg_log.h", "class": "fp" @@ -5651,6 +5867,150 @@ } ], "edges": [ + { + "from": "App/algo/adc_health.c", + "to": "App/algo/adc_health.h", + "kind": "fp-fp", + "include": "adc_health.h" + }, + { + "from": "App/algo/adc_health.h", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "stdint.h" + }, + { + "from": "App/algo/adc_input.c", + "to": "App/algo/adc_input.h", + "kind": "fp-fp", + "include": "adc_input.h" + }, + { + "from": "App/algo/adc_input.c", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "stddef.h" + }, + { + "from": "App/algo/adc_input.c", + "to": "Inc/adc.h", + "kind": "fp-fp", + "include": "adc.h" + }, + { + "from": "App/algo/adc_input.c", + "to": "Drivers/BSP/TPAFE5160/tpafe5160.h", + "kind": "fp-fp", + "include": "tpafe5160.h" + }, + { + "from": "App/algo/adc_input.h", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "stdint.h" + }, + { + "from": "App/algo/phasor.c", + "to": "App/algo/phasor.h", + "kind": "fp-fp", + "include": "phasor.h" + }, + { + "from": "App/algo/phasor.c", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "math.h" + }, + { + "from": "App/algo/phasor.c", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "stddef.h" + }, + { + "from": "App/algo/phasor.c", + "to": "App/algo/sample_ring.h", + "kind": "fp-fp", + "include": "sample_ring.h" + }, + { + "from": "App/algo/phasor.h", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "stdint.h" + }, + { + "from": "App/algo/phasor.h", + "to": "App/algo/adc_input.h", + "kind": "fp-fp", + "include": "adc_input.h" + }, + { + "from": "App/algo/prot_elm.c", + "to": "App/algo/prot_elm.h", + "kind": "fp-fp", + "include": "prot_elm.h" + }, + { + "from": "App/algo/prot_elm.c", + "to": "App/algo/prot_set.h", + "kind": "fp-fp", + "include": "prot_set.h" + }, + { + "from": "App/algo/prot_elm.c", + "to": "App/algo/phasor.h", + "kind": "fp-fp", + "include": "phasor.h" + }, + { + "from": "App/algo/prot_elm.c", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "stddef.h" + }, + { + "from": "App/algo/prot_elm.h", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "stdint.h" + }, + { + "from": "App/algo/prot_set.c", + "to": "App/algo/prot_set.h", + "kind": "fp-fp", + "include": "prot_set.h" + }, + { + "from": "App/algo/prot_set.h", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "stdint.h" + }, + { + "from": "App/algo/sample_ring.c", + "to": "App/algo/sample_ring.h", + "kind": "fp-fp", + "include": "sample_ring.h" + }, + { + "from": "App/algo/sample_ring.c", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "stddef.h" + }, + { + "from": "App/algo/sample_ring.h", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "stdint.h" + }, + { + "from": "App/algo/sample_ring.h", + "to": "App/algo/adc_input.h", + "kind": "fp-fp", + "include": "adc_input.h" + }, { "from": "App/app/app_main.c", "to": "App/app/app_main.h", @@ -5681,6 +6041,12 @@ "kind": "fp-fp", "include": "usart.h" }, + { + "from": "App/app/app_main.c", + "to": "Inc/tim.h", + "kind": "fp-fp", + "include": "tim.h" + }, { "from": "App/app/app_main.c", "to": "Drivers/BSP/RS485/rs485.h", @@ -5711,6 +6077,30 @@ "kind": "fp-fp", "include": "tpafe5160.h" }, + { + "from": "App/app/app_main.c", + "to": "App/algo/adc_input.h", + "kind": "fp-fp", + "include": "adc_input.h" + }, + { + "from": "App/app/app_main.c", + "to": "App/algo/phasor.h", + "kind": "fp-fp", + "include": "phasor.h" + }, + { + "from": "App/app/app_main.c", + "to": "App/algo/prot_set.h", + "kind": "fp-fp", + "include": "prot_set.h" + }, + { + "from": "App/app/app_main.c", + "to": "App/algo/prot_elm.h", + "kind": "fp-fp", + "include": "prot_elm.h" + }, { "from": "App/app/app_main.c", "to": "App/log/sys_log.h", @@ -5723,6 +6113,12 @@ "kind": "fp-fp", "include": "task_watchdog.h" }, + { + "from": "App/app/app_main.c", + "to": "test/board/test_config.h", + "kind": "fp-fp", + "include": "test_config.h" + }, { "from": "App/app/app_main.c", "to": "Drivers/BSP/dbg_log.h", @@ -5975,6 +6371,102 @@ "kind": "fp-fp", "include": "vol_lock.h" }, + { + "from": "App/protocol/iec104/iec104_asdu.c", + "to": "App/protocol/iec104/iec104_asdu.h", + "kind": "fp-fp", + "include": "iec104_asdu.h" + }, + { + "from": "App/protocol/iec104/iec104_asdu.c", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "string.h" + }, + { + "from": "App/protocol/iec104/iec104_asdu.h", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "stdint.h" + }, + { + "from": "App/protocol/iec104/iec104_link.c", + "to": "App/protocol/iec104/iec104_link.h", + "kind": "fp-fp", + "include": "iec104_link.h" + }, + { + "from": "App/protocol/iec104/iec104_link.c", + "to": "App/protocol/iec104/iec104_asdu.h", + "kind": "fp-fp", + "include": "iec104_asdu.h" + }, + { + "from": "App/protocol/iec104/iec104_link.c", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "string.h" + }, + { + "from": "App/protocol/iec104/iec104_link.h", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "stdint.h" + }, + { + "from": "App/protocol/iec104/iec104_link.h", + "to": "App/protocol/iec104/iec104_pts.h", + "kind": "fp-fp", + "include": "iec104_pts.h" + }, + { + "from": "App/protocol/iec104/iec104_pts.c", + "to": "App/protocol/iec104/iec104_pts.h", + "kind": "fp-fp", + "include": "iec104_pts.h" + }, + { + "from": "App/protocol/iec104/iec104_pts.c", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "string.h" + }, + { + "from": "App/protocol/iec104/iec104_pts.c", + "to": "App/protocol/iec104/iec104_asdu.h", + "kind": "fp-fp", + "include": "iec104_asdu.h" + }, + { + "from": "App/protocol/iec104/iec104_pts.c", + "to": "App/algo/phasor.h", + "kind": "fp-fp", + "include": "phasor.h" + }, + { + "from": "App/protocol/iec104/iec104_pts.c", + "to": "App/algo/prot_elm.h", + "kind": "fp-fp", + "include": "prot_elm.h" + }, + { + "from": "App/protocol/iec104/iec104_pts.c", + "to": "App/algo/prot_set.h", + "kind": "fp-fp", + "include": "prot_set.h" + }, + { + "from": "App/protocol/iec104/iec104_pts.c", + "to": "App/algo/adc_input.h", + "kind": "fp-fp", + "include": "adc_input.h" + }, + { + "from": "App/protocol/iec104/iec104_pts.h", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "stdint.h" + }, { "from": "App/sync/time_sync.c", "to": "外部/系统头文件", @@ -6035,12 +6527,60 @@ "kind": "fp-tp", "include": "cmsis_os.h" }, + { + "from": "App/task/adc_task.c", + "to": "App/algo/adc_input.h", + "kind": "fp-fp", + "include": "adc_input.h" + }, + { + "from": "App/task/adc_task.c", + "to": "App/algo/sample_ring.h", + "kind": "fp-fp", + "include": "sample_ring.h" + }, + { + "from": "App/task/adc_task.c", + "to": "App/algo/phasor.h", + "kind": "fp-fp", + "include": "phasor.h" + }, + { + "from": "App/task/adc_task.c", + "to": "App/algo/adc_health.h", + "kind": "fp-fp", + "include": "adc_health.h" + }, { "from": "App/task/adc_task.c", "to": "Drivers/BSP/TPAFE5160/tpafe5160.h", "kind": "fp-fp", "include": "tpafe5160.h" }, + { + "from": "App/task/adc_task.c", + "to": "App/util/task_watchdog.h", + "kind": "fp-fp", + "include": "task_watchdog.h" + }, + { + "from": "App/task/adc_task.c", + "to": "App/log/console_log.h", + "kind": "fp-fp", + "include": "console_log.h" + }, + { + "from": "App/task/adc_task.c", + "to": "App/log/sys_log.h", + "kind": "fp-fp", + "include": "sys_log.h" + }, + { + "from": "App/task/adc_task.c", + "to": "App/util/task_prof.h", + "kind": "fp-fp", + "include": "task_prof.h" + }, { "from": "App/task/adc_task.c", "to": "Drivers/BSP/dbg_log.h", @@ -6131,12 +6671,78 @@ "kind": "fp-fp", "include": "task_watchdog.h" }, + { + "from": "App/task/default_task.c", + "to": "App/util/task_prof.h", + "kind": "fp-fp", + "include": "task_prof.h" + }, { "from": "App/task/default_task.c", "to": "App/fs/vol_lock.h", "kind": "fp-fp", "include": "vol_lock.h" }, + { + "from": "App/task/iec104_serv.c", + "to": "App/task/iec104_serv.h", + "kind": "fp-fp", + "include": "iec104_serv.h" + }, + { + "from": "App/task/iec104_serv.c", + "to": "App/protocol/iec104/iec104_link.h", + "kind": "fp-fp", + "include": "iec104_link.h" + }, + { + "from": "App/task/iec104_serv.c", + "to": "App/protocol/iec104/iec104_pts.h", + "kind": "fp-fp", + "include": "iec104_pts.h" + }, + { + "from": "App/task/iec104_serv.c", + "to": "Drivers/BSP/NET/net_socket.h", + "kind": "fp-fp", + "include": "net_socket.h" + }, + { + "from": "App/task/iec104_serv.c", + "to": "App/util/sys_clock.h", + "kind": "fp-fp", + "include": "sys_clock.h" + }, + { + "from": "App/task/iec104_serv.c", + "to": "App/app/sys_events.h", + "kind": "fp-fp", + "include": "sys_events.h" + }, + { + "from": "App/task/iec104_serv.c", + "to": "App/util/task_watchdog.h", + "kind": "fp-fp", + "include": "task_watchdog.h" + }, + { + "from": "App/task/iec104_serv.c", + "to": "Drivers/BSP/dbg_log.h", + "kind": "fp-fp", + "include": "dbg_log.h" + }, + { + "from": "App/task/iec104_serv.c", + "to": "Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.h", + "kind": "fp-tp", + "include": "cmsis_os2.h" + }, + { + "from": "App/task/iec104_serv.c", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "string.h" + }, { "from": "App/task/net_task.c", "to": "外部/系统头文件", @@ -6203,12 +6809,60 @@ "kind": "fp-fp", "include": "task_watchdog.h" }, + { + "from": "App/task/net_task.c", + "to": "App/util/task_prof.h", + "kind": "fp-fp", + "include": "task_prof.h" + }, { "from": "App/task/net_task.c", "to": "Drivers/BSP/dbg_log.h", "kind": "fp-fp", "include": "dbg_log.h" }, + { + "from": "App/task/protect_task.c", + "to": "App/task/protect_task.h", + "kind": "fp-fp", + "include": "protect_task.h" + }, + { + "from": "App/task/protect_task.c", + "to": "Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.h", + "kind": "fp-tp", + "include": "cmsis_os2.h" + }, + { + "from": "App/task/protect_task.c", + "to": "Drivers/BSP/dbg_log.h", + "kind": "fp-fp", + "include": "dbg_log.h" + }, + { + "from": "App/task/protect_task.c", + "to": "App/algo/adc_health.h", + "kind": "fp-fp", + "include": "adc_health.h" + }, + { + "from": "App/task/protect_task.c", + "to": "App/algo/prot_elm.h", + "kind": "fp-fp", + "include": "prot_elm.h" + }, + { + "from": "App/task/protect_task.c", + "to": "App/algo/prot_set.h", + "kind": "fp-fp", + "include": "prot_set.h" + }, + { + "from": "App/task/protect_task.c", + "to": "App/util/task_watchdog.h", + "kind": "fp-fp", + "include": "task_watchdog.h" + }, { "from": "App/task/rs485_task.c", "to": "App/task/rs485_task.h", @@ -6305,12 +6959,42 @@ "kind": "fp-fp", "include": "task_watchdog.h" }, + { + "from": "App/task/ui_task.c", + "to": "App/util/task_prof.h", + "kind": "fp-fp", + "include": "task_prof.h" + }, { "from": "App/task/ui_task.c", "to": "Drivers/BSP/dbg_log.h", "kind": "fp-fp", "include": "dbg_log.h" }, + { + "from": "App/util/sha256.c", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "string.h" + }, + { + "from": "App/util/sha256.c", + "to": "App/util/sha256.h", + "kind": "fp-fp", + "include": "sha256.h" + }, + { + "from": "App/util/sha256.h", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "stddef.h" + }, + { + "from": "App/util/sha256.h", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "stdint.h" + }, { "from": "App/util/sys_clock.c", "to": "App/util/sys_clock.h", @@ -6365,6 +7049,36 @@ "kind": "fp-fp", "include": "sd2506.h" }, + { + "from": "App/util/task_prof.c", + "to": "App/util/task_prof.h", + "kind": "fp-fp", + "include": "task_prof.h" + }, + { + "from": "App/util/task_prof.c", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "stdio.h" + }, + { + "from": "App/util/task_prof.c", + "to": "Inc/main.h", + "kind": "fp-fp", + "include": "main.h" + }, + { + "from": "App/util/task_prof.c", + "to": "App/log/console_log.h", + "kind": "fp-fp", + "include": "console_log.h" + }, + { + "from": "App/util/task_prof.h", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "stdint.h" + }, { "from": "App/util/task_watchdog.c", "to": "App/util/task_watchdog.h", @@ -6851,6 +7565,18 @@ "kind": "tp-tp", "include": "net_config.h" }, + { + "from": "Drivers/BSP/NET/lftpd/lftpd.c", + "to": "Drivers/BSP/NET/lftpd/lftpd_auth.h", + "kind": "tp-tp", + "include": "lftpd_auth.h" + }, + { + "from": "Drivers/BSP/NET/lftpd/lftpd.c", + "to": "Drivers/BSP/NETCFG/ftp_cfg.h", + "kind": "tp-tp", + "include": "ftp_cfg.h" + }, { "from": "Drivers/BSP/NET/lftpd/lftpd.c", "to": "Lib/FatFs/ff.h", @@ -6863,6 +7589,36 @@ "kind": "tp-ext", "include": "stdint.h" }, + { + "from": "Drivers/BSP/NET/lftpd/lftpd_auth.c", + "to": "外部/系统头文件", + "kind": "tp-ext", + "include": "stddef.h" + }, + { + "from": "Drivers/BSP/NET/lftpd/lftpd_auth.c", + "to": "外部/系统头文件", + "kind": "tp-ext", + "include": "string.h" + }, + { + "from": "Drivers/BSP/NET/lftpd/lftpd_auth.c", + "to": "Drivers/BSP/NET/lftpd/lftpd_auth.h", + "kind": "tp-tp", + "include": "lftpd_auth.h" + }, + { + "from": "Drivers/BSP/NET/lftpd/lftpd_auth.c", + "to": "App/util/sha256.h", + "kind": "tp-tp", + "include": "sha256.h" + }, + { + "from": "Drivers/BSP/NET/lftpd/lftpd_auth.h", + "to": "外部/系统头文件", + "kind": "tp-ext", + "include": "stdint.h" + }, { "from": "Drivers/BSP/NET/lftpd/lftpd_inet.c", "to": "Drivers/BSP/NET/lftpd/private/lftpd_inet.h", @@ -6947,36 +7703,6 @@ "kind": "tp-tp", "include": "dbg_log.h" }, - { - "from": "Drivers/BSP/NET/lftpd/lftpd_log.c", - "to": "Drivers/BSP/NET/lftpd/private/lftpd_log.h", - "kind": "tp-tp", - "include": "private/lftpd_log.h" - }, - { - "from": "Drivers/BSP/NET/lftpd/lftpd_log.c", - "to": "外部/系统头文件", - "kind": "tp-ext", - "include": "stdio.h" - }, - { - "from": "Drivers/BSP/NET/lftpd/lftpd_log.c", - "to": "外部/系统头文件", - "kind": "tp-ext", - "include": "stdlib.h" - }, - { - "from": "Drivers/BSP/NET/lftpd/lftpd_log.c", - "to": "外部/系统头文件", - "kind": "tp-ext", - "include": "stdarg.h" - }, - { - "from": "Drivers/BSP/NET/lftpd/lftpd_log.c", - "to": "Drivers/BSP/dbg_log.h", - "kind": "tp-tp", - "include": "dbg_log.h" - }, { "from": "Drivers/BSP/NET/lftpd/lftpd_string.c", "to": "外部/系统头文件", @@ -7019,6 +7745,36 @@ "kind": "tp-tp", "include": "dbg_log.h" }, + { + "from": "Drivers/BSP/NETCFG/ftp_cfg.c", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "stddef.h" + }, + { + "from": "Drivers/BSP/NETCFG/ftp_cfg.c", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "string.h" + }, + { + "from": "Drivers/BSP/NETCFG/ftp_cfg.c", + "to": "Drivers/BSP/NETCFG/ftp_cfg.h", + "kind": "fp-fp", + "include": "ftp_cfg.h" + }, + { + "from": "Drivers/BSP/NETCFG/ftp_cfg.c", + "to": "App/cfg/cfg_file.h", + "kind": "fp-fp", + "include": "cfg_file.h" + }, + { + "from": "Drivers/BSP/NETCFG/ftp_cfg.h", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "stdint.h" + }, { "from": "Drivers/BSP/NETCFG/net_cfg.c", "to": "外部/系统头文件", @@ -7049,6 +7805,12 @@ "kind": "fp-fp", "include": "cfg_file.h" }, + { + "from": "Drivers/BSP/NETCFG/net_cfg.c", + "to": "Drivers/BSP/NETCFG/ftp_cfg.h", + "kind": "fp-fp", + "include": "ftp_cfg.h" + }, { "from": "Drivers/BSP/NETCFG/net_cfg.c", "to": "Drivers/BSP/dbg_log.h", @@ -8675,6 +9437,12 @@ "kind": "tp-tp", "include": "stm32f4xx.h" }, + { + "from": "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_tim.h", + "to": "Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h", + "kind": "tp-tp", + "include": "stm32f4xx.h" + }, { "from": "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_usart.h", "to": "Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h", @@ -9167,6 +9935,12 @@ "kind": "fp-ext", "include": "stm32f4xx_hal_mmc.h" }, + { + "from": "Inc/tim.h", + "to": "Inc/main.h", + "kind": "fp-fp", + "include": "main.h" + }, { "from": "Inc/usart.h", "to": "Inc/main.h", @@ -39011,6 +39785,24 @@ "kind": "fp-fp", "include": "default_task.h" }, + { + "from": "Src/freertos.c", + "to": "App/task/adc_task.h", + "kind": "fp-fp", + "include": "adc_task.h" + }, + { + "from": "Src/freertos.c", + "to": "App/task/iec104_serv.h", + "kind": "fp-fp", + "include": "iec104_serv.h" + }, + { + "from": "Src/freertos.c", + "to": "App/task/protect_task.h", + "kind": "fp-fp", + "include": "protect_task.h" + }, { "from": "Src/gpio.c", "to": "Inc/gpio.h", @@ -39071,6 +39863,12 @@ "kind": "fp-fp", "include": "spi.h" }, + { + "from": "Src/main.c", + "to": "Inc/tim.h", + "kind": "fp-fp", + "include": "tim.h" + }, { "from": "Src/main.c", "to": "Inc/usart.h", @@ -39155,6 +39953,12 @@ "kind": "fp-fp", "include": "task_watchdog.h" }, + { + "from": "Src/main.c", + "to": "App/task/adc_task.h", + "kind": "fp-fp", + "include": "adc_task.h" + }, { "from": "Src/main.c", "to": "Drivers/BSP/dbg_log.h", @@ -39209,12 +40013,42 @@ "kind": "fp-tp", "include": "stm32f4xx.h" }, + { + "from": "Src/tim.c", + "to": "Inc/tim.h", + "kind": "fp-fp", + "include": "tim.h" + }, { "from": "Src/usart.c", "to": "Inc/usart.h", "kind": "fp-fp", "include": "usart.h" }, + { + "from": "test/board/ch395f_reuse_bench.c", + "to": "test/board/ch395f_reuse_bench.h", + "kind": "fp-fp", + "include": "ch395f_reuse_bench.h" + }, + { + "from": "test/board/ch395f_reuse_bench.c", + "to": "Drivers/BSP/CH395F/ch395f.h", + "kind": "fp-fp", + "include": "ch395f.h" + }, + { + "from": "test/board/ch395f_reuse_bench.c", + "to": "Drivers/BSP/dbg_log.h", + "kind": "fp-fp", + "include": "dbg_log.h" + }, + { + "from": "test/board/ch395f_reuse_bench.c", + "to": "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h", + "kind": "fp-tp", + "include": "stm32f4xx_hal.h" + }, { "from": "test/board/ch395f_test.h", "to": "外部/系统头文件", @@ -39695,6 +40529,78 @@ "kind": "fp-fp", "include": "sd2506_test.h" }, + { + "from": "test/host/adc_health/adc_health_test.c", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "stdint.h" + }, + { + "from": "test/host/adc_health/adc_health_test.c", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "stdio.h" + }, + { + "from": "test/host/adc_health/adc_health_test.c", + "to": "App/algo/adc_health.c", + "kind": "fp-fp", + "include": "adc_health.c" + }, + { + "from": "test/host/adc_input/adc_input_test.c", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "stddef.h" + }, + { + "from": "test/host/adc_input/adc_input_test.c", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "stdint.h" + }, + { + "from": "test/host/adc_input/adc_input_test.c", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "stdio.h" + }, + { + "from": "test/host/adc_input/adc_input_test.c", + "to": "Inc/adc.h", + "kind": "fp-fp", + "include": "adc.h" + }, + { + "from": "test/host/adc_input/adc_input_test.c", + "to": "Drivers/BSP/TPAFE5160/tpafe5160.h", + "kind": "fp-fp", + "include": "tpafe5160.h" + }, + { + "from": "test/host/adc_input/adc_input_test.c", + "to": "App/algo/adc_input.h", + "kind": "fp-fp", + "include": "adc_input.h" + }, + { + "from": "test/host/adc_input/adc_input_test.c", + "to": "App/algo/adc_input.c", + "kind": "fp-fp", + "include": "adc_input.c" + }, + { + "from": "test/host/adc_input/stub/adc.h", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "stdint.h" + }, + { + "from": "test/host/adc_input/stub/tpafe5160.h", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "stdint.h" + }, { "from": "test/host/cfg_file/cfg_file_test.c", "to": "外部/系统头文件", @@ -39749,6 +40655,192 @@ "kind": "fp-ext", "include": "stdio.h" }, + { + "from": "test/host/ftp_auth/ftp_auth_test.c", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "stdio.h" + }, + { + "from": "test/host/ftp_auth/ftp_auth_test.c", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "string.h" + }, + { + "from": "test/host/ftp_auth/ftp_auth_test.c", + "to": "App/util/sha256.c", + "kind": "fp-fp", + "include": "sha256.c" + }, + { + "from": "test/host/ftp_auth/ftp_auth_test.c", + "to": "Drivers/BSP/NET/lftpd/lftpd_auth.c", + "kind": "fp-tp", + "include": "lftpd_auth.c" + }, + { + "from": "test/host/iec104/iec104_test.c", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "stdint.h" + }, + { + "from": "test/host/iec104/iec104_test.c", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "stdio.h" + }, + { + "from": "test/host/iec104/iec104_test.c", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "string.h" + }, + { + "from": "test/host/iec104/iec104_test.c", + "to": "App/protocol/iec104/iec104_asdu.c", + "kind": "fp-fp", + "include": "iec104_asdu.c" + }, + { + "from": "test/host/iec104/iec104_test.c", + "to": "App/algo/prot_set.c", + "kind": "fp-fp", + "include": "prot_set.c" + }, + { + "from": "test/host/iec104/iec104_test.c", + "to": "App/algo/sample_ring.c", + "kind": "fp-fp", + "include": "sample_ring.c" + }, + { + "from": "test/host/iec104/iec104_test.c", + "to": "App/algo/phasor.c", + "kind": "fp-fp", + "include": "phasor.c" + }, + { + "from": "test/host/iec104/iec104_test.c", + "to": "App/algo/prot_elm.c", + "kind": "fp-fp", + "include": "prot_elm.c" + }, + { + "from": "test/host/iec104/iec104_test.c", + "to": "App/protocol/iec104/iec104_pts.c", + "kind": "fp-fp", + "include": "iec104_pts.c" + }, + { + "from": "test/host/iec104/iec104_test.c", + "to": "App/protocol/iec104/iec104_link.c", + "kind": "fp-fp", + "include": "iec104_link.c" + }, + { + "from": "test/host/phasor/phasor_test.c", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "math.h" + }, + { + "from": "test/host/phasor/phasor_test.c", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "stdint.h" + }, + { + "from": "test/host/phasor/phasor_test.c", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "stdio.h" + }, + { + "from": "test/host/phasor/phasor_test.c", + "to": "App/algo/sample_ring.c", + "kind": "fp-fp", + "include": "sample_ring.c" + }, + { + "from": "test/host/phasor/phasor_test.c", + "to": "App/algo/phasor.c", + "kind": "fp-fp", + "include": "phasor.c" + }, + { + "from": "test/host/prot_elm/prot_elm_test.c", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "stdint.h" + }, + { + "from": "test/host/prot_elm/prot_elm_test.c", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "stdio.h" + }, + { + "from": "test/host/prot_elm/prot_elm_test.c", + "to": "App/algo/prot_set.c", + "kind": "fp-fp", + "include": "prot_set.c" + }, + { + "from": "test/host/prot_elm/prot_elm_test.c", + "to": "App/algo/sample_ring.c", + "kind": "fp-fp", + "include": "sample_ring.c" + }, + { + "from": "test/host/prot_elm/prot_elm_test.c", + "to": "App/algo/phasor.c", + "kind": "fp-fp", + "include": "phasor.c" + }, + { + "from": "test/host/prot_elm/prot_elm_test.c", + "to": "App/algo/prot_elm.c", + "kind": "fp-fp", + "include": "prot_elm.c" + }, + { + "from": "test/host/prot_set/prot_set_test.c", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "stdint.h" + }, + { + "from": "test/host/prot_set/prot_set_test.c", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "stdio.h" + }, + { + "from": "test/host/prot_set/prot_set_test.c", + "to": "App/algo/prot_set.c", + "kind": "fp-fp", + "include": "prot_set.c" + }, + { + "from": "test/host/sha256/sha256_test.c", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "stdio.h" + }, + { + "from": "test/host/sha256/sha256_test.c", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "string.h" + }, + { + "from": "test/host/sha256/sha256_test.c", + "to": "App/util/sha256.c", + "kind": "fp-fp", + "include": "sha256.c" + }, { "from": "test/host/sys_clock/sys_clock_test.c", "to": "外部/系统头文件", @@ -39833,6 +40925,162 @@ "kind": "fp-fp", "include": "FreeRTOS.h" }, + { + "from": "test/host/time_sync/time_sync_test.c", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "setjmp.h" + }, + { + "from": "test/host/time_sync/time_sync_test.c", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "stdint.h" + }, + { + "from": "test/host/time_sync/time_sync_test.c", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "stdio.h" + }, + { + "from": "test/host/time_sync/time_sync_test.c", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "string.h" + }, + { + "from": "test/host/time_sync/time_sync_test.c", + "to": "Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h", + "kind": "fp-tp", + "include": "FreeRTOS.h" + }, + { + "from": "test/host/time_sync/time_sync_test.c", + "to": "Middlewares/Third_Party/FreeRTOS/Source/include/task.h", + "kind": "fp-tp", + "include": "task.h" + }, + { + "from": "test/host/time_sync/time_sync_test.c", + "to": "Drivers/BSP/NET/net_socket.h", + "kind": "fp-fp", + "include": "net_socket.h" + }, + { + "from": "test/host/time_sync/time_sync_test.c", + "to": "App/util/sys_clock.h", + "kind": "fp-fp", + "include": "sys_clock.h" + }, + { + "from": "test/host/time_sync/time_sync_test.c", + "to": "App/app/sys_events.h", + "kind": "fp-fp", + "include": "sys_events.h" + }, + { + "from": "test/host/time_sync/time_sync_test.c", + "to": "App/util/task_watchdog.h", + "kind": "fp-fp", + "include": "task_watchdog.h" + }, + { + "from": "test/host/time_sync/time_sync_test.c", + "to": "App/sync/time_sync.c", + "kind": "fp-fp", + "include": "time_sync.c" + }, + { + "from": "test/host/time_sync/stub/FreeRTOS.h", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "stdint.h" + }, + { + "from": "test/host/time_sync/stub/cmsis_os2.h", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "stdint.h" + }, + { + "from": "test/host/time_sync/stub/dbg_log.h", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "stdio.h" + }, + { + "from": "test/host/time_sync/stub/net_socket.h", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "stdint.h" + }, + { + "from": "test/host/time_sync/stub/net_socket.h", + "to": "test/host/time_sync/stub/FreeRTOS.h", + "kind": "fp-fp", + "include": "FreeRTOS.h" + }, + { + "from": "test/host/time_sync/stub/net_socket.h", + "to": "test/host/time_sync/stub/task.h", + "kind": "fp-fp", + "include": "task.h" + }, + { + "from": "test/host/time_sync/stub/sys_clock.h", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "stdint.h" + }, + { + "from": "test/host/time_sync/stub/sys_events.h", + "to": "test/host/time_sync/stub/cmsis_os2.h", + "kind": "fp-fp", + "include": "cmsis_os2.h" + }, + { + "from": "test/host/time_sync/stub/task.h", + "to": "test/host/time_sync/stub/FreeRTOS.h", + "kind": "fp-fp", + "include": "FreeRTOS.h" + }, + { + "from": "test/host/vol_lock/vol_lock_test.c", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "stddef.h" + }, + { + "from": "test/host/vol_lock/vol_lock_test.c", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "stdint.h" + }, + { + "from": "test/host/vol_lock/vol_lock_test.c", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "stdio.h" + }, + { + "from": "test/host/vol_lock/vol_lock_test.c", + "to": "Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h", + "kind": "fp-tp", + "include": "cmsis_os.h" + }, + { + "from": "test/host/vol_lock/vol_lock_test.c", + "to": "App/fs/vol_lock.c", + "kind": "fp-fp", + "include": "vol_lock.c" + }, + { + "from": "test/host/vol_lock/stub/cmsis_os.h", + "to": "外部/系统头文件", + "kind": "fp-ext", + "include": "stdint.h" + }, { "from": "test/host/watchdog/watchdog_test.c", "to": "外部/系统头文件", @@ -39889,6 +41137,37 @@ } ], "unresolved": { + "App/algo/adc_health.h": [ + "stdint.h" + ], + "App/algo/adc_input.c": [ + "stddef.h" + ], + "App/algo/adc_input.h": [ + "stdint.h" + ], + "App/algo/phasor.c": [ + "math.h", + "stddef.h" + ], + "App/algo/phasor.h": [ + "stdint.h" + ], + "App/algo/prot_elm.c": [ + "stddef.h" + ], + "App/algo/prot_elm.h": [ + "stdint.h" + ], + "App/algo/prot_set.h": [ + "stdint.h" + ], + "App/algo/sample_ring.c": [ + "stddef.h" + ], + "App/algo/sample_ring.h": [ + "stdint.h" + ], "App/app/app_main.h": [ "stdint.h" ], @@ -39927,18 +41206,46 @@ "stdio.h", "string.h" ], + "App/protocol/iec104/iec104_asdu.c": [ + "string.h" + ], + "App/protocol/iec104/iec104_asdu.h": [ + "stdint.h" + ], + "App/protocol/iec104/iec104_link.c": [ + "string.h" + ], + "App/protocol/iec104/iec104_link.h": [ + "stdint.h" + ], + "App/protocol/iec104/iec104_pts.c": [ + "string.h" + ], + "App/protocol/iec104/iec104_pts.h": [ + "stdint.h" + ], "App/sync/time_sync.c": [ "string.h" ], "App/sync/time_sync.h": [ "stdint.h" ], + "App/task/iec104_serv.c": [ + "string.h" + ], "App/task/net_task.c": [ "string.h" ], "App/task/ui_task.c": [ "string.h" ], + "App/util/sha256.c": [ + "string.h" + ], + "App/util/sha256.h": [ + "stddef.h", + "stdint.h" + ], "App/util/sys_clock.c": [ "stdio.h", "string.h" @@ -39946,6 +41253,12 @@ "App/util/sys_clock.h": [ "stdint.h" ], + "App/util/task_prof.c": [ + "stdio.h" + ], + "App/util/task_prof.h": [ + "stdint.h" + ], "App/util/task_watchdog.c": [ "string.h" ], @@ -39980,6 +41293,13 @@ "Drivers/BSP/NET/lftpd/lftpd.h": [ "stdint.h" ], + "Drivers/BSP/NET/lftpd/lftpd_auth.c": [ + "stddef.h", + "string.h" + ], + "Drivers/BSP/NET/lftpd/lftpd_auth.h": [ + "stdint.h" + ], "Drivers/BSP/NET/lftpd/lftpd_inet.c": [ "string.h" ], @@ -39989,11 +41309,6 @@ "stdlib.h", "string.h" ], - "Drivers/BSP/NET/lftpd/lftpd_log.c": [ - "stdarg.h", - "stdio.h", - "stdlib.h" - ], "Drivers/BSP/NET/lftpd/lftpd_string.c": [ "ctype.h", "string.h" @@ -40017,6 +41332,13 @@ "Drivers/BSP/NET/net_types.h": [ "stdint.h" ], + "Drivers/BSP/NETCFG/ftp_cfg.c": [ + "stddef.h", + "string.h" + ], + "Drivers/BSP/NETCFG/ftp_cfg.h": [ + "stdint.h" + ], "Drivers/BSP/NETCFG/net_cfg.c": [ "stdbool.h", "stdio.h", @@ -41617,6 +42939,21 @@ "test/board/test_config.h": [ "stdint.h" ], + "test/host/adc_health/adc_health_test.c": [ + "stdint.h", + "stdio.h" + ], + "test/host/adc_input/adc_input_test.c": [ + "stddef.h", + "stdint.h", + "stdio.h" + ], + "test/host/adc_input/stub/adc.h": [ + "stdint.h" + ], + "test/host/adc_input/stub/tpafe5160.h": [ + "stdint.h" + ], "test/host/cfg_file/cfg_file_test.c": [ "stdint.h", "stdio.h", @@ -41626,6 +42963,32 @@ "test/host/cfg_file/stub/dbg_log.h": [ "stdio.h" ], + "test/host/ftp_auth/ftp_auth_test.c": [ + "stdio.h", + "string.h" + ], + "test/host/iec104/iec104_test.c": [ + "stdint.h", + "stdio.h", + "string.h" + ], + "test/host/phasor/phasor_test.c": [ + "math.h", + "stdint.h", + "stdio.h" + ], + "test/host/prot_elm/prot_elm_test.c": [ + "stdint.h", + "stdio.h" + ], + "test/host/prot_set/prot_set_test.c": [ + "stdint.h", + "stdio.h" + ], + "test/host/sha256/sha256_test.c": [ + "stdio.h", + "string.h" + ], "test/host/sys_clock/stub/FreeRTOS.h": [ "stdint.h" ], @@ -41640,6 +43003,35 @@ "stdio.h", "string.h" ], + "test/host/time_sync/stub/FreeRTOS.h": [ + "stdint.h" + ], + "test/host/time_sync/stub/cmsis_os2.h": [ + "stdint.h" + ], + "test/host/time_sync/stub/dbg_log.h": [ + "stdio.h" + ], + "test/host/time_sync/stub/net_socket.h": [ + "stdint.h" + ], + "test/host/time_sync/stub/sys_clock.h": [ + "stdint.h" + ], + "test/host/time_sync/time_sync_test.c": [ + "setjmp.h", + "stdint.h", + "stdio.h", + "string.h" + ], + "test/host/vol_lock/stub/cmsis_os.h": [ + "stdint.h" + ], + "test/host/vol_lock/vol_lock_test.c": [ + "stddef.h", + "stdint.h", + "stdio.h" + ], "test/host/watchdog/stub/dbg_log.h": [ "stdio.h" ], @@ -41655,12 +43047,12 @@ ] }, "stats": { - "files_indexed": 1425, - "includes_parsed": 5706, - "resolved": 4637, - "unresolved": 1069, - "nodes_fp": 147, - "nodes_tp": 1264, + "files_indexed": 1479, + "includes_parsed": 5878, + "resolved": 4749, + "unresolved": 1129, + "nodes_fp": 199, + "nodes_tp": 1266, "ext_names": 351 }, "include_dirs": [ @@ -41680,11 +43072,13 @@ "Drivers/BSP/NETCFG", "App", "App/app", + "App/algo", "App/cfg", "App/fs", "App/log", "App/sync", "App/task", + "App/protocol/iec104", "App/util", "Middlewares/Third_Party/FreeRTOS/Source/include", "Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2", diff --git a/docs/images/引用关系图.svg b/docs/images/引用关系图.svg index ab0679a5..99b87f48 100644 --- a/docs/images/引用关系图.svg +++ b/docs/images/引用关系图.svg @@ -4,3947 +4,5165 @@ - - + + refgraph_full - -STM32F4-Base 项目文件引用关系图(项目代码视图) - + +STM32F4-Base 项目文件引用关系图(项目代码视图) + -App/app/app_cfg.h - -App/app/app_cfg.h +App/algo/adc_health.c + +App/algo/adc_health.c - + -App/app/app_main.c - -App/app/app_main.c +App/algo/adc_health.h + +App/algo/adc_health.h - + -App/app/app_main.c->App/app/app_cfg.h - - - - - -App/app/app_main.h - -App/app/app_main.h - - - -App/app/app_main.c->App/app/app_main.h - - - - - -App/log/sys_log.h - -App/log/sys_log.h - - - -App/app/app_main.c->App/log/sys_log.h - - - - - -App/util/sys_clock.h - -App/util/sys_clock.h - - - -App/app/app_main.c->App/util/sys_clock.h - - - - - -App/util/task_watchdog.h - -App/util/task_watchdog.h - - - -App/app/app_main.c->App/util/task_watchdog.h - - - - - -Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.h - -Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.h - - - -App/app/app_main.c->Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.h - - - - - -Drivers/BSP/RS485/rs485.h - -Drivers/BSP/RS485/rs485.h - - - -App/app/app_main.c->Drivers/BSP/RS485/rs485.h - - - - - -Drivers/BSP/SD2506/sd2506.h - -Drivers/BSP/SD2506/sd2506.h - - - -App/app/app_main.c->Drivers/BSP/SD2506/sd2506.h - - - - - -Drivers/BSP/TPAFE5160/tpafe5160.h - -Drivers/BSP/TPAFE5160/tpafe5160.h - - - -App/app/app_main.c->Drivers/BSP/TPAFE5160/tpafe5160.h - - - - - -Drivers/BSP/dbg_log.h - -Drivers/BSP/dbg_log.h - - - -App/app/app_main.c->Drivers/BSP/dbg_log.h - - - - - -Inc/main.h - -Inc/main.h - - - -App/app/app_main.c->Inc/main.h - - - - - -Inc/stm32f4xx_it.h - -Inc/stm32f4xx_it.h - - - -App/app/app_main.c->Inc/stm32f4xx_it.h - - - - - -Inc/usart.h - -Inc/usart.h - - - -App/app/app_main.c->Inc/usart.h - - +App/algo/adc_health.c->App/algo/adc_health.h + + - + 外部/系统头文件 - -外部/系统头文件 + +外部/系统头文件 - - -App/app/app_main.h->外部/系统头文件 - - + + +App/algo/adc_health.h->外部/系统头文件 + + - + + +App/algo/adc_input.c + +App/algo/adc_input.c + + -App/app/sys_events.h - -App/app/sys_events.h +App/algo/adc_input.h + +App/algo/adc_input.h - - -Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.h - -Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.h + + +App/algo/adc_input.c->App/algo/adc_input.h + + - - -App/app/sys_events.h->Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.h - - - - - -App/cfg/cfg_file.c - -App/cfg/cfg_file.c - - - -App/cfg/cfg_file.h - -App/cfg/cfg_file.h - - - -App/cfg/cfg_file.c->App/cfg/cfg_file.h - - - - - -App/cfg/cfg_file_store.h - -App/cfg/cfg_file_store.h - - - -App/cfg/cfg_file.c->App/cfg/cfg_file_store.h - - - - - -App/cfg/cfg_file.c->App/log/sys_log.h - - - - - -App/cfg/cfg_file.c->Drivers/BSP/dbg_log.h - - - - - -App/cfg/cfg_file.c->外部/系统头文件 - - - - - -App/cfg/cfg_file.h->外部/系统头文件 - - - - - -App/cfg/cfg_file_store.h->外部/系统头文件 - - - - - -App/cfg/cfg_file_store_mcu.c - -App/cfg/cfg_file_store_mcu.c - - - -App/cfg/cfg_file_store_mcu.c->App/cfg/cfg_file_store.h - - - - - -App/fs/vol_lock.h - -App/fs/vol_lock.h - - - -App/cfg/cfg_file_store_mcu.c->App/fs/vol_lock.h - - - - - -Lib/FatFs/ff.h - -Lib/FatFs/ff.h - - - -App/cfg/cfg_file_store_mcu.c->Lib/FatFs/ff.h - - - - - -Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h - -Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h - - - -App/cfg/cfg_file_store_mcu.c->Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h - - - - - -App/cfg/cfg_file_store_mcu.c->外部/系统头文件 - - - - - -App/fs/vol_lock.c - -App/fs/vol_lock.c - - - -App/fs/vol_lock.c->App/fs/vol_lock.h - - - - - -Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h - -Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h - - - -App/fs/vol_lock.c->Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h - - - - - -App/fs/vol_lock.h->外部/系统头文件 - - - - - -App/log/console_log.c - -App/log/console_log.c - - - -App/log/console_log.c->App/app/sys_events.h - - - - - -App/log/console_log.h - -App/log/console_log.h - - - -App/log/console_log.c->App/log/console_log.h - - - - - -App/log/console_log.c->Inc/usart.h - - - - - -App/log/console_log.c->Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h - - - - - -App/log/console_log.c->Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h - - - - - -Middlewares/Third_Party/FreeRTOS/Source/include/task.h - -Middlewares/Third_Party/FreeRTOS/Source/include/task.h - - - -App/log/console_log.c->Middlewares/Third_Party/FreeRTOS/Source/include/task.h - - - - - -App/log/console_log.c->外部/系统头文件 - - - - - -App/log/console_log.h->外部/系统头文件 - - - - - -App/log/sys_log.h->外部/系统头文件 - - - - - -App/log/sys_log_mcu.c - -App/log/sys_log_mcu.c - - - -App/log/sys_log_mcu.c->App/fs/vol_lock.h - - - - - -App/log/sys_log_mcu.c->App/log/sys_log.h - - - - - -App/log/sys_log_mcu.c->App/util/sys_clock.h - - - - - -App/log/sys_log_mcu.c->Drivers/BSP/dbg_log.h - - - - - -App/log/sys_log_mcu.c->Lib/FatFs/ff.h - - - - - -App/log/sys_log_mcu.c->Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h - - - - - -App/log/sys_log_mcu.c->外部/系统头文件 - - - - - -App/sync/time_sync.c - -App/sync/time_sync.c - - - -App/sync/time_sync.c->App/app/sys_events.h - - - - - -App/sync/time_sync.h - -App/sync/time_sync.h - - - -App/sync/time_sync.c->App/sync/time_sync.h - - - - - -App/sync/time_sync.c->App/util/sys_clock.h - - - - - -App/sync/time_sync.c->App/util/task_watchdog.h - - - - - -Drivers/BSP/NET/net_socket.h - -Drivers/BSP/NET/net_socket.h - - - -App/sync/time_sync.c->Drivers/BSP/NET/net_socket.h - - - - - -App/sync/time_sync.c->Drivers/BSP/dbg_log.h - - - - - -App/sync/time_sync.c->外部/系统头文件 - - - - - -App/sync/time_sync.h->外部/系统头文件 - - - - - -App/task/adc_task.c - -App/task/adc_task.c - - - -App/task/adc_task.h - -App/task/adc_task.h - - - -App/task/adc_task.c->App/task/adc_task.h - - - - - -App/task/adc_task.c->Drivers/BSP/TPAFE5160/tpafe5160.h - - - - - -App/task/adc_task.c->Drivers/BSP/dbg_log.h - - - - - -App/task/adc_task.c->Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h - - - - - -App/task/default_task.c - -App/task/default_task.c - - - -App/task/default_task.c->App/app/sys_events.h - - - - - -App/task/default_task.c->App/cfg/cfg_file.h - - - - - -App/task/default_task.c->App/fs/vol_lock.h - - - - - -App/task/default_task.c->App/log/sys_log.h - - - - - -App/task/default_task.h - -App/task/default_task.h - - - -App/task/default_task.c->App/task/default_task.h - - - - - -App/task/default_task.c->App/util/task_watchdog.h - - - - - -Drivers/BSP/GD5F2GQ5UE/nand_ftl.h - -Drivers/BSP/GD5F2GQ5UE/nand_ftl.h - - - -App/task/default_task.c->Drivers/BSP/GD5F2GQ5UE/nand_ftl.h - - - - - -Drivers/BSP/NETCFG/net_cfg.h - -Drivers/BSP/NETCFG/net_cfg.h - - - -App/task/default_task.c->Drivers/BSP/NETCFG/net_cfg.h - - - - - -App/task/default_task.c->Drivers/BSP/dbg_log.h - - - - - -App/task/default_task.c->Inc/main.h - - - - - -App/task/default_task.c->Lib/FatFs/ff.h - - - - - -App/task/default_task.c->Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h - - - - - -App/task/default_task.c->Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h - - - - - -App/task/default_task.c->Middlewares/Third_Party/FreeRTOS/Source/include/task.h - - - - - -test/board/test_config.h - -test/board/test_config.h - - - -App/task/default_task.c->test/board/test_config.h - - - - - -App/task/net_task.c - -App/task/net_task.c - - - -App/task/net_task.c->App/app/sys_events.h - - - - - -App/task/net_task.c->App/log/sys_log.h - - - - - -App/task/net_task.h - -App/task/net_task.h - - - -App/task/net_task.c->App/task/net_task.h - - - - - -App/task/net_task.c->App/util/task_watchdog.h - - - - - -Drivers/BSP/CH395F/ch395f.h - -Drivers/BSP/CH395F/ch395f.h - - - -App/task/net_task.c->Drivers/BSP/CH395F/ch395f.h - - - - - -Drivers/BSP/NET/net_select.h - -Drivers/BSP/NET/net_select.h - - - -App/task/net_task.c->Drivers/BSP/NET/net_select.h - - - - - -App/task/net_task.c->Drivers/BSP/NET/net_socket.h - - - - - -App/task/net_task.c->Drivers/BSP/NETCFG/net_cfg.h - - - - - -App/task/net_task.c->Drivers/BSP/dbg_log.h - - - - - -App/task/net_task.c->Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h - - - - - -App/task/net_task.c->test/board/test_config.h - - - - - -App/task/net_task.c->外部/系统头文件 - - - - - -App/task/rs485_task.c - -App/task/rs485_task.c - - - -App/task/rs485_task.h - -App/task/rs485_task.h - - - -App/task/rs485_task.c->App/task/rs485_task.h - - - - - -App/task/rs485_task.c->Drivers/BSP/RS485/rs485.h - - - - - -App/task/rs485_task.c->Drivers/BSP/dbg_log.h - - - - - -App/task/rs485_task.c->Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h - - - - - -App/task/ui_task.c - -App/task/ui_task.c - - - -App/task/ui_task.c->App/app/sys_events.h - - - - - -App/task/ui_task.h - -App/task/ui_task.h - - - -App/task/ui_task.c->App/task/ui_task.h - - - - - -App/task/ui_task.c->App/util/sys_clock.h - - - - - -App/task/ui_task.c->App/util/task_watchdog.h - - - - - -Drivers/BSP/UI/ui_menu.h - -Drivers/BSP/UI/ui_menu.h - - - -App/task/ui_task.c->Drivers/BSP/UI/ui_menu.h - - - - - -Drivers/BSP/UI/ui_net_sink.h - -Drivers/BSP/UI/ui_net_sink.h - - - -App/task/ui_task.c->Drivers/BSP/UI/ui_net_sink.h - - - - - -Drivers/BSP/UI/ui_port.h - -Drivers/BSP/UI/ui_port.h - - - -App/task/ui_task.c->Drivers/BSP/UI/ui_port.h - - - - - -Drivers/BSP/UI/ui_standby.h - -Drivers/BSP/UI/ui_standby.h - - - -App/task/ui_task.c->Drivers/BSP/UI/ui_standby.h - - - - - -App/task/ui_task.c->Drivers/BSP/dbg_log.h - - - - - -App/task/ui_task.c->Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h - - - - - -test/board/net_latency_test.h - -test/board/net_latency_test.h - - - -App/task/ui_task.c->test/board/net_latency_test.h - - - - - -App/task/ui_task.c->test/board/test_config.h - - - - - -App/task/ui_task.c->外部/系统头文件 - - - - - -App/util/sys_clock.c - -App/util/sys_clock.c - - - -App/util/sys_clock.c->App/util/sys_clock.h - - - - - -App/util/sys_clock.c->Drivers/BSP/dbg_log.h - - - - - -App/util/sys_clock.c->Inc/main.h - - - - - -App/util/sys_clock.c->Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h - - - - - -App/util/sys_clock.c->Middlewares/Third_Party/FreeRTOS/Source/include/task.h - - - - - -App/util/sys_clock.c->外部/系统头文件 - - - - - -App/util/sys_clock.h->Drivers/BSP/SD2506/sd2506.h - - - - - -App/util/sys_clock.h->外部/系统头文件 - - - - - -App/util/task_watchdog.c - -App/util/task_watchdog.c - - - -App/util/task_watchdog.c->App/log/console_log.h - - - - - -App/util/task_watchdog.c->App/log/sys_log.h - - - - - -App/util/task_watchdog.c->App/util/task_watchdog.h - - - - - -Drivers/BSP/NET/lftpd/lftpd.h - -Drivers/BSP/NET/lftpd/lftpd.h - - - -App/util/task_watchdog.c->Drivers/BSP/NET/lftpd/lftpd.h - - - - - -App/util/task_watchdog.c->Drivers/BSP/dbg_log.h - - - - - -Inc/iwdg.h - -Inc/iwdg.h - - - -App/util/task_watchdog.c->Inc/iwdg.h - - - - - -App/util/task_watchdog.c->Inc/main.h - - - - - -App/util/task_watchdog.c->Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h - - - - - -App/util/task_watchdog.c->Middlewares/Third_Party/FreeRTOS/Source/include/task.h - - - - - -App/util/task_watchdog.c->外部/系统头文件 - - - - - -App/util/task_watchdog.h->外部/系统头文件 - - - - - -Drivers/BSP/CH395F/ch395f.c - -Drivers/BSP/CH395F/ch395f.c - - - -Drivers/BSP/CH395F/ch395f.c->Drivers/BSP/CH395F/ch395f.h - - - - - -Drivers/BSP/CH395F/ch395f.c->Drivers/BSP/dbg_log.h - - - - - -Inc/spi.h - -Inc/spi.h - - - -Drivers/BSP/CH395F/ch395f.c->Inc/spi.h - - - - - -Drivers/BSP/CH395F/ch395f.c->Inc/usart.h - - - - - -Drivers/BSP/CH395F/ch395f.c->外部/系统头文件 - - - - - -Drivers/BSP/CH395F/ch395f.h->Inc/main.h - - - - - -Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.c - -Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.c - - - -Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.c->Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.h - - - - - -Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.c->Drivers/BSP/dbg_log.h - - - - - -Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.c->外部/系统头文件 - - - - - -Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.h->Inc/main.h - - - - - -Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.h->外部/系统头文件 - - - - - -Drivers/BSP/GD5F2GQ5UE/nand_ftl.c - -Drivers/BSP/GD5F2GQ5UE/nand_ftl.c - - - -Drivers/BSP/GD5F2GQ5UE/nand_ftl.c->Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.h - - - - - -Drivers/BSP/GD5F2GQ5UE/nand_ftl.c->Drivers/BSP/dbg_log.h - - - - - -Lib/FatFs/diskio.h - -Lib/FatFs/diskio.h - - - -Drivers/BSP/GD5F2GQ5UE/nand_ftl.c->Lib/FatFs/diskio.h - - - - - -Drivers/BSP/GD5F2GQ5UE/nand_ftl.c->Lib/FatFs/ff.h - - - - - -Lib/dhara/map.h - -Lib/dhara/map.h - - - -Drivers/BSP/GD5F2GQ5UE/nand_ftl.c->Lib/dhara/map.h - - - - - -Lib/dhara/nand.h - -Lib/dhara/nand.h - - - -Drivers/BSP/GD5F2GQ5UE/nand_ftl.c->Lib/dhara/nand.h - - - - - -Drivers/BSP/GD5F2GQ5UE/nand_ftl.c->外部/系统头文件 - - - - - -Drivers/BSP/GD5F2GQ5UE/nand_ftl.h->外部/系统头文件 - - - - - -Drivers/BSP/NET/net_config.h - -Drivers/BSP/NET/net_config.h - - - -Drivers/BSP/NET/net_select.c - -Drivers/BSP/NET/net_select.c - - - -Drivers/BSP/NET/net_select.c->Drivers/BSP/CH395F/ch395f.h - - - - - -Drivers/BSP/NET/net_select.c->Drivers/BSP/NET/net_select.h - - - - - -Drivers/BSP/NET/net_select.c->Drivers/BSP/NET/net_socket.h - - - - - -Drivers/BSP/NET/net_select.c->Inc/main.h - - - - - -Drivers/BSP/NET/net_select.c->Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h - - - - - -Drivers/BSP/NET/net_select.c->Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h - - - - - -Drivers/BSP/NET/net_select.c->Middlewares/Third_Party/FreeRTOS/Source/include/task.h - - - - - -Drivers/BSP/NET/net_select.c->外部/系统头文件 - - - - - -Drivers/BSP/NET/net_select.h->Drivers/BSP/NET/net_config.h - - - - - -Drivers/BSP/NET/net_types.h - -Drivers/BSP/NET/net_types.h - - - -Drivers/BSP/NET/net_select.h->Drivers/BSP/NET/net_types.h - - - - - -Drivers/BSP/NET/net_socket.c - -Drivers/BSP/NET/net_socket.c - - - -Drivers/BSP/NET/net_socket.c->Drivers/BSP/CH395F/ch395f.h - - - - - -Drivers/BSP/NET/net_socket.c->Drivers/BSP/NET/net_socket.h - - - - - -Drivers/BSP/NET/net_socket.c->Drivers/BSP/dbg_log.h - - - - - -Drivers/BSP/NET/net_socket.c->Inc/main.h - - - - - -Drivers/BSP/NET/net_socket.c->Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h - - - - - -Drivers/BSP/NET/net_socket.c->Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h - - - - - -Drivers/BSP/NET/net_socket.c->Middlewares/Third_Party/FreeRTOS/Source/include/task.h - - - - - -Drivers/BSP/NET/net_socket.c->test/board/net_latency_test.h - - - - - -Drivers/BSP/NET/net_socket.c->test/board/test_config.h - - - - - -Drivers/BSP/NET/net_socket.c->外部/系统头文件 - - - - - -Drivers/BSP/NET/net_socket.h->Drivers/BSP/NET/net_types.h - - - - - -Drivers/BSP/NET/net_socket.h->Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h - - - - - -Drivers/BSP/NET/net_socket.h->Middlewares/Third_Party/FreeRTOS/Source/include/task.h - - - - - -Drivers/BSP/NET/net_types.h->Drivers/BSP/NET/net_config.h - - - - - -Drivers/BSP/NET/net_types.h->外部/系统头文件 - - - - - -Drivers/BSP/NETCFG/net_cfg.c - -Drivers/BSP/NETCFG/net_cfg.c - - - -Drivers/BSP/NETCFG/net_cfg.c->App/cfg/cfg_file.h - - - - - -Drivers/BSP/NETCFG/net_cfg.c->Drivers/BSP/NETCFG/net_cfg.h - - - - - -Drivers/BSP/NETCFG/net_cfg.c->Drivers/BSP/dbg_log.h - - - - - -Drivers/BSP/NETCFG/net_cfg.c->外部/系统头文件 - - - - - -Drivers/BSP/NETCFG/net_cfg.h->外部/系统头文件 - - - - - -Drivers/BSP/RS485/rs485.c - -Drivers/BSP/RS485/rs485.c - - - -Drivers/BSP/RS485/rs485.c->Drivers/BSP/RS485/rs485.h - - - - - -Drivers/BSP/RS485/rs485.h->Inc/main.h - - - - - -Drivers/BSP/SD2506/sd2506.c - -Drivers/BSP/SD2506/sd2506.c - - - -Drivers/BSP/SD2506/sd2506.c->Drivers/BSP/SD2506/sd2506.h - - - - - -Drivers/BSP/SD2506/sd2506.c->Drivers/BSP/dbg_log.h - - - - - -Inc/i2c.h - -Inc/i2c.h - - - -Drivers/BSP/SD2506/sd2506.c->Inc/i2c.h - - - - - -Drivers/BSP/SD2506/sd2506.c->外部/系统头文件 - - - - - -Drivers/BSP/SD2506/sd2506.h->Inc/main.h - - - - - -Drivers/BSP/TPAFE5160/tpafe5160.c - -Drivers/BSP/TPAFE5160/tpafe5160.c - - - -Drivers/BSP/TPAFE5160/tpafe5160.c->Drivers/BSP/TPAFE5160/tpafe5160.h - - - - - -Drivers/BSP/TPAFE5160/tpafe5160.c->Drivers/BSP/dbg_log.h - - - - - -Drivers/BSP/TPAFE5160/tpafe5160.c->Inc/main.h - - - - - -Drivers/BSP/TPAFE5160/tpafe5160.c->Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h - - - - - -Drivers/BSP/TPAFE5160/tpafe5160.c->Middlewares/Third_Party/FreeRTOS/Source/include/task.h - - - - - -Drivers/BSP/TPAFE5160/tpafe5160.c->外部/系统头文件 - - - - - -Drivers/BSP/TPAFE5160/tpafe5160.h->Inc/main.h - - - - - -Drivers/BSP/UI/ui_content_page.c - -Drivers/BSP/UI/ui_content_page.c - - - -Drivers/BSP/UI/ui_content_page.h - -Drivers/BSP/UI/ui_content_page.h - - - -Drivers/BSP/UI/ui_content_page.c->Drivers/BSP/UI/ui_content_page.h - - - - - -Drivers/BSP/UI/ui_deco.h - -Drivers/BSP/UI/ui_deco.h - - - -Drivers/BSP/UI/ui_content_page.c->Drivers/BSP/UI/ui_deco.h - - - - - -Drivers/BSP/UI/ui_menu_view.h - -Drivers/BSP/UI/ui_menu_view.h - - - -Drivers/BSP/UI/ui_content_page.c->Drivers/BSP/UI/ui_menu_view.h - - - - - -Drivers/BSP/UI/ui_page_ac.h - -Drivers/BSP/UI/ui_page_ac.h - - - -Drivers/BSP/UI/ui_content_page.c->Drivers/BSP/UI/ui_page_ac.h - - - - - -Drivers/BSP/UI/ui_page_dc.h - -Drivers/BSP/UI/ui_page_dc.h - - - -Drivers/BSP/UI/ui_content_page.c->Drivers/BSP/UI/ui_page_dc.h - - - - - -Drivers/BSP/UI/ui_page_device_info.h - -Drivers/BSP/UI/ui_page_device_info.h - - - -Drivers/BSP/UI/ui_content_page.c->Drivers/BSP/UI/ui_page_device_info.h - - - - - -Drivers/BSP/UI/ui_page_net_cfg.h - -Drivers/BSP/UI/ui_page_net_cfg.h - - - -Drivers/BSP/UI/ui_content_page.c->Drivers/BSP/UI/ui_page_net_cfg.h - - - - - -Drivers/BSP/UI/ui_page_password.h - -Drivers/BSP/UI/ui_page_password.h - - - -Drivers/BSP/UI/ui_content_page.c->Drivers/BSP/UI/ui_page_password.h - - - - - -Drivers/BSP/UI/ui_page_runlog.h - -Drivers/BSP/UI/ui_page_runlog.h - - - -Drivers/BSP/UI/ui_content_page.c->Drivers/BSP/UI/ui_page_runlog.h - - - - + -Drivers/BSP/UI/ui_page_selftest.h - -Drivers/BSP/UI/ui_page_selftest.h - - - -Drivers/BSP/UI/ui_content_page.c->Drivers/BSP/UI/ui_page_selftest.h - - - - - -Drivers/BSP/UI/ui_pwd_def.h - -Drivers/BSP/UI/ui_pwd_def.h - - - -Drivers/BSP/UI/ui_content_page.c->Drivers/BSP/UI/ui_pwd_def.h - - - - - -Drivers/BSP/UI/ui_content_page.c->Drivers/BSP/UI/ui_standby.h - - - - - -Drivers/BSP/UI/ui_content_page.c->Drivers/BSP/dbg_log.h - - - - - -Lib/lvgl/lvgl.h - -Lib/lvgl/lvgl.h - - - -Drivers/BSP/UI/ui_content_page.c->Lib/lvgl/lvgl.h - - - - - -Drivers/BSP/UI/ui_content_page.c->外部/系统头文件 - - - - - -Drivers/BSP/UI/ui_content_page.h->Lib/lvgl/lvgl.h - - - - - -Drivers/BSP/UI/ui_content_page.h->外部/系统头文件 - - - - - -Drivers/BSP/UI/ui_deco.c - -Drivers/BSP/UI/ui_deco.c - - - -Drivers/BSP/UI/ui_deco.c->Drivers/BSP/UI/ui_deco.h - - - - - -Drivers/BSP/UI/ui_deco.c->外部/系统头文件 - - - - - -Drivers/BSP/UI/ui_deco.h->Lib/lvgl/lvgl.h - - - - - -Drivers/BSP/UI/ui_font_cn_12.c - -Drivers/BSP/UI/ui_font_cn_12.c - - - -Drivers/BSP/UI/ui_font_cn_12.c->Lib/lvgl/lvgl.h - - - - - -Drivers/BSP/UI/ui_menu.c - -Drivers/BSP/UI/ui_menu.c - - - -Drivers/BSP/UI/ui_menu.c->Drivers/BSP/UI/ui_content_page.h - - - - - -Drivers/BSP/UI/ui_menu.c->Drivers/BSP/UI/ui_menu.h - - - - - -Drivers/BSP/UI/ui_menu_tab.h - -Drivers/BSP/UI/ui_menu_tab.h - - - -Drivers/BSP/UI/ui_menu.c->Drivers/BSP/UI/ui_menu_tab.h - - - - - -Drivers/BSP/UI/ui_menu.c->Drivers/BSP/UI/ui_menu_view.h - - - - - -Drivers/BSP/UI/ui_menu.c->Drivers/BSP/UI/ui_page_password.h - - - - - -Drivers/BSP/UI/ui_menu.c->Drivers/BSP/UI/ui_pwd_def.h - - - - - -Drivers/BSP/UI/ui_menu.c->Drivers/BSP/UI/ui_standby.h - - - - - -Drivers/BSP/UI/ui_menu.c->Drivers/BSP/dbg_log.h - - - - - -Drivers/BSP/UI/ui_menu.c->Lib/lvgl/lvgl.h - - - - - -Drivers/BSP/UI/ui_menu.c->外部/系统头文件 - - - - - -Drivers/BSP/UI/ui_menu_tab.c - -Drivers/BSP/UI/ui_menu_tab.c - - - -Drivers/BSP/UI/ui_menu_tab.c->Drivers/BSP/UI/ui_menu_tab.h - - - - - -Drivers/BSP/UI/ui_menu_tab.h->外部/系统头文件 - - - - - -Drivers/BSP/UI/ui_menu_view.c - -Drivers/BSP/UI/ui_menu_view.c - - - -Drivers/BSP/UI/ui_menu_view.c->Drivers/BSP/UI/ui_deco.h - - - - - -Drivers/BSP/UI/ui_menu_view.c->Drivers/BSP/UI/ui_menu_tab.h - - - - - -Drivers/BSP/UI/ui_menu_view.c->Drivers/BSP/UI/ui_menu_view.h - - - - - -Drivers/BSP/UI/ui_menu_view.c->Drivers/BSP/dbg_log.h - - - - - -Drivers/BSP/UI/ui_menu_view.c->Lib/lvgl/lvgl.h - - - - - -Drivers/BSP/UI/ui_menu_view.c->外部/系统头文件 - - - - - -Drivers/BSP/UI/ui_menu_view.h->Lib/lvgl/lvgl.h - - - - - -Drivers/BSP/UI/ui_menu_view.h->外部/系统头文件 - - - - - -Drivers/BSP/UI/ui_net_sink.c - -Drivers/BSP/UI/ui_net_sink.c - - - -Drivers/BSP/UI/ui_net_sink.c->Drivers/BSP/NET/net_socket.h - - - - - -Drivers/BSP/UI/ui_net_sink.c->Drivers/BSP/NET/net_types.h - - - - - -Drivers/BSP/UI/ui_net_sink.c->Drivers/BSP/UI/ui_net_sink.h - - - - - -Drivers/BSP/UI/ui_net_sink_backend.h - -Drivers/BSP/UI/ui_net_sink_backend.h - - - -Drivers/BSP/UI/ui_net_sink.c->Drivers/BSP/UI/ui_net_sink_backend.h - - - - - -Drivers/BSP/UI/ui_net_sink.c->Drivers/BSP/dbg_log.h - - - - - -Drivers/BSP/UI/ui_net_sink.c->test/board/net_latency_test.h - - - - - -Drivers/BSP/UI/ui_net_sink.c->test/board/test_config.h - - - - - -Drivers/BSP/UI/ui_net_sink.c->外部/系统头文件 - - - - - -Drivers/BSP/UI/ui_net_sink.h->外部/系统头文件 - - - - - -Drivers/BSP/UI/ui_net_sink_backend.h->外部/系统头文件 - - - - - -Drivers/BSP/UI/ui_net_sink_backend_mcu.c - -Drivers/BSP/UI/ui_net_sink_backend_mcu.c - - - -Drivers/BSP/UI/ui_net_sink_backend_mcu.c->Drivers/BSP/UI/ui_net_sink_backend.h - - - - - -Drivers/BSP/UI/ui_net_sink_backend_mcu.c->Drivers/BSP/UI/ui_port.h - - - - - -Drivers/BSP/UI/ui_net_sink_backend_mcu.c->外部/系统头文件 - - - - - -Drivers/BSP/UI/ui_page_ac.c - -Drivers/BSP/UI/ui_page_ac.c - - - -Drivers/BSP/UI/ui_page_ac.c->Drivers/BSP/UI/ui_page_ac.h - - - - - -Drivers/BSP/UI/ui_page_ac.h->Drivers/BSP/UI/ui_content_page.h - - - - - -Drivers/BSP/UI/ui_page_dc.c - -Drivers/BSP/UI/ui_page_dc.c - - - -Drivers/BSP/UI/ui_page_dc.c->Drivers/BSP/UI/ui_page_dc.h - - - - - -Drivers/BSP/UI/ui_page_dc.h->Drivers/BSP/UI/ui_content_page.h - - - - - -Drivers/BSP/UI/ui_page_device_info.c - -Drivers/BSP/UI/ui_page_device_info.c - - - -Drivers/BSP/UI/ui_page_device_info.c->Drivers/BSP/UI/ui_page_device_info.h - - - - - -Drivers/BSP/UI/ui_page_device_info.h->Drivers/BSP/UI/ui_content_page.h - - - - - -Drivers/BSP/UI/ui_page_net_cfg.c - -Drivers/BSP/UI/ui_page_net_cfg.c - - - -Drivers/BSP/UI/ui_page_net_cfg.c->Drivers/BSP/NETCFG/net_cfg.h - - - - - -Drivers/BSP/UI/ui_page_net_cfg.c->Drivers/BSP/UI/ui_page_net_cfg.h - - - - - -Drivers/BSP/UI/ui_page_net_cfg.c->外部/系统头文件 - - - - - -Drivers/BSP/UI/ui_page_net_cfg.h->Drivers/BSP/UI/ui_content_page.h - - - - - -Drivers/BSP/UI/ui_page_password.c - -Drivers/BSP/UI/ui_page_password.c - - - -Drivers/BSP/UI/ui_page_password.c->Drivers/BSP/UI/ui_page_password.h - - - - - -Drivers/BSP/UI/ui_page_password.c->Drivers/BSP/UI/ui_pwd_def.h - - - - - -Drivers/BSP/UI/ui_page_password.c->外部/系统头文件 - - - - - -Drivers/BSP/UI/ui_page_password.h->Drivers/BSP/UI/ui_content_page.h - - - - - -Drivers/BSP/UI/ui_page_runlog.c - -Drivers/BSP/UI/ui_page_runlog.c - - - -Drivers/BSP/UI/ui_page_runlog.c->App/log/sys_log.h - - - - - -Drivers/BSP/UI/ui_page_runlog.c->Drivers/BSP/UI/ui_page_runlog.h - - - - - -Drivers/BSP/UI/ui_page_runlog.c->外部/系统头文件 - - - - - -Drivers/BSP/UI/ui_page_runlog.h->Drivers/BSP/UI/ui_content_page.h - - - - - -Drivers/BSP/UI/ui_page_selftest.c - -Drivers/BSP/UI/ui_page_selftest.c - - - -Drivers/BSP/UI/ui_page_selftest.c->App/log/sys_log.h - - - - - -Drivers/BSP/UI/ui_page_selftest.c->Drivers/BSP/UI/ui_page_selftest.h - - - - - -Drivers/BSP/UI/ui_page_selftest.c->外部/系统头文件 - - - - - -Drivers/BSP/UI/ui_page_selftest.h->Drivers/BSP/UI/ui_content_page.h - - - - - -Drivers/BSP/UI/ui_port.c - -Drivers/BSP/UI/ui_port.c - - - -Drivers/BSP/UI/ui_port.c->Drivers/BSP/UI/ui_port.h - - - - - -Drivers/BSP/UI/ui_port.c->Drivers/BSP/dbg_log.h - - - - - -Drivers/BSP/UI/ui_port.c->Lib/lvgl/lvgl.h - - - - - -Drivers/BSP/UI/ui_port.c->外部/系统头文件 - - - - - -Drivers/BSP/UI/ui_port.h->外部/系统头文件 - - - - - -Drivers/BSP/UI/ui_pwd_def.h->外部/系统头文件 - - - - - -Drivers/BSP/UI/ui_standby.c - -Drivers/BSP/UI/ui_standby.c - - - -Drivers/BSP/UI/ui_standby.c->Drivers/BSP/UI/ui_menu_view.h - - - - - -Drivers/BSP/UI/ui_standby.c->Drivers/BSP/UI/ui_standby.h - - - - - -Drivers/BSP/UI/ui_standby.c->Drivers/BSP/dbg_log.h - - - - - -Drivers/BSP/UI/ui_standby.c->Lib/lvgl/lvgl.h - - - - - -Drivers/BSP/UI/ui_standby.c->外部/系统头文件 - - - - - -Drivers/BSP/UI/ui_standby.h->外部/系统头文件 - - - - - -Drivers/BSP/dbg_cfg.h - -Drivers/BSP/dbg_cfg.h - - - -Drivers/BSP/dbg_log.h->App/log/console_log.h - - - - - -Drivers/BSP/dbg_log.h->App/util/sys_clock.h - - - - - -Drivers/BSP/dbg_log.h->Drivers/BSP/dbg_cfg.h - - - - - -Drivers/BSP/dbg_log.h->外部/系统头文件 - - - - - -Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h - -Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h - - - -Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h - -Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h - - - -Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_adc.h - -Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_adc.h - - - -Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_cortex.h - -Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_cortex.h - - - -Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma.h - -Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma.h - - - -Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_exti.h - -Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_exti.h - - - -Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash.h - -Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash.h - - - -Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio.h - -Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio.h - - - -Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2c.h - -Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2c.h - - - -Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_iwdg.h - -Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_iwdg.h - - - -Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr.h - -Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr.h - - - -Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc.h - -Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc.h - - - -Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_spi.h - -Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_spi.h - - - -Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim.h - -Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim.h - - - -Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_uart.h - -Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_uart.h - - - -Inc/FreeRTOSConfig.h - -Inc/FreeRTOSConfig.h - - - -Inc/FreeRTOSConfig.h->外部/系统头文件 - - +Drivers/BSP/TPAFE5160/tpafe5160.h + +Drivers/BSP/TPAFE5160/tpafe5160.h + + + +App/algo/adc_input.c->Drivers/BSP/TPAFE5160/tpafe5160.h + + - + Inc/adc.h - -Inc/adc.h + +Inc/adc.h + + + +App/algo/adc_input.c->Inc/adc.h + + + + + +App/algo/adc_input.c->外部/系统头文件 + + + + + +App/algo/adc_input.h->外部/系统头文件 + + + + + +App/algo/phasor.c + +App/algo/phasor.c + + + +App/algo/phasor.h + +App/algo/phasor.h + + + +App/algo/phasor.c->App/algo/phasor.h + + + + + +App/algo/sample_ring.h + +App/algo/sample_ring.h + + + +App/algo/phasor.c->App/algo/sample_ring.h + + + + + +App/algo/phasor.c->外部/系统头文件 + + + + + +App/algo/phasor.h->App/algo/adc_input.h + + + + + +App/algo/phasor.h->外部/系统头文件 + + + + + +App/algo/prot_elm.c + +App/algo/prot_elm.c + + + +App/algo/prot_elm.c->App/algo/phasor.h + + + + + +App/algo/prot_elm.h + +App/algo/prot_elm.h + + + +App/algo/prot_elm.c->App/algo/prot_elm.h + + + + + +App/algo/prot_set.h + +App/algo/prot_set.h + + + +App/algo/prot_elm.c->App/algo/prot_set.h + + + + + +App/algo/prot_elm.c->外部/系统头文件 + + + + + +App/algo/prot_elm.h->外部/系统头文件 + + + + + +App/algo/prot_set.c + +App/algo/prot_set.c + + + +App/algo/prot_set.c->App/algo/prot_set.h + + + + + +App/algo/prot_set.h->外部/系统头文件 + + + + + +App/algo/sample_ring.c + +App/algo/sample_ring.c + + + +App/algo/sample_ring.c->App/algo/sample_ring.h + + + + + +App/algo/sample_ring.c->外部/系统头文件 + + + + + +App/algo/sample_ring.h->App/algo/adc_input.h + + + + + +App/algo/sample_ring.h->外部/系统头文件 + + + + + +App/app/app_cfg.h + +App/app/app_cfg.h + + + +App/app/app_main.c + +App/app/app_main.c + + + +App/app/app_main.c->App/algo/adc_input.h + + + + + +App/app/app_main.c->App/algo/phasor.h + + + + + +App/app/app_main.c->App/algo/prot_elm.h + + + + + +App/app/app_main.c->App/algo/prot_set.h + + + + + +App/app/app_main.c->App/app/app_cfg.h + + + + + +App/app/app_main.h + +App/app/app_main.h + + + +App/app/app_main.c->App/app/app_main.h + + + + + +App/log/sys_log.h + +App/log/sys_log.h + + + +App/app/app_main.c->App/log/sys_log.h + + + + + +App/util/sys_clock.h + +App/util/sys_clock.h + + + +App/app/app_main.c->App/util/sys_clock.h + + + + + +App/util/task_watchdog.h + +App/util/task_watchdog.h + + + +App/app/app_main.c->App/util/task_watchdog.h + + + + + +Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.h + +Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.h + + + +App/app/app_main.c->Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.h + + + + + +Drivers/BSP/RS485/rs485.h + +Drivers/BSP/RS485/rs485.h + + + +App/app/app_main.c->Drivers/BSP/RS485/rs485.h + + + + + +Drivers/BSP/SD2506/sd2506.h + +Drivers/BSP/SD2506/sd2506.h + + + +App/app/app_main.c->Drivers/BSP/SD2506/sd2506.h + + + + + +App/app/app_main.c->Drivers/BSP/TPAFE5160/tpafe5160.h + + + + + +Drivers/BSP/dbg_log.h + +Drivers/BSP/dbg_log.h + + + +App/app/app_main.c->Drivers/BSP/dbg_log.h + + + + + +Inc/main.h + +Inc/main.h + + + +App/app/app_main.c->Inc/main.h + + + + + +Inc/stm32f4xx_it.h + +Inc/stm32f4xx_it.h + + + +App/app/app_main.c->Inc/stm32f4xx_it.h + + + + + +Inc/tim.h + +Inc/tim.h + + + +App/app/app_main.c->Inc/tim.h + + + + + +Inc/usart.h + +Inc/usart.h + + + +App/app/app_main.c->Inc/usart.h + + + + + +test/board/test_config.h + +test/board/test_config.h + + + +App/app/app_main.c->test/board/test_config.h + + + + + +App/app/app_main.h->外部/系统头文件 + + + + + +App/app/sys_events.h + +App/app/sys_events.h + + + +Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.h + +Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.h + + + +App/app/sys_events.h->Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.h + + + + + +App/cfg/cfg_file.c + +App/cfg/cfg_file.c + + + +App/cfg/cfg_file.h + +App/cfg/cfg_file.h + + + +App/cfg/cfg_file.c->App/cfg/cfg_file.h + + + + + +App/cfg/cfg_file_store.h + +App/cfg/cfg_file_store.h + + + +App/cfg/cfg_file.c->App/cfg/cfg_file_store.h + + + + + +App/cfg/cfg_file.c->App/log/sys_log.h + + + + + +App/cfg/cfg_file.c->Drivers/BSP/dbg_log.h + + + + + +App/cfg/cfg_file.c->外部/系统头文件 + + + + + +App/cfg/cfg_file.h->外部/系统头文件 + + + + + +App/cfg/cfg_file_store.h->外部/系统头文件 + + + + + +App/cfg/cfg_file_store_mcu.c + +App/cfg/cfg_file_store_mcu.c + + + +App/cfg/cfg_file_store_mcu.c->App/cfg/cfg_file_store.h + + + + + +App/fs/vol_lock.h + +App/fs/vol_lock.h + + + +App/cfg/cfg_file_store_mcu.c->App/fs/vol_lock.h + + + + + +Lib/FatFs/ff.h + +Lib/FatFs/ff.h + + + +App/cfg/cfg_file_store_mcu.c->Lib/FatFs/ff.h + + + + + +Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h + +Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h + + + +App/cfg/cfg_file_store_mcu.c->Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h + + + + + +App/cfg/cfg_file_store_mcu.c->外部/系统头文件 + + + + + +App/fs/vol_lock.c + +App/fs/vol_lock.c + + + +App/fs/vol_lock.c->App/fs/vol_lock.h + + + + + +Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h + +Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h + + + +App/fs/vol_lock.c->Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h + + + + + +App/fs/vol_lock.h->外部/系统头文件 + + + + + +App/log/console_log.c + +App/log/console_log.c + + + +App/log/console_log.c->App/app/sys_events.h + + + + + +App/log/console_log.h + +App/log/console_log.h + + + +App/log/console_log.c->App/log/console_log.h + + + + + +App/log/console_log.c->Inc/usart.h + + + + + +App/log/console_log.c->Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h + + + + + +App/log/console_log.c->Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h + + + + + +Middlewares/Third_Party/FreeRTOS/Source/include/task.h + +Middlewares/Third_Party/FreeRTOS/Source/include/task.h + + + +App/log/console_log.c->Middlewares/Third_Party/FreeRTOS/Source/include/task.h + + + + + +App/log/console_log.c->外部/系统头文件 + + + + + +App/log/console_log.h->外部/系统头文件 + + + + + +App/log/sys_log.h->外部/系统头文件 + + + + + +App/log/sys_log_mcu.c + +App/log/sys_log_mcu.c + + + +App/log/sys_log_mcu.c->App/fs/vol_lock.h + + + + + +App/log/sys_log_mcu.c->App/log/sys_log.h + + + + + +App/log/sys_log_mcu.c->App/util/sys_clock.h + + + + + +App/log/sys_log_mcu.c->Drivers/BSP/dbg_log.h + + + + + +App/log/sys_log_mcu.c->Lib/FatFs/ff.h + + + + + +App/log/sys_log_mcu.c->Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h + + + + + +App/log/sys_log_mcu.c->外部/系统头文件 + + + + + +App/protocol/iec104/iec104_asdu.c + +App/protocol/iec104/iec104_asdu.c + + + +App/protocol/iec104/iec104_asdu.h + +App/protocol/iec104/iec104_asdu.h + + + +App/protocol/iec104/iec104_asdu.c->App/protocol/iec104/iec104_asdu.h + + + + + +App/protocol/iec104/iec104_asdu.c->外部/系统头文件 + + + + + +App/protocol/iec104/iec104_asdu.h->外部/系统头文件 + + + + + +App/protocol/iec104/iec104_link.c + +App/protocol/iec104/iec104_link.c + + + +App/protocol/iec104/iec104_link.c->App/protocol/iec104/iec104_asdu.h + + + + + +App/protocol/iec104/iec104_link.h + +App/protocol/iec104/iec104_link.h + + + +App/protocol/iec104/iec104_link.c->App/protocol/iec104/iec104_link.h + + + + + +App/protocol/iec104/iec104_link.c->外部/系统头文件 + + + + + +App/protocol/iec104/iec104_pts.h + +App/protocol/iec104/iec104_pts.h + + + +App/protocol/iec104/iec104_link.h->App/protocol/iec104/iec104_pts.h + + + + + +App/protocol/iec104/iec104_link.h->外部/系统头文件 + + + + + +App/protocol/iec104/iec104_pts.c + +App/protocol/iec104/iec104_pts.c + + + +App/protocol/iec104/iec104_pts.c->App/algo/adc_input.h + + + + + +App/protocol/iec104/iec104_pts.c->App/algo/phasor.h + + + + + +App/protocol/iec104/iec104_pts.c->App/algo/prot_elm.h + + + + + +App/protocol/iec104/iec104_pts.c->App/algo/prot_set.h + + + + + +App/protocol/iec104/iec104_pts.c->App/protocol/iec104/iec104_asdu.h + + + + + +App/protocol/iec104/iec104_pts.c->App/protocol/iec104/iec104_pts.h + + + + + +App/protocol/iec104/iec104_pts.c->外部/系统头文件 + + + + + +App/protocol/iec104/iec104_pts.h->外部/系统头文件 + + + + + +App/sync/time_sync.c + +App/sync/time_sync.c + + + +App/sync/time_sync.c->App/app/sys_events.h + + + + + +App/sync/time_sync.h + +App/sync/time_sync.h + + + +App/sync/time_sync.c->App/sync/time_sync.h + + + + + +App/sync/time_sync.c->App/util/sys_clock.h + + + + + +App/sync/time_sync.c->App/util/task_watchdog.h + + + + + +Drivers/BSP/NET/net_socket.h + +Drivers/BSP/NET/net_socket.h + + + +App/sync/time_sync.c->Drivers/BSP/NET/net_socket.h + + + + + +App/sync/time_sync.c->Drivers/BSP/dbg_log.h + + + + + +App/sync/time_sync.c->外部/系统头文件 + + + + + +App/sync/time_sync.h->外部/系统头文件 + + + + + +App/task/adc_task.c + +App/task/adc_task.c + + + +App/task/adc_task.c->App/algo/adc_health.h + + + + + +App/task/adc_task.c->App/algo/adc_input.h + + + + + +App/task/adc_task.c->App/algo/phasor.h + + + + + +App/task/adc_task.c->App/algo/sample_ring.h + + + + + +App/task/adc_task.c->App/log/console_log.h + + + + + +App/task/adc_task.c->App/log/sys_log.h + + + + + +App/task/adc_task.h + +App/task/adc_task.h + + + +App/task/adc_task.c->App/task/adc_task.h + + + + + +App/util/task_prof.h + +App/util/task_prof.h + + + +App/task/adc_task.c->App/util/task_prof.h + + + + + +App/task/adc_task.c->App/util/task_watchdog.h + + + + + +App/task/adc_task.c->Drivers/BSP/TPAFE5160/tpafe5160.h + + + + + +App/task/adc_task.c->Drivers/BSP/dbg_log.h + + + + + +App/task/adc_task.c->Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h + + + + + +App/task/default_task.c + +App/task/default_task.c + + + +App/task/default_task.c->App/app/sys_events.h + + + + + +App/task/default_task.c->App/cfg/cfg_file.h + + + + + +App/task/default_task.c->App/fs/vol_lock.h + + + + + +App/task/default_task.c->App/log/sys_log.h + + + + + +App/task/default_task.h + +App/task/default_task.h + + + +App/task/default_task.c->App/task/default_task.h + + + + + +App/task/default_task.c->App/util/task_prof.h + + + + + +App/task/default_task.c->App/util/task_watchdog.h + + + + + +Drivers/BSP/GD5F2GQ5UE/nand_ftl.h + +Drivers/BSP/GD5F2GQ5UE/nand_ftl.h + + + +App/task/default_task.c->Drivers/BSP/GD5F2GQ5UE/nand_ftl.h + + + + + +Drivers/BSP/NETCFG/net_cfg.h + +Drivers/BSP/NETCFG/net_cfg.h + + + +App/task/default_task.c->Drivers/BSP/NETCFG/net_cfg.h + + + + + +App/task/default_task.c->Drivers/BSP/dbg_log.h + + + + + +App/task/default_task.c->Inc/main.h + + + + + +App/task/default_task.c->Lib/FatFs/ff.h + + + + + +App/task/default_task.c->Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h + + + + + +App/task/default_task.c->Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h + + + + + +App/task/default_task.c->Middlewares/Third_Party/FreeRTOS/Source/include/task.h + + + + + +App/task/default_task.c->test/board/test_config.h + + + + + +App/task/iec104_serv.c + +App/task/iec104_serv.c + + + +App/task/iec104_serv.c->App/app/sys_events.h + + + + + +App/task/iec104_serv.c->App/protocol/iec104/iec104_link.h + + + + + +App/task/iec104_serv.c->App/protocol/iec104/iec104_pts.h + + + + + +App/task/iec104_serv.h + +App/task/iec104_serv.h + + + +App/task/iec104_serv.c->App/task/iec104_serv.h + + + + + +App/task/iec104_serv.c->App/util/sys_clock.h + + + + + +App/task/iec104_serv.c->App/util/task_watchdog.h + + + + + +App/task/iec104_serv.c->Drivers/BSP/NET/net_socket.h + + + + + +App/task/iec104_serv.c->Drivers/BSP/dbg_log.h + + + + + +App/task/iec104_serv.c->Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.h + + + + + +App/task/iec104_serv.c->外部/系统头文件 + + + + + +App/task/net_task.c + +App/task/net_task.c + + + +App/task/net_task.c->App/app/sys_events.h + + + + + +App/task/net_task.c->App/log/sys_log.h + + + + + +App/task/net_task.h + +App/task/net_task.h + + + +App/task/net_task.c->App/task/net_task.h + + + + + +App/task/net_task.c->App/util/task_prof.h + + + + + +App/task/net_task.c->App/util/task_watchdog.h + + + + + +Drivers/BSP/CH395F/ch395f.h + +Drivers/BSP/CH395F/ch395f.h + + + +App/task/net_task.c->Drivers/BSP/CH395F/ch395f.h + + + + + +Drivers/BSP/NET/net_select.h + +Drivers/BSP/NET/net_select.h + + + +App/task/net_task.c->Drivers/BSP/NET/net_select.h + + + + + +App/task/net_task.c->Drivers/BSP/NET/net_socket.h + + + + + +App/task/net_task.c->Drivers/BSP/NETCFG/net_cfg.h + + + + + +App/task/net_task.c->Drivers/BSP/dbg_log.h + + + + + +App/task/net_task.c->Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h + + + + + +App/task/net_task.c->test/board/test_config.h + + + + + +App/task/net_task.c->外部/系统头文件 + + + + + +App/task/protect_task.c + +App/task/protect_task.c + + + +App/task/protect_task.c->App/algo/adc_health.h + + + + + +App/task/protect_task.c->App/algo/prot_elm.h + + + + + +App/task/protect_task.c->App/algo/prot_set.h + + + + + +App/task/protect_task.h + +App/task/protect_task.h + + + +App/task/protect_task.c->App/task/protect_task.h + + + + + +App/task/protect_task.c->App/util/task_watchdog.h + + + + + +App/task/protect_task.c->Drivers/BSP/dbg_log.h + + + + + +App/task/protect_task.c->Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.h + + + + + +App/task/rs485_task.c + +App/task/rs485_task.c + + + +App/task/rs485_task.h + +App/task/rs485_task.h + + + +App/task/rs485_task.c->App/task/rs485_task.h + + + + + +App/task/rs485_task.c->Drivers/BSP/RS485/rs485.h + + + + + +App/task/rs485_task.c->Drivers/BSP/dbg_log.h + + + + + +App/task/rs485_task.c->Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h + + + + + +App/task/ui_task.c + +App/task/ui_task.c + + + +App/task/ui_task.c->App/app/sys_events.h + + + + + +App/task/ui_task.h + +App/task/ui_task.h + + + +App/task/ui_task.c->App/task/ui_task.h + + + + + +App/task/ui_task.c->App/util/sys_clock.h + + + + + +App/task/ui_task.c->App/util/task_prof.h + + + + + +App/task/ui_task.c->App/util/task_watchdog.h + + + + + +Drivers/BSP/UI/ui_menu.h + +Drivers/BSP/UI/ui_menu.h + + + +App/task/ui_task.c->Drivers/BSP/UI/ui_menu.h + + + + + +Drivers/BSP/UI/ui_net_sink.h + +Drivers/BSP/UI/ui_net_sink.h + + + +App/task/ui_task.c->Drivers/BSP/UI/ui_net_sink.h + + + + + +Drivers/BSP/UI/ui_port.h + +Drivers/BSP/UI/ui_port.h + + + +App/task/ui_task.c->Drivers/BSP/UI/ui_port.h + + + + + +Drivers/BSP/UI/ui_standby.h + +Drivers/BSP/UI/ui_standby.h + + + +App/task/ui_task.c->Drivers/BSP/UI/ui_standby.h + + + + + +App/task/ui_task.c->Drivers/BSP/dbg_log.h + + + + + +App/task/ui_task.c->Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h + + + + + +test/board/net_latency_test.h + +test/board/net_latency_test.h + + + +App/task/ui_task.c->test/board/net_latency_test.h + + + + + +App/task/ui_task.c->test/board/test_config.h + + + + + +App/task/ui_task.c->外部/系统头文件 + + + + + +App/util/sha256.c + +App/util/sha256.c + + + +App/util/sha256.h + +App/util/sha256.h + + + +App/util/sha256.c->App/util/sha256.h + + + + + +App/util/sha256.c->外部/系统头文件 + + + + + +App/util/sha256.h->外部/系统头文件 + + + + + +App/util/sys_clock.c + +App/util/sys_clock.c + + + +App/util/sys_clock.c->App/util/sys_clock.h + + + + + +App/util/sys_clock.c->Drivers/BSP/dbg_log.h + + + + + +App/util/sys_clock.c->Inc/main.h + + + + + +App/util/sys_clock.c->Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h + + + + + +App/util/sys_clock.c->Middlewares/Third_Party/FreeRTOS/Source/include/task.h + + + + + +App/util/sys_clock.c->外部/系统头文件 + + + + + +App/util/sys_clock.h->Drivers/BSP/SD2506/sd2506.h + + + + + +App/util/sys_clock.h->外部/系统头文件 + + + + + +App/util/task_prof.c + +App/util/task_prof.c + + + +App/util/task_prof.c->App/log/console_log.h + + + + + +App/util/task_prof.c->App/util/task_prof.h + + + + + +App/util/task_prof.c->Inc/main.h + + + + + +App/util/task_prof.c->外部/系统头文件 + + + + + +App/util/task_prof.h->外部/系统头文件 + + + + + +App/util/task_watchdog.c + +App/util/task_watchdog.c + + + +App/util/task_watchdog.c->App/log/console_log.h + + + + + +App/util/task_watchdog.c->App/log/sys_log.h + + + + + +App/util/task_watchdog.c->App/util/task_watchdog.h + + + + + +Drivers/BSP/NET/lftpd/lftpd.h + +Drivers/BSP/NET/lftpd/lftpd.h + + + +App/util/task_watchdog.c->Drivers/BSP/NET/lftpd/lftpd.h + + + + + +App/util/task_watchdog.c->Drivers/BSP/dbg_log.h + + + + + +Inc/iwdg.h + +Inc/iwdg.h + + + +App/util/task_watchdog.c->Inc/iwdg.h + + + + + +App/util/task_watchdog.c->Inc/main.h + + + + + +App/util/task_watchdog.c->Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h + + + + + +App/util/task_watchdog.c->Middlewares/Third_Party/FreeRTOS/Source/include/task.h + + + + + +App/util/task_watchdog.c->外部/系统头文件 + + + + + +App/util/task_watchdog.h->外部/系统头文件 + + + + + +Drivers/BSP/CH395F/ch395f.c + +Drivers/BSP/CH395F/ch395f.c + + + +Drivers/BSP/CH395F/ch395f.c->Drivers/BSP/CH395F/ch395f.h + + + + + +Drivers/BSP/CH395F/ch395f.c->Drivers/BSP/dbg_log.h + + + + + +Inc/spi.h + +Inc/spi.h + + + +Drivers/BSP/CH395F/ch395f.c->Inc/spi.h + + + + + +Drivers/BSP/CH395F/ch395f.c->Inc/usart.h + + + + + +Drivers/BSP/CH395F/ch395f.c->外部/系统头文件 + + + + + +Drivers/BSP/CH395F/ch395f.h->Inc/main.h + + + + + +Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.c + +Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.c + + + +Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.c->Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.h + + + + + +Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.c->Drivers/BSP/dbg_log.h + + + + + +Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.c->外部/系统头文件 + + + + + +Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.h->Inc/main.h + + + + + +Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.h->外部/系统头文件 + + + + + +Drivers/BSP/GD5F2GQ5UE/nand_ftl.c + +Drivers/BSP/GD5F2GQ5UE/nand_ftl.c + + + +Drivers/BSP/GD5F2GQ5UE/nand_ftl.c->Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.h + + + + + +Drivers/BSP/GD5F2GQ5UE/nand_ftl.c->Drivers/BSP/dbg_log.h + + + + + +Lib/FatFs/diskio.h + +Lib/FatFs/diskio.h + + + +Drivers/BSP/GD5F2GQ5UE/nand_ftl.c->Lib/FatFs/diskio.h + + + + + +Drivers/BSP/GD5F2GQ5UE/nand_ftl.c->Lib/FatFs/ff.h + + + + + +Lib/dhara/map.h + +Lib/dhara/map.h + + + +Drivers/BSP/GD5F2GQ5UE/nand_ftl.c->Lib/dhara/map.h + + + + + +Lib/dhara/nand.h + +Lib/dhara/nand.h + + + +Drivers/BSP/GD5F2GQ5UE/nand_ftl.c->Lib/dhara/nand.h + + + + + +Drivers/BSP/GD5F2GQ5UE/nand_ftl.c->外部/系统头文件 + + + + + +Drivers/BSP/GD5F2GQ5UE/nand_ftl.h->外部/系统头文件 + + + + + +Drivers/BSP/NET/lftpd/lftpd_auth.c + +Drivers/BSP/NET/lftpd/lftpd_auth.c + + + +Drivers/BSP/NET/net_config.h + +Drivers/BSP/NET/net_config.h + + + +Drivers/BSP/NET/net_select.c + +Drivers/BSP/NET/net_select.c + + + +Drivers/BSP/NET/net_select.c->Drivers/BSP/CH395F/ch395f.h + + + + + +Drivers/BSP/NET/net_select.c->Drivers/BSP/NET/net_select.h + + + + + +Drivers/BSP/NET/net_select.c->Drivers/BSP/NET/net_socket.h + + + + + +Drivers/BSP/NET/net_select.c->Inc/main.h + + + + + +Drivers/BSP/NET/net_select.c->Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h + + + + + +Drivers/BSP/NET/net_select.c->Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h + + + + + +Drivers/BSP/NET/net_select.c->Middlewares/Third_Party/FreeRTOS/Source/include/task.h + + + + + +Drivers/BSP/NET/net_select.c->外部/系统头文件 + + + + + +Drivers/BSP/NET/net_select.h->Drivers/BSP/NET/net_config.h + + + + + +Drivers/BSP/NET/net_types.h + +Drivers/BSP/NET/net_types.h + + + +Drivers/BSP/NET/net_select.h->Drivers/BSP/NET/net_types.h + + + + + +Drivers/BSP/NET/net_socket.c + +Drivers/BSP/NET/net_socket.c + + + +Drivers/BSP/NET/net_socket.c->Drivers/BSP/CH395F/ch395f.h + + + + + +Drivers/BSP/NET/net_socket.c->Drivers/BSP/NET/net_socket.h + + + + + +Drivers/BSP/NET/net_socket.c->Drivers/BSP/dbg_log.h + + + + + +Drivers/BSP/NET/net_socket.c->Inc/main.h + + + + + +Drivers/BSP/NET/net_socket.c->Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h + + + + + +Drivers/BSP/NET/net_socket.c->Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h + + + + + +Drivers/BSP/NET/net_socket.c->Middlewares/Third_Party/FreeRTOS/Source/include/task.h + + + + + +Drivers/BSP/NET/net_socket.c->test/board/net_latency_test.h + + + + + +Drivers/BSP/NET/net_socket.c->test/board/test_config.h + + + + + +Drivers/BSP/NET/net_socket.c->外部/系统头文件 + + + + + +Drivers/BSP/NET/net_socket.h->Drivers/BSP/NET/net_types.h + + + + + +Drivers/BSP/NET/net_socket.h->Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h + + + + + +Drivers/BSP/NET/net_socket.h->Middlewares/Third_Party/FreeRTOS/Source/include/task.h + + + + + +Drivers/BSP/NET/net_types.h->Drivers/BSP/NET/net_config.h + + + + + +Drivers/BSP/NET/net_types.h->外部/系统头文件 + + + + + +Drivers/BSP/NETCFG/ftp_cfg.c + +Drivers/BSP/NETCFG/ftp_cfg.c + + + +Drivers/BSP/NETCFG/ftp_cfg.c->App/cfg/cfg_file.h + + + + + +Drivers/BSP/NETCFG/ftp_cfg.h + +Drivers/BSP/NETCFG/ftp_cfg.h + + + +Drivers/BSP/NETCFG/ftp_cfg.c->Drivers/BSP/NETCFG/ftp_cfg.h + + + + + +Drivers/BSP/NETCFG/ftp_cfg.c->外部/系统头文件 + + + + + +Drivers/BSP/NETCFG/ftp_cfg.h->外部/系统头文件 + + + + + +Drivers/BSP/NETCFG/net_cfg.c + +Drivers/BSP/NETCFG/net_cfg.c + + + +Drivers/BSP/NETCFG/net_cfg.c->App/cfg/cfg_file.h + + + + + +Drivers/BSP/NETCFG/net_cfg.c->Drivers/BSP/NETCFG/ftp_cfg.h + + + + + +Drivers/BSP/NETCFG/net_cfg.c->Drivers/BSP/NETCFG/net_cfg.h + + + + + +Drivers/BSP/NETCFG/net_cfg.c->Drivers/BSP/dbg_log.h + + + + + +Drivers/BSP/NETCFG/net_cfg.c->外部/系统头文件 + + + + + +Drivers/BSP/NETCFG/net_cfg.h->外部/系统头文件 + + + + + +Drivers/BSP/RS485/rs485.c + +Drivers/BSP/RS485/rs485.c + + + +Drivers/BSP/RS485/rs485.c->Drivers/BSP/RS485/rs485.h + + + + + +Drivers/BSP/RS485/rs485.h->Inc/main.h + + + + + +Drivers/BSP/SD2506/sd2506.c + +Drivers/BSP/SD2506/sd2506.c + + + +Drivers/BSP/SD2506/sd2506.c->Drivers/BSP/SD2506/sd2506.h + + + + + +Drivers/BSP/SD2506/sd2506.c->Drivers/BSP/dbg_log.h + + + + + +Inc/i2c.h + +Inc/i2c.h + + + +Drivers/BSP/SD2506/sd2506.c->Inc/i2c.h + + + + + +Drivers/BSP/SD2506/sd2506.c->外部/系统头文件 + + + + + +Drivers/BSP/SD2506/sd2506.h->Inc/main.h + + + + + +Drivers/BSP/TPAFE5160/tpafe5160.c + +Drivers/BSP/TPAFE5160/tpafe5160.c + + + +Drivers/BSP/TPAFE5160/tpafe5160.c->Drivers/BSP/TPAFE5160/tpafe5160.h + + + + + +Drivers/BSP/TPAFE5160/tpafe5160.c->Drivers/BSP/dbg_log.h + + + + + +Drivers/BSP/TPAFE5160/tpafe5160.c->Inc/main.h + + + + + +Drivers/BSP/TPAFE5160/tpafe5160.c->Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h + + + + + +Drivers/BSP/TPAFE5160/tpafe5160.c->Middlewares/Third_Party/FreeRTOS/Source/include/task.h + + + + + +Drivers/BSP/TPAFE5160/tpafe5160.c->外部/系统头文件 + + + + + +Drivers/BSP/TPAFE5160/tpafe5160.h->Inc/main.h + + + + + +Drivers/BSP/UI/ui_content_page.c + +Drivers/BSP/UI/ui_content_page.c + + + +Drivers/BSP/UI/ui_content_page.h + +Drivers/BSP/UI/ui_content_page.h + + + +Drivers/BSP/UI/ui_content_page.c->Drivers/BSP/UI/ui_content_page.h + + + + + +Drivers/BSP/UI/ui_deco.h + +Drivers/BSP/UI/ui_deco.h + + + +Drivers/BSP/UI/ui_content_page.c->Drivers/BSP/UI/ui_deco.h + + + + + +Drivers/BSP/UI/ui_menu_view.h + +Drivers/BSP/UI/ui_menu_view.h + + + +Drivers/BSP/UI/ui_content_page.c->Drivers/BSP/UI/ui_menu_view.h + + + + + +Drivers/BSP/UI/ui_page_ac.h + +Drivers/BSP/UI/ui_page_ac.h + + + +Drivers/BSP/UI/ui_content_page.c->Drivers/BSP/UI/ui_page_ac.h + + + + + +Drivers/BSP/UI/ui_page_dc.h + +Drivers/BSP/UI/ui_page_dc.h + + + +Drivers/BSP/UI/ui_content_page.c->Drivers/BSP/UI/ui_page_dc.h + + + + + +Drivers/BSP/UI/ui_page_device_info.h + +Drivers/BSP/UI/ui_page_device_info.h + + + +Drivers/BSP/UI/ui_content_page.c->Drivers/BSP/UI/ui_page_device_info.h + + + + + +Drivers/BSP/UI/ui_page_net_cfg.h + +Drivers/BSP/UI/ui_page_net_cfg.h + + + +Drivers/BSP/UI/ui_content_page.c->Drivers/BSP/UI/ui_page_net_cfg.h + + + + + +Drivers/BSP/UI/ui_page_password.h + +Drivers/BSP/UI/ui_page_password.h + + + +Drivers/BSP/UI/ui_content_page.c->Drivers/BSP/UI/ui_page_password.h + + + + + +Drivers/BSP/UI/ui_page_runlog.h + +Drivers/BSP/UI/ui_page_runlog.h + + + +Drivers/BSP/UI/ui_content_page.c->Drivers/BSP/UI/ui_page_runlog.h + + + + + +Drivers/BSP/UI/ui_page_selftest.h + +Drivers/BSP/UI/ui_page_selftest.h + + + +Drivers/BSP/UI/ui_content_page.c->Drivers/BSP/UI/ui_page_selftest.h + + + + + +Drivers/BSP/UI/ui_pwd_def.h + +Drivers/BSP/UI/ui_pwd_def.h + + + +Drivers/BSP/UI/ui_content_page.c->Drivers/BSP/UI/ui_pwd_def.h + + + + + +Drivers/BSP/UI/ui_content_page.c->Drivers/BSP/UI/ui_standby.h + + + + + +Drivers/BSP/UI/ui_content_page.c->Drivers/BSP/dbg_log.h + + + + + +Lib/lvgl/lvgl.h + +Lib/lvgl/lvgl.h + + + +Drivers/BSP/UI/ui_content_page.c->Lib/lvgl/lvgl.h + + + + + +Drivers/BSP/UI/ui_content_page.c->外部/系统头文件 + + + + + +Drivers/BSP/UI/ui_content_page.h->Lib/lvgl/lvgl.h + + + + + +Drivers/BSP/UI/ui_content_page.h->外部/系统头文件 + + + + + +Drivers/BSP/UI/ui_deco.c + +Drivers/BSP/UI/ui_deco.c + + + +Drivers/BSP/UI/ui_deco.c->Drivers/BSP/UI/ui_deco.h + + + + + +Drivers/BSP/UI/ui_deco.c->外部/系统头文件 + + + + + +Drivers/BSP/UI/ui_deco.h->Lib/lvgl/lvgl.h + + + + + +Drivers/BSP/UI/ui_font_cn_12.c + +Drivers/BSP/UI/ui_font_cn_12.c + + + +Drivers/BSP/UI/ui_font_cn_12.c->Lib/lvgl/lvgl.h + + + + + +Drivers/BSP/UI/ui_menu.c + +Drivers/BSP/UI/ui_menu.c + + + +Drivers/BSP/UI/ui_menu.c->Drivers/BSP/UI/ui_content_page.h + + + + + +Drivers/BSP/UI/ui_menu.c->Drivers/BSP/UI/ui_menu.h + + + + + +Drivers/BSP/UI/ui_menu_tab.h + +Drivers/BSP/UI/ui_menu_tab.h + + + +Drivers/BSP/UI/ui_menu.c->Drivers/BSP/UI/ui_menu_tab.h + + + + + +Drivers/BSP/UI/ui_menu.c->Drivers/BSP/UI/ui_menu_view.h + + + + + +Drivers/BSP/UI/ui_menu.c->Drivers/BSP/UI/ui_page_password.h + + + + + +Drivers/BSP/UI/ui_menu.c->Drivers/BSP/UI/ui_pwd_def.h + + + + + +Drivers/BSP/UI/ui_menu.c->Drivers/BSP/UI/ui_standby.h + + + + + +Drivers/BSP/UI/ui_menu.c->Drivers/BSP/dbg_log.h + + + + + +Drivers/BSP/UI/ui_menu.c->Lib/lvgl/lvgl.h + + + + + +Drivers/BSP/UI/ui_menu.c->外部/系统头文件 + + + + + +Drivers/BSP/UI/ui_menu_tab.c + +Drivers/BSP/UI/ui_menu_tab.c + + + +Drivers/BSP/UI/ui_menu_tab.c->Drivers/BSP/UI/ui_menu_tab.h + + + + + +Drivers/BSP/UI/ui_menu_tab.h->外部/系统头文件 + + + + + +Drivers/BSP/UI/ui_menu_view.c + +Drivers/BSP/UI/ui_menu_view.c + + + +Drivers/BSP/UI/ui_menu_view.c->Drivers/BSP/UI/ui_deco.h + + + + + +Drivers/BSP/UI/ui_menu_view.c->Drivers/BSP/UI/ui_menu_tab.h + + + + + +Drivers/BSP/UI/ui_menu_view.c->Drivers/BSP/UI/ui_menu_view.h + + + + + +Drivers/BSP/UI/ui_menu_view.c->Drivers/BSP/dbg_log.h + + + + + +Drivers/BSP/UI/ui_menu_view.c->Lib/lvgl/lvgl.h + + + + + +Drivers/BSP/UI/ui_menu_view.c->外部/系统头文件 + + + + + +Drivers/BSP/UI/ui_menu_view.h->Lib/lvgl/lvgl.h + + + + + +Drivers/BSP/UI/ui_menu_view.h->外部/系统头文件 + + + + + +Drivers/BSP/UI/ui_net_sink.c + +Drivers/BSP/UI/ui_net_sink.c + + + +Drivers/BSP/UI/ui_net_sink.c->Drivers/BSP/NET/net_socket.h + + + + + +Drivers/BSP/UI/ui_net_sink.c->Drivers/BSP/NET/net_types.h + + + + + +Drivers/BSP/UI/ui_net_sink.c->Drivers/BSP/UI/ui_net_sink.h + + + + + +Drivers/BSP/UI/ui_net_sink_backend.h + +Drivers/BSP/UI/ui_net_sink_backend.h + + + +Drivers/BSP/UI/ui_net_sink.c->Drivers/BSP/UI/ui_net_sink_backend.h + + + + + +Drivers/BSP/UI/ui_net_sink.c->Drivers/BSP/dbg_log.h + + + + + +Drivers/BSP/UI/ui_net_sink.c->test/board/net_latency_test.h + + + + + +Drivers/BSP/UI/ui_net_sink.c->test/board/test_config.h + + + + + +Drivers/BSP/UI/ui_net_sink.c->外部/系统头文件 + + + + + +Drivers/BSP/UI/ui_net_sink.h->外部/系统头文件 + + + + + +Drivers/BSP/UI/ui_net_sink_backend.h->外部/系统头文件 + + + + + +Drivers/BSP/UI/ui_net_sink_backend_mcu.c + +Drivers/BSP/UI/ui_net_sink_backend_mcu.c + + + +Drivers/BSP/UI/ui_net_sink_backend_mcu.c->Drivers/BSP/UI/ui_net_sink_backend.h + + + + + +Drivers/BSP/UI/ui_net_sink_backend_mcu.c->Drivers/BSP/UI/ui_port.h + + + + + +Drivers/BSP/UI/ui_net_sink_backend_mcu.c->外部/系统头文件 + + + + + +Drivers/BSP/UI/ui_page_ac.c + +Drivers/BSP/UI/ui_page_ac.c + + + +Drivers/BSP/UI/ui_page_ac.c->Drivers/BSP/UI/ui_page_ac.h + + + + + +Drivers/BSP/UI/ui_page_ac.h->Drivers/BSP/UI/ui_content_page.h + + + + + +Drivers/BSP/UI/ui_page_dc.c + +Drivers/BSP/UI/ui_page_dc.c + + + +Drivers/BSP/UI/ui_page_dc.c->Drivers/BSP/UI/ui_page_dc.h + + + + + +Drivers/BSP/UI/ui_page_dc.h->Drivers/BSP/UI/ui_content_page.h + + + + + +Drivers/BSP/UI/ui_page_device_info.c + +Drivers/BSP/UI/ui_page_device_info.c + + + +Drivers/BSP/UI/ui_page_device_info.c->Drivers/BSP/UI/ui_page_device_info.h + + + + + +Drivers/BSP/UI/ui_page_device_info.h->Drivers/BSP/UI/ui_content_page.h + + + + + +Drivers/BSP/UI/ui_page_net_cfg.c + +Drivers/BSP/UI/ui_page_net_cfg.c + + + +Drivers/BSP/UI/ui_page_net_cfg.c->Drivers/BSP/NETCFG/net_cfg.h + + + + + +Drivers/BSP/UI/ui_page_net_cfg.c->Drivers/BSP/UI/ui_page_net_cfg.h + + + + + +Drivers/BSP/UI/ui_page_net_cfg.c->外部/系统头文件 + + + + + +Drivers/BSP/UI/ui_page_net_cfg.h->Drivers/BSP/UI/ui_content_page.h + + + + + +Drivers/BSP/UI/ui_page_password.c + +Drivers/BSP/UI/ui_page_password.c + + + +Drivers/BSP/UI/ui_page_password.c->Drivers/BSP/UI/ui_page_password.h + + + + + +Drivers/BSP/UI/ui_page_password.c->Drivers/BSP/UI/ui_pwd_def.h + + + + + +Drivers/BSP/UI/ui_page_password.c->外部/系统头文件 + + + + + +Drivers/BSP/UI/ui_page_password.h->Drivers/BSP/UI/ui_content_page.h + + + + + +Drivers/BSP/UI/ui_page_runlog.c + +Drivers/BSP/UI/ui_page_runlog.c + + + +Drivers/BSP/UI/ui_page_runlog.c->App/log/sys_log.h + + + + + +Drivers/BSP/UI/ui_page_runlog.c->Drivers/BSP/UI/ui_page_runlog.h + + + + + +Drivers/BSP/UI/ui_page_runlog.c->外部/系统头文件 + + + + + +Drivers/BSP/UI/ui_page_runlog.h->Drivers/BSP/UI/ui_content_page.h + + + + + +Drivers/BSP/UI/ui_page_selftest.c + +Drivers/BSP/UI/ui_page_selftest.c + + + +Drivers/BSP/UI/ui_page_selftest.c->App/log/sys_log.h + + + + + +Drivers/BSP/UI/ui_page_selftest.c->Drivers/BSP/UI/ui_page_selftest.h + + + + + +Drivers/BSP/UI/ui_page_selftest.c->外部/系统头文件 + + + + + +Drivers/BSP/UI/ui_page_selftest.h->Drivers/BSP/UI/ui_content_page.h + + + + + +Drivers/BSP/UI/ui_port.c + +Drivers/BSP/UI/ui_port.c + + + +Drivers/BSP/UI/ui_port.c->Drivers/BSP/UI/ui_port.h + + + + + +Drivers/BSP/UI/ui_port.c->Drivers/BSP/dbg_log.h + + + + + +Drivers/BSP/UI/ui_port.c->Lib/lvgl/lvgl.h + + + + + +Drivers/BSP/UI/ui_port.c->外部/系统头文件 + + + + + +Drivers/BSP/UI/ui_port.h->外部/系统头文件 + + + + + +Drivers/BSP/UI/ui_pwd_def.h->外部/系统头文件 + + + + + +Drivers/BSP/UI/ui_standby.c + +Drivers/BSP/UI/ui_standby.c + + + +Drivers/BSP/UI/ui_standby.c->Drivers/BSP/UI/ui_menu_view.h + + + + + +Drivers/BSP/UI/ui_standby.c->Drivers/BSP/UI/ui_standby.h + + + + + +Drivers/BSP/UI/ui_standby.c->Drivers/BSP/dbg_log.h + + + + + +Drivers/BSP/UI/ui_standby.c->Lib/lvgl/lvgl.h + + + + + +Drivers/BSP/UI/ui_standby.c->外部/系统头文件 + + + + + +Drivers/BSP/UI/ui_standby.h->外部/系统头文件 + + + + + +Drivers/BSP/dbg_cfg.h + +Drivers/BSP/dbg_cfg.h + + + +Drivers/BSP/dbg_log.h->App/log/console_log.h + + + + + +Drivers/BSP/dbg_log.h->App/util/sys_clock.h + + + + + +Drivers/BSP/dbg_log.h->Drivers/BSP/dbg_cfg.h + + + + + +Drivers/BSP/dbg_log.h->外部/系统头文件 + + + + + +Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h + +Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h + + + +Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h + +Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h + + + +Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_adc.h + +Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_adc.h + + + +Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_cortex.h + +Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_cortex.h + + + +Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma.h + +Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma.h + + + +Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_exti.h + +Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_exti.h + + + +Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash.h + +Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash.h + + + +Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio.h + +Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio.h + + + +Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2c.h + +Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2c.h + + + +Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_iwdg.h + +Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_iwdg.h + + + +Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr.h + +Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr.h + + + +Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc.h + +Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc.h + + + +Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_spi.h + +Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_spi.h + + + +Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim.h + +Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim.h + + + +Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_uart.h + +Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_uart.h + + + +Inc/FreeRTOSConfig.h + +Inc/FreeRTOSConfig.h + + + +Inc/FreeRTOSConfig.h->外部/系统头文件 + + - + Inc/adc.h->Inc/main.h - - + + - + Inc/dma.h - -Inc/dma.h + +Inc/dma.h - + Inc/dma.h->Inc/main.h - - + + - + Inc/gpio.h - -Inc/gpio.h + +Inc/gpio.h - + Inc/gpio.h->Inc/main.h - - + + - + Inc/i2c.h->Inc/main.h - - + + - + Inc/iwdg.h->Inc/main.h - - + + - + Inc/main.h->Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h - - + + - + Inc/spi.h->Inc/main.h - - + + - + Inc/stm32f4xx_hal_conf.h - -Inc/stm32f4xx_hal_conf.h + +Inc/stm32f4xx_hal_conf.h - + Inc/stm32f4xx_hal_conf.h->Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_adc.h - - + + - + Inc/stm32f4xx_hal_conf.h->Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_cortex.h - - + + - + Inc/stm32f4xx_hal_conf.h->Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma.h - - + + - + Inc/stm32f4xx_hal_conf.h->Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_exti.h - - + + - + Inc/stm32f4xx_hal_conf.h->Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash.h - - + + - + Inc/stm32f4xx_hal_conf.h->Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio.h - - + + - + Inc/stm32f4xx_hal_conf.h->Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2c.h - - + + - + Inc/stm32f4xx_hal_conf.h->Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_iwdg.h - - + + - + Inc/stm32f4xx_hal_conf.h->Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr.h - - + + - + Inc/stm32f4xx_hal_conf.h->Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc.h - - + + - + Inc/stm32f4xx_hal_conf.h->Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_spi.h - - + + - + Inc/stm32f4xx_hal_conf.h->Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim.h - - + + - + Inc/stm32f4xx_hal_conf.h->Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_uart.h - - + + - + Inc/stm32f4xx_hal_conf.h->外部/系统头文件 - - + + + + + +Inc/tim.h->Inc/main.h + + - + Inc/usart.h->Inc/main.h - - + + - + Src/adc.c - -Src/adc.c + +Src/adc.c - + Src/adc.c->Inc/adc.h - - + + - + Src/dma.c - -Src/dma.c + +Src/dma.c - + Src/dma.c->Inc/dma.h - - + + - + Src/freertos.c - -Src/freertos.c + +Src/freertos.c - + Src/freertos.c->App/app/sys_events.h - - + + - + Src/freertos.c->App/sync/time_sync.h - - + + + + + +Src/freertos.c->App/task/adc_task.h + + - + Src/freertos.c->App/task/default_task.h - - + + + + + +Src/freertos.c->App/task/iec104_serv.h + + - + Src/freertos.c->App/task/net_task.h - - + + + + + +Src/freertos.c->App/task/protect_task.h + + - + Src/freertos.c->App/util/task_watchdog.h - - + + - + Src/freertos.c->Drivers/BSP/CH395F/ch395f.h - - + + - + Src/freertos.c->Drivers/BSP/NET/lftpd/lftpd.h - - + + - + Src/freertos.c->Drivers/BSP/NET/net_socket.h - - + + - + Src/freertos.c->Drivers/BSP/dbg_log.h - - + + - + Src/freertos.c->Inc/main.h - - + + - + Src/freertos.c->Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h - - + + - + Src/freertos.c->Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h - - + + - + Src/freertos.c->Middlewares/Third_Party/FreeRTOS/Source/include/task.h - - + + - + test/board/ch395f_test.h - -test/board/ch395f_test.h + +test/board/ch395f_test.h - + Src/freertos.c->test/board/ch395f_test.h - - + + - + test/board/ch395f_test_task.h - -test/board/ch395f_test_task.h + +test/board/ch395f_test_task.h - + Src/freertos.c->test/board/ch395f_test_task.h - - + + - + Src/freertos.c->test/board/test_config.h - - + + - + Src/freertos.c->外部/系统头文件 - - + + - + Src/gpio.c - -Src/gpio.c + +Src/gpio.c - + Src/gpio.c->Inc/gpio.h - - + + - + Src/i2c.c - -Src/i2c.c + +Src/i2c.c - + Src/i2c.c->Inc/i2c.h - - + + - + Src/iwdg.c - -Src/iwdg.c + +Src/iwdg.c - + Src/iwdg.c->Inc/iwdg.h - - + + - + Src/main.c - -Src/main.c + +Src/main.c - + Src/main.c->App/app/app_main.h - - + + + + + +Src/main.c->App/task/adc_task.h + + - + Src/main.c->App/util/sys_clock.h - - + + - + Src/main.c->App/util/task_watchdog.h - - + + - + Src/main.c->Drivers/BSP/CH395F/ch395f.h - - + + - + Src/main.c->Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.h - - + + - + Src/main.c->Drivers/BSP/NET/net_select.h - - + + - + Src/main.c->Drivers/BSP/NET/net_socket.h - - + + - + Src/main.c->Drivers/BSP/RS485/rs485.h - - + + - + Src/main.c->Drivers/BSP/SD2506/sd2506.h - - + + - + Src/main.c->Drivers/BSP/TPAFE5160/tpafe5160.h - - + + - + Src/main.c->Drivers/BSP/dbg_log.h - - + + - + Src/main.c->Inc/adc.h - - + + - + Src/main.c->Inc/dma.h - - + + - + Src/main.c->Inc/gpio.h - - + + - + Src/main.c->Inc/i2c.h - - + + - + Src/main.c->Inc/iwdg.h - - + + - + Src/main.c->Inc/main.h - - + + - + Src/main.c->Inc/spi.h - - + + + + + +Src/main.c->Inc/tim.h + + - + Src/main.c->Inc/usart.h - - + + - + Src/main.c->Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h - - + + - + Src/main.c->外部/系统头文件 - - + + - + Src/spi.c - -Src/spi.c + +Src/spi.c - + Src/spi.c->Inc/spi.h - - + + - + Src/stm32f4xx_hal_msp.c - -Src/stm32f4xx_hal_msp.c + +Src/stm32f4xx_hal_msp.c - + Src/stm32f4xx_hal_msp.c->Inc/main.h - - + + - + Src/stm32f4xx_hal_timebase_tim.c - -Src/stm32f4xx_hal_timebase_tim.c + +Src/stm32f4xx_hal_timebase_tim.c - + Src/stm32f4xx_hal_timebase_tim.c->Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h - - + + - + Src/stm32f4xx_hal_timebase_tim.c->Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim.h - - + + - + Src/stm32f4xx_it.c - -Src/stm32f4xx_it.c + +Src/stm32f4xx_it.c - + Src/stm32f4xx_it.c->Inc/main.h - - + + - + Src/stm32f4xx_it.c->Inc/stm32f4xx_it.h - - + + - + Src/stm32f4xx_it.c->Inc/usart.h - - + + - + Src/system_stm32f4xx.c - -Src/system_stm32f4xx.c + +Src/system_stm32f4xx.c - + Src/system_stm32f4xx.c->Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h - - + + + + + +Src/tim.c + +Src/tim.c + + + +Src/tim.c->Inc/tim.h + + - + Src/usart.c - -Src/usart.c + +Src/usart.c - + Src/usart.c->Inc/usart.h - - + + - + simulator/SDL2/SDL2-2.32.10/include/SDL.h - -simulator/SDL2/SDL2-2.32.10/include/SDL.h + +simulator/SDL2/SDL2-2.32.10/include/SDL.h - + simulator/dbg_log.h - -simulator/dbg_log.h + +simulator/dbg_log.h - + simulator/dbg_log.h->外部/系统头文件 - - + + - + simulator/lv_conf.h - -simulator/lv_conf.h + +simulator/lv_conf.h - + simulator/main.c - -simulator/main.c + +simulator/main.c - + simulator/main.c->App/cfg/cfg_file.h - - + + - + simulator/main.c->App/cfg/cfg_file_store.h - - + + - + simulator/main.c->App/log/sys_log.h - - + + - + simulator/main.c->Drivers/BSP/NETCFG/net_cfg.h - - + + - + simulator/main.c->Drivers/BSP/UI/ui_menu.h - - + + - + simulator/main.c->Drivers/BSP/UI/ui_net_sink.h - - + + - + simulator/main.c->Drivers/BSP/UI/ui_standby.h - - + + - + simulator/main.c->Lib/lvgl/lvgl.h - - + + - + simulator/main.c->simulator/SDL2/SDL2-2.32.10/include/SDL.h - - + + - + simulator/sim/sim_port.h - -simulator/sim/sim_port.h + +simulator/sim/sim_port.h - + simulator/main.c->simulator/sim/sim_port.h - - + + - + simulator/main.c->外部/系统头文件 - - + + - + simulator/sim/cfg_file_store_sim.c - -simulator/sim/cfg_file_store_sim.c + +simulator/sim/cfg_file_store_sim.c - + simulator/sim/cfg_file_store_sim.c->App/cfg/cfg_file_store.h - - + + - + simulator/sim/cfg_file_store_sim.c->外部/系统头文件 - - + + - + simulator/sim/net_socket_sim.c - -simulator/sim/net_socket_sim.c + +simulator/sim/net_socket_sim.c - + simulator/sim/net_socket_sim.c->Drivers/BSP/NET/net_socket.h - - + + - + simulator/sim/net_socket_sim.c->外部/系统头文件 - - + + - + simulator/sim/sim_latency_stub.c - -simulator/sim/sim_latency_stub.c + +simulator/sim/sim_latency_stub.c - + simulator/sim/sim_latency_stub.c->test/board/net_latency_test.h - - + + - + simulator/sim/sim_port.c - -simulator/sim/sim_port.c + +simulator/sim/sim_port.c - + simulator/sim/sim_port.c->Lib/lvgl/lvgl.h - - + + - + simulator/sim/sim_port.c->simulator/SDL2/SDL2-2.32.10/include/SDL.h - - + + - + simulator/sim/sim_port.c->simulator/sim/sim_port.h - - + + - + simulator/sim/sim_port.h->外部/系统头文件 - - + + - + simulator/sim/sim_syslog.c - -simulator/sim/sim_syslog.c + +simulator/sim/sim_syslog.c - + simulator/sim/sim_syslog.c->App/log/sys_log.h - - + + - + simulator/sim/sim_syslog.c->外部/系统头文件 - - + + - + simulator/sim/ui_net_sink_backend_sim.c - -simulator/sim/ui_net_sink_backend_sim.c + +simulator/sim/ui_net_sink_backend_sim.c - + simulator/sim/ui_net_sink_backend_sim.c->Drivers/BSP/UI/ui_net_sink_backend.h - - + + - + simulator/sim/ui_net_sink_backend_sim.c->Drivers/BSP/UI/ui_port.h - - + + - + simulator/sim/ui_net_sink_backend_sim.c->Lib/lvgl/lvgl.h - - + + - + simulator/sim/ui_net_sink_backend_sim.c->simulator/sim/sim_port.h - - + + + + + +test/board/ch395f_reuse_bench.c + +test/board/ch395f_reuse_bench.c + + + +test/board/ch395f_reuse_bench.c->Drivers/BSP/CH395F/ch395f.h + + + + + +test/board/ch395f_reuse_bench.c->Drivers/BSP/dbg_log.h + + + + + +test/board/ch395f_reuse_bench.c->Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h + + + + + +test/board/ch395f_reuse_bench.h + +test/board/ch395f_reuse_bench.h + + + +test/board/ch395f_reuse_bench.c->test/board/ch395f_reuse_bench.h + + - + test/board/test_common.h - -test/board/test_common.h + +test/board/test_common.h - + test/board/ch395f_test.h->test/board/test_common.h - - + + - + test/board/ch395f_test.h->外部/系统头文件 - - + + - + test/board/ch395f_test_task.c - -test/board/ch395f_test_task.c + +test/board/ch395f_test_task.c - + test/board/ch395f_test_task.c->App/app/sys_events.h - - + + - + test/board/ch395f_test_task.c->App/task/net_task.h - - + + - + test/board/ch395f_test_task.c->Drivers/BSP/CH395F/ch395f.h - - + + - + test/board/ch395f_test_task.c->Drivers/BSP/NET/net_socket.h - - + + - + test/board/ch395f_test_task.c->Drivers/BSP/dbg_log.h - - + + - + test/board/ch395f_test_task.c->Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h - - + + - + test/board/ch395f_test_task.c->test/board/ch395f_test.h - - + + - + test/board/ch395f_test_task.c->test/board/ch395f_test_task.h - - + + - + test/board/gd5f_test.h - -test/board/gd5f_test.h + +test/board/gd5f_test.h - + test/board/ch395f_test_task.c->test/board/gd5f_test.h - - + + - + test/board/ch395f_test_task.c->test/board/net_latency_test.h - - + + - + test/board/net_test_task.h - -test/board/net_test_task.h + +test/board/net_test_task.h - + test/board/ch395f_test_task.c->test/board/net_test_task.h - - + + - + test/board/sd2506_test.h - -test/board/sd2506_test.h + +test/board/sd2506_test.h - + test/board/ch395f_test_task.c->test/board/sd2506_test.h - - + + - + test/board/storage_test.h - -test/board/storage_test.h + +test/board/storage_test.h - + test/board/ch395f_test_task.c->test/board/storage_test.h - - + + - + test/board/ch395f_test_task.c->test/board/test_config.h - - + + - + test/board/ch395f_test_task.c->外部/系统头文件 - - + + - + test/board/gd5f_test.h->Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.h - - + + - + test/board/gd5f_test.h->test/board/test_common.h - - + + - + test/board/gd5f_test.h->外部/系统头文件 - - + + - + test/board/gd5f_test_task.c - -test/board/gd5f_test_task.c + +test/board/gd5f_test_task.c - + test/board/gd5f_test_task.c->Drivers/BSP/GD5F2GQ5UE/nand_ftl.h - - + + - + test/board/gd5f_test_task.c->Drivers/BSP/dbg_log.h - - + + - + test/board/gd5f_test_task.c->Lib/FatFs/ff.h - - + + - + test/board/gd5f_test_task.c->Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h - - + + - + test/board/gd5f_test_task.c->test/board/gd5f_test.h - - + + - + test/board/gd5f_test_task.c->test/board/test_config.h - - + + - + test/board/gd5f_test_task.c->外部/系统头文件 - - + + - + test/board/net_latency_test.c - -test/board/net_latency_test.c + +test/board/net_latency_test.c - + test/board/net_latency_test.c->Drivers/BSP/CH395F/ch395f.h - - + + - + test/board/net_latency_test.c->Drivers/BSP/NET/net_socket.h - - + + - + test/board/net_latency_test.c->Drivers/BSP/dbg_log.h - - + + - + test/board/net_latency_test.c->Inc/main.h - - + + - + test/board/net_latency_test.c->test/board/ch395f_test.h - - + + - + test/board/net_latency_test.c->test/board/net_latency_test.h - - + + - + test/board/net_latency_test.c->test/board/test_config.h - - + + - + test/board/net_latency_test.c->外部/系统头文件 - - + + - + test/board/net_latency_test.h->外部/系统头文件 - - + + - + test/board/net_test_task.c - -test/board/net_test_task.c + +test/board/net_test_task.c - + test/board/net_test_task.c->Drivers/BSP/NET/net_select.h - - + + - + test/board/net_test_task.c->Drivers/BSP/NET/net_socket.h - - + + - + test/board/net_test_task.c->Drivers/BSP/NET/net_types.h - - + + - + test/board/net_test_task.c->Drivers/BSP/dbg_log.h - - + + - + test/board/net_test_task.c->Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h - - + + - + test/board/net_test_task.c->test/board/ch395f_test.h - - + + - + test/board/net_test_task.c->test/board/ch395f_test_task.h - - + + - + test/board/net_test_task.c->test/board/net_latency_test.h - - + + - + test/board/net_test_task.c->test/board/net_test_task.h - - + + - + test/board/net_test_task.c->外部/系统头文件 - - + + - + test/board/sd2506_test.h->test/board/test_common.h - - + + - + test/board/sd2506_test.h->外部/系统头文件 - - + + - + test/board/sd2506_test_task.c - -test/board/sd2506_test_task.c + +test/board/sd2506_test_task.c - + test/board/sd2506_test_task.c->Drivers/BSP/SD2506/sd2506.h - - + + - + test/board/sd2506_test_task.c->Drivers/BSP/dbg_log.h - - + + - + test/board/sd2506_test_task.c->Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h - - + + - + test/board/sd2506_test_task.c->test/board/sd2506_test.h - - + + - + test/board/sd2506_test_task.c->test/board/test_config.h - - + + - + test/board/sd2506_test_task.c->外部/系统头文件 - - + + - + test/board/storage_test.h->test/board/test_common.h - - + + - + test/board/storage_test.h->外部/系统头文件 - - + + - + test/board/storage_test_task.c - -test/board/storage_test_task.c + +test/board/storage_test_task.c - + test/board/storage_test_task.c->Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.h - - + + - + test/board/storage_test_task.c->Drivers/BSP/GD5F2GQ5UE/nand_ftl.h - - + + - + test/board/storage_test_task.c->Drivers/BSP/dbg_log.h - - + + - + test/board/storage_test_task.c->Inc/main.h - - + + - + test/board/storage_test_task.c->Lib/FatFs/diskio.h - - + + - + test/board/storage_test_task.c->Lib/FatFs/ff.h - - + + - + test/board/storage_test_task.c->test/board/storage_test.h - - + + - + test/board/storage_test_task.c->test/board/test_config.h - - + + - + test/board/storage_test_task.c->外部/系统头文件 - - + + - + test/board/test_common.h->外部/系统头文件 - - + + - + test/board/test_config.c - -test/board/test_config.c + +test/board/test_config.c - + test/board/test_config.c->Drivers/BSP/dbg_log.h - - + + - + test/board/test_config.c->Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h - - + + - + test/board/test_config.c->test/board/ch395f_test_task.h - - + + - + test/board/test_config.c->test/board/gd5f_test.h - - + + - + test/board/test_config.c->test/board/sd2506_test.h - - + + - + test/board/test_config.c->test/board/storage_test.h - - + + - + test/board/test_config.c->test/board/test_config.h - - + + - + test/board/test_config.h->test/board/ch395f_test.h - - + + - + test/board/test_config.h->test/board/gd5f_test.h - - + + - + test/board/test_config.h->test/board/sd2506_test.h - - + + - + test/board/test_config.h->test/board/storage_test.h - - + + - + test/board/test_config.h->外部/系统头文件 - - + + + + + +test/host/adc_health/adc_health_test.c + +test/host/adc_health/adc_health_test.c + + + +test/host/adc_health/adc_health_test.c->App/algo/adc_health.c + + + + + +test/host/adc_health/adc_health_test.c->外部/系统头文件 + + + + + +test/host/adc_input/adc_input_test.c + +test/host/adc_input/adc_input_test.c + + + +test/host/adc_input/adc_input_test.c->App/algo/adc_input.c + + + + + +test/host/adc_input/adc_input_test.c->App/algo/adc_input.h + + + + + +test/host/adc_input/adc_input_test.c->Drivers/BSP/TPAFE5160/tpafe5160.h + + + + + +test/host/adc_input/adc_input_test.c->Inc/adc.h + + + + + +test/host/adc_input/adc_input_test.c->外部/系统头文件 + + + + + +test/host/adc_input/stub/adc.h + +test/host/adc_input/stub/adc.h + + + +test/host/adc_input/stub/adc.h->外部/系统头文件 + + + + + +test/host/adc_input/stub/tpafe5160.h + +test/host/adc_input/stub/tpafe5160.h + + + +test/host/adc_input/stub/tpafe5160.h->外部/系统头文件 + + - + test/host/cfg_file/cfg_file_test.c - -test/host/cfg_file/cfg_file_test.c + +test/host/cfg_file/cfg_file_test.c - + test/host/cfg_file/cfg_file_test.c->App/cfg/cfg_file.c - - + + - + test/host/cfg_file/cfg_file_test.c->App/cfg/cfg_file_store.h - - + + - + test/host/cfg_file/cfg_file_test.c->App/log/sys_log.h - - + + - + test/host/cfg_file/cfg_file_test.c->Drivers/BSP/dbg_log.h - - + + - + test/host/cfg_file/cfg_file_test.c->外部/系统头文件 - - + + - + test/host/cfg_file/stub/dbg_log.h - -test/host/cfg_file/stub/dbg_log.h + +test/host/cfg_file/stub/dbg_log.h - + test/host/cfg_file/stub/dbg_log.h->外部/系统头文件 - - + + + + + +test/host/ftp_auth/ftp_auth_test.c + +test/host/ftp_auth/ftp_auth_test.c + + + +test/host/ftp_auth/ftp_auth_test.c->App/util/sha256.c + + + + + +test/host/ftp_auth/ftp_auth_test.c->Drivers/BSP/NET/lftpd/lftpd_auth.c + + + + + +test/host/ftp_auth/ftp_auth_test.c->外部/系统头文件 + + + + + +test/host/iec104/iec104_test.c + +test/host/iec104/iec104_test.c + + + +test/host/iec104/iec104_test.c->App/algo/phasor.c + + + + + +test/host/iec104/iec104_test.c->App/algo/prot_elm.c + + + + + +test/host/iec104/iec104_test.c->App/algo/prot_set.c + + + + + +test/host/iec104/iec104_test.c->App/algo/sample_ring.c + + + + + +test/host/iec104/iec104_test.c->App/protocol/iec104/iec104_asdu.c + + + + + +test/host/iec104/iec104_test.c->App/protocol/iec104/iec104_link.c + + + + + +test/host/iec104/iec104_test.c->App/protocol/iec104/iec104_pts.c + + + + + +test/host/iec104/iec104_test.c->外部/系统头文件 + + + + + +test/host/phasor/phasor_test.c + +test/host/phasor/phasor_test.c + + + +test/host/phasor/phasor_test.c->App/algo/phasor.c + + + + + +test/host/phasor/phasor_test.c->App/algo/sample_ring.c + + + + + +test/host/phasor/phasor_test.c->外部/系统头文件 + + + + + +test/host/prot_elm/prot_elm_test.c + +test/host/prot_elm/prot_elm_test.c + + + +test/host/prot_elm/prot_elm_test.c->App/algo/phasor.c + + + + + +test/host/prot_elm/prot_elm_test.c->App/algo/prot_elm.c + + + + + +test/host/prot_elm/prot_elm_test.c->App/algo/prot_set.c + + + + + +test/host/prot_elm/prot_elm_test.c->App/algo/sample_ring.c + + + + + +test/host/prot_elm/prot_elm_test.c->外部/系统头文件 + + + + + +test/host/prot_set/prot_set_test.c + +test/host/prot_set/prot_set_test.c + + + +test/host/prot_set/prot_set_test.c->App/algo/prot_set.c + + + + + +test/host/prot_set/prot_set_test.c->外部/系统头文件 + + + + + +test/host/sha256/sha256_test.c + +test/host/sha256/sha256_test.c + + + +test/host/sha256/sha256_test.c->App/util/sha256.c + + + + + +test/host/sha256/sha256_test.c->外部/系统头文件 + + - + test/host/sys_clock/stub/FreeRTOS.h - -test/host/sys_clock/stub/FreeRTOS.h + +test/host/sys_clock/stub/FreeRTOS.h - + test/host/sys_clock/stub/FreeRTOS.h->外部/系统头文件 - - + + - + test/host/sys_clock/stub/dbg_log.h - -test/host/sys_clock/stub/dbg_log.h + +test/host/sys_clock/stub/dbg_log.h - + test/host/sys_clock/stub/dbg_log.h->外部/系统头文件 - - + + - + test/host/sys_clock/stub/main.h - -test/host/sys_clock/stub/main.h + +test/host/sys_clock/stub/main.h - + test/host/sys_clock/stub/main.h->外部/系统头文件 - - + + - + test/host/sys_clock/stub/task.h - -test/host/sys_clock/stub/task.h + +test/host/sys_clock/stub/task.h - + test/host/sys_clock/stub/task.h->test/host/sys_clock/stub/FreeRTOS.h - - + + - + test/host/sys_clock/sys_clock_test.c - -test/host/sys_clock/sys_clock_test.c + +test/host/sys_clock/sys_clock_test.c - + test/host/sys_clock/sys_clock_test.c->App/util/sys_clock.c - - + + - + test/host/sys_clock/sys_clock_test.c->App/util/sys_clock.h - - + + - + test/host/sys_clock/sys_clock_test.c->Drivers/BSP/SD2506/sd2506.h - - + + - + test/host/sys_clock/sys_clock_test.c->Drivers/BSP/dbg_log.h - - + + - + test/host/sys_clock/sys_clock_test.c->Inc/main.h - - + + - + test/host/sys_clock/sys_clock_test.c->Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h - - + + - + test/host/sys_clock/sys_clock_test.c->Middlewares/Third_Party/FreeRTOS/Source/include/task.h - - + + - + test/host/sys_clock/sys_clock_test.c->外部/系统头文件 - - + + + + + +test/host/time_sync/stub/FreeRTOS.h + +test/host/time_sync/stub/FreeRTOS.h + + + +test/host/time_sync/stub/FreeRTOS.h->外部/系统头文件 + + + + + +test/host/time_sync/stub/cmsis_os2.h + +test/host/time_sync/stub/cmsis_os2.h + + + +test/host/time_sync/stub/cmsis_os2.h->外部/系统头文件 + + + + + +test/host/time_sync/stub/dbg_log.h + +test/host/time_sync/stub/dbg_log.h + + + +test/host/time_sync/stub/dbg_log.h->外部/系统头文件 + + + + + +test/host/time_sync/stub/net_socket.h + +test/host/time_sync/stub/net_socket.h + + + +test/host/time_sync/stub/net_socket.h->test/host/time_sync/stub/FreeRTOS.h + + + + + +test/host/time_sync/stub/task.h + +test/host/time_sync/stub/task.h + + + +test/host/time_sync/stub/net_socket.h->test/host/time_sync/stub/task.h + + + + + +test/host/time_sync/stub/net_socket.h->外部/系统头文件 + + + + + +test/host/time_sync/stub/sys_clock.h + +test/host/time_sync/stub/sys_clock.h + + + +test/host/time_sync/stub/sys_clock.h->外部/系统头文件 + + + + + +test/host/time_sync/stub/sys_events.h + +test/host/time_sync/stub/sys_events.h + + + +test/host/time_sync/stub/sys_events.h->test/host/time_sync/stub/cmsis_os2.h + + + + + +test/host/time_sync/stub/task.h->test/host/time_sync/stub/FreeRTOS.h + + + + + +test/host/time_sync/time_sync_test.c + +test/host/time_sync/time_sync_test.c + + + +test/host/time_sync/time_sync_test.c->App/app/sys_events.h + + + + + +test/host/time_sync/time_sync_test.c->App/sync/time_sync.c + + + + + +test/host/time_sync/time_sync_test.c->App/util/sys_clock.h + + + + + +test/host/time_sync/time_sync_test.c->App/util/task_watchdog.h + + + + + +test/host/time_sync/time_sync_test.c->Drivers/BSP/NET/net_socket.h + + + + + +test/host/time_sync/time_sync_test.c->Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h + + + + + +test/host/time_sync/time_sync_test.c->Middlewares/Third_Party/FreeRTOS/Source/include/task.h + + + + + +test/host/time_sync/time_sync_test.c->外部/系统头文件 + + + + + +test/host/vol_lock/stub/cmsis_os.h + +test/host/vol_lock/stub/cmsis_os.h + + + +test/host/vol_lock/stub/cmsis_os.h->外部/系统头文件 + + + + + +test/host/vol_lock/vol_lock_test.c + +test/host/vol_lock/vol_lock_test.c + + + +test/host/vol_lock/vol_lock_test.c->App/fs/vol_lock.c + + + + + +test/host/vol_lock/vol_lock_test.c->Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h + + + + + +test/host/vol_lock/vol_lock_test.c->外部/系统头文件 + + - + test/host/watchdog/stub/dbg_log.h - -test/host/watchdog/stub/dbg_log.h + +test/host/watchdog/stub/dbg_log.h - + test/host/watchdog/stub/dbg_log.h->外部/系统头文件 - - + + - + test/host/watchdog/stub/iwdg.h - -test/host/watchdog/stub/iwdg.h + +test/host/watchdog/stub/iwdg.h - + test/host/watchdog/stub/iwdg.h->外部/系统头文件 - - + + - + test/host/watchdog/stub/main.h - -test/host/watchdog/stub/main.h + +test/host/watchdog/stub/main.h - + test/host/watchdog/stub/main.h->外部/系统头文件 - - + + - + test/host/watchdog/watchdog_test.c - -test/host/watchdog/watchdog_test.c + +test/host/watchdog/watchdog_test.c - + test/host/watchdog/watchdog_test.c->App/util/task_watchdog.c - - + + - + test/host/watchdog/watchdog_test.c->Drivers/BSP/dbg_log.h - - + + - + test/host/watchdog/watchdog_test.c->Inc/iwdg.h - - + + - + test/host/watchdog/watchdog_test.c->Inc/main.h - - + + - + test/host/watchdog/watchdog_test.c->外部/系统头文件 - - + + diff --git a/docs/images/引用关系图_模块.dot b/docs/images/引用关系图_模块.dot index 61e6c8c6..e8df23f9 100644 --- a/docs/images/引用关系图_模块.dot +++ b/docs/images/引用关系图_模块.dot @@ -35,11 +35,12 @@ digraph refgraph_module { "App" -> "BSP/NET" [color="#2563eb", penwidth=1.2, label="×1"]; "App" -> "BSP/RS485" [color="#2563eb", penwidth=1.2, label="×1"]; "App" -> "BSP/SD2506" [color="#2563eb", penwidth=1.2, label="×1"]; - "App" -> "BSP/TPAFE5160" [color="#2563eb", penwidth=1.2, label="×1"]; + "App" -> "BSP/TPAFE5160" [color="#2563eb", penwidth=1.2, label="×2"]; "App" -> "FatFs" [color="#2563eb", penwidth=1.2, label="×1"]; "App" -> "FreeRTOS" [color="#2563eb", penwidth=1.2, label="×3"]; - "App" -> "Src/Inc (CubeMX)" [color="#2563eb", penwidth=1.2, label="×3"]; - "App" -> "外部/系统头文件" [color="#94a3b8", penwidth=0.7, label="×8"]; + "App" -> "Src/Inc (CubeMX)" [color="#2563eb", penwidth=1.2, label="×5"]; + "App" -> "test" [color="#2563eb", penwidth=1.2, label="×1"]; + "App" -> "外部/系统头文件" [color="#94a3b8", penwidth=0.7, label="×24"]; "App/log" -> "App" [color="#2563eb", penwidth=1.2, label="×2"]; "App/log" -> "App/util" [color="#2563eb", penwidth=1.2, label="×1"]; "App/log" -> "BSP(公共)" [color="#2563eb", penwidth=1.2, label="×1"]; @@ -47,29 +48,29 @@ digraph refgraph_module { "App/log" -> "FreeRTOS" [color="#2563eb", penwidth=1.2, label="×4"]; "App/log" -> "Src/Inc (CubeMX)" [color="#2563eb", penwidth=1.2, label="×1"]; "App/log" -> "外部/系统头文件" [color="#94a3b8", penwidth=0.7, label="×4"]; - "App/task" -> "App" [color="#2563eb", penwidth=1.2, label="×5"]; - "App/task" -> "App/log" [color="#2563eb", penwidth=1.2, label="×2"]; - "App/task" -> "App/util" [color="#2563eb", penwidth=1.2, label="×4"]; - "App/task" -> "BSP(公共)" [color="#2563eb", penwidth=1.2, label="×5"]; + "App/task" -> "App" [color="#2563eb", penwidth=1.2, label="×15"]; + "App/task" -> "App/log" [color="#2563eb", penwidth=1.2, label="×4"]; + "App/task" -> "App/util" [color="#2563eb", penwidth=1.2, label="×12"]; + "App/task" -> "BSP(公共)" [color="#2563eb", penwidth=1.2, label="×7"]; "App/task" -> "BSP/CH395F" [color="#2563eb", penwidth=1.2, label="×1"]; "App/task" -> "BSP/GD5F2GQ5UE" [color="#2563eb", penwidth=1.2, label="×1"]; - "App/task" -> "BSP/NET" [color="#2563eb", penwidth=1.2, label="×2"]; + "App/task" -> "BSP/NET" [color="#2563eb", penwidth=1.2, label="×3"]; "App/task" -> "BSP/NETCFG" [color="#2563eb", penwidth=1.2, label="×2"]; "App/task" -> "BSP/RS485" [color="#2563eb", penwidth=1.2, label="×1"]; "App/task" -> "BSP/TPAFE5160" [color="#2563eb", penwidth=1.2, label="×1"]; "App/task" -> "BSP/UI" [color="#2563eb", penwidth=1.2, label="×4"]; "App/task" -> "FatFs" [color="#2563eb", penwidth=1.2, label="×1"]; - "App/task" -> "FreeRTOS" [color="#2563eb", penwidth=1.2, label="×7"]; + "App/task" -> "FreeRTOS" [color="#2563eb", penwidth=1.2, label="×9"]; "App/task" -> "Src/Inc (CubeMX)" [color="#2563eb", penwidth=1.2, label="×1"]; "App/task" -> "test" [color="#2563eb", penwidth=1.2, label="×4"]; - "App/task" -> "外部/系统头文件" [color="#94a3b8", penwidth=0.7, label="×2"]; - "App/util" -> "App/log" [color="#2563eb", penwidth=1.2, label="×2"]; + "App/task" -> "外部/系统头文件" [color="#94a3b8", penwidth=0.7, label="×3"]; + "App/util" -> "App/log" [color="#2563eb", penwidth=1.2, label="×3"]; "App/util" -> "BSP(公共)" [color="#2563eb", penwidth=1.2, label="×2"]; "App/util" -> "BSP/SD2506" [color="#2563eb", penwidth=1.2, label="×1"]; "App/util" -> "FreeRTOS" [color="#2563eb", penwidth=1.2, label="×4"]; - "App/util" -> "Src/Inc (CubeMX)" [color="#2563eb", penwidth=1.2, label="×3"]; + "App/util" -> "Src/Inc (CubeMX)" [color="#2563eb", penwidth=1.2, label="×4"]; "App/util" -> "lftpd" [color="#2563eb", penwidth=1.2, label="×1"]; - "App/util" -> "外部/系统头文件" [color="#94a3b8", penwidth=0.7, label="×4"]; + "App/util" -> "外部/系统头文件" [color="#94a3b8", penwidth=0.7, label="×8"]; "BSP(公共)" -> "App/log" [color="#2563eb", penwidth=1.2, label="×1"]; "BSP(公共)" -> "App/util" [color="#2563eb", penwidth=1.2, label="×1"]; "BSP(公共)" -> "外部/系统头文件" [color="#94a3b8", penwidth=0.7, label="×1"]; @@ -87,9 +88,9 @@ digraph refgraph_module { "BSP/NET" -> "Src/Inc (CubeMX)" [color="#2563eb", penwidth=1.2, label="×2"]; "BSP/NET" -> "test" [color="#2563eb", penwidth=1.2, label="×2"]; "BSP/NET" -> "外部/系统头文件" [color="#94a3b8", penwidth=0.7, label="×3"]; - "BSP/NETCFG" -> "App" [color="#2563eb", penwidth=1.2, label="×1"]; + "BSP/NETCFG" -> "App" [color="#2563eb", penwidth=1.2, label="×2"]; "BSP/NETCFG" -> "BSP(公共)" [color="#2563eb", penwidth=1.2, label="×1"]; - "BSP/NETCFG" -> "外部/系统头文件" [color="#94a3b8", penwidth=0.7, label="×2"]; + "BSP/NETCFG" -> "外部/系统头文件" [color="#94a3b8", penwidth=0.7, label="×4"]; "BSP/RS485" -> "Src/Inc (CubeMX)" [color="#2563eb", penwidth=1.2, label="×1"]; "BSP/SD2506" -> "BSP(公共)" [color="#2563eb", penwidth=1.2, label="×1"]; "BSP/SD2506" -> "Src/Inc (CubeMX)" [color="#2563eb", penwidth=1.2, label="×2"]; @@ -114,7 +115,7 @@ digraph refgraph_module { "FreeRTOS" -> "CMSIS" [color="#94a3b8", penwidth=0.7, label="×1"]; "FreeRTOS" -> "Src/Inc (CubeMX)" [color="#94a3b8", penwidth=0.7, label="×1"]; "FreeRTOS" -> "外部/系统头文件" [color="#94a3b8", penwidth=0.7, label="×14"]; - "HAL" -> "CMSIS" [color="#94a3b8", penwidth=0.7, label="×15"]; + "HAL" -> "CMSIS" [color="#94a3b8", penwidth=0.7, label="×16"]; "HAL" -> "Src/Inc (CubeMX)" [color="#94a3b8", penwidth=0.7, label="×1"]; "HAL" -> "外部/系统头文件" [color="#94a3b8", penwidth=0.7, label="×1"]; "LVGL" -> "FatFs" [color="#94a3b8", penwidth=0.7, label="×1"]; @@ -124,7 +125,7 @@ digraph refgraph_module { "LVGL" -> "外部/系统头文件" [color="#94a3b8", penwidth=0.7, label="×204"]; "SDL2" -> "外部/系统头文件" [color="#94a3b8", penwidth=0.7, label="×36"]; "Src/Inc (CubeMX)" -> "App" [color="#2563eb", penwidth=1.2, label="×3"]; - "Src/Inc (CubeMX)" -> "App/task" [color="#2563eb", penwidth=1.2, label="×2"]; + "Src/Inc (CubeMX)" -> "App/task" [color="#2563eb", penwidth=1.2, label="×6"]; "Src/Inc (CubeMX)" -> "App/util" [color="#2563eb", penwidth=1.2, label="×3"]; "Src/Inc (CubeMX)" -> "BSP(公共)" [color="#2563eb", penwidth=1.2, label="×2"]; "Src/Inc (CubeMX)" -> "BSP/CH395F" [color="#2563eb", penwidth=1.2, label="×2"]; @@ -141,11 +142,13 @@ digraph refgraph_module { "Src/Inc (CubeMX)" -> "外部/系统头文件" [color="#94a3b8", penwidth=0.7, label="×4"]; "dhara" -> "外部/系统头文件" [color="#94a3b8", penwidth=0.7, label="×5"]; "lftpd" -> "App" [color="#94a3b8", penwidth=0.7, label="×1"]; - "lftpd" -> "BSP(公共)" [color="#94a3b8", penwidth=0.7, label="×4"]; + "lftpd" -> "App/util" [color="#94a3b8", penwidth=0.7, label="×1"]; + "lftpd" -> "BSP(公共)" [color="#94a3b8", penwidth=0.7, label="×3"]; "lftpd" -> "BSP/NET" [color="#94a3b8", penwidth=0.7, label="×3"]; + "lftpd" -> "BSP/NETCFG" [color="#94a3b8", penwidth=0.7, label="×1"]; "lftpd" -> "FatFs" [color="#94a3b8", penwidth=0.7, label="×2"]; "lftpd" -> "FreeRTOS" [color="#94a3b8", penwidth=0.7, label="×2"]; - "lftpd" -> "外部/系统头文件" [color="#94a3b8", penwidth=0.7, label="×8"]; + "lftpd" -> "外部/系统头文件" [color="#94a3b8", penwidth=0.7, label="×9"]; "simulator" -> "App" [color="#2563eb", penwidth=1.2, label="×3"]; "simulator" -> "App/log" [color="#2563eb", penwidth=1.2, label="×2"]; "simulator" -> "BSP/NET" [color="#2563eb", penwidth=1.2, label="×1"]; @@ -155,17 +158,20 @@ digraph refgraph_module { "simulator" -> "SDL2" [color="#2563eb", penwidth=1.2, label="×2"]; "simulator" -> "test" [color="#2563eb", penwidth=1.2, label="×1"]; "simulator" -> "外部/系统头文件" [color="#94a3b8", penwidth=0.7, label="×6"]; - "test" -> "App" [color="#2563eb", penwidth=1.2, label="×3"]; + "test" -> "App" [color="#2563eb", penwidth=1.2, label="×23"]; "test" -> "App/log" [color="#2563eb", penwidth=1.2, label="×1"]; "test" -> "App/task" [color="#2563eb", penwidth=1.2, label="×1"]; - "test" -> "App/util" [color="#2563eb", penwidth=1.2, label="×3"]; - "test" -> "BSP(公共)" [color="#2563eb", penwidth=1.2, label="×10"]; - "test" -> "BSP/CH395F" [color="#2563eb", penwidth=1.2, label="×2"]; + "test" -> "App/util" [color="#2563eb", penwidth=1.2, label="×7"]; + "test" -> "BSP(公共)" [color="#2563eb", penwidth=1.2, label="×11"]; + "test" -> "BSP/CH395F" [color="#2563eb", penwidth=1.2, label="×3"]; "test" -> "BSP/GD5F2GQ5UE" [color="#2563eb", penwidth=1.2, label="×4"]; - "test" -> "BSP/NET" [color="#2563eb", penwidth=1.2, label="×5"]; + "test" -> "BSP/NET" [color="#2563eb", penwidth=1.2, label="×6"]; "test" -> "BSP/SD2506" [color="#2563eb", penwidth=1.2, label="×2"]; + "test" -> "BSP/TPAFE5160" [color="#2563eb", penwidth=1.2, label="×1"]; "test" -> "FatFs" [color="#2563eb", penwidth=1.2, label="×3"]; - "test" -> "FreeRTOS" [color="#2563eb", penwidth=1.2, label="×7"]; - "test" -> "Src/Inc (CubeMX)" [color="#2563eb", penwidth=1.2, label="×5"]; - "test" -> "外部/系统头文件" [color="#94a3b8", penwidth=0.7, label="×23"]; + "test" -> "FreeRTOS" [color="#2563eb", penwidth=1.2, label="×10"]; + "test" -> "HAL" [color="#2563eb", penwidth=1.2, label="×1"]; + "test" -> "Src/Inc (CubeMX)" [color="#2563eb", penwidth=1.2, label="×6"]; + "test" -> "lftpd" [color="#2563eb", penwidth=1.2, label="×1"]; + "test" -> "外部/系统头文件" [color="#94a3b8", penwidth=0.7, label="×41"]; } diff --git a/docs/images/引用关系图_模块.svg b/docs/images/引用关系图_模块.svg index d29713cb..f0b36343 100644 --- a/docs/images/引用关系图_模块.svg +++ b/docs/images/引用关系图_模块.svg @@ -4,1147 +4,1189 @@ - - + + refgraph_module - -STM32F4-Base 模块引用概览 + +STM32F4-Base 模块引用概览 App - -App + +App App/log - -App/log + +App/log App->App/log - - -×2 + + +×2 App/util - -App/util + +App/util App->App/util - - -×4 + + +×4 BSP(公共) - -BSP(公共) + +BSP(公共) App->BSP(公共) - - -×3 + + +×3 BSP/GD5F2GQ5UE - -BSP/GD5F2GQ5UE + +BSP/GD5F2GQ5UE App->BSP/GD5F2GQ5UE - - -×1 + + +×1 BSP/NET - -BSP/NET + +BSP/NET App->BSP/NET - - -×1 + + +×1 BSP/RS485 - -BSP/RS485 + +BSP/RS485 App->BSP/RS485 - - -×1 + + +×1 BSP/SD2506 - -BSP/SD2506 + +BSP/SD2506 App->BSP/SD2506 - - -×1 + + +×1 BSP/TPAFE5160 - -BSP/TPAFE5160 + +BSP/TPAFE5160 App->BSP/TPAFE5160 - - -×1 + + +×2 FatFs - -FatFs + +FatFs App->FatFs - - -×1 + + +×1 FreeRTOS - -FreeRTOS + +FreeRTOS App->FreeRTOS - - -×3 + + +×3 Src/Inc (CubeMX) - -Src/Inc (CubeMX) + +Src/Inc (CubeMX) App->Src/Inc (CubeMX) - - -×3 - - - -外部/系统头文件 - -外部/系统头文件 - - - -App->外部/系统头文件 - - -×8 - - - -App/log->App - - -×2 - - - -App/log->App/util - - -×1 - - - -App/log->BSP(公共) - - -×1 - - - -App/log->FatFs - - -×1 - - - -App/log->FreeRTOS - - -×4 - - - -App/log->Src/Inc (CubeMX) - - -×1 - - - -App/log->外部/系统头文件 - - -×4 - - - -App/task - -App/task - - - -App/task->App - - -×5 - - - -App/task->App/log - - -×2 - - - -App/task->App/util - - -×4 - - - -App/task->BSP(公共) - - -×5 - - - -BSP/CH395F - -BSP/CH395F - - - -App/task->BSP/CH395F - - -×1 - - - -App/task->BSP/GD5F2GQ5UE - - -×1 - - - -App/task->BSP/NET - - -×2 - - - -BSP/NETCFG - -BSP/NETCFG - - - -App/task->BSP/NETCFG - - -×2 - - - -App/task->BSP/RS485 - - -×1 - - - -App/task->BSP/TPAFE5160 - - -×1 - - - -BSP/UI - -BSP/UI - - - -App/task->BSP/UI - - -×4 - - - -App/task->FatFs - - -×1 - - - -App/task->FreeRTOS - - -×7 - - - -App/task->Src/Inc (CubeMX) - - -×1 + + +×5 test - -test + +test + + + +App->test + + +×1 + + + +外部/系统头文件 + +外部/系统头文件 + + + +App->外部/系统头文件 + + +×24 + + + +App/log->App + + +×2 + + + +App/log->App/util + + +×1 + + + +App/log->BSP(公共) + + +×1 + + + +App/log->FatFs + + +×1 + + + +App/log->FreeRTOS + + +×4 + + + +App/log->Src/Inc (CubeMX) + + +×1 + + + +App/log->外部/系统头文件 + + +×4 + + + +App/task + +App/task + + + +App/task->App + + +×15 + + + +App/task->App/log + + +×4 + + + +App/task->App/util + + +×12 + + + +App/task->BSP(公共) + + +×7 + + + +BSP/CH395F + +BSP/CH395F + + + +App/task->BSP/CH395F + + +×1 + + + +App/task->BSP/GD5F2GQ5UE + + +×1 + + + +App/task->BSP/NET + + +×3 + + + +BSP/NETCFG + +BSP/NETCFG + + + +App/task->BSP/NETCFG + + +×2 + + + +App/task->BSP/RS485 + + +×1 + + + +App/task->BSP/TPAFE5160 + + +×1 + + + +BSP/UI + +BSP/UI + + + +App/task->BSP/UI + + +×4 + + + +App/task->FatFs + + +×1 + + + +App/task->FreeRTOS + + +×9 + + + +App/task->Src/Inc (CubeMX) + + +×1 - + App/task->test - - -×4 + + +×4 - + App/task->外部/系统头文件 - - -×2 + + +×3 - + App/util->App/log - - -×2 + + +×3 - + App/util->BSP(公共) - - -×2 + + +×2 - + App/util->BSP/SD2506 - - -×1 + + +×1 - + App/util->FreeRTOS - - -×4 + + +×4 - + App/util->Src/Inc (CubeMX) - - -×3 + + +×4 lftpd - -lftpd + +lftpd - + App/util->lftpd - - -×1 + + +×1 - + App/util->外部/系统头文件 - - -×4 + + +×8 - + BSP(公共)->App/log - - -×1 + + +×1 - + BSP(公共)->App/util - - -×1 + + +×1 - + BSP(公共)->外部/系统头文件 - - -×1 + + +×1 - + BSP/CH395F->BSP(公共) - - -×1 + + +×1 - + BSP/CH395F->Src/Inc (CubeMX) - - -×3 + + +×3 - + BSP/CH395F->外部/系统头文件 - - -×1 + + +×1 - + BSP/GD5F2GQ5UE->BSP(公共) - - -×2 + + +×2 - + BSP/GD5F2GQ5UE->FatFs - - -×2 + + +×2 - + BSP/GD5F2GQ5UE->Src/Inc (CubeMX) - - -×1 + + +×1 dhara - -dhara + +dhara - + BSP/GD5F2GQ5UE->dhara - - -×2 + + +×2 - + BSP/GD5F2GQ5UE->外部/系统头文件 - - -×4 + + +×4 - + BSP/NET->BSP(公共) - - -×1 + + +×1 - + BSP/NET->BSP/CH395F - - -×2 + + +×2 - + BSP/NET->FreeRTOS - - -×8 + + +×8 - + BSP/NET->Src/Inc (CubeMX) - - -×2 + + +×2 - + BSP/NET->test - - -×2 + + +×2 - + BSP/NET->外部/系统头文件 - - -×3 + + +×3 - + BSP/NETCFG->App - - -×1 + + +×2 - + BSP/NETCFG->BSP(公共) - - -×1 + + +×1 - + BSP/NETCFG->外部/系统头文件 - - -×2 + + +×4 - + BSP/RS485->Src/Inc (CubeMX) - - -×1 + + +×1 - + BSP/SD2506->BSP(公共) - - -×1 + + +×1 - + BSP/SD2506->Src/Inc (CubeMX) - - -×2 + + +×2 - + BSP/SD2506->外部/系统头文件 - - -×1 + + +×1 - + BSP/TPAFE5160->BSP(公共) - - -×1 + + +×1 - + BSP/TPAFE5160->FreeRTOS - - -×2 + + +×2 - + BSP/TPAFE5160->Src/Inc (CubeMX) - - -×2 + + +×2 - + BSP/TPAFE5160->外部/系统头文件 - - -×1 + + +×1 - + BSP/UI->App/log - - -×2 + + +×2 - + BSP/UI->BSP(公共) - - -×6 + + +×6 - + BSP/UI->BSP/NET - - -×2 + + +×2 - + BSP/UI->BSP/NETCFG - - -×1 + + +×1 LVGL - -LVGL + +LVGL - + BSP/UI->LVGL - - -×9 + + +×9 - + BSP/UI->test - - -×2 + + +×2 - + BSP/UI->外部/系统头文件 - - -×20 + + +×20 CMSIS - -CMSIS + +CMSIS HAL - -HAL + +HAL - + CMSIS->HAL - - -×1 + + +×1 - + CMSIS->外部/系统头文件 - - -×22 + + +×22 - + FatFs->App/util - - -×1 + + +×1 - + FatFs->BSP(公共) - - -×1 + + +×1 - + FatFs->FreeRTOS - - -×1 + + +×1 - + FatFs->外部/系统头文件 - - -×2 + + +×2 - + FreeRTOS->CMSIS - - -×1 + + +×1 - + FreeRTOS->Src/Inc (CubeMX) - - -×1 + + +×1 - + FreeRTOS->外部/系统头文件 - - -×14 + + +×14 - + HAL->CMSIS - - -×15 + + +×16 - + HAL->Src/Inc (CubeMX) - - -×1 + + +×1 - + HAL->外部/系统头文件 - - -×1 + + +×1 - + LVGL->FatFs - - -×1 + + +×1 - + LVGL->FreeRTOS - - -×6 + + +×6 SDL2 - -SDL2 + +SDL2 - + LVGL->SDL2 - - -×1 + + +×1 其他(第三方) - -其他(第三方) + +其他(第三方) - + LVGL->其他(第三方) - - -×1 + + +×1 - + LVGL->外部/系统头文件 - - -×204 + + +×204 - + SDL2->外部/系统头文件 - - -×36 + + +×36 - + Src/Inc (CubeMX)->App - - -×3 + + +×3 - + Src/Inc (CubeMX)->App/task - - -×2 + + +×6 - + Src/Inc (CubeMX)->App/util - - -×3 + + +×3 - + Src/Inc (CubeMX)->BSP(公共) - - -×2 + + +×2 - + Src/Inc (CubeMX)->BSP/CH395F - - -×2 + + +×2 - + Src/Inc (CubeMX)->BSP/GD5F2GQ5UE - - -×1 + + +×1 - + Src/Inc (CubeMX)->BSP/NET - - -×3 + + +×3 - + Src/Inc (CubeMX)->BSP/RS485 - - -×1 + + +×1 - + Src/Inc (CubeMX)->BSP/SD2506 - - -×1 + + +×1 - + Src/Inc (CubeMX)->BSP/TPAFE5160 - - -×1 + + +×1 - + Src/Inc (CubeMX)->CMSIS - - -×1 + + +×1 - + Src/Inc (CubeMX)->FreeRTOS - - -×4 + + +×4 - + Src/Inc (CubeMX)->HAL - - -×16 + + +×16 - + Src/Inc (CubeMX)->lftpd - - -×1 + + +×1 - + Src/Inc (CubeMX)->test - - -×3 + + +×3 - + Src/Inc (CubeMX)->外部/系统头文件 - - -×4 + + +×4 - + dhara->外部/系统头文件 - - -×5 + + +×5 - + lftpd->App - - -×1 + + +×1 + + + +lftpd->App/util + + +×1 - + lftpd->BSP(公共) - - -×4 + + +×3 - + lftpd->BSP/NET - - -×3 + + +×3 + + + +lftpd->BSP/NETCFG + + +×1 - + lftpd->FatFs - - -×2 + + +×2 - + lftpd->FreeRTOS - - -×2 + + +×2 - + lftpd->外部/系统头文件 - - -×8 + + +×9 simulator - -simulator + +simulator - + simulator->App - - -×3 + + +×3 - + simulator->App/log - - -×2 + + +×2 - + simulator->BSP/NET - - -×1 + + +×1 - + simulator->BSP/NETCFG - - -×1 + + +×1 - + simulator->BSP/UI - - -×5 + + +×5 - + simulator->LVGL - - -×3 + + +×3 - + simulator->SDL2 - - -×2 + + +×2 - + simulator->test - - -×1 + + +×1 - + simulator->外部/系统头文件 - - -×6 + + +×6 - + test->App - - -×3 + + +×23 - + test->App/log - - -×1 + + +×1 - + test->App/task - - -×1 + + +×1 - + test->App/util - - -×3 + + +×7 - + test->BSP(公共) - - -×10 + + +×11 - + test->BSP/CH395F - - -×2 + + +×3 - + test->BSP/GD5F2GQ5UE - - -×4 + + +×4 - + test->BSP/NET - - -×5 + + +×6 - + test->BSP/SD2506 - - -×2 + + +×2 + + + +test->BSP/TPAFE5160 + + +×1 - + test->FatFs - - -×3 + + +×3 - + test->FreeRTOS - - -×7 + + +×10 + + + +test->HAL + + +×1 - + test->Src/Inc (CubeMX) - - -×5 + + +×6 + + + +test->lftpd + + +×1 - + test->外部/系统头文件 - - -×23 + + +×41 diff --git a/docs/产品需求/产品需求设计文档.md b/docs/产品需求/产品需求设计文档.md index 2a663a60..d63abc67 100644 --- a/docs/产品需求/产品需求设计文档.md +++ b/docs/产品需求/产品需求设计文档.md @@ -24,7 +24,7 @@ 3. **产品当前做到哪一步**——已实现、已验收、待实现的**明确边界**。 **不含**:具体代码实现细节(见各模块设计文档)、测试用例步骤(见 `docs/测试说明/`)、 -未闭环事项的逐条跟踪(见 [`docs/待处理内容.md`](../../docs/待处理内容.md))。 +未闭环事项的逐条跟踪(见 [`docs/任务规划/README.md`](../任务规划/README.md))。 ### 1.2 术语与缩写 @@ -780,7 +780,7 @@ cfg-file-unit-test、test-suite-switch、gitlint。 ### 9.2 阶段路线图 -> **顺序唯一权威 → [`../待处理内容.md`](../待处理内容.md) §2(统一推进顺序,波次 W1~W7; +> **顺序唯一权威 → [`../任务规划/README.md`](../任务规划/README.md) §2(统一推进顺序,波次 W1~W7; > RS-485/B2 整簇暂缓见其 §2.4,2026-10-12 用户决定)**。 > 本节自 2026-10-11 起不再维护路线图(原阶段图删除,避免与登记簿漂移;原 C4"defaultTask 栈余量 10%" > 已于 2026-10-10 削链闭环销项,见 `../内存管理/RAM使用分析与优化方案.md`)。 @@ -863,7 +863,7 @@ cfg-file-unit-test、test-suite-switch、gitlint。 | 远程显示协议 | [`docs/UI设计/RemoDispBus协议与接收设计说明.md`](../../docs/UI设计/RemoDispBus协议与接收设计说明.md) | | 部署环境 | [`docs/环境与部署/项目部署环境要求.md`](../../docs/环境与部署/项目部署环境要求.md) | | 硬件网表 | [`docs/硬件平台/V0.1_网表详细分析报告.md`](../../docs/硬件平台/V0.1_网表详细分析报告.md) | -| 待办登记簿 | [`docs/待处理内容.md`](../../docs/待处理内容.md) | +| 待办登记簿 | [`docs/任务规划/README.md`](../任务规划/README.md) | | 体系层评审报告 | [`docs/问题记录/项目审查与优化建议报告.md`](../../docs/问题记录/项目审查与优化建议报告.md) | | 错误码审计 | [`docs/问题记录/错误码传播审计.md`](../../docs/问题记录/错误码传播审计.md) | | 实机测试指南 | [`docs/测试说明/实机测试实施指南.md`](../../docs/测试说明/实机测试实施指南.md) | diff --git a/docs/代码规范/pre-commit使用说明.md b/docs/代码规范/pre-commit使用说明.md index 5ef112e5..af3a4732 100644 --- a/docs/代码规范/pre-commit使用说明.md +++ b/docs/代码规范/pre-commit使用说明.md @@ -378,7 +378,7 @@ cppcheck 是开源 C/C++ 静态分析工具,**不运行代码**,通过语法 | 项 | 说明 | |---|---| | **触发条件** | 全部自研代码目录(`App/` `Drivers/BSP/` `Src/` `Inc/`)+ `Lib/lv_conf.h` + `test/board/` + `scripts/ram_baseline.*` + `docs/内存管理/` + 本配置文件 | -| **处理方式** | **阻止提交**(RW_IRAM1 / RW_CCM 任一区占比 >92%,或台账受管区与 `.map` 漂移);无 `.map` 自适应跳过(同 `mem-numbers` 在 CI 的行为,盲区登记 `docs/待处理内容.md` A-5 残余) | +| **处理方式** | **阻止提交**(RW_IRAM1 / RW_CCM 任一区占比 >92%,或台账受管区与 `.map` 漂移);无 `.map` 自适应跳过(同 `mem-numbers` 在 CI 的行为,盲区登记 `docs/任务规划/测试与架构专项.md` A-5 残余) | | **检查逻辑** | 解析 `.map` 执行区占比 → 超阈值即 FAIL 并附 **Top-10 RW+ZI 对象表**(定位增量元凶);同时校验 `docs/内存管理/RAM预算台账.md` 受管区与 `.map` 一致(漂移 → 提示 `--write`) | | **软提醒**(不拦) | tsv 末行落后于 `.map`(忘跑 `--update`);`.map` 早于最新源码(忘 `@build`) | | **配套三件套** | `scripts/ram_baseline.py`(门禁/趋势/受管区生成)+ `scripts/ram_baseline.tsv`(每次 `@build` 后 `--update` 追加的趋势基线,`--trend` 高亮 RW+ZI 增长 >1 KB 的对象)+ `docs/内存管理/RAM预算台账.md`(子系统配额 + CCM 台账 + 超配额流程) | diff --git a/docs/任务规划/README.md b/docs/任务规划/README.md new file mode 100644 index 00000000..4535a3bd --- /dev/null +++ b/docs/任务规划/README.md @@ -0,0 +1,137 @@ +# 任务规划(统一待办登记簿 · 索引与排序权威) + +> **这个文件夹是什么**:全项目唯一的未闭环事项清单 + 全项目唯一权威的工作先后顺序。 +> 2026-10-12 按「变更频率 + 职责」解耦成多文件——并行任务写范围互不相交,各改各的文件。 +> +> **文件地图(谁改哪个)**: +> +> | 文件 | 内容 | 变更频率 / 写者 | +> |---|---|---| +> | `README.md`(本文件) | 编号空间(§0)· 未闭环一览(§1)· **推进顺序权威(§2)** · 维护约定(§3) | 低频;仅主工作树 | +> | `W1-采集保护收尾.md` | 当前波次:里程碑 / 并行道 / 任务卡(DoD·依赖·资源·写范围·状态) | **高频**——状态流转只改它;Lead 在 claim/完成时更新 | +> | `排期详述.md` | W4 结构债 / W5 验证常态 波内详表 | 低频 | +> | `暂缓-RS485.md` | B2 RS-485 整簇冻结清单(用户决定) | 极少 | +> | `登记簿.md` | N-x / S-x / T-x 长期登记(网络 / 存储 / 硬件 / 测试 / 报告并轨) | 中频——新发现进对应表 | +> | `测试与架构专项.md` | P1-10 收尾 + S1x / A-x 专项 | 低频 | +> | `基线与待确认.md` | 待确认 · 设计基线(pending 二期 / 错误码四要素)· 诊断基线 · 内存预算 | 参考,少改 | +> +> **怎么用**:想知道"现在该做什么、按什么顺序" → 本文件 **§2**;想知道"当前波次任务卡状态 / 验收判据 / 并行道" → `W1-采集保护收尾.md`; +> 想知道"某条待办的来龙去脉" → 按编号查 `登记簿.md` / `测试与架构专项.md`;想知道"还差哪些验证" → `排期详述.md` §2。 +> +> **只保留待办**:已完成条目直接删除,不留变更记录(历史见 `git log` 与各模块文档); +> 已闭环项的**结论与证据沉淀进对应模块文档/问题记录**,本文件夹不再重复。 +> **消化即销项**:事项修复/关闭后,直接删除对应条目,并同步清理其它文档对本编号的引用。 +> +> **不在本文件夹范围**:`../问题记录/错误码传播审计.md`(E-xx,审计报告,非待办池)、 +> `../问题记录/项目审查与优化建议报告.md`(体系层评审报告)、`../测试说明/实机测试实施指南.md`(执行流程)。 +> +> **修订**:2026-10-04 四档合并;2026-10-11 统一排序 + 审查报告并轨; +> **2026-10-12 按用户决定 RS-485(B2)整簇暂缓,波次重排为 W1~W7,清除已销项残留**; +> **2026-10-12 W1-0 台账三件套落地(N-27 前半闭环,`mem-budget` 钩子),N-23 钩子落地残余并入 C5**; +> **2026-10-12 B4/B5 销项——W1 功能主线代码侧全部完成**; +> **2026-10-12 用户决定:新 W1 = ADC 采集 + 保护相关功能收尾闭环(B6~B10 + N-33),W2~W7 顺延**, +> 波次切换为「里程碑 × 并行道 × 任务卡(五字段)」模式(方法论 → `../环境与部署/并行任务工作树方案.md` §7.3); +> **2026-10-12 解耦为 `docs/任务规划/` 文件夹**(README 索引 + 6 个职责单一文件;编号空间与 §2 排序权威不变)。 + +--- + +## 0. 编号空间与来源 + +| 编号 | 含义 | 备注 | +|---|---|---| +| `P0-x`~`P3-x` | 审计缺陷/改进项(2026-09-15/09-21 审计) | P0=功能 bug、P1=疑似 bug/健壮性、P2=改进、P3=卫生 | +| `N-x` / `S-x` / `T-x` | 台架/审计观察登记项 / 存储·日志管线 / 测试与工具链 | 编号**不回收**;`N-x` 含硬件改版项(需下一版硬件,固件侧只记口径,如 N-18) | +| `S1~S14` / `A-1~A-7` | 2026-10-02 复审的测试充分性与架构专项 | 编号**不回收** | +| `E-xx` | 错误码传播审计发现 | 独立维护于 `错误码传播审计.md`,**不并入本文件夹**,只交叉引用 | +| `B`/`C`/`D` 前缀 | §2 排序条目编号:B=功能主线、C=结构债、D=验证窗口 | 编号不回收,见 §2 | +| 报告 `N-x`/`R-x`/`F-x`/`S-x`/`U-x`/`D-x` | `项目审查与优化建议报告.md` **自有编号** | ⚠ **与本登记簿同名不同义**(报告 N-16 = 日志逐条开关,登记簿 N-16 = A2/A4 负向台架)→ **引用一律带文档名**。其未闭环项 2026-10-11 并入本登记簿(新编 `N-19`~`N-29` + U 簇,出处列保留报告编号) | + +**严重度定义**(沿用审计口径):P0 = 确认功能 bug|P1 = 疑似 bug 或健壮性风险|P2 = 改进|P3 = 卫生。 +**置信度**:high = 代码级确证|medium = 依赖外部条件(手册/硬件/产品定义)。 + +--- + +## 1. 未闭环一览(按类别) + +| 类别 | 数量 | 条目 | +|---|---|---| +| P1 收尾 | 1 | P1-10 测试固件构建实测(`测试与架构专项.md` §1) | +| 网络 | 5 | N-2(49s 日志静默,**低风险观察项**)· N-3(L5 基线重验)· N-4(pending 二期)· N-16(A2/A4 负向台架)· N-17(探针窗口心跳缺口) | +| 存储 / 日志 | 3 | **S-3(USART1 TX-only 根治)** · S-4(dhara 重试自旋)· S-5(可选全序列卷锁) | +| 数据正确性 | 1 | **N-21(dhara `is_free`/`copy`,全簿最高风险)** | +| 结构 / 健壮性 | 9 | N-20(Error_Handler 死循环)· N-22(写回 flush)· N-23(注册校验残余白名单)· N-24(日志逐条开关)· N-25(性能/语义簇)· N-26(NAND DMA 断言)· N-27(内存优化簇,三件套 ✅ 前半落地)· N-28(Flash 死代码簇)· **N-33(栈余量收口,W1)** | +| 仓库 | 1 | N-29(`.git` 149 MB,**已决策暂不处理、登记观察**) | +| 硬件 | 1 | N-18(V0.2 改版项) | +| 测试 / 基础设施 | 6 | T-7(CI runner + 推送闭环 + 第二机交叉验证)· S12(断言宏)· S1-c(可选单测)· A-4(采集链路测试约束,RS485 侧随 B2 暂缓)· A-5 残余(CI 体积门禁盲区)· D7(串口助手 A6/A7 待 CH340) | +| UI | 1 簇 | U 簇(27 页标准化,**本轮不排期**) | +| **暂缓** | 1 簇 | **B2 RS-485 整簇(2026-10-12 用户决定,`暂缓-RS485.md`)** | + +> **网络侧另有 E-xx 未闭环项**(E-12/15/16/23/24/25/26/27/28/30/47/48/49/50/58/59/61,共 17 项) +> 与 1 项回归监督(E-62),详见 `../问题记录/错误码传播审计.md` §3——其中 **E-49/E-50 随 RS-485 暂缓**。 +> 本文件夹不重复登记。UI 标准化簇与覆盖率缺口(lftpd/dhara 移植层无主机测试)为整簇排期项,见 §2 W6 / N-21。 + +### 1.1 结构性判断(排序依据) + +1. **用户决定(2026-10-12):先把 ADC 采集、保护等相关功能完成**——"转发 + 保护"两环代码已落地(B4/B5,2026-10-12),但**尚未台架闭环、功能面不完整**(定值不落盘、无频率保护、无动作记录/SOE、栈安全线两处 FAIL)。新 W1 = 采集→相量→保护→上送链路的**收尾与闭环**(B6~B10 + N-33,见 `W1-采集保护收尾.md`),其余波次顺延。**RS-485 对下采集(B2)按用户决定暂缓(2026-10-12,`暂缓-RS485.md`),主线不再等它**。 +2. **数据正确性最高风险 = N-21**(dhara `is_free` 只查页首 64 B / `copy` 不处理哨兵):低概率、后果重(数据丢失),且至今只能靠人工读代码发现——修复须配主机侧移植层测试(一并补报告"覆盖率"缺口)。 +3. **内存预算红线已机械化(2026-10-12,W1-0)**:`mem-budget` 钩子拦 RW_IRAM1/RW_CCM >92%,子系统配额 / CCM 台账 / 趋势基线 → `docs/内存管理/RAM预算台账.md`;实际优化 R-9→R-2 排 W3(**B5 堆扩容 48→56 KB 后 CCM 只剩 ≈8,160 B**,解锁链见 `docs/内存管理/RAM预算台账.md` §3)。 +4. **验证债仅剩窗口性事项**(D2/D5/D6/D7 + P1-10 收尾),不单独排期、逢窗口顺手做。 + +--- + +## 2. 统一推进顺序(全项目唯一权威) + +> **本节是全项目所有工作流唯一的权威顺序**:`产品需求设计文档.md` §9.2、`../算法/继电保护功能复现规划.md`、 +> `项目审查与优化建议报告.md` §0.3 中的路线图均为局部视图,**顺序变更只改本节,其它文档只留指针**。 +> 排序原则:**安全风险 > 产品功能主线 > 数据正确性 > 预算/结构债 > 验证常态 > UI 扩展 > 仓库决策**(当前无未闭环安全项)。 +> 波内详表在挂接文件里(`W1-采集保护收尾.md` / `排期详述.md` / `暂缓-RS485.md`),但**波次增删与先后只改 §2.0**。 + +### 2.0 波次总览 + +| 波次 | 内容 | 为什么在这 | +|---|---|---| +| **W1 采集+保护收尾** | **里程碑制 + 并行道**:M1 台架闭环(台架道 B6→N-33)∥ M2 功能面(代码道 B7→{B8∥B9})→ M3 送检(B10,Fixed Date)——任务卡/判据/写范围见 `W1-采集保护收尾.md` | **用户决定(2026-10-12):先把 ADC 采集、保护等相关功能完成**。B4/B5 代码已落地但未台架闭环、功能面不完整(定值不落盘 / 无频率保护 / 无动作记录 / 栈两处 FAIL)——本波收口到"可用 + 可验收";真约束只有**台架**与**送检窗口**两个稀缺资源,其余任务按写范围切分并行 | +| **W2 数据正确性** | **N-21** dhara `is_free`/`copy`(报告 N-12/13) | 低概率、后果重(数据丢失);修复须配主机侧移植层测试,一并补报告"覆盖率"缺口 | +| **W3 预算与内存** | **N-27 后半**:R-9 池 40→16 KB → R-2 后半(54 KB→CCM)→ R-3~R-6 逐项评估 | 依赖 W1 三件套产出的台账数据;**B5 堆扩容后 CCM 只剩 ≈8 KB**(56 KB 堆),R-2 后半更被堵死(解锁链见 `docs/内存管理/RAM预算台账.md` §3) | +| **W4 结构债** | **N-20 → C6(S-3)→ C3(N-2+N-24)→ C1 pending 二期 → C5(含 N-23 残余)→ N-22/N-25/N-26/N-28**(详表 `排期详述.md` §1) | 无紧急,按性价比排:C6 灭 IWDG 误复位机制根源;C1 体量大、验证重,放后(N-23 钩子已落地 2026-10-12,残余并入 C5) | +| **W5 验证常态** | P1-10 收尾 · T-7 CI · D2 N-3 · D5 N-16 · D6 N-17 · D7 串口助手 · S12 · S1-c · A-5(详表 `排期详述.md` §2) | 窗口性,逢机顺带,不单独排期 | +| **W6 UI 扩展** | U4 残余(golden + 字符集差集挂门禁)→ U1 令牌层 → U2/U3 → **27 页**落地 | 产品驱动、体量大,需单独立项(顺序按 `docs/问题记录/项目审查与优化建议报告.md` §6.5);**本轮不排期(2026-10-11 已确认)** | +| **W7 仓库决策** | **N-29** `.git` 149 MB + 图片 36.3 MB | **已决策(2026-10-11):暂不处理、登记观察**——推送/协作前重评(`git filter-repo` 历史重写影响未推送提交与协作者) | +| **暂缓** | **B2 RS-485 整簇**(`暂缓-RS485.md`) | **用户决定(2026-10-12):当前不处理 RS-485** | +| **硬件改版** | N-18 8 路电气量全接 TPAFE(V0.2) | 下一版硬件;固件侧已用语义映射隔离,改版只动映射表 | + +### 2.1 顺序一图 + +``` +W1 收尾 台架道: B6→N-33(M1) ∥ 代码道: B7→{B8∥B9}(M2) → B10 送检(M3, Fixed Date) 详表 W1-采集保护收尾.md + (B4 IEC104 ✅ / B5 protectTask ✅ 2026-10-12 已销项;台账三件套 ✅) + ↓ +W2 数据 N-21 dhara is_free/copy(配主机侧移植层测试) + ↓ +W3 预算 R-9 池瘦身 → R-2 后半(54KB→CCM)→ R-3~R-6 评估 + ↓ +W4 结构 N-20 → C6(S-3) → C3(N-2/N-24) → C1 pending 二期 → C5(含 N-23 残余) → N-22/25/26/28 + ↓ +W5 验证 P1-10 · T-7 CI · D2/D5/D6/D7 · S12 · S1-c · A-5 + ↓ +W6 UI U4 残余 → U1 令牌层 → U2/U3 → 27 页(单独立项,本轮不排期) +W7 仓库 N-29 .git 149MB(已决策暂不处理) 硬件:N-18 V0.2 +暂缓 B2 RS-485 整簇(2026-10-12 用户决定,见 暂缓-RS485.md) +``` + +--- + +## 3. 维护约定 + +- 本文件夹是**全项目唯一的未闭环事项登记簿**——"盘点 + 排序 + 明细"三合一,明细按职责拆进本文件夹各文件(2026-10-12 解耦),不再分散到其它文档。 +- **并行写纪律**:任务分支(worktree)**不改本文件夹任何文件**;任务卡状态列(⬜/🟦)与销项一律由 Lead 在主工作树更新。解耦的收益 = 不同波次 / 不同登记之间互不冲突,**不是**任务分支可以写。 +- **任一项完成后直接删除对应条目**(先销本文件夹条目,再清理其它文档对本编号的引用);**不留变更记录**,历史见 `git log` 与各模块文档。 +- 已闭环条目的**结论与证据沉淀进模块文档**,本文件夹不再重复。 +- 编号一律**沿用且不回收**(P-x / N-x / S-x / T-x / S1x / A-x / B·C·D 前缀);`错误码传播审计.md` 的 E-xx 独立维护。 +- **引用审查报告编号一律带文档名**(报告 N-16 ≠ 登记簿 N-16、报告 S-3 ≠ 登记簿 S-3); + 报告并轨项用本登记簿新编号(N-19~N-29 + U 簇),出处列保留报告编号。 +- **§2 是全项目唯一的推进顺序权威**:`产品需求设计文档.md` 等文档中的路线图只留指针,顺序变更只改 §2.0(详表文件跟着挪,不改顺序)。 +- **暂缓块(`暂缓-RS485.md`)不是销项**:条目仍在簿,只是不占波次;重启或关闭时更新该文件与 §1/§2.0。 +- 新增发现按既有惯例分流:能立即修的进 §2 波次(W4 C5);需排期的进 `登记簿.md` / `测试与架构专项.md` 对应编号空间;跨版本观察的进 `登记簿.md`。 +- 上游引用关系:`问题记录/项目审查与优化建议报告.md`(体系层评审)、`问题记录/错误码传播审计.md`(E-xx)、 + `测试说明/实机测试实施指南.md`(执行流程)——三者均不在本文件夹合并范围。 diff --git a/docs/任务规划/W1-采集保护收尾.md b/docs/任务规划/W1-采集保护收尾.md new file mode 100644 index 00000000..ed70a73d --- /dev/null +++ b/docs/任务规划/W1-采集保护收尾.md @@ -0,0 +1,68 @@ +# W1 采集 + 保护收尾(当前波次任务卡) + +> **本文件是全文件夹改动最频繁的规划文件**:当前波次的里程碑 / 并行道 / 任务卡。 +> 状态变更(⬜ 未开始 → 🟦 进行中 → 销项删行)只改本文件;**排序权威(波次总览)在 `docs/任务规划/README.md` §2**。 +> 方法论出处与执行层映射(工作树 / 锁 / 并行道)→ `../环境与部署/并行任务工作树方案.md` §7.3。 + +## 1. 背景(已闭环,只留指针) + +B0 产品定义 2026-10-10 确认——上行 **IEC 60870-5-104**(以太网 TCP 2404,遥测短浮点系数 1)/ +持续采集 / **1000 Hz(20 点/周波)** / RS-485 对下 ModBus RTU,结论详见 +`../算法/继电保护功能复现规划.md` §1.5 与 `../产品需求/产品需求设计文档.md` §5.9/§5.10/§9; +B1 ADC 采集链路已 `@test` 实机闭环;B3 纪律门禁已固化进 `AGENTS.md`; +**B4/B5 已销项(2026-10-12)**——证据见 `../子系统设计/IEC104上行设计说明.md`(82 断言 + 钩子)与 +`../算法/继电保护功能复现规划.md` §7 变更记录(protectTask 20 ms 判据节拍 + L5-4 采样闭锁 + +IWDG bit8 + 堆 48→56 KB + prot_elm 28 用例)。 + +**本波目标(用户决定 2026-10-12)**:把"采集→相量→保护→上送"链路从"代码落地"收口到 +**"台架闭环 + 功能面完整 + 可送检"**。规划方式 = **里程碑(时间驱动、判据退出)× +并行道(按资源约束切分)× 任务卡(五字段)**。 + +## 2. 里程碑(时间驱动:功能可顺延,里程碑不拖延) + +| 里程碑 | 退出判据(全部满足才算完成,随后销项) | 服务分类 | +|---|---|---| +| **M1 台架闭环** | B6 `@test` PASS + N-33 `stack_report` 0 FAIL(含 `@test` 复测腿) | Standard | +| **M2 功能面完整** | B7/B8/B9 全部合入 + `ci_local` 全绿 + PC 客户端往返含"定值掉电保持"与"SOE 时标" | Standard | +| **M3 可送检** | B10 注入判据 + 第三方主站全流程通过,证据归档 | **Fixed Date**(送检窗口一到全道让路;窗口前 2 日特性冻结,只修稳定——Zephyr RC 语义) | + +## 3. 并行道(台架 = 约束资源永不空转;代码道 = worktree 并行、绿即合) + +```mermaid +graph LR + subgraph BL[台架道 🔴 串行独占 bench.lock] + B6[B6 @test 复测] --> N33[N-33 栈收口+复测] + end + subgraph CL[代码道 🟢 worktree 并行 绿即合] + B7[B7 定值持久化] -->|合并次序| B8[B8 频率保护] + B7 -->|合并次序| B9[B9 动作记录/SOE] + end + N33 --> M1((M1)) + B8 --> M2((M2)) + B9 --> M2 + M1 --> B10[B10 送检窗口 🟡 Fixed Date] + M2 --> B10 +``` + +## 4. 任务卡(五字段:DoD / 硬依赖 / 资源 / 写范围 / 状态;完成即销项删行) + +> 资源图例:🔴 台架(COM6/ST-LINK,`bench.lock` 独占)· 🟡 外部(标准源/第三方主站)· 🟢 纯软件(可并行)。 +> 状态:⬜ 未开始 · 🟦 进行中(销项行直接删除,见 `docs/任务规划/README.md` §3 维护约定)。 +> ⚠ **写范围相交**:B7×B8(`App/algo/prot_set.*`)、B7×B9(`App/protocol/iec104/iec104_pts.c`)→ **B7 先合**,其后 B8∥B9(互不相交)。 + +| 序 | 任务 | DoD(可验证验收判据) | 硬依赖 | 资源 | 写范围 | 状态 | 出处 | +|---|---|---|---|---|---|---|---| +| **B6** | **台架 `@test` 闭环复测(B4/B5 验收窗口)** | `@test` PASS:`protect task start` 锚点 ×1;`[STACK] protect`/`iec104` 水位行在且 free 达标;新堆 min_ever 记录、无 `HEAP_LOW_WATER_B` 告警;PC 客户端 2404 总召/变位往返日志;采样闭锁不误报 | — | 🔴 | `.serialtest/config.json`(无新固件代码) | ⬜ | 保护规划 §7 变更记录"遗留";`../测试说明/自动化测试流程.md` | +| **N-33** | **栈余量收口**(defaultTask 余 1080 B < 30% 线 / timeSyncTask 余 784 B < ISR 底线,2026-10-12 实测;**既有债非 B4/B5 引入**;链 = dhara GC→控制台回显尾→`(Cycle)`) | `stack_report.py` 9 任务 0 FAIL + `@build` 0/0;若抬栈:台账 §6 登记 + `@test` 复测 PASS | B6(min_ever 背书,AGENTS 抬栈门禁) | 🟢(瘦链调研)+ 🔴(复测腿) | `Src/freertos.c`(USER CODE)/ 瘦链目标文件 | ⬜ | 2026-10-12 `stack_report.py` 实测 | +| **B7** | **定值持久化 + 遥控软压板(P4)** | 主机单测:定值存/取往返、损坏→all-or-nothing 拒绝、YK12 两段式转真执行;`@build` 0/0;**台架腿**:104 C_SE 写 → 断电重启 → 定值保持;写+seal 原子化(B5 竞态窗口关闭,回填保护规划 §3.5) | —(代码);验证腿 🔴 | 🟢 + 🔴 | `App/algo/prot_set.*`、`App/cfg/`、`App/protocol/iec104/iec104_pts.c`(定值段)、`App/task/iec104_serv.c` | ⬜ | 保护规划 §3.5 L5-1、§5;`../子系统设计/IEC104上行设计说明.md` §3.3 | +| **B8** | **频率测量算法 + 过频/低频保护(P2 剩余)** | 频率测量主机单测(45~55 Hz 扫描,精度判据写入文档)+ OF/UF 实例单测;`@build` 0/0;心跳行显示频率值。OV/UV/3U0 实例 B5 起已在跑,注入判据归 B10 | — | 🟢 | `App/algo/phasor.*`(或新 `freq.*`)、`App/algo/prot_elm.*`、`App/algo/prot_set.*`(定值行) | ⬜ | 保护规划 §3.3 L3-5、保护规划 §7 P2 | +| **B9** | **动作记录 + 时标 SOE(L4)** | SOE 记录编解码主机单测 + iec104 单测(M_SP_TB_1);`@build` 0/0;protectTask 静态链不变(动作路径无 NAND I/O,记录走队列异步);**台架腿**:动作边沿 → `/log` 记录可见。出口跳闸仍否定确认(R7 口径不变) | —(代码);验证腿 🔴 | 🟢 + 🔴 | `App/log/`、`App/protocol/iec104/iec104_asdu.*` + `iec104_pts.c`(YX 时标段)、`App/task/protect_task.c` | ⬜ | 保护规划 §3.4 L4、保护规划 §7 P4;`../子系统设计/IEC104上行设计说明.md` §3.2 注 | +| **B10** | **标准源注入 + 第三方 104 主站往返(送检窗口)** | 标准源注入:L1-5 标定复核 / L1-7 等周波 / P1 过流·过负荷 / P2 电压 + 频率类判据全通过;第三方主站总召/周期/变位/遥控全流程(`../子系统设计/IEC104上行设计说明.md` §7/§8 核对单);证据归档 | M1 + M2 | 🟡 | —(窗口内缺陷修复走 Expedite 类) | ⬜ | 保护规划 §7 P1/P2 验收;`../子系统设计/IEC104上行设计说明.md` §7/§8 | + +## 5. 并行规则(执行层映射 → `../环境与部署/并行任务工作树方案.md` §7.3) + +> ① **WIP ≤ 2**:每道最多 1 个进行中(台架道 + 代码道各一),先完再开(Kanban); +> ② worktree 分支**存活 ≤2 天、绿即合**(`done` 预演合并;31 钩子强门禁是并行安全底座); +> ③ 写范围相交必须声明合并次序(见 §4 表注); +> ④ **里程碑不拖延、功能顺延下一轮**(时间驱动,Zephyr 发布语义); +> ⑤ 台架道永不空转:代码道在跑时,为下一个台架任务备料(约束优先,TOC)。 diff --git a/docs/任务规划/基线与待确认.md b/docs/任务规划/基线与待确认.md new file mode 100644 index 00000000..7c77f53a --- /dev/null +++ b/docs/任务规划/基线与待确认.md @@ -0,0 +1,93 @@ +# 基线与待确认(设计参考,少改动) + +> 本文件是**参考基线**,不是待办池:待确认项(§1)、设计基线(§2)、诊断基线(§3)、内存预算(§4)。 +> 待办的排序与登记在 `docs/任务规划/README.md` §2 与 `docs/任务规划/登记簿.md`;**同一事实以内存管理文档为权威**(§3/§4 只是快照指针)。 + +## 1. 待确认(需手册/硬件/产品定义,暂不直接改码) + +1. TPAFE5160 是否有自动扫描模式(**已不影响**:1 kHz 硬件定时器触发已于 2026-10-10 由 **TIM3 更新中断**方案落地,不依赖自动扫描,见 `docs/子系统设计/ADC采样节拍设计说明.md`)。 +2. `APP_ADC_ENABLE` / `APP_RS485_ENABLE` 是否应在产品构建真实门控模块(当前宏已如实标注为"未接线占位",此处确认的是**是否接入真实门控**;B1 取数不依赖该宏。**RS-485 侧门控随 B2 暂缓,见 `暂缓-RS485.md`**)。 +3. RS-485 PD0 DE 的半双工方向语义需硬件实测确认(本次仅静态审查)——**随 B2 暂缓(`暂缓-RS485.md`)**。 + +## 2. 设计基线(供后续接入参考) + +### 2.1 pending 二期设计基线(ACCEPT + SEND) + +> **来源**:一期(RECV)架构现状见 `docs/网络/Net层阻塞模型架构设计.md`(含演进溯源附录); +> 本节仅保留**二期仍要用的设计基线**。 + +**一期已验证的机制骨架**(二期沿用,勿重新发明):独立静态 pending 表 + `net_pending_tick` +主循环节拍了结(五路:数据/到点/断连/同 fd 串行/重建取消必通知)+ 登记守卫(每 fd 至多一个、 +不覆盖、拒绝 netTask 自等待)+ 1s 看门狗强结算。 + +**二期扩展点**: + +| 项 | 目标 | 对应缺陷 | +|---|---|---| +| **ACCEPT pending** | accept 等待改为"登记 → CONNECT 事件完成",退役 100ms/200ms 轮询循环 | E-06(accept 轮询计时失真) | +| **SEND pending** | 发送续传改为"登记 → send_ready 完成",消除 1s/分片 stall 对队列的冻结 | E-02 残余(SEND 位置) | + +**二期门禁**(一期门禁的加强版): + +1. CH395F NET 层全套件(含一期未跑的 Phase 7 / Phase 10,视 RAM 预算); +2. L3/L5 基线重锁(一期已重锁 M3,二期须再锁); +3. `e02_probe.py` **探针族扩充**:close / reconfig / EOF / disconnect-during-pending 四专项; +4. `ftp_regression.py`(D20)+ E-06 假 425 场景**独立重跑**(一期是借 M3 压力档覆盖的); +5. UI 远端推流压力 + timeSync 三场景; +6. 产品 `@test` 闭环 + ST-LINK 全片回读; +7. `ram_report.py` / `stack_report.py` 前后对比(铁律); +8. 看门狗接 selftest 留痕 + 模拟器差距清单 +1(`net_socket_sim.c` 无法建模 pending)。 + +**已知代价(延续一期,需文档化)**:pending 完成判定随主循环节拍运行,被长操作占用时超时 +顺延(~1ms 级);二期把 SEND 也 pending 化后,该顺延面反而**收窄**。 + +**改动量估算**:再 ~300-500 行,集中在 `net_socket.c`;公开 API 不变。风险评级**中** +(执行器核心 + D 系列前科)——**大的是验证,不是代码**。 + +### 2.2 错误码通道四要素(CH395F 范式) + +> **来源**:`../问题记录/错误码传播审计.md`。GD5F 错误通道统一(E-10 / E-42 / E-53 / E-54 / E-56 / E-57) +> 即按此骨架落地(2026-10-03,套件回归 16/16 PASS)。**后续任何驱动 / 子系统建立错误通道时应沿用。** + +``` +① 分类:区分「超时 / 真故障 / 参数错」——不得混为一个返回码 +② 透传:底层错误码逐层上报,不吞不猜(禁 `(void)ret`) +③ 分级:可恢复(重试)/ 不可恢复(上报自检 + 降级)显式判定 +④ 留痕:不可恢复项写 syslog selftest,可恢复项计数并在 UI / 日志可见 +``` + +**关键纪律**(呼应 `AGENTS.md` 已有铁律):**自愈逻辑严禁把"名字 / 参数类错误码" +归入"卷损坏触发集"**——`.fschk` 无限重格式化事故即此类(2026-09-20)。 + +## 3. 诊断基线(供后续对照) + +> **2026-10-10 重采(栈)/ 2026-10-04 重采(堆)**:栈 = **运行时高水位 + armlink 静态最坏链双口径** +> (产品构建 `suite=NONE`,开机 + 空闲采样,串口 `[STACK]` + `stack_report.py`);静态区 = `.map` 受管快照。 +> 栈水位口径:2026-10-10 削链后 defaultTask 实测 **2152 B**、静态最坏链 **2776 B**,**未抬栈**即达标 +> (完整核算见 `docs/内存管理/RAM使用分析与优化方案.md`)。 +> ⚠ 下表为**历史快照**(2026-10-04/10-10 口径);**现行权威数字**看 `docs/内存管理/RAM预算台账.md` +> 与 `docs/内存管理/内存内容分配策略.md` §6(2026-10-12 B5 后:堆 56 KB、RW_CCM 87.9%)。 + +| 项 | 当前值(栈:2026-10-10;其余:2026-10-04) | 出处 | +|---|---|---| +| 产品构建 Flash (ER_IROM1) | 266,632 B / 1024 KB(25.4%);ROM 合计 **267,372 B** | `.map` 受管快照 | +| 产品构建 RW_IRAM1 | **84,960 / 131,072 B(64.8%)** | `.map` 受管快照(`RAM使用分析与优化方案.md` §2.1) | +| 产品构建 RW_CCM | 49,184 / 65,280 B(75.3%,历史当时值。2026-10-12 B5 后堆 56 KB / 87.9%) | 同上 | +| 实测堆 | free=8,664 / **min_ever=4,728 B**(历史当时值,48 KB 堆时代) | V5 串口 `[STACK] heap` | +| **defaultTask 栈峰值** | **2152 / 4096(余 1944 B = 47%);静态最坏链 2776 B(余 32%)** | `[STACK]` + `stack_report.py`(产品构建) | +| netTask 栈峰值 | 920 / 3840(余 76%);静态 1872 B | 同上 | +| ftpTask 栈峰值 | 740 / 4096(余 81%);静态 1216 B | 同上 | +| uiTask 栈峰值 | 4016 / 16384(余 75%);静态 1336 B | 同上 | +| timeSyncTask 栈峰值 | 792 / 2048(余量 61%) | 同上 | +| adcTask 栈峰值(B1,2026-10-10 新建) | **496 / 2048**(余 1552 B / 75%,台架 `@test` 实测);静态最坏链 504 B | 台架 `@test` + `stack_report.py` | +| testTask 栈峰值(产品态空转) | 496 / 8192(余量 93%) | 同上 | +| 队列响应性(挂起客户端) | 92.5ms(pending 一期) | `e02_probe.py` | +| M3 压力档帧周期 | med 60.1 / p95 66.4 / max 69.3ms,零尖峰 | `链路延迟测试说明.md` | + +## 4. 内存预算(支撑 §3 与定栈规则) + +现行权威数据 = `docs/内存管理/RAM使用分析与优化方案.md` v1.2(2026-09-21,§2.1 受管快照): +任务栈在 CCM 堆(defaultTask 1024w / netTask 960w / ftpTask 1024w / testTask 2048w / uiTask 4096w / timeSyncTask 512w / **adcTask 512w**); +产品构建 RW_IRAM1 84,960/131,072 B(64.8%)+ RW_CCM 49,184/65,280 B(75.3%,历史当时值。2026-10-12 B5 后堆 56 KB / 87.9%); +实测堆 `free=8,664 / min_ever=4,728` B(历史当时值,48 KB 堆时代);台账工具 `scripts/ram_report.py` + `scripts/stack_report.py`。 +**旧栈表/旧余量数字作废,勿引用。** diff --git a/docs/任务规划/排期详述.md b/docs/任务规划/排期详述.md new file mode 100644 index 00000000..68c04d30 --- /dev/null +++ b/docs/任务规划/排期详述.md @@ -0,0 +1,26 @@ +# 排期详述(W4 结构债 · W5 验证常态) + +> 波次总览与顺序权威在 `docs/任务规划/README.md` §2;当前波次任务卡在 `W1-采集保护收尾.md`。 +> 本文件只放**已排期但非当前波次**的详述表——低频改动,随窗口更新。 + +## 1. W4 结构债详述 + +> 波内顺序 = 性价比:先可靠性根治,后大体量重构;评估簇随窗口。 + +| 序 | 任务 | 说明 | 出处 | +|---|---|---|---| +| **N-20** | **`Error_Handler` 统一降级** | 一处初始化失败 = 整机挂死(只剩 IWDG 兜底)→ 记自检 + 禁用该子系统 + 其余照常。详见 `登记簿.md` | 报告 N-03c | +| **C6** | **USART1 TX-only 结构根治(S-3)** | 灭 ORE 僵尸机制根源(2026-10-02 台架 IWDG 误复位的机制根源):改 `.ioc` 令 USART1 不使能 RX / PA10 不复用为 `USART1_RX` → CubeMX 重生成 → 跑 `check_cubemx_survival.py`。结构性改动,需单开一轮 + 复跑台架闭环 | S-3 | +| **C3** | **存储侧日志管线(N-2 + N-24)** | 丢弃可观测性**代码已具备**(`console_log.c` `s_con_drop`+`[ERR] CONSOLE dropped`、`sys_log_mcu.c` 队列满 `DBG_ERROR`、TX 僵尸通道自愈);V5 30 min 日志**未复现 49s 静默**(运行期 >10s 静默全为 ~28s、均在 `e02_probe` 窗口内=N-17)。剩余:与 S8(非阻塞日志)合并评估 + 日志逐条 `f_open/f_write/f_close` 改造评估(N-24) | N-2 / N-24 | +| **C1** | **pending 二期(ACCEPT + SEND)** | 沿一期机制扩展;同期消化 E-25(net_select 语义)、E-24/E-27/E-28(跨上下文收口);基线重锁 + 探针族扩充 + 看门狗接 selftest。**设计基线见 `基线与待确认.md` §2.1** | N-4 | +| **C5** | 一档剩余 | E-15(ringbuf 定去留——**已确认零调用者,倾向删除**)、E-61(SD2506 注释订正)、E-16(cfg_file 段名长度)、E-26(UDP 定案,倾向移除)、E-23、E-30;**N-23 残余**(`KNOWN_GAPS` 白名单清理 + `app_cfg.h` 未接线开关,见 `登记簿.md`)。**E-49(RS485 DE 收尾)已移入 `暂缓-RS485.md`** | 一档/二档 | +| **N-22/25/26/28** | 评估簇 | 写回 flush / 性能与语义一致性 / NAND DMA 断言 / Flash 死代码——逐项见 `登记簿.md` 对应行,随窗口评估 | 报告各条 | + +## 2. W5 验证常态详述 + +| 序 | 任务 | 说明 | +|---|---|---| +| **D2** | N-3 L5 基线重锁 | 下次 Phase 13 窗口顺带做(低风险:阈值余量 >8×;**需 PC peer**) | +| **D5** | **N-16 专项负向台架窗口** | A2/A4 负向场景:PHY 拔线(需断 DTU 侧/关受管交换机端口)、A2 芯片级 `net_init` 失败(SPI 故障注入)、A4 短写压测 | +| **D6** | **N-17 探针窗口心跳缺口** | 定位 `time_sync` 监听重建为何阻塞 NET/FTP/UI(~1s 缺口,余量仅 ~0.7s);评估缩短重建重试或让掉线路径不阻塞其它任务 | +| **D7** | **串口助手 A6/A7 正路径补验** | 需 CH340 硬件接入后补验(`../测试说明/串口助手设计说明.md` 状态行 A1–A5/A8 已过) | diff --git a/docs/任务规划/暂缓-RS485.md b/docs/任务规划/暂缓-RS485.md new file mode 100644 index 00000000..0ae7547b --- /dev/null +++ b/docs/任务规划/暂缓-RS485.md @@ -0,0 +1,12 @@ +# 暂缓:RS-485 整簇(用户决定,2026-10-12) + +> **当前没有处理 RS-485 的打算**,以下条目整体冻结、不占波次;**重启 B2 时先回本文件评估前置,勿直接开工**。 +> 本文件**不是销项**:条目仍在簿,只是不占波次(`docs/任务规划/README.md` §3 维护约定)。 + +| 项 | 内容 | 重启时的前置 | +|---|---|---| +| **B2** | **RS-485 采集链路实现**(消化 E-50、E-49):双缓冲 + 序号(防包撕裂)+ DE 收尾(超时路径等 TC)+ ModBus RTU 状态机(`App/protocol/` 正是为此预留) | **E-59 门禁尚未满足**:先修 E-50(单缓冲包撕裂)、E-49(TX 超时拉 DE 未等 TC),修完驱动契约才允许接消费者 | +| E-49 | RS485 DE 收尾(原 C5 一档剩余,已移出) | 同上 | +| A-4 RS485 侧 | 采集链路测试可验证性约束(双缓冲 + 序号、DE 超时路径覆盖,`测试与架构专项.md` §2.3) | 随 B2 设计文档落地 | +| 待确认-3 | RS-485 PD0 DE 半双工方向语义硬件实测确认(`基线与待确认.md` §1 第 3 项) | 需硬件实测窗口 | +| N-25 中 DE 项 | `HAL_Delay(1)` 阻塞 DE | 随 B2 | diff --git a/docs/任务规划/测试与架构专项.md b/docs/任务规划/测试与架构专项.md new file mode 100644 index 00000000..389df5cc --- /dev/null +++ b/docs/任务规划/测试与架构专项.md @@ -0,0 +1,97 @@ +# 测试与架构改进专项(P1 收尾 / S1x / A-x) + +> 编号空间见 `docs/任务规划/README.md` §0;排期位置见 `docs/任务规划/README.md` §2(W5 验证常态)。 +> **S1~S14 / T-1~T-5 / A-1~A-7** 是 2026-10-02 版复审的**条目编号**——编号**不随条目删除而回收**; +> 其他文档若引用这些编号,其证据见对应模块文档与 `git log`。已完成事项的证据沉淀: +> `../测试说明/系统时钟单元测试说明.md`(S1-a)、`../测试说明/配置文件单元测试说明.md`(S1-b)、 +> `../测试说明/测试开发标准流程.md` §4.2.1(L0.5 适格台账)、`../测试说明/模拟器差距清单.md`(S13)、 +> `../测试说明/实机测试实施指南.md`(S4/S5/S7/S9/S11)、`../问题记录/GD5F2GQ5UE_Trap_Records.md`(S9)。 + +## 1. P1 收尾(1 项:P1-10 剩构建实测闭环) + +### P1-10 测试固件静态 RAM 预算(基线已重建、测试缓冲已瘦身,剩构建实测闭环) + +- **位置**:`MDK-ARM/STM32F407-Demo/STM32F407-Demo.sct`(`RW_IRAM1 0x20000000 0x00020000` = 128KB;芯片 192KB 的上部 64KB 有意未映射,克隆芯片兼容性考量) +- **历史**(2026-09-15 审计 / 09-16 复现):产品构建静态镜像曾 = 123.6KB/128KB(余量仅 4.4KB);HW 全阶段固件的 PHASE5 三缓冲(3×4093B)→ 超 8.7KB(`L6406E` 实测);NET 固件的 32KB `s_rx_buf` → 超约 28KB。 +- **进展**(2026-09-21,已复核):① 预算基线重建(`docs/内存管理/RAM使用分析与优化方案.md` v1.2):FreeRTOS 堆迁 CCM,任务栈改由 CCM 堆分配;产品构建 RW_IRAM1 余 ~49KB;② NET 层测试 32KB `s_rx_buf`/`s_tx_buf` 已移除,改小局部缓冲;③ STORAGE 套件固件 2026-09-20/21 实测可构建可运行。 +- **剩余**:① CH395F 套件(`TEST_SUITE_CH395F`,HW 全阶段 / NET 层 7 配置)实际构建确认链接通过——PHASE5 三静态缓冲 3×4093B 仍在,理论余量足够但未实测;② `@test` 闭环;③ **不建议**扩 scatter 到 192KB(破坏既有克隆芯片兼容决策)。 +- **置信度**:high(基线数据来自 2026-09-21 map;测试固件构建未复验)。 + +## 2. 测试与架构改进专项(S1x / A-x) + +**未闭环一览** + +| 编号 | 事项 | 状态 | 详述 | +|---|---|---|---| +| **S12** | 模块级轻量断言宏 | ⬜ 待做(第 4 波按需) | §2.1 | +| **S1-c** | `sys_log` / `time_sync` 主机侧单测 | ⬜ 可选(价值递减) | §2.2 | +| **A-4** | ADC / RS485 采集链路的**测试可验证性约束** | ⏸ ADC 侧随 B1 闭环;**RS485 侧随 B2 暂缓(`暂缓-RS485.md`)** | §2.3 | +| **A-5 残余** | CI 体积门禁盲区(`mem-numbers` 在 CI 被跳过) | ⬜ 未消除 | §2.4 | + +### 2.1 S12:模块级轻量断言宏 ⬜ + +**动机**:`configASSERT` 只覆盖 FreeRTOS 内部;自研代码的"不该发生"靠散落的 `if`。 + +**设计要点**(**必须零生产开销**): + +```c +/* App/util/app_assert.h —— 示意,非最终实现 */ +#ifdef APP_ASSERT_ENABLE + #define APP_ASSERT(cond) do { if (!(cond)) { \ + DBG_ERROR("[ASSERT] %s:%d", __FILE__, __LINE__); vApplicationAssertFailed(__FILE__, __LINE__); } \ + } while (0) +#else + #define APP_ASSERT(cond) ((void)0) /* 生产构建:编译期消失,零符号零开销 */ +#endif +``` + +**⚠️ 关键纪律**: +- **不得**在中断 / 高频路径使用(`DBG_ERROR` 有代价); +- **不得**替代正常的错误返回(断言是"内部不变量",不是"外部输入校验"); +- 生产构建 `APP_ASSERT_ENABLE` **关闭**——与 `ENABLE_DESTRUCTIVE_TESTS` 同级策略。 + +**建议先在 1~2 处试点**(如 `net_socket.c` 的状态机不变量),验证收益后再推广。 + +**完成判据**:宏存在 + 生产构建 `@build` 0/0 且 `.map` 无新增符号;试点处有实际使用。 + +### 2.2 S1-c(可选):`sys_log` / `time_sync` 主机侧单测 ⬜ + +**范围**:`App/log/sys_log_mcu.c`(定长 64B 记录编解码;落盘部分需桩)、 +`App/sync/time_sync.c`(协议帧编解码;与网络耦合,需先判定可解耦面)。 + +**为何低优先**:两者边界密度低于 `sys_clock` / `cfg_file`,且已有真机路径覆盖 +(`@test` 标记 / `time_sync_server.py`)。**按剩余收益评估后再决定是否做**, +范式完全复用 `../测试说明/看门狗单元测试说明.md`。 + +**完成判据**:`test/host/<模块>/run_unit_test.py` 退出码 0 + 挂 pre-commit 钩子。 + +### 2.3 A-4:ADC / RS485 采集链路的测试可验证性约束 ⏸ + +**背景**:`adc_task.c` 已实现(B1,2026-10-10),`rs485_task.c` 仍是空桩,`App/protocol/` 只有 README 与 `.gitkeep`。 +本项不是"缺陷",而是**对上游 B2 的设计约束**(B1 已完成;**B2 暂缓中,见 `暂缓-RS485.md`——重启 B2 动手前必须先落实本约束**,否则后续无法补测)。 + +**约束**(建议纳入 B2 设计): + +1. **协议解析必须与硬件 I/O 分离**——`App/protocol/` 的解析函数应接受 + `(const uint8_t *buf, size_t len)` 并返回解析结果,使其成为 L0.5 的**天然适格对象** + (参考 `cfg_file` 的"核心 + 后端"模式); +2. **采集缓冲必须双缓冲 + 序号**(上游 E-49 / E-50)——否则消费者读到撕裂数据, + 且**撕裂在单测里测不出来**(时序相关),必须在设计上消除; +3. **DE 收尾必须有超时路径覆盖**(RS485 半双工特有陷阱)。 + +**完成判据**:B2 设计文档体现上述三条;协议解析函数有对应 L0.5 单测。(B1 侧:ADC 无协议解析面,其"同一时刻性"由 E-58 原子快照保证、已闭环。) + +### 2.4 A-5 残余:CI 体积门禁盲区 ⬜ + +**现状**:`mem-numbers` 钩子**在 CI 上被跳过**(CI 无 `.map`)→ **CI 不守体积门禁**。 +S14 已在 workflow 显式提示"体积门禁未执行"(`::notice::`)并在 `../环境与部署/CI配置指南.md` 声明, +但**盲区本身未消除**——看到 CI 全绿仍可能误以为体积也守住了。 + +**可选处置**: +- 让 runner 具备 Keil 后,在 CI 增 `@build` job(成本高,需授权与许可证); +- 或把"体积校验"固化为**提交前必跑的本地门禁**(`scripts/ci_local.py`,当前已是事实标准)。 + +**完成判据**:存在**强制的**体积校验路径(CI 侧或本地侧),且文档明确其边界。 + +> **注**:本项与栈预算是同一话题的两面——**具体栈风险(原 S-1)已于 2026-10-10 削链闭环** +> (核算见 `docs/内存管理/RAM使用分析与优化方案.md`),本项仍是**门禁缺口**。 diff --git a/docs/任务规划/登记簿.md b/docs/任务规划/登记簿.md new file mode 100644 index 00000000..3a871a13 --- /dev/null +++ b/docs/任务规划/登记簿.md @@ -0,0 +1,53 @@ +# 登记簿(N-x / S-x / T-x 长期观察项) + +> 编号空间与"不回收"规则见 `docs/任务规划/README.md` §0;排期位置见 `docs/任务规划/README.md` §2 波次总览; +> 当前波次任务卡(带 DoD / 写范围 / 状态)在 `W1-采集保护收尾.md`。 +> **本文件是低频文件**:新发现按类别进对应表;销项 = 删行 + 清引用(`docs/任务规划/README.md` §3)。 + +## 1. 网络(CH395F / net 层) + +| # | 事项 | 发现 | 证据与现状 | 出处 | +|---|---|---|---|---| +| N-2 | **49s 全系统日志静默(defaultTask/NAND syslog 排空停滞)**——串口日志 49s 无行,期间 net 栈照常处理外部连接 → 日志管线停滞,队列满后各任务日志行被丢;系统功能不受损 | 2026-09-22(L3 台架 F2,gen 181) | **A/B 归因:既有存储侧现象**。**2026-10-03 降级为低风险观察项**:① 丢弃可观测性**代码已具备**(`console_log.c` `s_con_drop` + `[ERR] CONSOLE dropped`;`sys_log_mcu.c` 队列满 `DBG_ERROR`;UART TX 僵尸通道自愈);② V5 30 min **未复现 49s**(>10s 静默全为 ~28s、均在 `e02_probe` 窗口内=N-17)。**残余待办**:与 S8(非阻塞日志)合并评估(C3) | `错误码传播审计.md` E-02 阶段二 | +| N-3 | **L5 队列往返基线(1223/988µs)的 L3 后重验**——L5 测 DONTWAIT 队列全程;L3 对该路径逐位不变 → 机制上无影响,但基线数值属分片时代,严格重锁需跑一轮 Phase 13(需 PC peer) | 2026-09-22(L3 收尾留档) | 低风险:10ms/100ms 阈值余量 >8×;下次 Phase 13 窗口顺带重锁即可 | `链路延迟测试说明.md` §6.4 L5 注¹ | +| N-4 | **pending 机制二期:ACCEPT + SEND 阻塞路径 pending 化**——E-06、E-20、E-21 剩余分量共用该机制扩展;届时 L3/L5 基线再重锁、探针族扩充、看门狗接 selftest 留痕、模拟器差距清单 +1 | — | 一期(RECV)已落地并入主线;架构现状见 `Net层阻塞模型架构设计.md`,二期设计基线见 `基线与待确认.md` §2.1 | `错误码传播审计.md` 第二档 #2 | +| N-16 | **A2/A4 专项场景台架验证待办**(正常路径已实测零回归):① PHY 拔线负向测试——断链需断 **DTU 侧**线缆或关**受管交换机端口**;② A2 芯片级 `net_init` 失败分支(需 SPI 故障注入);③ A4 短写压测(需远显客户端 + UI 推流压力) | 2026-10-03(台架拓扑 = CH395↔交换机,拔线操作受限) | 待专项台架窗口 | `实机测试实施指南.md` §10 | +| N-17 | **`time_sync` 30s 挂起客户端掉线 + 监听重建期间,网络任务心跳缺口达 800ms~1s(声明 stall 但未复位)。**待办**:定位监听重建为何阻塞 NET/FTP/UI;评估缩短重建重试(5×2s)或让掉线路径不阻塞其它任务 | 2026-10-03(V5 台架) | V5 长跑 44 次 `task stall: mask=0x00000001`,**100% 与 `e02_probe` 的 30s 挂起客户端触发 `time_sync: no TIME packet in 30s, drop conn` → 监听重建(约 4s)重合**;隔离实验(仅 FTP,120s)**0 次 stall** → 探针场景专属。缺口(~1s)< IWDG 最坏超时(1701ms),余量仅 ~0.7s。 | `实机测试实施指南.md` §4;`../子系统设计/看门狗设计说明.md` | +| N-32 | **CH395F 监听生命周期根治(B10 残余)**——现仅靠对账④兜底(提交 `4f2cc8b`)。根治两步:**P1 把"会话已结束"从边沿改成电平**(`net_sock_t` 增 `session_dead`;`net_recv_locked` DONTWAIT 判据改 `state==CLOSED \|\| session_dead`;`ui_net_sink.c:563` 补 `g_client != g_listen` 护栏;accept 门控换 `net_listener_armed`);**P2 单一所有者**(新增 `net_listener_pump`,删 `net_accept_locked:1346`/`net_recv_locked:1884`/`net_pending_tick:2451` 散点 relisten;消灭 netTask 内 500 ms 忙等 `:2597-2616`/`:1115-1126`)。**已定案不走芯片多连接模式(A′ 出局:不支持多监听)** | 2026-10-12(B10 定案;⚠ ④ 有副作用——抢先 relisten 会把慢消费者的 EOF 永久吞掉,新客户端数据被旧会话静默吸收,待 P1 消除) | 原理 + 证据附录(实测数据 / 官方例程所有权 / 状态机 15 迁移点 / 三服务契约不一致表)+ **决策记录 D1~D7** + 可勾选执行清单 → `../子系统设计/网络Socket监听生命周期设计说明.md` §7~§9;现象与回归见 `../问题记录/CH395F_Trap_Records.md` B10 行 | + +## 2. 存储 / 日志管线 + +| # | 事项 | 发现 | 证据与现状 | 出处 | +|---|---|---|---|---| +| S-3 | **USART1 TX-only 结构根治(灭 ORE 僵尸机制)**——ORE 锁存在外设软复位后毫秒级重锁(PA10 悬空 + RX 使能),是 2026-10-02 台架"背靠背 drain 拉长主循环 → 喂狗节奏饥饿 → IWDG 误复位"的**机制根源**。现仅有缓解(单次 drain 250ms 预算 + 发送故障后 300ms 冷却),**未根治** | 2026-10-02(台架 gen-288) | **待办**:改 `.ioc` 令 USART1 为 TX-only → CubeMX 重生成 → 跑 `scripts/check_cubemx_survival.py`。结构性改动,需单开一轮并复跑台架闭环 | `../子系统设计/控制台单写者日志设计说明.md` §12(含 O4) | +| S-4 | **dhara 重试自旋残留**——`try_recover()` 的 `DHARA_MAX_RETRIES`(8) 自旋在坏块密集时仍可能长时间占用 defaultTask(喂狗点) | 2026-10-02 | 低优先:现有 `vol_lock` + 喂狗节奏缓解;若台架再出"存储侧喂狗饥饿"再排期 | `Lib/dhara/map.c` | +| S-5 | **可选全序列卷锁**——现卷锁仅覆盖 `syslog` / `cfg` / `lftpd` 三条路径(`vol_lock_wait(0)` try 语义),其它潜在访问点(如 UI 读日志)未纳入 | 2026-10-02 | 待评估:先确认是否真有第二写者;无则关闭本项 | `App/fs/vol_lock.{c,h}` | + +## 3. 硬件(V0.1 缺陷 → V0.2 改版项) + +| # | 事项 | 发现 | 证据与现状 | 出处 | +|---|---|---|---|---| +| N-18 | **8 路电气量分属两片转换器(V0.1 硬件缺陷,需下一版硬件修改)**——UA/UN/IA 走 TPAFE5160(16 位、8 通道同步、±5 V 双极性),UB/UC/IB/IC/IN 走 STM32 ADC(12 位、顺序扫描、0~3.3 V 单极性):① 两片转换器无共同采样触发 + STM32 侧顺序扫描(9 通道一轮 ≈ 67 µs)→ 跨转换器通道**无同一时刻性、相位关系不确定**,主板侧功率/功率因数/相角/对称分量类运算不成立;② 同族电气量精度与量程不一致(LSB ≈ 152.6 µV vs ≈ 806 µV,且 STM32 侧前端无中点偏置、负半周削顶);③ 语义与硬件归属交叉,固件映射/UI 通道序/自检注入须逐通道查表绕开 | 2026-10-10 定性更正(**撤销** 2026-10-09 建档时"有意分配、不要修正"的说法) | **V0.2 改版要求**:8 路电气量 UA/UB/UC/UN/IA/IB/IC/IN **全部接 TPAFE5160**,与 TPAFE 上 5 路备用路(AIN5/13/7/15/12)对调串联电阻在转换器一侧的目的地——元件数量与料号不变,属走线级改动。**V0.1 现板软件口径**:主板侧只做逐通道独立监视,禁止跨转换器做相位/功率/功率因数/矢量类运算(此类量取子板计量模块结果)。固件侧消费者已落地(B1,2026-10-10,按语义映射表取数)→ V0.2 改版只改映射表内容,上层语义与代码不动 | `../硬件平台/ADC通道映射说明.md` §1/§7;`../硬件平台/V0.1_网表详细分析报告.md` §1.4 V10、§6-3 | + +## 4. 测试与验证基础设施 + +| # | 事项 | 优先级 | 问题与证据 | 处置方向 | 出处 | +|---|---|---|---|---|---| +| T-7 | **CI runner 未就绪(部署前置)** | 中 | `.gitea/workflows/ci.yml` 已落地,但 CI 仅在 runner 就绪后才真正生效:① Gitea 实例 `[actions] ENABLED = true`;② 注册 Windows runner(labels 含 `windows`),装 Python 3.x / cppcheck / pre-commit / MSVC;③ runner 就绪后**推送远端跑一次两 job 闭环验证**(当前 21 个提交未推送,CI 从未真实执行);④ **第二机交叉验证**(不同工具安装路径,验 `DTU_*` 环境变量方案,→ `../环境与部署/本地工具路径环境变量方案.md` 变更记录 TODO) | runner 未就绪前,**提交前仍须在本地跑 `scripts/ci_local.py` 或 `pre-commit run --all-files` 自查**(L0 唯一保障,不能因"已配 CI"而放宽) | `.gitea/workflows/ci.yml`;`../测试说明/测试开发标准流程.md` §9 | + +## 5. 审查报告并轨(2026-10-11;⚠ 报告编号与本登记簿同名不同义,出处列保留报告编号,引用一律带文档名) + +| # | 事项 | 影响 / 现状 | 处置方向 | 波次 | 出处 | +|---|---|---|---|---|---| +| N-20 | `Error_Handler` 仍 `__disable_irq(); while(1){}`(`Src/main.c:274-282`) | 一处初始化失败 = 整机挂死(只剩 IWDG 兜底),无自检日志 | 统一降级策略:记自检 + 禁用该子系统 + 其余照常 | W4 | 报告 N-03c | +| N-21 | **dhara 两处**:`dhara_nand_is_free()` 只查页首 64 B;`dhara_nand_copy()` 不处理 `DHARA_NO_PAGE` 哨兵 | 映射恢复误判 → **数据丢失风险**(低概率、后果重);哨兵页号被当真实页 → 未定义行为;至今只能靠人工读代码发现 | 整页(或首/中/尾)扫描 + 返回 `DHARA_E_UNSUPPORTED`;**必须配主机侧移植层单测**(一并补报告"覆盖率"缺口) | **W2** | 报告 N-12/N-13 + §7 | +| N-22 | 写回缓存无空闲/掉电强制 flush(整页写与换页已 flush) | 写回窗口内掉电丢最近日志/配置写 | defaultTask 空闲 N ms flush | W4 | 报告 N-14 | +| N-23 残余 | **钩子已落地**(2026-10-12 `registration-check` 挂 pre-commit,存量缺口走 `KNOWN_GAPS` 白名单只 WARN);**残余** = 白名单清理:`rs485_task.c`(随 B2 暂缓一并处置:删除或注册)、`lftpd_log.c`;`app_cfg.h` 未接线开关(C5) | 白名单不清 = "写了不编译"盲区仍在 | 逐项清白名单(`--strict` 供审计复跑);开关随 C5 处置 | W4(C5) | 报告 N-06 残余 + 报告 S-3 | +| N-24 | 日志每条 `f_open+f_write+f_close`(`sys_log_mcu.c:123-140`) | 每条日志 2–4 次 NAND 页读写;UI 翻记录逐条 open/seek/close | 与 C3 日志管线合并评估(现仅 `FIL` static 化省 528 B 栈) | W4 | 报告 N-16(**≠ 本登记簿 N-16**) | +| N-25 | 性能/资源建议簇:PASV 每次新建监听;`NET_RECV_TIMEOUT_MS 30000`;PHY 强制 100M 无自协商回退;`NET_MAX_SOCKETS 8` 与单连接语义不符;`HAL_Delay(1)` 阻塞 DE(**DE 项随 B2 暂缓,见 `暂缓-RS485.md`**) | 次级性能/语义一致性 | 逐项见 `../问题记录/项目审查与优化建议报告.md` §4.2/§4.5/§4.7,随窗口评估 | W4 | 报告 N-09/P2-8/PHY/P3-x/rs485 | +| N-26 | NAND 直 DMA 调用方缓冲(已加运行时守卫,阈值 1024) | CCM 缓冲被 DMA = 静默传错(与 ADC DMA 不可达 CCM 同类坑) | 补编译期/启动期地址断言 + **新铁律:堆缓冲不可被 DMA 直接寻址** | W4 | 报告 N-11 | +| N-27 | **内存优化簇**:LVGL 池 + UI 两份缓冲 54,146 B 仍在 SRAM1,CCM 只剩 ≈8,160 B(2026-10-12 B5 堆扩容 48→56 KB 后) | R-2 后半段(迁 CCM)被堵死 → 后续功能预算看不清 | **三件套 ✅ 2026-10-12 落地**(`ram_baseline.py` 四模式 + `ram_baseline.tsv` 趋势 + `docs/内存管理/RAM预算台账.md` + `mem-budget` 钩子 92% 门禁)→ **W3** 再做 R-9(`LV_MEM_SIZE` 40→16 KB,池水位门禁数据已具备)→ R-2 后半;R-3/R-4/R-5/R-6 逐项评估(R-6 前置已满足) | **W3** | 报告 R-2 剩余/R-3~R-6/R-9/§5.5 | +| N-28 | Flash 死代码评估簇:剩余 ≈10 KB(`box_shadow` 3,246 / `draw_sw_img` 2,960 / `bin_decoder` 1,972 / `image_decoder` 952 / `triangle` 930)+ 双精度 `dadd` 等 ≈1 KB;uvprojx 仍挂 201 个空 LVGL TU(F-1/F-2/F-3 已闭环,省的是编译时长) | 编译时长 + 文档噪音 | 逐项实测再关;⚠ `mask`/`mask_rect`/`grad` 是文字与矩形绘制必经路径,**不可盲关** | W4 | 报告 F-4/F-5/F-6 | +| N-29 | **仓库膨胀**:`.git` 149 MB + 图片 36.3 MB | clone/备份慢,且持续恶化 | 降采样 / 拆 submodule / LFS 三选一 **+ 一次 `git filter-repo` 历史重写**。**已决策(2026-10-11):暂不处理、登记观察**——推送/协作前重评(届时未推送提交更少、重写代价最低) | **W7** | 报告 D-1 | +| N-33 | **栈余量收口:defaultTask / timeSyncTask `stack_report` FAIL**(2026-10-12 复测:defaultTask 静态 3016 B/余 1080 B < 30% 线,链含 dhara GC→控制台回显→`(Cycle)`;timeSyncTask 静态 1264 B/余 784 B < ISR 底线 1024 B)——**既有债,非 B4/B5 引入** | 深链 + ISR 嵌套场景栈溢出风险(保护链稳定性相关) | 抬栈(需 B6 min_ever 背书)或瘦链(控制台回显尾 / Error_Handler 环),详表见 `W1-采集保护收尾.md` | **W1** | 2026-10-12 `stack_report.py` 实测 | +| U 簇 | UI 标准化:无令牌层/组件库/页注册表(手写 `case` 仍在),**27 页**未落地;golden 未挂 pre-commit、字符集差集检查仍是约定 | 新增一页成本仍是 8 处手工改动 | 按 `../问题记录/项目审查与优化建议报告.md` §6.5:U4 残余(两脚本入门禁,可逢窗口顺带)→ U1 令牌层 → U2/U3 → 页面落地;U4 golden 可直接当 U1 验收工具。**已确认(2026-10-11):本轮不排期**,等功能主线出结果后按产品需求启动 | W6 | 报告 U1~U5 | diff --git a/docs/内存管理/RAM使用分析与优化方案.md b/docs/内存管理/RAM使用分析与优化方案.md index ff904c66..80bf930a 100644 --- a/docs/内存管理/RAM使用分析与优化方案.md +++ b/docs/内存管理/RAM使用分析与优化方案.md @@ -9,7 +9,7 @@ ## 1. 背景与目标 -`待处理内容.md` 已提出:"所有任务的内存都是往大的给的,导致内存不够用,要仔细排查内存的预算情况"。 +登记簿(原 `待处理内容.md`,现 `docs/任务规划/`)已提出:"所有任务的内存都是往大的给的,导致内存不够用,要仔细排查内存的预算情况"。 分析起点(2026-09-11 快照,逐符号见 `data/ram_report_20260911.md`): diff --git a/docs/内存管理/RAM预算台账.md b/docs/内存管理/RAM预算台账.md index 1a395a81..aa00c622 100644 --- a/docs/内存管理/RAM预算台账.md +++ b/docs/内存管理/RAM预算台账.md @@ -32,7 +32,7 @@ - **门禁**:pre-commit `mem-budget` 钩子(`scripts/ram_baseline.py --gate`)—— RW_IRAM1 / RW_CCM 任一 >92% 即拦提交,并打印 Top-10 RW+ZI 对象定位增量; - 无 `.map` 时自适应跳过(CI 盲区登记在 `docs/待处理内容.md` A-5 残余)。 + 无 `.map` 时自适应跳过(CI 盲区登记在 `docs/任务规划/测试与架构专项.md` A-5 残余)。 - **阈值依据**:92% = `docs/问题记录/项目审查与优化建议报告.md` §5.5 第 1 条——留 ~8% 给突发缓冲与栈抬升, 触线即触发排期,而不是静默逼近溢出。 - **软提醒**(不拦提交):tsv 末行落后于 `.map`(忘跑 `--update`)、`.map` 早于最新源码(忘 `@build`)。 @@ -58,7 +58,7 @@ UI 16 KB / RTOS 堆 56 KB / 应用 8 KB**。归集口径(按 `.map` 对象名 - **UI ⚠ 超配额 = W3 的既有债务,不是新增违规**:LVGL 池 40 KB(R-9 目标 16 KB)+ 帧/远显缓冲 ≈12.8 KB(R-2 目标迁 CCM)——配额 16 KB 描述的是 **R-9/R-2 落地后的目标态**(排期见 - `docs/待处理内容.md` §2 W3)。 + `docs/任务规划/README.md` §2 W3)。 - **RTOS 堆 = 配额本身**:56 KB 即 `configTOTAL_HEAP_SIZE`(2026-10-12 B5 由 48 KB 扩容,见 §6; `heap_4.o` 另含 32 B 元数据,不计超);**改堆 = 改配额**,必须先过本文件 §6 登记。 - **应用 ⚠ 小幅超**:8 KB 为报告规划值;2026-10-10 栈整改把 3 处 `FIL` 从栈搬进 BSS diff --git a/docs/子系统设计/ADC采样节拍设计说明.md b/docs/子系统设计/ADC采样节拍设计说明.md index fb4c246d..fbf38a59 100644 --- a/docs/子系统设计/ADC采样节拍设计说明.md +++ b/docs/子系统设计/ADC采样节拍设计说明.md @@ -131,7 +131,7 @@ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) ### 4.5 文档同步(2026-10-10 已执行) - `docs/算法/继电保护功能复现规划.md`:§3.2 L1-1 由 🔶 改为 ✅(TIM6 硬件触发)、§1.2 采样软件行 + 变更记录同步。 -- `docs/待处理内容.md` §4:TPAFE 自动扫描模式待确认项标注"已不影响"(TIM6 方案不依赖它)。 +- `docs/任务规划/基线与待确认.md` §1:TPAFE 自动扫描模式待确认项标注"已不影响"(TIM6 方案不依赖它)。 - `AGENTS.md` 架构要点 `adcTask` 条 + `app_main_init` 序列:改为"TIM6 硬件触发 + 纯消费者"。 - `Drivers/BSP/TPAFE5160/README.md`:周期重触发改为"由 TIM6 更新中断提供"。 diff --git a/docs/子系统设计/IEC104上行设计说明.md b/docs/子系统设计/IEC104上行设计说明.md index 346c7b12..8c0d995f 100644 --- a/docs/子系统设计/IEC104上行设计说明.md +++ b/docs/子系统设计/IEC104上行设计说明.md @@ -3,7 +3,7 @@ > **定位**:DTU 上行规约 IEC 60870-5-104(DL/T 634.5104-2009)的设计基线—— > 范围、点表、链路流程、板端接入、预算与测试。规格来源 > `docs/算法/继电保护功能复现规划.md` §1.5(B0 产品定义,验收 = 省电科院点表); -> 代码落点 `App/protocol/iec104/`;登记项 `docs/待处理内容.md` §2.1(W1 / B4)。 +> 代码落点 `App/protocol/iec104/`;登记项 `docs/任务规划/W1-采集保护收尾.md`(W1 / B4)。 > **角色**:本 DTU = **被控站(受控端)**,104 **TCP 服务器,端口 2404**;主站 > (控制端,点表参考 `192.168.1.199`)主动连入。 @@ -58,7 +58,7 @@ | 19~20 | 零序过流 Ⅰ/Ⅱ | L3-2 未实现 | ❌ IV | | 21~22 | 接地故障/重载 | 未实现 | ❌ IV | | 23 | 过载 | `PE_OL` asserted | ✅ | -| 24~30 | 外部遥信(RS-485) | B2 暂缓(`docs/待处理内容.md` §2.4) | ❌ IV | +| 24~30 | 外部遥信(RS-485) | B2 暂缓(`docs/任务规划/暂缓-RS485.md`) | ❌ IV | | 31 | 保护闭锁 | `prot_set_locked()` | ✅ | | 32~33 | 预留 | — | ❌ IV | diff --git a/docs/子系统设计/控制台单写者日志设计说明.md b/docs/子系统设计/控制台单写者日志设计说明.md index ace3d478..2983ca8d 100644 --- a/docs/子系统设计/控制台单写者日志设计说明.md +++ b/docs/子系统设计/控制台单写者日志设计说明.md @@ -323,7 +323,7 @@ sequenceDiagram **未做(根治)**:让 USART1 为 **TX-only**(.ioc 中不再使能 RX / PA10 不作 USART1_RX), 从机制上消除 ORE。属 `.ioc` 结构性改动 + CubeMX 重生成,需单开一轮并复跑台架闭环 -→ 已登记为 `待处理内容.md` **S-3**。 +→ 已登记为 `docs/任务规划/登记簿.md` **S-3**。 ## 13. 开放问题 @@ -332,7 +332,7 @@ sequenceDiagram | O1 | 未注册期裸发无互斥 | 启动窗口(内核启动 → attach)`dbg_console_write_raw` 无互斥 → 多任务并发会**逐字节交错**(非旧 `HAL_BUSY` 丢整行)。2026-10-10 已固化"周期任务用 `dbg_console_writer_ready()` 门控"纪律;若未来开机日志密度上升,可升级为"内核前静态待发行 + attach 后统一补发"或给裸发加轻量互斥 | | O2 | `HAL_UART_Transmit` 超时未计数 | 超时块(UART 物理失效)丢弃但不入 `s_con_drop`;v2 可加独立超时计数 | | O3 | `printf` 逐字节开销 | 遗留 `printf` 路径 = 逐字节临界区 + 逐字节事件置位;遗留调用点全部切 `DBG_*` 宏后开销自然消失(不改变机制) | -| O4 | **ORE 僵尸未根治** | §12:现仅有缓解(250ms 预算 / 300ms 冷却 / DWT 超时),机制根源是 USART1 使能了 RX。根治需 `.ioc` 改 TX-only + CubeMX 重生成 → 已登记 `待处理内容.md` **S-3** | +| O4 | **ORE 僵尸未根治** | §12:现仅有缓解(250ms 预算 / 300ms 冷却 / DWT 超时),机制根源是 USART1 使能了 RX。根治需 `.ioc` 改 TX-only + CubeMX 重生成 → 已登记 `docs/任务规划/登记簿.md` **S-3** | ## 14. 相关文档 diff --git a/docs/子系统设计/看门狗设计说明.md b/docs/子系统设计/看门狗设计说明.md index 9f99f809..e44f28db 100644 --- a/docs/子系统设计/看门狗设计说明.md +++ b/docs/子系统设计/看门狗设计说明.md @@ -6,7 +6,7 @@ > **日期**:2026-09-29 创建;**2026-10-10 按当前代码重写正文**(旧正文含大量立项前的 > 描述,已清理;实施史与逐次决策见 §10 与文末变更记录,未删)。 > **相关文档**: -> [`../待处理内容.md`](../待处理内容.md)(未办项 N-17 / S-3 / N-4)、 +> [`../任务规划/README.md`](../任务规划/README.md)(登记簿未办项 N-17 / S-3 / N-4,见 `../任务规划/登记簿.md`)、 > [`运行与自检记录设计说明.md`](运行与自检记录设计说明.md)(复位记录与 `selftest.log`)、 > [`../测试说明/看门狗单元测试说明.md`](../测试说明/看门狗单元测试说明.md)(L0.5 判定状态机单测)、 > [`../测试说明/实机测试实施指南.md`](../测试说明/实机测试实施指南.md)(故障注入台架流程)、 diff --git a/docs/待处理内容.md b/docs/待处理内容.md deleted file mode 100644 index 3571d97d..00000000 --- a/docs/待处理内容.md +++ /dev/null @@ -1,409 +0,0 @@ -# 待处理内容(统一待办登记簿) - -> **这个文件是什么**:全项目唯一的未闭环事项清单 + 全项目唯一权威的工作先后顺序。 -> -> **怎么用**:想知道"现在该做什么、按什么顺序" → 只看 **§2**;想知道"某条待办的来龙去脉" → 按编号查 **§3**; -> 想知道"还差哪些验证" → §2.3。其余章节:编号规则(§0/§8)、待确认(§4)、设计与诊断基线(§5~§7)。 -> -> **只保留待办**:已完成条目直接删除,不留变更记录(历史见 `git log` 与各模块文档); -> 已闭环项的**结论与证据沉淀进对应模块文档/问题记录**,本文件不再重复。 -> **消化即销项**:事项修复/关闭后,直接删除对应条目,并同步清理其它文档对本编号的引用。 -> -> **不在本文件范围**:`问题记录/错误码传播审计.md`(E-xx,审计报告,非待办池)、 -> `问题记录/项目审查与优化建议报告.md`(体系层评审报告)、`测试说明/实机测试实施指南.md`(执行流程)。 -> -> **修订**:2026-10-04 四档合并;2026-10-11 统一排序 + 审查报告并轨; -> **2026-10-12 按用户决定 RS-485(B2)整簇暂缓(§2.4),波次重排为 W1~W7,清除已销项残留**; -> **2026-10-12 W1-0 台账三件套落地(N-27 前半闭环,`mem-budget` 钩子),N-23 钩子落地残余并入 C5**; -> **2026-10-12 B4/B5 销项——W1 功能主线代码侧全部完成**(验收窗口见 §2.1)。 - ---- - -## 0. 编号空间与来源 - -| 编号 | 含义 | 备注 | -|---|---|---| -| `P0-x`~`P3-x` | 审计缺陷/改进项(2026-09-15/09-21 审计) | P0=功能 bug、P1=疑似 bug/健壮性、P2=改进、P3=卫生 | -| `N-x` / `S-x` / `T-x` | 台架/审计观察登记项 / 存储·日志管线 / 测试与工具链 | 编号**不回收**;`N-x` 含硬件改版项(需下一版硬件,固件侧只记口径,如 N-18) | -| `S1~S14` / `A-1~A-7` | 2026-10-02 复审的测试充分性与架构专项 | 编号**不回收** | -| `E-xx` | 错误码传播审计发现 | 独立维护于 `错误码传播审计.md`,**不并入本文件**,只交叉引用 | -| `B`/`C`/`D` 前缀 | §2 排序条目编号:B=功能主线、C=结构债、D=验证窗口 | 编号不回收,见 §2 | -| 报告 `N-x`/`R-x`/`F-x`/`S-x`/`U-x`/`D-x` | `项目审查与优化建议报告.md` **自有编号** | ⚠ **与本登记簿同名不同义**(报告 N-16 = 日志逐条开关,登记簿 N-16 = A2/A4 负向台架)→ **引用一律带文档名**。其未闭环项 2026-10-11 并入本登记簿(新编 `N-19`~`N-29` + U 簇,出处列保留报告编号) | - -**严重度定义**(沿用审计口径):P0 = 确认功能 bug|P1 = 疑似 bug 或健壮性风险|P2 = 改进|P3 = 卫生。 -**置信度**:high = 代码级确证|medium = 依赖外部条件(手册/硬件/产品定义)。 - ---- - -## 1. 未闭环一览(按类别) - -| 类别 | 数量 | 条目 | -|---|---|---| -| P1 收尾 | 1 | P1-10 测试固件构建实测(§3.1) | -| 网络 | 5 | N-2(49s 日志静默,**低风险观察项**)· N-3(L5 基线重验)· N-4(pending 二期)· N-16(A2/A4 负向台架)· N-17(探针窗口心跳缺口) | -| 存储 / 日志 | 3 | **S-3(USART1 TX-only 根治)** · S-4(dhara 重试自旋)· S-5(可选全序列卷锁) | -| 数据正确性 | 1 | **N-21(dhara `is_free`/`copy`,全簿最高风险)** | -| 结构 / 健壮性 | 8 | N-20(Error_Handler 死循环)· N-22(写回 flush)· N-23(注册校验残余白名单)· N-24(日志逐条开关)· N-25(性能/语义簇)· N-26(NAND DMA 断言)· N-27(内存优化簇,三件套 ✅ 前半落地)· N-28(Flash 死代码簇) | -| 仓库 | 1 | N-29(`.git` 149 MB,**已决策暂不处理、登记观察**) | -| 硬件 | 1 | N-18(V0.2 改版项) | -| 测试 / 基础设施 | 6 | T-7(CI runner + 推送闭环 + 第二机交叉验证)· S12(断言宏)· S1-c(可选单测)· A-4(采集链路测试约束,RS485 侧随 B2 暂缓)· A-5 残余(CI 体积门禁盲区)· D7(串口助手 A6/A7 待 CH340) | -| UI | 1 簇 | U 簇(27 页标准化,**本轮不排期**) | -| **暂缓** | 1 簇 | **B2 RS-485 整簇(2026-10-12 用户决定,§2.4)** | - -> **网络侧另有 E-xx 未闭环项**(E-12/15/16/23/24/25/26/27/28/30/47/48/49/50/58/59/61,共 17 项) -> 与 1 项回归监督(E-62),详见 `问题记录/错误码传播审计.md` §3——其中 **E-49/E-50 随 RS-485 暂缓**。 -> 本文件不重复登记。UI 标准化簇与覆盖率缺口(lftpd/dhara 移植层无主机测试)为整簇排期项,见 §2 W6 / N-21。 - -### 1.1 结构性判断(排序依据) - -1. **产品功能主线"转发 + 保护"两环代码已落地(2026-10-12)**:采集侧 ADC(B1)已台架闭环;上行 IEC104(B4)与保护判据 protectTask(B5)代码均已落地(`App/protocol/iec104/` + iec104Task;`App/task/protect_task.c` 20 ms 判据节拍→104 遥信),**遗留为验收窗口**(台架主站往返随送检、标准源注入、`@test` 水位)。**RS-485 对下采集(B2)按用户决定暂缓(2026-10-12,§2.4),主线不再等它**。 -2. **数据正确性最高风险 = N-21**(dhara `is_free` 只查页首 64 B / `copy` 不处理哨兵):低概率、后果重(数据丢失),且至今只能靠人工读代码发现——修复须配主机侧移植层测试(一并补报告"覆盖率"缺口)。 -3. **内存预算红线已机械化(2026-10-12,W1-0)**:`mem-budget` 钩子拦 RW_IRAM1/RW_CCM >92%,子系统配额 / CCM 台账 / 趋势基线 → `docs/内存管理/RAM预算台账.md`;实际优化 R-9→R-2 排 W3(**B5 堆扩容 48→56 KB 后 CCM 只剩 ≈8,160 B**,解锁链见 `docs/内存管理/RAM预算台账.md` §3)。 -4. **验证债仅剩窗口性事项**(D2/D5/D6/D7 + P1-10 收尾),不单独排期、逢窗口顺手做。 - ---- - -## 2. 统一推进顺序(全项目唯一权威) - -> **本节是全项目所有工作流唯一的权威顺序**:`产品需求设计文档.md` §9.2、`算法/继电保护功能复现规划.md`、 -> `项目审查与优化建议报告.md` §0.3 中的路线图均为局部视图,**顺序变更只改本节,其它文档只留指针**。 -> 排序原则:**安全风险 > 产品功能主线 > 数据正确性 > 预算/结构债 > 验证常态 > UI 扩展 > 仓库决策**(当前无未闭环安全项)。 - -### 2.0 波次总览 - -| 波次 | 内容 | 为什么在这 | -|---|---|---| -| **W1 功能主线** | **B4 IEC104 上行 ✅ 2026-10-12 → B5 protectTask ✅ 2026-10-12(W1 代码侧全部完成)**(W1-0 台账三件套 ✅ 2026-10-12 落地,见 N-27) | DTU 核心职责"转发 + 保护"两环代码均已落地:B4(`App/protocol/iec104/` 三件套 + iec104Task 2404,82 断言 L0.5 + `iec104-unit-test` 钩子);B5(`App/task/protect_task.c` 20 ms 判据节拍 + L5-4 采样闭锁 + IWDG bit8 + 栈 512 words 静态链 872 B/余 57% + 堆 48→56 KB,见 `docs/算法/继电保护功能复现规划.md` §7 变更记录)。**遗留 = 验收窗口**:台架第三方主站往返(`docs/子系统设计/IEC104上行设计说明.md` §7/§8)+ 标准源注入动作判据 + `@test` PROT 锚点/水位 | -| **W2 数据正确性** | **N-21** dhara `is_free`/`copy`(报告 N-12/13) | 低概率、后果重(数据丢失);修复须配主机侧移植层测试,一并补报告"覆盖率"缺口 | -| **W3 预算与内存** | **N-27 后半**:R-9 池 40→16 KB → R-2 后半(54 KB→CCM)→ R-3~R-6 逐项评估 | 依赖 W1 三件套产出的台账数据;**B5 堆扩容后 CCM 只剩 ≈8 KB**(56 KB 堆),R-2 后半更被堵死(解锁链见 `docs/内存管理/RAM预算台账.md` §3) | -| **W4 结构债** | **N-20 → C6(S-3)→ C3(N-2+N-24)→ C1 pending 二期 → C5(含 N-23 残余)→ N-22/N-25/N-26/N-28** | 无紧急,按性价比排:C6 灭 IWDG 误复位机制根源;C1 体量大、验证重,放后(N-23 钩子已落地 2026-10-12,残余并入 C5) | -| **W5 验证常态** | P1-10 收尾 · T-7 CI · D2 N-3 · D5 N-16 · D6 N-17 · D7 串口助手 · S12 · S1-c · A-5 | 窗口性,逢机顺带,不单独排期 | -| **W6 UI 扩展** | U4 残余(golden + 字符集差集挂门禁)→ U1 令牌层 → U2/U3 → **27 页**落地 | 产品驱动、体量大,需单独立项(顺序按 `docs/问题记录/项目审查与优化建议报告.md` §6.5);**本轮不排期(2026-10-11 已确认)** | -| **W7 仓库决策** | **N-29** `.git` 149 MB + 图片 36.3 MB | **已决策(2026-10-11):暂不处理、登记观察**——推送/协作前重评(`git filter-repo` 历史重写影响未推送提交与协作者) | -| **暂缓** | **B2 RS-485 整簇**(§2.4) | **用户决定(2026-10-12):当前不处理 RS-485** | -| **硬件改版** | N-18 8 路电气量全接 TPAFE(V0.2) | 下一版硬件;固件侧已用语义映射隔离,改版只动映射表 | - -### 2.1 W1 功能主线详述 - -> **背景(已闭环,只留指针)**:B0 产品定义 2026-10-10 确认——上行 **IEC 60870-5-104**(以太网 TCP 2404, -> 遥测短浮点系数 1)/ 持续采集 / **1000 Hz(20 点/周波)** / RS-485 对下 ModBus RTU,结论详见 -> `docs/算法/继电保护功能复现规划.md` §1.5 与 `docs/产品需求/产品需求设计文档.md` §5.9/§5.10/§9; -> B1 ADC 采集链路已 `@test` 实机闭环;B3 纪律门禁已固化进 `AGENTS.md`。 -> -> **W1 全部销项(2026-10-12)**:B4 证据见 `docs/子系统设计/IEC104上行设计说明.md`(82 断言 + 钩子 + `@build` 0/0); -> B5 证据见 `docs/算法/继电保护功能复现规划.md` §7 变更记录(protectTask 20 ms 判据节拍 + L5-4 采样闭锁 + -> IWDG `TASK_WD_PROTECT` bit8 + 栈 512 words 静态链 872 B/余 57% + 堆 48→56 KB + prot_elm 28 用例)。 -> **遗留验收窗口**(非代码空洞):台架第三方 104 主站往返(随送检窗口)、标准源注入动作判据、 -> `@test` PROT 锚点 + `[STACK] protect` 水位 + 新堆 min_ever 复测。 - -### 2.2 W4 结构债详述 - -> 波内顺序 = 性价比:先可靠性根治,后大体量重构;评估簇随窗口。 - -| 序 | 任务 | 说明 | 出处 | -|---|---|---|---| -| **N-20** | **`Error_Handler` 统一降级** | 一处初始化失败 = 整机挂死(只剩 IWDG 兜底)→ 记自检 + 禁用该子系统 + 其余照常。详见 §3.2 | 报告 N-03c | -| **C6** | **USART1 TX-only 结构根治(S-3)** | 灭 ORE 僵尸机制根源(2026-10-02 台架 IWDG 误复位的机制根源):改 `.ioc` 令 USART1 不使能 RX / PA10 不复用为 `USART1_RX` → CubeMX 重生成 → 跑 `check_cubemx_survival.py`。结构性改动,需单开一轮 + 复跑台架闭环 | S-3 | -| **C3** | **存储侧日志管线(N-2 + N-24)** | 丢弃可观测性**代码已具备**(`console_log.c` `s_con_drop`+`[ERR] CONSOLE dropped`、`sys_log_mcu.c` 队列满 `DBG_ERROR`、TX 僵尸通道自愈);V5 30 min 日志**未复现 49s 静默**(运行期 >10s 静默全为 ~28s、均在 `e02_probe` 窗口内=N-17)。剩余:与 S8(非阻塞日志)合并评估 + 日志逐条 `f_open/f_write/f_close` 改造评估(N-24) | N-2 / N-24 | -| **C1** | **pending 二期(ACCEPT + SEND)** | 沿一期机制扩展;同期消化 E-25(net_select 语义)、E-24/E-27/E-28(跨上下文收口);基线重锁 + 探针族扩充 + 看门狗接 selftest。**设计基线见 §5.1** | N-4 | -| **C5** | 一档剩余 | E-15(ringbuf 定去留——**已确认零调用者,倾向删除**)、E-61(SD2506 注释订正)、E-16(cfg_file 段名长度)、E-26(UDP 定案,倾向移除)、E-23、E-30;**N-23 残余**(`KNOWN_GAPS` 白名单清理 + `app_cfg.h` 未接线开关,见 §3.2)。**E-49(RS485 DE 收尾)已移入暂缓(§2.4)** | 一档/二档 | -| **N-22/25/26/28** | 评估簇 | 写回 flush / 性能与语义一致性 / NAND DMA 断言 / Flash 死代码——逐项见 §3.2 对应行,随窗口评估 | 报告各条 | - -### 2.3 W5 验证常态详述 - -| 序 | 任务 | 说明 | -|---|---|---| -| **D2** | N-3 L5 基线重锁 | 下次 Phase 13 窗口顺带做(低风险:阈值余量 >8×;**需 PC peer**) | -| **D5** | **N-16 专项负向台架窗口** | A2/A4 负向场景:PHY 拔线(需断 DTU 侧/关受管交换机端口)、A2 芯片级 `net_init` 失败(SPI 故障注入)、A4 短写压测 | -| **D6** | **N-17 探针窗口心跳缺口** | 定位 `time_sync` 监听重建为何阻塞 NET/FTP/UI(~1s 缺口,余量仅 ~0.7s);评估缩短重建重试或让掉线路径不阻塞其它任务 | -| **D7** | **串口助手 A6/A7 正路径补验** | 需 CH340 硬件接入后补验(`串口助手设计说明.md` 状态行 A1–A5/A8 已过) | - -### 2.4 暂缓:RS-485 整簇(用户决定,2026-10-12) - -> **当前没有处理 RS-485 的打算**,以下条目整体冻结、不占波次;**重启 B2 时先回本节评估前置,勿直接开工**。 - -| 项 | 内容 | 重启时的前置 | -|---|---|---| -| **B2** | **RS-485 采集链路实现**(消化 E-50、E-49):双缓冲 + 序号(防包撕裂)+ DE 收尾(超时路径等 TC)+ ModBus RTU 状态机(`App/protocol/` 正是为此预留) | **E-59 门禁尚未满足**:先修 E-50(单缓冲包撕裂)、E-49(TX 超时拉 DE 未等 TC),修完驱动契约才允许接消费者 | -| E-49 | RS485 DE 收尾(原 C5 一档剩余,已移出) | 同上 | -| A-4 RS485 侧 | 采集链路测试可验证性约束(双缓冲 + 序号、DE 超时路径覆盖,§3.3.3) | 随 B2 设计文档落地 | -| §4-3 | RS-485 PD0 DE 半双工方向语义硬件实测确认 | 需硬件实测窗口 | -| N-25 中 DE 项 | `HAL_Delay(1)` 阻塞 DE | 随 B2 | - -### 2.5 顺序一图 - -``` -W1 功能 B4 IEC104 上行 ✅ 2026-10-12 → B5 protectTask ✅ 2026-10-12(W1 完成;台账三件套 ✅) - ↓ -W2 数据 N-21 dhara is_free/copy(配主机侧移植层测试) - ↓ -W3 预算 R-9 池瘦身 → R-2 后半(54KB→CCM)→ R-3~R-6 评估 - ↓ -W4 结构 N-20 → C6(S-3) → C3(N-2/N-24) → C1 pending 二期 → C5(含 N-23 残余) → N-22/25/26/28 - ↓ -W5 验证 P1-10 · T-7 CI · D2/D5/D6/D7 · S12 · S1-c · A-5 - ↓ -W6 UI U4 残余 → U1 令牌层 → U2/U3 → 27 页(单独立项,本轮不排期) -W7 仓库 N-29 .git 149MB(已决策暂不处理) 硬件:N-18 V0.2 -暂缓 B2 RS-485 整簇(2026-10-12 用户决定,§2.4) -``` - ---- - -## 3. 待办详述 - -### 3.1 P1(1 项收尾:P1-10 剩构建实测闭环) - -#### P1-10 测试固件静态 RAM 预算(基线已重建、测试缓冲已瘦身,剩构建实测闭环) -- **位置**:`MDK-ARM/STM32F407-Demo/STM32F407-Demo.sct`(`RW_IRAM1 0x20000000 0x00020000` = 128KB;芯片 192KB 的上部 64KB 有意未映射,克隆芯片兼容性考量) -- **历史**(2026-09-15 审计 / 09-16 复现):产品构建静态镜像曾 = 123.6KB/128KB(余量仅 4.4KB);HW 全阶段固件的 PHASE5 三缓冲(3×4093B)→ 超 8.7KB(`L6406E` 实测);NET 固件的 32KB `s_rx_buf` → 超约 28KB。 -- **进展**(2026-09-21,已复核):① 预算基线重建(`docs/内存管理/RAM使用分析与优化方案.md` v1.2):FreeRTOS 堆迁 CCM,任务栈改由 CCM 堆分配;产品构建 RW_IRAM1 余 ~49KB;② NET 层测试 32KB `s_rx_buf`/`s_tx_buf` 已移除,改小局部缓冲;③ STORAGE 套件固件 2026-09-20/21 实测可构建可运行。 -- **剩余**:① CH395F 套件(`TEST_SUITE_CH395F`,HW 全阶段 / NET 层 7 配置)实际构建确认链接通过——PHASE5 三静态缓冲 3×4093B 仍在,理论余量足够但未实测;② `@test` 闭环;③ **不建议**扩 scatter 到 192KB(破坏既有克隆芯片兼容决策)。 -- **置信度**:high(基线数据来自 2026-09-21 map;测试固件构建未复验)。 - -### 3.2 登记簿(N-x / S-x / T-x) - -**网络(CH395F / net 层)** - -| # | 事项 | 发现 | 证据与现状 | 出处 | -|---|---|---|---|---| -| N-2 | **49s 全系统日志静默(defaultTask/NAND syslog 排空停滞)**——串口日志 49s 无行,期间 net 栈照常处理外部连接 → 日志管线停滞,队列满后各任务日志行被丢;系统功能不受损 | 2026-09-22(L3 台架 F2,gen 181) | **A/B 归因:既有存储侧现象**。**2026-10-03 降级为低风险观察项**:① 丢弃可观测性**代码已具备**(`console_log.c` `s_con_drop` + `[ERR] CONSOLE dropped`;`sys_log_mcu.c` 队列满 `DBG_ERROR`;UART TX 僵尸通道自愈);② V5 30 min **未复现 49s**(>10s 静默全为 ~28s、均在 `e02_probe` 窗口内=N-17)。**残余待办**:与 S8(非阻塞日志)合并评估(C3) | `错误码传播审计.md` E-02 阶段二 | -| N-3 | **L5 队列往返基线(1223/988µs)的 L3 后重验**——L5 测 DONTWAIT 队列全程;L3 对该路径逐位不变 → 机制上无影响,但基线数值属分片时代,严格重锁需跑一轮 Phase 13(需 PC peer) | 2026-09-22(L3 收尾留档) | 低风险:10ms/100ms 阈值余量 >8×;下次 Phase 13 窗口顺带重锁即可 | `链路延迟测试说明.md` §6.4 L5 注¹ | -| N-4 | **pending 机制二期:ACCEPT + SEND 阻塞路径 pending 化**——E-06、E-20、E-21 剩余分量共用该机制扩展;届时 L3/L5 基线再重锁、探针族扩充、看门狗接 selftest 留痕、模拟器差距清单 +1 | — | 一期(RECV)已落地并入主线;架构现状见 `Net层阻塞模型架构设计.md`,二期设计基线见 §5.1 | `错误码传播审计.md` 第二档 #2 | -| N-16 | **A2/A4 专项场景台架验证待办**(正常路径已实测零回归):① PHY 拔线负向测试——断链需断 **DTU 侧**线缆或关**受管交换机端口**;② A2 芯片级 `net_init` 失败分支(需 SPI 故障注入);③ A4 短写压测(需远显客户端 + UI 推流压力) | 2026-10-03(台架拓扑 = CH395↔交换机,拔线操作受限) | 待专项台架窗口 | `实机测试实施指南.md` §10 | -| N-17 | **`time_sync` 30s 挂起客户端掉线 + 监听重建期间,网络任务心跳缺口达 800ms~1s(声明 stall 但未复位)。**待办**:定位监听重建为何阻塞 NET/FTP/UI;评估缩短重建重试(5×2s)或让掉线路径不阻塞其它任务 | 2026-10-03(V5 台架) | V5 长跑 44 次 `task stall: mask=0x00000001`,**100% 与 `e02_probe` 的 30s 挂起客户端触发 `time_sync: no TIME packet in 30s, drop conn` → 监听重建(约 4s)重合**;隔离实验(仅 FTP,120s)**0 次 stall** → 探针场景专属。缺口(~1s)< IWDG 最坏超时(1701ms),余量仅 ~0.7s。 | `实机测试实施指南.md` §4;`子系统设计/看门狗设计说明.md` | -| N-32 | **CH395F 监听生命周期根治(B10 残余)**——现仅靠对账④兜底(提交 `4f2cc8b`)。根治两步:**P1 把"会话已结束"从边沿改成电平**(`net_sock_t` 增 `session_dead`;`net_recv_locked` DONTWAIT 判据改 `state==CLOSED \|\| session_dead`;`ui_net_sink.c:563` 补 `g_client != g_listen` 护栏;accept 门控换 `net_listener_armed`);**P2 单一所有者**(新增 `net_listener_pump`,删 `net_accept_locked:1346`/`net_recv_locked:1884`/`net_pending_tick:2451` 散点 relisten;消灭 netTask 内 500 ms 忙等 `:2597-2616`/`:1115-1126`)。**已定案不走芯片多连接模式(A′ 出局:不支持多监听)** | 2026-10-12(B10 定案;⚠ ④ 有副作用——抢先 relisten 会把慢消费者的 EOF 永久吞掉,新客户端数据被旧会话静默吸收,待 P1 消除) | 原理 + 证据附录(实测数据 / 官方例程所有权 / 状态机 15 迁移点 / 三服务契约不一致表)+ **决策记录 D1~D7** + 可勾选执行清单 → `子系统设计/网络Socket监听生命周期设计说明.md` §7~§9;现象与回归见 `问题记录/CH395F_Trap_Records.md` B10 行 | - -**存储 / 日志管线** - -| # | 事项 | 发现 | 证据与现状 | 出处 | -|---|---|---|---|---| -| S-3 | **USART1 TX-only 结构根治(灭 ORE 僵尸机制)**——ORE 锁存在外设软复位后毫秒级重锁(PA10 悬空 + RX 使能),是 2026-10-02 台架"背靠背 drain 拉长主循环 → 喂狗节奏饥饿 → IWDG 误复位"的**机制根源**。现仅有缓解(单次 drain 250ms 预算 + 发送故障后 300ms 冷却),**未根治** | 2026-10-02(台架 gen-288) | **待办**:改 `.ioc` 令 USART1 为 TX-only → CubeMX 重生成 → 跑 `scripts/check_cubemx_survival.py`。结构性改动,需单开一轮并复跑台架闭环 | `子系统设计/控制台单写者日志设计说明.md` §12(含 O4) | -| S-4 | **dhara 重试自旋残留**——`try_recover()` 的 `DHARA_MAX_RETRIES`(8) 自旋在坏块密集时仍可能长时间占用 defaultTask(喂狗点) | 2026-10-02 | 低优先:现有 `vol_lock` + 喂狗节奏缓解;若台架再出"存储侧喂狗饥饿"再排期 | `Lib/dhara/map.c` | -| S-5 | **可选全序列卷锁**——现卷锁仅覆盖 `syslog` / `cfg` / `lftpd` 三条路径(`vol_lock_wait(0)` try 语义),其它潜在访问点(如 UI 读日志)未纳入 | 2026-10-02 | 待评估:先确认是否真有第二写者;无则关闭本项 | `App/fs/vol_lock.{c,h}` | - -**硬件(V0.1 缺陷 → V0.2 改版项)** - -| # | 事项 | 发现 | 证据与现状 | 出处 | -|---|---|---|---|---| -| N-18 | **8 路电气量分属两片转换器(V0.1 硬件缺陷,需下一版硬件修改)**——UA/UN/IA 走 TPAFE5160(16 位、8 通道同步、±5 V 双极性),UB/UC/IB/IC/IN 走 STM32 ADC(12 位、顺序扫描、0~3.3 V 单极性):① 两片转换器无共同采样触发 + STM32 侧顺序扫描(9 通道一轮 ≈ 67 µs)→ 跨转换器通道**无同一时刻性、相位关系不确定**,主板侧功率/功率因数/相角/对称分量类运算不成立;② 同族电气量精度与量程不一致(LSB ≈ 152.6 µV vs ≈ 806 µV,且 STM32 侧前端无中点偏置、负半周削顶);③ 语义与硬件归属交叉,固件映射/UI 通道序/自检注入须逐通道查表绕开 | 2026-10-10 定性更正(**撤销** 2026-10-09 建档时"有意分配、不要修正"的说法) | **V0.2 改版要求**:8 路电气量 UA/UB/UC/UN/IA/IB/IC/IN **全部接 TPAFE5160**,与 TPAFE 上 5 路备用路(AIN5/13/7/15/12)对调串联电阻在转换器一侧的目的地——元件数量与料号不变,属走线级改动。**V0.1 现板软件口径**:主板侧只做逐通道独立监视,禁止跨转换器做相位/功率/功率因数/矢量类运算(此类量取子板计量模块结果)。固件侧消费者已落地(B1,2026-10-10,按语义映射表取数)→ V0.2 改版只改映射表内容,上层语义与代码不动 | `硬件平台/ADC通道映射说明.md` §1/§7;`硬件平台/V0.1_网表详细分析报告.md` §1.4 V10、§6-3 | - -**测试与验证基础设施** - -| # | 事项 | 优先级 | 问题与证据 | 处置方向 | 出处 | -|---|---|---|---|---|---| -| T-7 | **CI runner 未就绪(部署前置)** | 中 | `.gitea/workflows/ci.yml` 已落地,但 CI 仅在 runner 就绪后才真正生效:① Gitea 实例 `[actions] ENABLED = true`;② 注册 Windows runner(labels 含 `windows`),装 Python 3.x / cppcheck / pre-commit / MSVC;③ runner 就绪后**推送远端跑一次两 job 闭环验证**(当前 21 个提交未推送,CI 从未真实执行);④ **第二机交叉验证**(不同工具安装路径,验 `DTU_*` 环境变量方案,→ `环境与部署/本地工具路径环境变量方案.md` 变更记录 TODO) | runner 未就绪前,**提交前仍须在本地跑 `scripts/ci_local.py` 或 `pre-commit run --all-files` 自查**(L0 唯一保障,不能因"已配 CI"而放宽) | `.gitea/workflows/ci.yml`;`测试说明/测试开发标准流程.md` §9 | - -**审查报告并轨(2026-10-11;⚠ 报告编号与本登记簿同名不同义,出处列保留报告编号,引用一律带文档名)** - -| # | 事项 | 影响 / 现状 | 处置方向 | 波次 | 出处 | -|---|---|---|---|---|---| -| N-20 | `Error_Handler` 仍 `__disable_irq(); while(1){}`(`Src/main.c:274-282`) | 一处初始化失败 = 整机挂死(只剩 IWDG 兜底),无自检日志 | 统一降级策略:记自检 + 禁用该子系统 + 其余照常 | W4 | 报告 N-03c | -| N-21 | **dhara 两处**:`dhara_nand_is_free()` 只查页首 64 B;`dhara_nand_copy()` 不处理 `DHARA_NO_PAGE` 哨兵 | 映射恢复误判 → **数据丢失风险**(低概率、后果重);哨兵页号被当真实页 → 未定义行为;至今只能靠人工读代码发现 | 整页(或首/中/尾)扫描 + 返回 `DHARA_E_UNSUPPORTED`;**必须配主机侧移植层单测**(一并补报告"覆盖率"缺口) | **W2** | 报告 N-12/N-13 + §7 | -| N-22 | 写回缓存无空闲/掉电强制 flush(整页写与换页已 flush) | 写回窗口内掉电丢最近日志/配置写 | defaultTask 空闲 N ms flush | W4 | 报告 N-14 | -| N-23 残余 | **钩子已落地**(2026-10-12 `registration-check` 挂 pre-commit,存量缺口走 `KNOWN_GAPS` 白名单只 WARN);**残余** = 白名单清理:`rs485_task.c`(随 B2 暂缓一并处置:删除或注册)、`lftpd_log.c`;`app_cfg.h` 未接线开关(C5) | 白名单不清 = "写了不编译"盲区仍在 | 逐项清白名单(`--strict` 供审计复跑);开关随 C5 处置 | W4(C5) | 报告 N-06 残余 + 报告 S-3 | -| N-24 | 日志每条 `f_open+f_write+f_close`(`sys_log_mcu.c:123-140`) | 每条日志 2–4 次 NAND 页读写;UI 翻记录逐条 open/seek/close | 与 C3 日志管线合并评估(现仅 `FIL` static 化省 528 B 栈) | W4 | 报告 N-16(**≠ 本登记簿 N-16**) | -| N-25 | 性能/资源建议簇:PASV 每次新建监听;`NET_RECV_TIMEOUT_MS 30000`;PHY 强制 100M 无自协商回退;`NET_MAX_SOCKETS 8` 与单连接语义不符;`HAL_Delay(1)` 阻塞 DE(**DE 项随 B2 暂缓,§2.4**) | 次级性能/语义一致性 | 逐项见 `docs/问题记录/项目审查与优化建议报告.md` §4.2/§4.5/§4.7,随窗口评估 | W4 | 报告 N-09/P2-8/PHY/P3-x/rs485 | -| N-26 | NAND 直 DMA 调用方缓冲(已加运行时守卫,阈值 1024) | CCM 缓冲被 DMA = 静默传错(与 ADC DMA 不可达 CCM 同类坑) | 补编译期/启动期地址断言 + **新铁律:堆缓冲不可被 DMA 直接寻址** | W4 | 报告 N-11 | -| N-27 | **内存优化簇**:LVGL 池 + UI 两份缓冲 54,146 B 仍在 SRAM1,CCM 只剩 ≈8,160 B(2026-10-12 B5 堆扩容 48→56 KB 后) | R-2 后半段(迁 CCM)被堵死 → 后续功能预算看不清 | **三件套 ✅ 2026-10-12 落地**(`ram_baseline.py` 四模式 + `ram_baseline.tsv` 趋势 + `docs/内存管理/RAM预算台账.md` + `mem-budget` 钩子 92% 门禁)→ **W3** 再做 R-9(`LV_MEM_SIZE` 40→16 KB,池水位门禁数据已具备)→ R-2 后半;R-3/R-4/R-5/R-6 逐项评估(R-6 前置已满足) | **W3** | 报告 R-2 剩余/R-3~R-6/R-9/§5.5 | -| N-28 | Flash 死代码评估簇:剩余 ≈10 KB(`box_shadow` 3,246 / `draw_sw_img` 2,960 / `bin_decoder` 1,972 / `image_decoder` 952 / `triangle` 930)+ 双精度 `dadd` 等 ≈1 KB;uvprojx 仍挂 201 个空 LVGL TU(F-1/F-2/F-3 已闭环,省的是编译时长) | 编译时长 + 文档噪音 | 逐项实测再关;⚠ `mask`/`mask_rect`/`grad` 是文字与矩形绘制必经路径,**不可盲关** | W4 | 报告 F-4/F-5/F-6 | -| N-29 | **仓库膨胀**:`.git` 149 MB + 图片 36.3 MB | clone/备份慢,且持续恶化 | 降采样 / 拆 submodule / LFS 三选一 **+ 一次 `git filter-repo` 历史重写**。**已决策(2026-10-11):暂不处理、登记观察**——推送/协作前重评(届时未推送提交更少、重写代价最低) | **W7** | 报告 D-1 | -| U 簇 | UI 标准化:无令牌层/组件库/页注册表(手写 `case` 仍在),**27 页**未落地;golden 未挂 pre-commit、字符集差集检查仍是约定 | 新增一页成本仍是 8 处手工改动 | 按 `docs/问题记录/项目审查与优化建议报告.md` §6.5:U4 残余(两脚本入门禁,可逢窗口顺带)→ U1 令牌层 → U2/U3 → 页面落地;U4 golden 可直接当 U1 验收工具。**已确认(2026-10-11):本轮不排期**,等功能主线出结果后按产品需求启动 | W6 | 报告 U1~U5 | - -### 3.3 测试与架构改进专项(S1x / A-x) - -> **编号约定**:**S1~S14 / T-1~T-5 / A-1~A-7** 是 2026-10-02 版复审的**条目编号**——编号**不随条目删除而回收**; -> 其他文档若引用这些编号,其证据见对应模块文档与 `git log`。已完成事项的证据沉淀: -> `测试说明/系统时钟单元测试说明.md`(S1-a)、`测试说明/配置文件单元测试说明.md`(S1-b)、 -> `测试说明/测试开发标准流程.md` §4.2.1(L0.5 适格台账)、`测试说明/模拟器差距清单.md`(S13)、 -> `测试说明/实机测试实施指南.md`(S4/S5/S7/S9/S11)、`问题记录/GD5F2GQ5UE_Trap_Records.md`(S9)。 - -**未闭环一览** - -| 编号 | 事项 | 状态 | 详述 | -|---|---|---|---| -| **S12** | 模块级轻量断言宏 | ⬜ 待做(第 4 波按需) | 3.3.1 | -| **S1-c** | `sys_log` / `time_sync` 主机侧单测 | ⬜ 可选(价值递减) | 3.3.2 | -| **A-4** | ADC / RS485 采集链路的**测试可验证性约束** | ⏸ ADC 侧随 B1 闭环;**RS485 侧随 B2 暂缓(§2.4)** | 3.3.3 | -| **A-5 残余** | CI 体积门禁盲区(`mem-numbers` 在 CI 被跳过) | ⬜ 未消除 | 3.3.4 | - -#### 3.3.1 S12:模块级轻量断言宏 ⬜ - -**动机**:`configASSERT` 只覆盖 FreeRTOS 内部;自研代码的"不该发生"靠散落的 `if`。 - -**设计要点**(**必须零生产开销**): - -```c -/* App/util/app_assert.h —— 示意,非最终实现 */ -#ifdef APP_ASSERT_ENABLE - #define APP_ASSERT(cond) do { if (!(cond)) { \ - DBG_ERROR("[ASSERT] %s:%d", __FILE__, __LINE__); vApplicationAssertFailed(__FILE__, __LINE__); } \ - } while (0) -#else - #define APP_ASSERT(cond) ((void)0) /* 生产构建:编译期消失,零符号零开销 */ -#endif -``` - -**⚠️ 关键纪律**: -- **不得**在中断 / 高频路径使用(`DBG_ERROR` 有代价); -- **不得**替代正常的错误返回(断言是"内部不变量",不是"外部输入校验"); -- 生产构建 `APP_ASSERT_ENABLE` **关闭**——与 `ENABLE_DESTRUCTIVE_TESTS` 同级策略。 - -**建议先在 1~2 处试点**(如 `net_socket.c` 的状态机不变量),验证收益后再推广。 - -**完成判据**:宏存在 + 生产构建 `@build` 0/0 且 `.map` 无新增符号;试点处有实际使用。 - -#### 3.3.2 S1-c(可选):`sys_log` / `time_sync` 主机侧单测 ⬜ - -**范围**:`App/log/sys_log_mcu.c`(定长 64B 记录编解码;落盘部分需桩)、 -`App/sync/time_sync.c`(协议帧编解码;与网络耦合,需先判定可解耦面)。 - -**为何低优先**:两者边界密度低于 `sys_clock` / `cfg_file`,且已有真机路径覆盖 -(`@test` 标记 / `time_sync_server.py`)。**按剩余收益评估后再决定是否做**, -范式完全复用 `看门狗单元测试说明.md`。 - -**完成判据**:`test/host/<模块>/run_unit_test.py` 退出码 0 + 挂 pre-commit 钩子。 - -#### 3.3.3 A-4:ADC / RS485 采集链路的测试可验证性约束 ⏸ - -**背景**:`adc_task.c` 已实现(B1,2026-10-10),`rs485_task.c` 仍是空桩,`App/protocol/` 只有 README 与 `.gitkeep`。 -本项不是"缺陷",而是**对上游 B2 的设计约束**(B1 已完成;**B2 暂缓中,§2.4——重启 B2 动手前必须先落实本约束**,否则后续无法补测)。 - -**约束**(建议纳入 B2 设计): - -1. **协议解析必须与硬件 I/O 分离**——`App/protocol/` 的解析函数应接受 - `(const uint8_t *buf, size_t len)` 并返回解析结果,使其成为 L0.5 的**天然适格对象** - (参考 `cfg_file` 的"核心 + 后端"模式); -2. **采集缓冲必须双缓冲 + 序号**(上游 E-49 / E-50)——否则消费者读到撕裂数据, - 且**撕裂在单测里测不出来**(时序相关),必须在设计上消除; -3. **DE 收尾必须有超时路径覆盖**(RS485 半双工特有陷阱)。 - -**完成判据**:B2 设计文档体现上述三条;协议解析函数有对应 L0.5 单测。(B1 侧:ADC 无协议解析面,其"同一时刻性"由 E-58 原子快照保证、已闭环。) - -#### 3.3.4 A-5 残余:CI 体积门禁盲区 ⬜ - -**现状**:`mem-numbers` 钩子**在 CI 上被跳过**(CI 无 `.map`)→ **CI 不守体积门禁**。 -S14 已在 workflow 显式提示"体积门禁未执行"(`::notice::`)并在 `CI配置指南.md` 声明, -但**盲区本身未消除**——看到 CI 全绿仍可能误以为体积也守住了。 - -**可选处置**: -- 让 runner 具备 Keil 后,在 CI 增 `@build` job(成本高,需授权与许可证); -- 或把"体积校验"固化为**提交前必跑的本地门禁**(`scripts/ci_local.py`,当前已是事实标准)。 - -**完成判据**:存在**强制的**体积校验路径(CI 侧或本地侧),且文档明确其边界。 - -> **注**:本项与栈预算是同一话题的两面——**具体栈风险(原 S-1)已于 2026-10-10 削链闭环** -> (核算见 `docs/内存管理/RAM使用分析与优化方案.md`),本项仍是**门禁缺口**。 - ---- - -## 4. 待确认(需手册/硬件/产品定义,暂不直接改码) - -1. TPAFE5160 是否有自动扫描模式(**已不影响**:1 kHz 硬件定时器触发已于 2026-10-10 由 **TIM3 更新中断**方案落地,不依赖自动扫描,见 `docs/子系统设计/ADC采样节拍设计说明.md`)。 -2. `APP_ADC_ENABLE` / `APP_RS485_ENABLE` 是否应在产品构建真实门控模块(当前宏已如实标注为"未接线占位",此处确认的是**是否接入真实门控**;B1 取数不依赖该宏。**RS-485 侧门控随 B2 暂缓,§2.4**)。 -3. RS-485 PD0 DE 的半双工方向语义需硬件实测确认(本次仅静态审查)——**随 B2 暂缓(§2.4)**。 - ---- - -## 5. 设计基线(供后续接入参考) - -### 5.1 pending 二期设计基线(ACCEPT + SEND) - -> **来源**:一期(RECV)架构现状见 `docs/网络/Net层阻塞模型架构设计.md`(含演进溯源附录); -> 本节仅保留**二期仍要用的设计基线**。 - -**一期已验证的机制骨架**(二期沿用,勿重新发明):独立静态 pending 表 + `net_pending_tick` -主循环节拍了结(五路:数据/到点/断连/同 fd 串行/重建取消必通知)+ 登记守卫(每 fd 至多一个、 -不覆盖、拒绝 netTask 自等待)+ 1s 看门狗强结算。 - -**二期扩展点**: - -| 项 | 目标 | 对应缺陷 | -|---|---|---| -| **ACCEPT pending** | accept 等待改为"登记 → CONNECT 事件完成",退役 100ms/200ms 轮询循环 | E-06(accept 轮询计时失真) | -| **SEND pending** | 发送续传改为"登记 → send_ready 完成",消除 1s/分片 stall 对队列的冻结 | E-02 残余(SEND 位置) | - -**二期门禁**(一期门禁的加强版): - -1. CH395F NET 层全套件(含一期未跑的 Phase 7 / Phase 10,视 RAM 预算); -2. L3/L5 基线重锁(一期已重锁 M3,二期须再锁); -3. `e02_probe.py` **探针族扩充**:close / reconfig / EOF / disconnect-during-pending 四专项; -4. `ftp_regression.py`(D20)+ E-06 假 425 场景**独立重跑**(一期是借 M3 压力档覆盖的); -5. UI 远端推流压力 + timeSync 三场景; -6. 产品 `@test` 闭环 + ST-LINK 全片回读; -7. `ram_report.py` / `stack_report.py` 前后对比(铁律); -8. 看门狗接 selftest 留痕 + 模拟器差距清单 +1(`net_socket_sim.c` 无法建模 pending)。 - -**已知代价(延续一期,需文档化)**:pending 完成判定随主循环节拍运行,被长操作占用时超时 -顺延(~1ms 级);二期把 SEND 也 pending 化后,该顺延面反而**收窄**。 - -**改动量估算**:再 ~300-500 行,集中在 `net_socket.c`;公开 API 不变。风险评级**中** -(执行器核心 + D 系列前科)——**大的是验证,不是代码**。 - -### 5.2 错误码通道四要素(CH395F 范式) - -> **来源**:`错误码传播审计.md`。GD5F 错误通道统一(E-10 / E-42 / E-53 / E-54 / E-56 / E-57) -> 即按此骨架落地(2026-10-03,套件回归 16/16 PASS)。**后续任何驱动 / 子系统建立错误通道时应沿用。** - -``` -① 分类:区分「超时 / 真故障 / 参数错」——不得混为一个返回码 -② 透传:底层错误码逐层上报,不吞不猜(禁 `(void)ret`) -③ 分级:可恢复(重试)/ 不可恢复(上报自检 + 降级)显式判定 -④ 留痕:不可恢复项写 syslog selftest,可恢复项计数并在 UI / 日志可见 -``` - -**关键纪律**(呼应 `AGENTS.md` 已有铁律):**自愈逻辑严禁把"名字 / 参数类错误码" -归入"卷损坏触发集"**——`.fschk` 无限重格式化事故即此类(2026-09-20)。 - ---- - -## 6. 诊断基线(供后续对照) - -> **2026-10-10 重采(栈)/ 2026-10-04 重采(堆)**:栈 = **运行时高水位 + armlink 静态最坏链双口径** -> (产品构建 `suite=NONE`,开机 + 空闲采样,串口 `[STACK]` + `stack_report.py`);静态区 = `.map` 受管快照。 -> 栈水位口径:2026-10-10 削链后 defaultTask 实测 **2152 B**、静态最坏链 **2776 B**,**未抬栈**即达标 -> (完整核算见 `docs/内存管理/RAM使用分析与优化方案.md`)。 - -| 项 | 当前值(栈:2026-10-10;其余:2026-10-04) | 出处 | -|---|---|---| -| 产品构建 Flash (ER_IROM1) | 266,632 B / 1024 KB(25.4%);ROM 合计 **267,372 B** | `.map` 受管快照 | -| 产品构建 RW_IRAM1 | **84,960 / 131,072 B(64.8%)** | `.map` 受管快照(`RAM使用分析与优化方案.md` §2.1) | -| 产品构建 RW_CCM | 49,184 / 65,280 B(75.3%) | 同上 | -| 实测堆 | free=8,664 / **min_ever=4,728 B** | V5 串口 `[STACK] heap` | -| **defaultTask 栈峰值** | **2152 / 4096(余 1944 B = 47%);静态最坏链 2776 B(余 32%)** | `[STACK]` + `stack_report.py`(产品构建) | -| netTask 栈峰值 | 920 / 3840(余 76%);静态 1872 B | 同上 | -| ftpTask 栈峰值 | 740 / 4096(余 81%);静态 1216 B | 同上 | -| uiTask 栈峰值 | 4016 / 16384(余 75%);静态 1336 B | 同上 | -| timeSyncTask 栈峰值 | 792 / 2048(余量 61%) | 同上 | -| adcTask 栈峰值(B1,2026-10-10 新建) | **496 / 2048**(余 1552 B / 75%,台架 `@test` 实测);静态最坏链 504 B | 台架 `@test` + `stack_report.py` | -| testTask 栈峰值(产品态空转) | 496 / 8192(余量 93%) | 同上 | -| 队列响应性(挂起客户端) | 92.5ms(pending 一期) | `e02_probe.py` | -| M3 压力档帧周期 | med 60.1 / p95 66.4 / max 69.3ms,零尖峰 | `链路延迟测试说明.md` | - ---- - -## 7. 内存预算(支撑 §6 与定栈规则) - -现行权威数据 = `docs/内存管理/RAM使用分析与优化方案.md` v1.2(2026-09-21,§2.1 受管快照): -任务栈在 CCM 堆(defaultTask 1024w / netTask 960w / ftpTask 1024w / testTask 2048w / uiTask 4096w / timeSyncTask 512w / **adcTask 512w**); -产品构建 RW_IRAM1 84,960/131,072 B(64.8%)+ RW_CCM 49,184/65,280 B(75.3%); -实测堆 `free=8,664 / min_ever=4,728` B;台账工具 `scripts/ram_report.py` + `scripts/stack_report.py`。 -**旧栈表/旧余量数字作废,勿引用。** - ---- - -## 8. 维护约定 - -- 本文件是**全项目唯一的未闭环事项登记簿**——"盘点 + 排序 + 明细"三合一,明细不再分散到多份文件。 -- **任一项完成后直接删除对应条目**(先销本文件条目,再清理其它文档对本编号的引用); - **不留变更记录**,历史见 `git log` 与各模块文档。 -- 已闭环条目的**结论与证据沉淀进模块文档**,本文件不再重复。 -- 编号一律**沿用且不回收**(P-x / N-x / S-x / T-x / S1x / A-x / B·C·D 前缀);`错误码传播审计.md` 的 E-xx 独立维护。 -- **引用审查报告编号一律带文档名**(报告 N-16 ≠ 登记簿 N-16、报告 S-3 ≠ 登记簿 S-3); - 报告并轨项用本登记簿新编号(N-19~N-29 + U 簇),出处列保留报告编号。 -- **§2 是全项目唯一的推进顺序权威**:`产品需求设计文档.md` §9.2 等只留指针,顺序变更只改 §2。 -- **暂缓块(§2.4)不是销项**:条目仍在簿,只是不占波次;重启或关闭时更新 §2.4 与 §1。 -- 功能主线(B4/B5)完成后重写 §1。 -- 新增发现按既有惯例分流:能立即修的进 §2(W4 C5);需排期的进 §3 对应编号空间;跨版本观察的进 §3.2(登记簿)。 -- 上游引用关系:`问题记录/项目审查与优化建议报告.md`(体系层评审)、`问题记录/错误码传播审计.md`(E-xx)、 - `测试说明/实机测试实施指南.md`(执行流程)——三者均不在本文件合并范围。 diff --git a/docs/文档规范.md b/docs/文档规范.md index c874e887..e74905d7 100644 --- a/docs/文档规范.md +++ b/docs/文档规范.md @@ -300,7 +300,7 @@ | 项目级铁律、构建/烧录/测试命令、平台约束 | `AGENTS.md`(AI 协作上下文,**精简优先**) | | 开发者入门、架构速览、目录导航 | `README.md` | | 详细设计、专项说明、测试指南 | `docs/` 下对应子目录 | -| 跨文档待办登记 | `docs/待处理内容.md`(统一登记簿) | +| 跨文档待办登记 | `docs/任务规划/README.md`(统一登记簿) | | 评审报告与专项审计 | `docs/问题记录/` | > **避免重复**:同一事实只在一处详述,其它位置用链接指向。典型如 FreeRTOS 任务表——`Src/freertos.c` 是唯一事实源,`README.md`/`AGENTS.md` 的表由脚本生成,不在别处再抄一份。 diff --git a/docs/测试说明/boot_log_data/README.md b/docs/测试说明/boot_log_data/README.md index 5c0c0cd6..ea5880cb 100644 --- a/docs/测试说明/boot_log_data/README.md +++ b/docs/测试说明/boot_log_data/README.md @@ -34,5 +34,5 @@ - 沉淀约定:`../测试开发标准流程.md` §7.3 - 栈水位探针与基线:`../../内存管理/RAM使用分析与优化方案.md` §0.2 / §0.6 -- 当前诊断基线:`../../待处理内容.md` §6 -- 本流程立项:原 `../../待处理内容.md` S-2(2026-09-22 提出;2026-10-05 固化为本节流程后销项) +- 当前诊断基线:`../../任务规划/基线与待确认.md` §3 +- 本流程立项:原 `../../任务规划/README.md` S-2(2026-09-22 提出;2026-10-05 固化为本节流程后销项) diff --git a/docs/测试说明/实机测试实施指南.md b/docs/测试说明/实机测试实施指南.md index 27fcae45..20d91808 100644 --- a/docs/测试说明/实机测试实施指南.md +++ b/docs/测试说明/实机测试实施指南.md @@ -5,7 +5,7 @@ > **已完成事项**(S7、A1~A4)的实施细节与证据**不在本文**,见对应模块文档(§10 状态与去向)。 > **前置铁律**:本文所有步骤**均在接上 MCU / 串口 / ST-LINK 之后**执行; > 无实机时**只读本文,不执行任何烧录**。 -> **上游**:`错误码传播审计.md`(E-xx)· `待处理内容.md`(统一登记簿:P-x / N·S·T-x / +> **上游**:`错误码传播审计.md`(E-xx)· `docs/任务规划/README.md`(统一登记簿:P-x / N·S·T-x / > S1x·A-x / 阶段排序 / 诊断基线)· > `子系统设计/看门狗设计说明.md`(§7 验证记录)。 > **约定**:本文事项完成后**先销上游登记**,再在文末变更记录留一行; @@ -101,7 +101,7 @@ > **2026-10-03 台架结论**(实施细节与证据见 `子系统设计/看门狗设计说明.md` 变更记录): > V2/V4/V5 三用例全部通过——V2(任务饿死)声明 stall 后 ≤2.5s `reset cause: IWDG`;V4(关中断死循环)每 ~4.9s 稳定 IWDG 复位(IWDG 独立于中断);V5(30 min 真实负载)**120/120 次 FTP 传输全 PASS、零 IWDG 复位**。 -> **遗留观察**:V5 期间 44 次 stall 声明 100% 与 `e02_probe` 探针的 time_sync 30s 掉线+监听重建重合;隔离实验(仅 FTP 120s)**0 次 stall** → 探针场景专属,非一般负载误杀(已登记 `待处理内容.md`)。 +> **遗留观察**:V5 期间 44 次 stall 声明 100% 与 `e02_probe` 探针的 time_sync 30s 掉线+监听重建重合;隔离实验(仅 FTP 120s)**0 次 stall** → 探针场景专属,非一般负载误杀(已登记 `docs/任务规划/登记簿.md`)。 > 来源:`子系统设计/看门狗设计说明.md` §7 验证记录(原实施步骤已并入该文档文末变更记录)。 > 判定状态机与 IWDG 配置(PR/RLR 按设计值写入)已落地并经真机验证(2026-10-02,`930215f`, @@ -191,7 +191,7 @@ $cli = if ($env:DTU_STLINK_CLI) { $env:DTU_STLINK_CLI } else { (Get-Command ST-L > **顺带修复(编排器缺陷,非本次代码引入)**:`run_all_suites.py` 原对所有套件统一 `--forbidden "HardFault;assert;[ERR]"`,而 GD5F 的 `TC-GD5F-704`(CCM 非 DMA 可达缓冲)会**预期**打出 `[ERR][NAND] RX DMA buffer not DMA-reachable ... fallback poll`(用例 PASS)→ GD5F 套件**永远被判 FAIL**(自 `2055de0` 起)。按 `verify_log.py` 的说明改为**按套件覆盖 `--forbidden`**(GD5F = `HardFault;assert`),修复后 PASS。 > **来源**:`错误码传播审计.md` 第二档 #1(E-10/E-42/E-53/E-54/E-56/E-57); -> `待处理内容.md` §5.2 四要素骨架(设计基线)。 +> `docs/任务规划/基线与待确认.md` §2.2 四要素骨架(设计基线)。 **现状证据**:`ch395f.c`(1330 行) 与 `gd5f2gq5ue.c`(1496 行) 是同代驱动,但**只有 CH395F** 形成了"分类 + 传播 + 审计"完整体系;GD5F 错误处理散落各函数,`Trap_Records` 仅 198 行。 @@ -249,7 +249,7 @@ $cli = if ($env:DTU_STLINK_CLI) { $env:DTU_STLINK_CLI } else { (Get-Command ST-L - **正常路径 ✅**:V5 长跑(30 min,FTP 512 KB 上/下传)**120/120 PASS、零 IWDG 复位**, 网络重建后的 FTP/time_sync 服务据代次号重建监听、功能正常(证据 `/tmp/v5_soak_serial_20261003.log`)。 - **负向路径(拔线/芯片级 `net_init` 失败)**受**台架拓扑**限制(CH395↔交换机, - 拔交换机侧线缆链路仍 UP;芯片级失败需 SPI 故障注入)→ 已登记 `待处理内容.md` **N-16** + 拔交换机侧线缆链路仍 UP;芯片级失败需 SPI 故障注入)→ 已登记 `docs/任务规划/登记簿.md` **N-16** (① PHY 拔线负向 ② A2 `net_init` 失败分支 ③ A4 短写压测),需专项窗口。 ### 7.2 N-2:49s 全系统日志静默复现与定位 · ✅ 判据②已满足 / 判据①未复现 @@ -424,7 +424,7 @@ CH395F / STORAGE / GD5F,未含 RTC;怀疑 RTC 构建下 `testTask` 不被创 | 2026-10-02 台架取证链(IWDG PR/RLR 错配 / dhara resume 回滚 / ORE 僵尸通道) | ✅ 已修 | `子系统设计/看门狗设计说明.md` 2026-10-02 变更记录 · `架构设计/STM32F4-Base存储架构说明.md` §5.4.1 · `子系统设计/控制台单写者日志设计说明.md` §12;提交 `930215f` | > **真机判定汇总**(2026-10-03,本机 MCU,新固件全闭环 `@test` PASS 7/7):A1 ✅ PASS(含配置持久化); -> A2/A3/A4 正常路径零回归;芯片级失败分支 / 短写 / 拔线负向场景记 `待处理内容.md` N-16,待专项台架窗口。 +> A2/A3/A4 正常路径零回归;芯片级失败分支 / 短写 / 拔线负向场景记 `docs/任务规划/登记簿.md` N-16,待专项台架窗口。 --- @@ -436,7 +436,7 @@ CH395F / STORAGE / GD5F,未含 RTC;怀疑 RTC 构建下 `testTask` 不被创 | V2/V4/V5 | `子系统设计/看门狗设计说明.md` §7 验证记录 | `子系统设计/看门狗设计说明.md` 变更记录(2026-10-03) | | S11 堆告警 | —(原复审项,已闭环 2026-10-03) | `内存管理/RAM使用分析与优化方案.md`(基线更新) | | S9 GD5F | `问题记录/错误码传播审计.md` 第二档 #1 | `问题记录/GD5F2GQ5UE_Trap_Records.md`、`测试说明/GD5F2GQ5UE_Test_Guide.md` | -| N-2 日志静默 | `待处理内容.md` N-2 | `问题记录/错误码传播审计.md` E-02 | +| N-2 日志静默 | `docs/任务规划/登记簿.md` N-2 | `问题记录/错误码传播审计.md` E-02 | | P1-8 网络重建 | —(原台账项,已闭环 2026-10-02) | `网络/Net层阻塞模型架构设计.md` | | S5/S4 | —(原复审项,已闭环 2026-10-03) | `测试说明/测试开发标准流程.md` | | 模拟器差距 | `测试说明/模拟器差距清单.md` §3 决策规则 | 本文为"需回真机"项的执行面 | diff --git a/docs/测试说明/时间同步单元测试说明.md b/docs/测试说明/时间同步单元测试说明.md index ac8a683d..c5fd3180 100644 --- a/docs/测试说明/时间同步单元测试说明.md +++ b/docs/测试说明/时间同步单元测试说明.md @@ -12,7 +12,7 @@ > [`看门狗单元测试说明.md`](看门狗单元测试说明.md)(喂狗位图判定状态机)、 > [`卷锁单元测试说明.md`](卷锁单元测试说明.md)(同批落地的姊妹篇)、 > [`../子系统设计/看门狗设计说明.md`](../子系统设计/看门狗设计说明.md)(`required_mask` / 抽样窗 / 长耗时白名单)、 -> [`../待处理内容.md`](../待处理内容.md)(**N-17** 登记条目)、 +> [`../任务规划/README.md`](../任务规划/README.md)(**N-17** 登记条目)、 > [`../问题记录/错误码传播审计.md`](../问题记录/错误码传播审计.md)(**E-02** 头阻塞) --- diff --git a/docs/测试说明/模拟器差距清单.md b/docs/测试说明/模拟器差距清单.md index 05f77ce4..ea85b38e 100644 --- a/docs/测试说明/模拟器差距清单.md +++ b/docs/测试说明/模拟器差距清单.md @@ -3,7 +3,7 @@ > **用途**:把散落在各子系统文档里的"模拟器无法建模 X"汇成**单一事实源**,回答一个关键问题—— > **模拟器回归通过 ≠ 真机通过,那么差在哪?差多少?哪些必须真机补测?** > **性质**:**登记册**(living document)。新增模拟器后端差异时必须在此登记一行,不得只写在别处。 -> **上游依据**:`待处理内容.md` §5.1(N-4 二期门禁)。 +> **上游依据**:`docs/任务规划/基线与待确认.md` §2.1(N-4 二期门禁)。 > **相关**:`UI设计/LVGL模拟器部署与使用说明.md`(部署与使用)、`simulator/README.md`(目录与架构)、 > `测试说明/测试开发标准流程.md`(L3 门禁在测试分层中的位置)。 diff --git a/docs/测试说明/测试开发标准流程.md b/docs/测试说明/测试开发标准流程.md index 644608e8..56bcf6b7 100644 --- a/docs/测试说明/测试开发标准流程.md +++ b/docs/测试说明/测试开发标准流程.md @@ -619,10 +619,10 @@ CI 只在 push / PR 时跑,且需 runner 就绪。**提交前自查、或 runn | 2026-10-02 | **S6**:`test/run_all_suites.py` 新增 **`--check-build`**(只编译不烧录,纯离机,不需要 MCU/串口/ST-LINK);新增 **§3.6.1** 说明其解决的问题(测试构建无独立门禁,2026-08~09 CH395F 套件实例)、判定语义与用法。**实测 4 套件全部 `BUILD_OK: 0 errors, 0 warnings`**(即 T-4 提到的"CH395F 不可编译"已修复) | | 2026-10-02 | **S1-b + S2**:新增 **§4.2.1「L0.5 适格模块台账」**(判据 + 模块状态表 + "两条实证":sys_clock / cfg_file 首测即各抓一处生产缺陷);§4.1 登记 `test/host/cfg_file/` 新单测。同步新增 [`配置文件单元测试说明.md`](配置文件单元测试说明.md)(含抓出的 `s_encode` 返回值误判 P0 缺陷记录) | | 2026-10-02 | **S3 + S14**:§9.1 第 2 条改正(原文"强制跑 `mem-numbers`"自相矛盾 → 改为"按 `.map` 有无自适应跳过")并加 🔴 门禁盲区声明;§9.2 补 S3 结果可见性(`Tee-Object` 落盘 + `$GITHUB_STEP_SUMMARY` + `::notice::` 汇总行,不用 `actions/upload-artifact`)。另:§4.1 登记 `test/host/sys_clock/` 新单测(S1-a) | -| 2026-10-01 | 新增 **§9 CI 持续集成(Gitea Actions,T-6)**:`.gitea/workflows/ci.yml`(`l0-gates` + `l05-host-unit-tests`,Windows runner);**L0 + L0.5 上 CI、L1/L2/L3 留本地**;刻意不跑 `@build`、`.map` 缺失时自适应跳过 `mem-numbers`;新增 `scripts/ci_local.py` 本地等价命令(§4.1 登记);§1 补 CI 说明;`docs/待处理内容.md` T-6 销项 | +| 2026-10-01 | 新增 **§9 CI 持续集成(Gitea Actions,T-6)**:`.gitea/workflows/ci.yml`(`l0-gates` + `l05-host-unit-tests`,Windows runner);**L0 + L0.5 上 CI、L1/L2/L3 留本地**;刻意不跑 `@build`、`.map` 缺失时自适应跳过 `mem-numbers`;新增 `scripts/ci_local.py` 本地等价命令(§4.1 登记);§1 补 CI 说明;`docs/任务规划/README.md` T-6 销项 | | 2026-10-01 | §3.6 新增 **`test/run_all_suites.py`** 多套件回归编排(`try/finally` 无条件还原套件开关;T-5);`test/README.md` 同步 | | 2026-10-01 | §3.2 断言宏改为**集中内核**:新增 `test/board/test_common.h`(`test_stats_t` + `TEST_CHECK_IMPL`/`TEST_REPORT_IMPL`),4 套件各自用一行宏绑定自身统计变量(T-4;零行为变化、零 RAM 增量、`@build` 0/0,四套件均 0/0 验证)。附 `test_common.h` 不 include `dbg_log.h` 的原因(`DBG_TAG` 冻结 → `#47-D`) | -| 2026-10-01 | 新增 §7.1 钩子 **`test-suite-switch`**(测试套件开关=产品构建,防测试固件静默提交)+ §3.1 铁律(跑完套件回归务必改回产品构建);依据 `docs/待处理内容.md` T-1(测试架构评审 P0)。同步更新 `../代码规范/pre-commit使用说明.md` §2.13 | +| 2026-10-01 | 新增 §7.1 钩子 **`test-suite-switch`**(测试套件开关=产品构建,防测试固件静默提交)+ §3.1 铁律(跑完套件回归务必改回产品构建);依据 `docs/任务规划/README.md` T-1(测试架构评审 P0)。同步更新 `../代码规范/pre-commit使用说明.md` §2.13 | | 2026-10-01 | §4.1/§4.2 更新:主机侧单测运行器统一走通用 harness `test/host/common/unit_test_harness.py`(T-3),模块运行器只做声明式配置;§6.2.1 新增套件汇总行校验(T-2) | | 2026-10-01 | §4.2 补 **L0.5 环境要求表**(MSVC `cl.exe` = 装了 VS 即有、与模拟器共用;Windows SDK;纯标准库 Python;缺失时退出码 2 且 pre-commit 钩子拦截)+ "不调 `vcvars64.bat`(`reg.exe` 受限)"原因说明;§4.1 工具清单标注该运行器需 VS。同步更新 `../环境与部署/项目部署环境要求.md`(§2.3 / §2.7 / 第 3、10 步 / 清单 / 下载表 / 速查表) | | 2026-09-15 | §3.4 更新:P1-6 修复落地(基础线程策略)——USER CODE 区冗余 netTask 创建删除 + `net_task_func` 入口 `ENABLE_HW_LAYER_TESTS` 自挂起守卫;"代码事实/设计约束"按修复后现状重写(硬件层模式中断断言恢复安全、NET 层/产品仍按"netTask 恒在轮询"设计);彻底方案(`.ioc` 移除)经评估未采用。同日构建验证发现两处**存量**测试固件缺陷(与 P1-6 无关,A/B 对照确证):① `net_test_task.c` `s_rx_buf` 使用先于声明 → NET 层配置自 2026-08(88160a5)起不可编译;② 128KB 静态 RAM 预算溢出(产品镜像 123.6KB,HW 全阶段固件超 8.7KB、NET 固件超 ~28KB)——已立 P1-9/P1-10 跟踪 | diff --git a/docs/测试说明/链路延迟测试说明.md b/docs/测试说明/链路延迟测试说明.md index a1a9a4ff..98e295a7 100644 --- a/docs/测试说明/链路延迟测试说明.md +++ b/docs/测试说明/链路延迟测试说明.md @@ -444,7 +444,7 @@ med 65.0ms/max 133.5ms(133.5 = 压力启动瞬态单帧);**L3 pending 化 ¹ L5 两行为 2026-09-22 上午分片时代(M2 B2 档)数值:L3 对 DONTWAIT 快速路径**逐位不变**(dispatch → `net_poll` → `get_recv_len` 读,无 readable 门控),pending tick 无 pending 时为纯指针读零 SPI -(µs 级)——机制上不影响 L5;M2 重验未在本轮执行(低风险,留待 Phase 13 下次窗口,见 `docs/待处理内容.md` N-3)。 +(µs 级)——机制上不影响 L5;M2 重验未在本轮执行(低风险,留待 Phase 13 下次窗口,见 `docs/任务规划/README.md` N-3)。 数据来源:L1/L2 = §6.1;L3/L5/L6/L7 = M2 B2 档(200ms、per-recv 日志已删)串口 `[LAT]` 行 (`m2_data/m2_quiet_r200.json`);L8/L9/L11 = **L3 pending 构建 2026-09-22 16:42/16:43 重锁** diff --git a/docs/环境与部署/CI配置指南.md b/docs/环境与部署/CI配置指南.md index 206d5bfb..bde1f0ea 100644 --- a/docs/环境与部署/CI配置指南.md +++ b/docs/环境与部署/CI配置指南.md @@ -358,7 +358,7 @@ github.com 会在 checkout 步骤卡住/失败。三种处置: - **钩子集变化**(`.pre-commit-config.yaml` 增删钩子):CI 自动跟随,无需改 workflow; - **`@build` / L1 / L2**:永远留在本地,不要往 CI 加(需 Keil 授权与真机); - **runner 长时间不可用**时:CI 只是"多一道网",**提交前的本地 `ci_local.py` 仍是 L0 的唯一保障**, - 不能因"已经配了 CI"放宽(见 `docs/待处理内容.md` 的部署前置警示块)。 + 不能因"已经配了 CI"放宽(见 `docs/任务规划/README.md` 的部署前置警示块)。 --- diff --git a/docs/环境与部署/并行任务工作树方案.md b/docs/环境与部署/并行任务工作树方案.md index ad97868b..224ef741 100644 --- a/docs/环境与部署/并行任务工作树方案.md +++ b/docs/环境与部署/并行任务工作树方案.md @@ -14,7 +14,7 @@ ## 1. 目的与范围 **要解决的问题**:多个任务同时推进时,若共用同一个工作目录,会互相踩——构建产物、日志目录、 -Python 环境、以及 `docs/待处理内容.md` 这类**全局唯一登记簿**都会被并发写坏。 +Python 环境、以及 `docs/任务规划/` 这类**全局唯一登记簿**都会被并发写坏。 **做法**:每个任务一棵 `git worktree` + 一条任务分支,任务之间物理隔离;干完由固定命令合回主干。 @@ -104,7 +104,7 @@ D:/Code/DTU Code/ | -------- | ---------------------------------------------------------------------------------------------------- | | 集成分支(主干) | `v2-on-ui` | | 任务分支 | `task/-`,从主干当前 HEAD 切出 | -| `` | **沿用 `docs/待处理内容.md` 的编号空间**(`P0-x`/`N-x`/`S-x`/`T-x`/`B-x`/`C-x`/`D-x`);无对应条目的临时任务用 `X-<日期>-` | +| `` | **沿用 `docs/任务规划/README.md` 的编号空间**(`P0-x`/`N-x`/`S-x`/`T-x`/`B-x`/`C-x`/`D-x`);无对应条目的临时任务用 `X-<日期>-` | | 合并方式 | `git merge --no-ff` 合入主干 | | 并发上限 | **同时最多 3 棵工作树** | @@ -142,7 +142,7 @@ D:/Code/DTU Code/ | 文件 | 冲突原因 | 回收时的处理 | | ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -| `docs/待处理内容.md` | 全项目唯一登记簿,每个任务都要销项 | 由主工作树统一改,任务分支不碰 | +| `docs/任务规划/`(整个文件夹) | 全项目唯一登记簿,每个任务都要销项 | 由主工作树统一改,任务分支不碰 | | `AGENTS.md`、`docs/README.md`(索引/登记类) | 每个任务都要在「按主题查哪份文档」表、`docs/README.md` §9.2 环境表、变更记录里**各加一行** → 两任务必冲突(2026-10-12 实测:主工作树里本任务的行与他任务的行已并排混在**同一 hunk**) | 由主工作树统一追加;提交时**只 `git add` 本任务的行**(`git apply --cached` 选择性入库),勿整文件 `git add` | | `AGENTS.md` 的 `TASK_TABLE` 块 | 生成物,两个任务都抬栈就冲突 | 合并后重跑 `scripts/gen_task_table.py` **重新生成**,不手工并 | | `MDK-ARM/STM32F407-Demo.uvprojx` | 新源文件注册 + UV4 自动改写 | 手工并 `` 条目 → 重跑 `registration-check` → `@build` | @@ -199,6 +199,29 @@ D:/Code/DTU Code/ > 结论:任务期真正可并行的只有**编码与静态门禁**(`ci_local.py` 的 L0 / L0.5,纯软件、零硬件); > `@build` 与烧录/台架都必须排队。 +### 7.3 并行道与写范围规则(规划层 ↔ 执行层映射) + +规划层(登记簿 `docs/任务规划/W1-采集保护收尾.md`,任务卡五字段 = **DoD / 硬依赖 / 资源 / 写范围 / 状态**) +按**资源属性**把任务切进三条道,本方案(工作树 + 锁)是它的执行层: + +| 道 | 资源 | 并行性 | 锁 / 机制 | +|---|---|---|---| +| **台架道** | COM6 / ST-LINK / 设备(§7.1) | **串行**——约束资源,**永不空转**(约束优先,TOC):代码道在跑时必须为下一个台架任务备料 | `bench.lock` | +| **代码道** | CPU / 源码 | **并行**——worktree 独立空间;前提 = 写范围互不相交 + 强门禁(31 钩子 `ci_local`,同 Linux 内核子系统树并行而能合回的逻辑,见 `docs.kernel.org/process/2.Process.html` 的 subsystem tree 模型) | 无锁;分支 ≤2 天、绿即合(trunk-based 短分支) | +| **外部窗口** | 标准源 / 第三方主站等外部设备 | **Fixed Date 类**(Kanban 服务分类):窗口一到全道让路;窗口前 2 日特性冻结(只修稳定,Zephyr RC 语义 → `docs.zephyrproject.org/latest/project/release_process.html`) | `bench.lock` + 外部预约 | + +**四条规则**: + +1. **WIP ≤ 2**:每道最多 1 个进行中(典型 = 台架道 1 + 代码道 1),先完再开——登记簿需可见 + `⬜ 未开始 / 🟦 进行中` 两态,销项仍删行。 +2. **写范围相交 = 声明合并次序**:任务卡必须写写范围(目录级);相交不排队等待,而是**声明谁先合** + (后合者在主工作树 rebase 后继续),claim 时定。 +3. **分支存活 ≤2 天、绿即合**:合并走 `done` 预演(§6.3);单写者文档(§6.1)仍由主工作树统一处理。 +4. **里程碑不拖延、功能顺延下一轮**(时间驱动):里程碑的退出判据写在登记簿,判据不满足则该**功能** + 移入下一波次,里程碑本身按判据改期而非无限等待。 + +> 登记簿是规划层唯一权威(§2 铁律不变);本节只定义执行层映射,**不在本文排任务顺序**。 + --- ## 8. SKILL 设计 @@ -371,4 +394,4 @@ docs\内存管理\RAM使用分析与优化方案.md:585 [路径引用] docs/内 | 自动化测试与台架流程 | `docs/测试说明/自动化测试流程.md` | | 文档写作规范(编码/链接/登记) | `docs/文档规范.md` | | 工具路径环境变量(换机) | `docs/环境与部署/本地工具路径环境变量方案.md` | -| 待办与排序登记簿 | `docs/待处理内容.md` | +| 待办与排序登记簿 | `docs/任务规划/README.md` | diff --git a/docs/环境与部署/项目部署环境要求.md b/docs/环境与部署/项目部署环境要求.md index 77b0c77c..0b2dab5d 100644 --- a/docs/环境与部署/项目部署环境要求.md +++ b/docs/环境与部署/项目部署环境要求.md @@ -532,7 +532,7 @@ $env:DTU_KEIL_UV4 = 'D:\NotExist\UV4.exe' # 仅当前会话,不动用户级 | 开关 | 位置 | 当前值 | 说明 | |---|---|---|---| -| `APP_NET_ENABLE` / `APP_ADC_ENABLE` / `APP_RS485_ENABLE` | `App/app/app_cfg.h` | 全定义 | **未接线占位,不门控任何代码**(P2-12,2026-10-04 核实):三个宏全库零消费点,各模块一律编译进产品;"能否裁剪"取决于产品定义(待处理内容.md §2 阶段 B0),落定后再接入真实门控。**不要把它们当开关** | +| `APP_NET_ENABLE` / `APP_ADC_ENABLE` / `APP_RS485_ENABLE` | `App/app/app_cfg.h` | 全定义 | **未接线占位,不门控任何代码**(P2-12,2026-10-04 核实):三个宏全库零消费点,各模块一律编译进产品;"能否裁剪"取决于产品定义(docs/任务规划/README.md §2 阶段 B0),落定后再接入真实门控。**不要把它们当开关** | | `TEST_SUITE_*` | `test/board/test_config.h` | 全注释(产品构建) | 测试套件**互斥**:一次构建只开一个(CH395F / 存储 / GD5F / RTC);全注释 = 正常产品固件 | --- diff --git a/docs/算法/继电保护功能复现规划.md b/docs/算法/继电保护功能复现规划.md index 2841fda2..e0b66781 100644 --- a/docs/算法/继电保护功能复现规划.md +++ b/docs/算法/继电保护功能复现规划.md @@ -3,7 +3,7 @@ > **定位**:把参考系统(CLS100 DTU 保护测控装置)的**继电保护链路**在本项目(STM32F4-Base DTU 平台)上分层复现的**总规划**——给出要实现的功能、性能指标、定值参数、平台适配口径与分阶段路线图。 > **参考来源**:`D:\Code\DTU\参考资料\huaiyuan\huaiyuan\Scatter_P_HV03.01_SV01.01\项目分析文档\04-算法与采样专题\ADC采集至数据使用全流程详解`(同专题另有《项目详细分析-交流采样与有效值计算》《傅氏算法详解》《项目详细分析-阶段6-继电器保护单元分析》)。 > **阅读前提**:先读 `docs/算法/傅氏算法详解.md`(算法原理)与 `docs/硬件平台/ADC通道映射说明.md`(采样通道权威口径)。 -> **相关文档**:`docs/产品需求/产品需求设计文档.md`、`docs/待处理内容.md`、`docs/内存管理/RAM使用分析与优化方案.md`。 +> **相关文档**:`docs/产品需求/产品需求设计文档.md`、`docs/任务规划/README.md`、`docs/内存管理/RAM使用分析与优化方案.md`。 > **状态**:**P0 采样与相量底座已台架闭环(2026-10-11)**——L1 采集链路(B1,2026-10-10)、L1-6 采样有效性校验与 L2 相量层(`sample_ring` + `phasor`,57 项主机单测 + 台架 `@test` 含 `phasor(first)/phasor(hb)` 标记闭环)均已落地;**P1/P2 保护元件与定值模型软件侧完成(2026-10-11,`prot_set` + `prot_elm`,57 项主机单测)**;**B5 板端接线完成(2026-10-12)**——`protectTask`(20 ms 判据节拍 + L5-4 采样故障闭锁 + L5-1 定值校验和巡检,IWDG `TASK_WD_PROTECT` bit8,栈 512 words 静态链 872 B / 余 57%),判据结果经 B4 IEC104 遥信(YX15~23/31)上送;**出口记录(L4)与标准源注入验收为下一步**(见 §7)。 --- @@ -540,7 +540,7 @@ B0 产品定义 ✅(2026-10-10 已确认,见 §1.5) | R5 | **STM32 侧无中点偏置** | 交流量负半周削顶,无法算 RMS | V0.1 只做监视;V0.2 补偏置 | | R6 | **栈预算** | 新任务栈溢出 | 建任务前后跑 `scripts/stack_report.py`;纳入看门狗 | | R7 | **出口硬件未确认** | 跳闸出口无法验证 | 确认出口继电器/回读电路;无硬件时先做逻辑级验证 | -| R8 | **TPAFE 自动扫描模式未知** | 影响采样实现方式 | 查手册确认(登记簿 §4 待确认项) | +| R8 | **TPAFE 自动扫描模式未知** | 影响采样实现方式 | 查手册确认(`docs/任务规划/基线与待确认.md` §1 待确认项) | --- diff --git a/docs/网络/Net层阻塞模型架构设计.md b/docs/网络/Net层阻塞模型架构设计.md index ed95d301..e181ed8a 100644 --- a/docs/网络/Net层阻塞模型架构设计.md +++ b/docs/网络/Net层阻塞模型架构设计.md @@ -9,7 +9,7 @@ > `docs/网络/BSD_Socket_API_使用指南.md`(应用视角 API 语义)、 > `docs/网络/BSD_Socket_API_函数调用关系.md`(调用链与执行域)、 > `docs/测试说明/链路延迟测试说明.md`(延迟基线与故障对照)、 -> `docs/待处理内容.md` §5.1(二期 ACCEPT/SEND 扩展设计) +> `docs/任务规划/基线与待确认.md` §2.1(二期 ACCEPT/SEND 扩展设计) --- @@ -147,7 +147,7 @@ CONNECT → ESTABLISHED 是合法迁移,推断取消会误杀正在建链的 | **模拟器不可建模** | `net_socket_sim.c` 单线程 Winsock 无法复现挂起模型 | 该路径在模拟器上零覆盖,只能硬件验证 | **二期扩展设计**(ACCEPT / SEND 的挂起化、门禁清单、改动量)见 -`docs/待处理内容.md` §5.1。 +`docs/任务规划/基线与待确认.md` §2.1。 --- @@ -208,7 +208,7 @@ CONNECT → ESTABLISHED 是合法迁移,推断取消会误杀正在建链的 - 看门狗接 selftest 留痕 → 二期; - 模拟器差距 +1(`net_socket_sim.c` 无法建模挂起)→ 二期更新清单; - 台架期间另发现一次 49s 全系统日志静默(defaultTask/NAND syslog 排空停滞,net 栈照常工作) - ——既有存储侧现象,与本层无关,见 `docs/待处理内容.md` N-2。 + ——既有存储侧现象,与本层无关,见 `docs/任务规划/README.md` N-2。 ## 附录 B:修订记录 diff --git a/docs/问题记录/CH395F_Trap_Records.md b/docs/问题记录/CH395F_Trap_Records.md index 1a04899f..476d0853 100644 --- a/docs/问题记录/CH395F_Trap_Records.md +++ b/docs/问题记录/CH395F_Trap_Records.md @@ -654,7 +654,7 @@ NET 层 TCP Client(阶段 7)`net_connect()` 返回 0,但 `net_poll()` 报 自愈实测计数(整轮会话):`chip closed -> disconnect` **12** 次、`connection completed w/o CONNECT irq -> accept` **1** 次、`listen lost -> relisten` **1** 次——三类失同步均真实出现并被自愈;`relisten give up` 0 次。 ### 对应文件 -`Drivers/BSP/NET/net_socket.c`(`net_reconcile_tick` / `handle_disconnect_event` LISTENING 分支);`MDK-ARM/tcp_reconnect_probe.py`(可信用例);`docs/待处理内容.md` N-6(✅ 已销项,2026-09-26 清理)。 +`Drivers/BSP/NET/net_socket.c`(`net_reconcile_tick` / `handle_disconnect_event` LISTENING 分支);`MDK-ARM/tcp_reconnect_probe.py`(可信用例);`docs/任务规划/README.md` N-6(✅ 已销项,2026-09-26 清理)。 ### 发现时间 2026-09-22(台架偶发 1/1)→ 2026-09-23(生产固件确定性复现 + 当日修复闭环)。 diff --git a/docs/问题记录/错误码传播审计.md b/docs/问题记录/错误码传播审计.md index ec32126a..f098233a 100644 --- a/docs/问题记录/错误码传播审计.md +++ b/docs/问题记录/错误码传播审计.md @@ -10,7 +10,7 @@ > **本版**:2026-09-25 重写 —— ① 已闭环项从正文移除,只在 §2 留一行索引;② 全部未闭环项 > **逐项回到当前代码复核**;③ 新增本轮复核发现。 > **代码基线**:`v2-on-ui` @ `9a8255f`(2026-09-24),复核日期 2026-09-25 -> **配套文档**:`docs/待处理内容.md`(N-2/N-4 登记项)、`docs/网络/Net层阻塞模型架构设计.md`(E-02 架构现状)、 +> **配套文档**:`docs/任务规划/README.md`(N-2/N-4 登记项)、`docs/网络/Net层阻塞模型架构设计.md`(E-02 架构现状)、 > `docs/问题记录/*_Trap_Records.md`(模块陷阱史)、`AGENTS.md`(已固化铁律) --- @@ -196,7 +196,7 @@ E-57(`int` / `int32_t` 混用)、**E-10 / E-42 / E-56(GD5F init / BBT / ra - **验证**:构建 0 错误 0 警告;cppcheck(warning/performance/portability)无告警; `git diff --check` 无空白问题;编码无 `U+FFFD` 且 BOM 状态与原文一致 - **代码代价**:BSS +64 B(8×(4+4)) -- **登记**:`docs/待处理内容.md` N-5(✅ 已销项,2026-09-26 清理) +- **登记**:`docs/任务规划/README.md` N-5(✅ 已销项,2026-09-26 清理) - **残留**:`net_recv_to` 继续用返回码 `-2` 表达超时(不依赖 errno),保持既有正确做法 --- diff --git a/docs/问题记录/项目审查与优化建议报告.md b/docs/问题记录/项目审查与优化建议报告.md index 35f7b0bc..4b114413 100644 --- a/docs/问题记录/项目审查与优化建议报告.md +++ b/docs/问题记录/项目审查与优化建议报告.md @@ -11,7 +11,7 @@ | 审查方式 | 静态审查 + 链接图(.map)量化分析 + 构建脚本/门禁核对;**未做上机动态验证**(除特别标注外) | | 目标 | 结构合理性、文档分布合理性、模块设计合理性、改进路线图、内存优化、UI 标准化 | -> **与既有文档的关系**:本报告不重复 `docs/待处理内容.md`(逐条缺陷台账)与 `docs/内存管理/RAM使用分析与优化方案.md`(内存专项方案),而是做**体系层评审 + 量化补强 + 新增发现**。新增发现统一编号 `N-xx`,已在台账中的条目按 `P1-x/P2-x/P3-x` 引用。 +> **与既有文档的关系**:本报告不重复 `docs/任务规划/README.md`(逐条缺陷台账)与 `docs/内存管理/RAM使用分析与优化方案.md`(内存专项方案),而是做**体系层评审 + 量化补强 + 新增发现**。新增发现统一编号 `N-xx`,已在台账中的条目按 `P1-x/P2-x/P3-x` 引用。 > > **销项约定(2026-10-11 起)**:本报告采用与登记簿相同的**「修复即销项」**——问题修复后其分析正文与表格行**从本报告删除**,完整记录沉淀到对应模块文档(去处清单见文末**变更记录**)。因此本报告**只呈现未闭环问题**,不再随时间膨胀。 @@ -36,7 +36,7 @@ | # | 编号 | 问题 | 影响 | 现状 | |---|------|------|------|------| -| 1 | **N-02** | `lftpd.c cmd_pass` 对任意口令无条件回 `230`(现 `:375-379`;`cmd_user :553-557` 同) | 局域网内任意主机可读写 `/config.ini`(含 IP/MAC/网关)→ 可远程断网;单连接 CH395F 上还可挤掉 UI/对时服务 | ❌ 一行未改;⚠ 且**不在 `../待处理内容.md` 登记簿内** → 建议补登 | +| 1 | **N-02** | `lftpd.c cmd_pass` 对任意口令无条件回 `230`(现 `:375-379`;`cmd_user :553-557` 同) | 局域网内任意主机可读写 `/config.ini`(含 IP/MAC/网关)→ 可远程断网;单连接 CH395F 上还可挤掉 UI/对时服务 | ❌ 一行未改;⚠ 且**不在 `../任务规划/README.md` 登记簿内** → 建议补登 | | 2 | **N-04 / R-2 剩余** | LVGL 池 `work_mem_int` 40,960 B + UI 帧/绘制 `ui_port.o` 6,420 + UI 发送 `ui_net_sink.o` 6,766 = **54,146 B 仍在 SRAM1** | 堆迁 CCM 后 **CCM 只剩 16,304 B**,这 54 KB 装不下 → R-2 后半段被堵死 | 🟡 必须先做 R-9(`LV_MEM_SIZE` 40 KB→16 KB)或 R-4(帧副本 4→2)腾出空间 | | 3 | **N-12 / N-13** | `dhara_nand_is_free()` 只查页首 64 B;`dhara_nand_copy()` 不处理 `DHARA_NO_PAGE` 哨兵 | 映射恢复误判 → **数据丢失风险**(低概率、后果重);哨兵页号被当真实页 → 未定义行为 | ❌ 两处原样;⚠ 也不在登记簿 | | 4 | **N-06 残余** | `rs485_task.c`、`lftpd_log.c` 既不在 uvprojx 也不在 simulator | "写了不编译"= 死代码 + 误导 | ❌ 未处理;❌ `check_registration.py`(S-3)仍未建 | @@ -55,8 +55,8 @@ ## 0.4 未闭环清单(2026-10-11 复核) > 只列**未办 / 半办**项;已修项已按「修复即销项」删除(去处见变更记录)。图例:❌ 未办 / 🟡 半办。 -> **统一排序与推进**:本表各项已于 2026-10-11 并入 [`../待处理内容.md`](../待处理内容.md) §2/§3.2 -> (新编号 N-19~N-29 + U 簇,出处列保留本报告编号);**顺序权威在登记簿 §2,本表为评审快照**。 +> **统一排序与推进**:本表各项已于 2026-10-11 并入 [`../任务规划/README.md`](../任务规划/README.md) §2 与 [`../任务规划/登记簿.md`](../任务规划/登记簿.md) +> (新编号 N-19~N-29 + U 簇,出处列保留本报告编号);**顺序权威在 `docs/任务规划/README.md` §2,本表为评审快照**。 > ⚠ 本报告编号与登记簿同名不同义(报告 N-16 = 日志逐条开关,登记簿 N-16 = A2/A4 负向台架)→ 引用带文档名。 | 类别 | 编号 | 未闭环内容 | 下一步 | @@ -187,7 +187,7 @@ Select-String -Path 'MDK-ARM\STM32F407-Demo\STM32F407-Demo.map' -Pattern '__heap | 观察 | 证据 | 判定 | |------|------|------| -| 根目录散置工作文件 | `ui_menu_tree.txt`、`ui_cn_chars.txt` | 菜单树/字符集是**生成器输入**,放根目录合理且已在 `docs/` 有权威说明(原点名的根目录 `待处理内容.md` 已并入 `docs/待处理内容.md` 统一登记簿) | +| 根目录散置工作文件 | `ui_menu_tree.txt`、`ui_cn_chars.txt` | 菜单树/字符集是**生成器输入**,放根目录合理且已在 `docs/` 有权威说明(原点名的根目录 `待处理内容.md` 已并入 `docs/任务规划/README.md` 统一登记簿) | | `Lib/` 命名 | `Lib/` 下混放 `lvgl/`、`lv_conf.h`、`FatFs/`、`dhara/` | `lv_conf.h` 是**工程配置**不是库文件;建议移到 `Config/lv_conf.h` 并同步 include 路径(低风险、提升可读性) | | 功能开关名存实亡 | `App/app/app_cfg.h` 的 `APP_NET_ENABLE/APP_ADC_ENABLE/APP_RS485_ENABLE` **全库零引用** | 与台账 **P2-12** 同源。开关不生效比没有开关更糟——评审者会误信"ADC 可裁剪"。**2026-10-11 复核:🟡 已订正表述但未接线**——文件头 v1.1(2026-10-04)已如实标注"预留占位、不门控任何代码",`APP_CCM_ENABLE`/`APP_UI_NET_SINK` 已删除,三个 `APP_*_ENABLE` 仍在且仍零引用 | @@ -217,7 +217,7 @@ Select-String -Path 'MDK-ARM\STM32F407-Demo\STM32F407-Demo.map' -Pattern '__heap ### 3.2 做得好的(应保留并显式制度化) 1. **文档密度与可执行性**:每篇都带"步骤 + 判据"(如 UI 制作流程有 P0→P4 Gate);测试说明按模块拆分并给出预期串口标记,可直接接 `@test`。 -2. **陷阱台账**:`docs/问题记录/*_Trap_Records.md` + `docs/待处理内容.md`(P1-1..P3-13,带 ✅ 状态与日期)——这是本工程最有价值的资产,多数嵌入式项目没有。 +2. **陷阱台账**:`docs/问题记录/*_Trap_Records.md` + `docs/任务规划/README.md`(P1-1..P3-13,带 ✅ 状态与日期)——这是本工程最有价值的资产,多数嵌入式项目没有。 3. **图与脚本同提交**:`tools/arch_diagram/`、`tools/refgraph/` 生成器 + 产物入库,图可再生而非手绘。 4. **UI 设计资产链完整**:原始参考图 → 说明 md → 代码,可追溯。 @@ -272,7 +272,7 @@ Select-String -Path 'MDK-ARM\STM32F407-Demo\STM32F407-Demo.map' -Pattern '__heap | 编号 | 问题 | 证据 | 建议 | |------|------|------|------| -| **N-02** | **FTP 无鉴权**:`cmd_pass` 无条件 `send_simple_response(socket, 230, STATUS_230)` | `lftpd.c:367-371`(`cmd_user :539` 亦不校验) | 最小可用方案:`config.ini` 增 `[ftp] user/pwd_hash`,`cmd_pass` 用**定长比较 + 失败计数锁定**;生产固件默认关闭 FTP 写权限(`FF_FS_READONLY` 式的只读模式)。**❌ 2026-10-11 复核:一行未改**(现 `lftpd.c:375-379` / `:553-557`,全文件无 password/auth/attempt/read_only);⚠ 且**未登记进 `待处理内容.md`** → 建议补登为 P0/P1 | +| **N-02** | **FTP 无鉴权**:`cmd_pass` 无条件 `send_simple_response(socket, 230, STATUS_230)` | `lftpd.c:367-371`(`cmd_user :539` 亦不校验) | 最小可用方案:`config.ini` 增 `[ftp] user/pwd_hash`,`cmd_pass` 用**定长比较 + 失败计数锁定**;生产固件默认关闭 FTP 写权限(`FF_FS_READONLY` 式的只读模式)。**❌ 2026-10-11 复核:一行未改**(现 `lftpd.c:375-379` / `:553-557`,全文件无 password/auth/attempt/read_only);⚠ 且**未登记进 `docs/任务规划/登记簿.md`** → 建议补登为 P0/P1 | | N-09 | `cmd_pasv` 每次新建监听 `lftpd_inet_listen(0)`(随机端口) | `lftpd.c:373` | 在**单连接 socket** 上与 UI `:7003`、对时 `:8888` 争用同一物理 socket;建议限定监听资源池 + 显式"FTP 会话独占"策略,并在文档写明"一次只允许一个 TCP 服务活动"。**❌ 复核仍在**(现 `lftpd.c:392`,3 次重试 + 200 ms 间隔) | | P2-8 | `net_recv` 阻塞超时 30 s | 台账 | 缩短并让上层可取消。**❌ 复核仍在**:`net_config.h:39` `NET_RECV_TIMEOUT_MS 30000` | | — | PHY 强制 100M 全双工,忽略自协商 | AGENTS/architecture | 与某些交换机会联不通;至少加"链路 up 失败 3 次后回退自协商"。**❌ 复核仍在**:`net_task.c:110` 无条件 `ch395f_set_phy(CH395F_PHY_100M_FULL)`,仅 3 s 链路等待 + DISCONN 时上报 `comms fault` 自检 | @@ -351,7 +351,7 @@ Select-String -Path 'MDK-ARM\STM32F407-Demo\STM32F407-Demo.map' -Pattern '__heap | 编号 | 问题 | 建议 | |------|------|------| -| P1-10 | CH395F 硬件测试套件 RAM 溢出(`L6406E`):HW 套 +8.7 KB、NET 层固件 +28 KB(`s_rx_buf` 32 KB) | 测试缓冲改为**分 Phase 复用同一块静态缓冲**(union 或分阶段 `memset`);`待处理内容.md` 的这条待办应升级为正式任务。**🟡 2026-10-11 复核:已升级为登记簿唯一 P 类收尾项**(RAM 侧因堆迁 CCM 大幅缓解,剩"CH395F 套件构建实测链接确认 + `@test` 闭环"两步) | +| P1-10 | CH395F 硬件测试套件 RAM 溢出(`L6406E`):HW 套 +8.7 KB、NET 层固件 +28 KB(`s_rx_buf` 32 KB) | 测试缓冲改为**分 Phase 复用同一块静态缓冲**(union 或分阶段 `memset`);`docs/任务规划/测试与架构专项.md` 的这条待办应升级为正式任务。**🟡 2026-10-11 复核:已升级为登记簿唯一 P 类收尾项**(RAM 侧因堆迁 CCM 大幅缓解,剩"CH395F 套件构建实测链接确认 + `@test` 闭环"两步) | --- @@ -691,10 +691,10 @@ UI 剩余页面批量落地(U5)、目录级层次迁移(S-1 的物理搬 **报告结束。** > **2026-10-11 复核收尾**: -> - ⚠ **台账漏登两条**:本报告 **N-02(FTP 无鉴权)** 与 **N-12/N-13(dhara 移植缺陷)** 既未修复也未登记在 `../待处理内容.md` → 建议补登。 +> - ⚠ **台账漏登两条**:本报告 **N-02(FTP 无鉴权)** 与 **N-12/N-13(dhara 移植缺陷)** 既未修复也未登记在 `../任务规划/README.md` → 建议补登。 > - ⚠ **编号撞车**:本报告曾用 N-18 指"无 CI"(该条已销项删除),而登记簿的 N-18 = "8 路电气量分属两片转换器(V0.2 改版项)"。引用时一律带文档名。 > - ✅ `docs/内存管理/RAM预算台账.md` 与 `scripts/ram_baseline.tsv` **已于 2026-10-12 创建**(见 §5.5 各条闭环标注)。 -> - 本报告按 `docs/README.md` 的定位是**体系层评审报告,不是待办池**——待办一律以 `../待处理内容.md` 为准;本报告只保留**未闭环问题的发现 + 证据**,修复即销项。 +> - 本报告按 `docs/README.md` 的定位是**体系层评审报告,不是待办池**——待办一律以 `../任务规划/README.md` 为准;本报告只保留**未闭环问题的发现 + 证据**,修复即销项。 --- diff --git a/scripts/check_registration.py b/scripts/check_registration.py index 66717ae2..bf0afbf1 100644 --- a/scripts/check_registration.py +++ b/scripts/check_registration.py @@ -38,7 +38,7 @@ & '.venv\\Scripts\\python.exe' scripts/check_registration.py & '.venv\\Scripts\\python.exe' scripts/check_registration.py --strict -设计依据:docs/待处理内容.md N-23;.dsh/skills/new-source-file +设计依据:docs/任务规划/登记簿.md N-23;.dsh/skills/new-source-file 创建日期:2026-10-12 """ diff --git a/scripts/check_test_suite.py b/scripts/check_test_suite.py index 179aa9ec..51078094 100644 --- a/scripts/check_test_suite.py +++ b/scripts/check_test_suite.py @@ -37,7 +37,7 @@ & '.venv\\Scripts\\python.exe' scripts/check_test_suite.py --allow-test-build & '.venv\\Scripts\\python.exe' scripts/check_test_suite.py --file <路径> -设计依据:docs/待处理内容.md T-1;docs/测试说明/测试开发标准流程.md §3.1 +设计依据:docs/任务规划/登记簿.md T-1;docs/测试说明/测试开发标准流程.md §3.1 创建日期:2026-10-01 """ diff --git a/scripts/ram_baseline.py b/scripts/ram_baseline.py index 7207a513..36d3cee1 100644 --- a/scripts/ram_baseline.py +++ b/scripts/ram_baseline.py @@ -8,7 +8,7 @@ RAM 预算门禁 + 趋势台账(登记簿 N-27 前半 / 审查报告 §5.5 三 1. **92% 阈值门禁**(`--gate`,pre-commit `mem-budget` 钩子入口): RW_IRAM1 / RW_CCM 任一区占比 > 92% → FAIL,并附 Top-10 RW+ZI 对象表; 无 `.map`(未做 Keil 构建)→ 自适应跳过(与 `mem-numbers` 同口径, - CI 盲区登记在 `docs/待处理内容.md` A-5 残余)。 + CI 盲区登记在 `docs/任务规划/测试与架构专项.md` A-5 残余)。 `--gate` 同时校验台账受管区与 `.map` 一致(防漂移,同 `mem-numbers` 思路)。 2. **趋势基线** `scripts/ram_baseline.tsv`(`--update` 每次 @build 后追加一行; `--trend` 看趋势并高亮 RW+ZI 较上一行增长 >1 KB 的对象——方案 §0.3 @@ -173,7 +173,7 @@ def cmd_gate(args): map_path = _map_or_skip(args) if map_path is None: print("[SKIP] 无 .map(未做 Keil 构建)→ RAM 预算门禁不适用") - print(" (CI 盲区已登记 docs/待处理内容.md A-5 残余;" + print(" (CI 盲区已登记 docs/任务规划/测试与架构专项.md A-5 残余;" "本地改过代码请先 @build)") return 0 info = collect(map_path) diff --git a/test/host/common/unit_test_harness.py b/test/host/common/unit_test_harness.py index 3d520fd2..6519baac 100644 --- a/test/host/common/unit_test_harness.py +++ b/test/host/common/unit_test_harness.py @@ -36,7 +36,7 @@ summary_marker="=== Task Watchdog Tests:", ))) -设计依据:docs/待处理内容.md T-3;docs/测试说明/测试开发标准流程.md §4.2 +设计依据:docs/任务规划/登记簿.md T-3;docs/测试说明/测试开发标准流程.md §4.2 创建日期:2026-10-01 """ diff --git a/test/host/time_sync/run_unit_test.py b/test/host/time_sync/run_unit_test.py index d23c58ec..664871ce 100644 --- a/test/host/time_sync/run_unit_test.py +++ b/test/host/time_sync/run_unit_test.py @@ -25,7 +25,7 @@ 退出码:0=PASS / 1=测试失败 / 2=环境错误(找不到编译器 / 编译失败 / 无汇总行)。 -设计依据:App/sync/time_sync.c 文件头注释 + docs/待处理内容.md N-17; +设计依据:App/sync/time_sync.c 文件头注释 + docs/任务规划/登记簿.md N-17; 创建日期:2026-10-10 """ import os diff --git a/test/host/watchdog/run_unit_test.py b/test/host/watchdog/run_unit_test.py index 1922f12e..0fb5e4bf 100644 --- a/test/host/watchdog/run_unit_test.py +++ b/test/host/watchdog/run_unit_test.py @@ -22,7 +22,7 @@ 退出码:0=PASS / 1=测试失败 / 2=环境错误(找不到编译器 / 编译失败 / 无汇总行)。 -设计依据:docs/测试说明/看门狗单元测试说明.md;docs/待处理内容.md T-3 +设计依据:docs/测试说明/看门狗单元测试说明.md;docs/任务规划/登记簿.md T-3 创建日期:2026-10-01 """ import os diff --git a/test/run_all_suites.py b/test/run_all_suites.py index 0a579913..15227338 100644 --- a/test/run_all_suites.py +++ b/test/run_all_suites.py @@ -40,7 +40,7 @@ ② 防止"某套件长期编不过而无人知"(2026-08~09 CH395F 套件实例)。 注意 RAM 溢出(P1-9)会自然暴露为链接错误 L6406E——这正是想要的。 -设计依据:docs/待处理内容.md T-5;docs/测试说明/测试开发标准流程.md §3.1 +设计依据:docs/任务规划/登记簿.md T-5;docs/测试说明/测试开发标准流程.md §3.1 创建日期:2026-10-01 """