64d8b052b1
拆分层级 - 新建 docs/算法/采集与算法层设计说明.md(413 行、13 节)承接机制、契约、 判据与设计理由:定位与边界 / 数据流与初始化落点 / adc_input / adc_health / sample_ring / phasor / freq(7.1 为什么自适应窗、7.2 判据 J1~J6)/ prot_set / prot_elm / 关键约定与禁令 / 资源足迹 / 验证与判读 / 相关文档 - App/algo/README.md 360 -> 128 行:只留文件清单、依赖、逐文件"改代码必须 知道"的红线、构建与测试入口、新增模块动作;深挖改成逐条指针 - README 保留 §3.1-§3.7 原编号,既有"§3.7"引用不失效 索引与引用同步 - 索引:docs/README.md §5.2 新增行;项目架构总览主题表拆成"设计与判据 / 目录索引"两行;AGENTS.md 与 App/README.md 指向(后者原文还写着 L1/L2) - 按内容重指(编号仍在但内容已搬走,只核编号会静默指错):App/algo/freq.h、 test/host/freq/freq_test.c、run_unit_test.py、继电保护规划 L2-4 行、 pre-commit使用说明 J4 行 -> 指向设计说明 - ADC采样节拍设计说明的两处指向同步改到新文档 修 README 内过时事实 - 挂载写"八个 .c",实际 uvprojx 内 7 个 - SIM_EXEMPT 写"prot_set / freq 才登记豁免",实际七个全在表内 - freq-unit-test 标"待登记",实际已在 .pre-commit-config.yaml - 定值项数一处 31->40、一处 32->40;blob 144->176 B 证明是 32->40 - 用例与判据数字不再三处复制:属主是 test/host/<模块>/ 与 docs/测试说明/ 门禁 - doc-links --all 无新增问题;--sections-strict 覆盖 10 篇文档通过 - id-check 可判定 82.65%(基线 82.6,容差 0.1);TC 双向追溯差异 124 处不变 - registration-check PASS(1 条已知 WARN);freq 单测 46/46;@build 0 错 0 警 - 全部改动文件无 BOM、无 CR、U+FFFD = 0
38 lines
2.4 KiB
Markdown
38 lines
2.4 KiB
Markdown
# App/ — 应用层
|
||
|
||
> **自研代码**(非 CubeMX 生成、非第三方库)。本目录是项目的**应用层**:任务编排、业务逻辑、
|
||
> 日志与配置引擎、工具函数。所有文件遵循 `docs/代码规范/嵌入式C语言代码规范_V1.0.md`。
|
||
|
||
## 职责
|
||
|
||
`Src/main.c`(CubeMX 初始化)→ `app_main_init`(本目录 `app/app_main.c`)→ `osKernelStart` →
|
||
6 个 FreeRTOS 任务(见 `task/`)。**`osKernelStart` 之前全是内核启动前代码,禁止调用任何
|
||
FreeRTOS/CMSIS-RTOS API**(见 `AGENTS.md`「平台约束」)。
|
||
|
||
## 目录结构(按职责分层)
|
||
|
||
| 目录 | 内容 | README |
|
||
|---|---|---|
|
||
| `app/` | **应用入口与全局**:`app_main.c/h`(初始化入口)、`app_cfg.h`(编译开关)、`sys_events.h`(就绪事件) | [`app/README.md`](app/README.md) |
|
||
| `cfg/` | **配置引擎**:`/config.ini` 解析 + 原子持久化(旧二进制档已废弃,2026-10-10) | [`cfg/README.md`](cfg/README.md) |
|
||
| `sync/` | **时间同步任务**:`time_sync.c/h` | [`sync/README.md`](sync/README.md) |
|
||
| `algo/` | **采集与算法层(L1/L2/L3)**:语义取数 + 有效性判定 + 采样环/相量/测频 + 定值模型 + 保护元件框架 | [`algo/README.md`](algo/README.md)(索引);设计 → `docs/算法/采集与算法层设计说明.md` |
|
||
| `log/` | **日志子系统**:syslog(NAND)+ 控制台单写者日志 | [`log/README.md`](log/README.md) |
|
||
| `task/` | **FreeRTOS 任务实现**(6 个任务) | [`task/README.md`](task/README.md) |
|
||
| `util/` | **通用工具**:CRC / 环形缓冲 / 墙钟时间 | [`util/README.md`](util/README.md) |
|
||
| `protocol/` | 通信协议(预留,当前为空) | [`protocol/README.md`](protocol/README.md) |
|
||
|
||
## 关键约束
|
||
|
||
- **配置引擎单任务收敛**:`cfg/` 为静态态、属主是 defaultTask;UI 保存请求经
|
||
`SYS_EVT_CFG_SAVE` 事件唤醒,netTask/uiTask **不得直接触碰**配置引擎
|
||
- **syslog 唯一写者**:`/log/*` 只由 defaultTask 写入
|
||
- 新增任务/缓冲/栈前**必须先核算 RAM 余量**(`docs/内存管理/`)
|
||
|
||
## 相关文档
|
||
|
||
- 架构全景:`docs/架构设计/项目架构总览.md`
|
||
- 启动顺序:`docs/架构设计/项目启动顺序管理.md`
|
||
- 配置引擎:`docs/子系统设计/配置文件设计说明.md`
|
||
- 日志:`docs/子系统设计/控制台单写者日志设计说明.md`、`docs/子系统设计/运行与自检记录设计说明.md`
|