docs(架构): 全景/启动顺序/存储/引用图与 README 同步任务面与 NET 内部模块
- 项目架构总览 v1.1:§1.1 去重复⑥行、硬件行 UART4/TIM3/ADC1;§2.1 任务表 6→9 行且栈值按 freertos.c 校准;§3 补采集算法链与 TIM3 节拍; §5 补 net_events/net_listener/net_pending 与 iec104_serv,单客户端 恢复窗更正为实测 p50 208ms;§7 目录树、§9 索引、§10 变更记录同步 - 项目启动顺序管理:任务表 5→10 行;启动轨迹表 8→14 行(fw build、 ADC input layer、phasor/freq/protection、SD2506 明细、TIM3 启动) - 存储架构说明:§1 初始化顺序块重写(gd5f 归位 app_main_init 内、 rs485Task 未创建、补 TIM3 与 L1~L3 链) - 引用关系图说明 §7 统计与产物重跑刷新;就绪屏障 SVG 补 iec104Task 消费者后重生成(1400x912) - README:外设引脚纠错(RS485=UART4/PC10/PC11/PA15、TPAFE 控制脚 PC8/PC9/PC7)、启动流程补 sys_clock/adc_input/TIM3、任务表重生成 (9 任务)、目录树与 NET 小节同步、ftp_speed_test→regression/ integrity、文档表补四条专项索引 - 工具:gen_task_table.py 补 iec104Task/protectTask 职责; gen_barrier_svg.py 补 iec104Task 消费者与 bit0 计数
This commit is contained in:
@@ -14,10 +14,10 @@
|
||||
|------|------|------|------|
|
||||
| CH395F 以太网 | SPI2 | PB12 CS, PB13 SCK, PB14 MISO, PB15 MOSI | 10/100M 以太网控制器 |
|
||||
| GD5F2GQ5UE NAND | SPI1 | PE0 CS, PB3 SCK, PB4 MISO, PB5 MOSI, PB8 WP, PE1 HOLD | 256MB SPI NAND Flash |
|
||||
| TPAFE5160 ADC | 并行16位 | PG0-PG15 数据, PD3 RD, PD4 CONVST, PD7 BUSY | 高精度 ADC |
|
||||
| TPAFE5160 ADC | 并行16位 | PG0-PG15 数据, PC8 RD, PC9 CONVST, PC7 BUSY, PA8/PA11/PA12 OS0~2 | 高精度 ADC |
|
||||
| USART1 | 串口 | PA9 TX, PA10 RX | 115200bps 调试串口 |
|
||||
| 6x LED | GPIO | PC4, PC5, PB1, PB2, PF11, PF12 | 低电平点亮 |
|
||||
| RS-485 | UART5 | PC12 TX, PD2 RX, PD0 DE | 半双工通信 |
|
||||
| RS-485 | UART4 | PC10 TX, PC11 RX, PA15 DE | 半双工通信(B2 暂缓,见 `docs/任务规划/暂缓-RS485.md`) |
|
||||
|
||||
## 项目架构
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
flowchart TB
|
||||
subgraph APP["应用层 (App/)"]
|
||||
direction LR
|
||||
A1["app/app_main.c"] ~~~ A2["task/net_task.c"] ~~~ A3["task/ui_task.c"] ~~~ A4["sync/time_sync.c"]
|
||||
A1["app/app_main.c"] ~~~ A2["task/net_task.c"] ~~~ A3["task/ui_task.c"] ~~~ A4["sync/time_sync.c"] ~~~ A5["algo/(L1~L3)"]
|
||||
end
|
||||
subgraph BSP["驱动层 (Drivers/BSP/)"]
|
||||
direction LR
|
||||
@@ -51,16 +51,19 @@ flowchart TB
|
||||
main.c
|
||||
├─ HAL_Init()
|
||||
├─ SystemClock_Config() // 168MHz 系统时钟
|
||||
├─ MX_GPIO/DMA/UART/SPI/I2C_Init() // CubeMX 外设初始化
|
||||
├─ app_main_init() // 应用层初始化(时间→RS485→NAND→ADC→诊断)
|
||||
│ ├─ sd2506_init() + sys_clock_init() // 时间子系统优先
|
||||
├─ MX_GPIO/DMA/UART/SPI/I2C/ADC/TIM/IWDG_Init() // CubeMX 外设初始化
|
||||
├─ app_main_init() // 应用层初始化(时间→RS485→NAND→ADC→采集算法→诊断)
|
||||
│ ├─ syslog_mcu_init() // 日志先进 RAM 暂存(内核前安全)
|
||||
│ ├─ sd2506_init() + sys_clock_init() // 时间子系统优先(墙钟基准)
|
||||
│ ├─ rs485_init()
|
||||
│ ├─ gd5f2gq5ue_init()
|
||||
│ ├─ gd5f2gq5ue_init() // 含 BBT 全片扫描
|
||||
│ ├─ tpafe5160_init()
|
||||
│ ├─ adc_input_init() // L1 采集层(语义映射 + STM32 ADC1 DMA)
|
||||
│ ├─ phasor_init() / freq_init() / prot_set_init() + prot_elm_init() // L2/L3 内核前就绪
|
||||
│ ├─ SD2506 诊断(ID/时间/温度/电池)
|
||||
│ └─ tpafe5160_start_conv_irq() // 首次 ADC 转换
|
||||
│ └─ HAL_TIM_Base_Start_IT(&htim3) // 启动 TIM3 1kHz 采样节拍
|
||||
├─ osKernelInitialize()
|
||||
├─ MX_FREERTOS_Init() // 创建任务和事件组
|
||||
├─ MX_FREERTOS_Init() // 创建 9 任务 + 事件组 + 消息队列
|
||||
└─ osKernelStart() // 启动调度器
|
||||
```
|
||||
|
||||
@@ -70,17 +73,17 @@ main.c
|
||||
| 任务 | 栈大小 | 优先级 | 职责 |
|
||||
|------|--------|--------|------|
|
||||
| defaultTask | 1280 words | Normal | FTL + FatFS 挂载、配置引擎属主、syslog 唯一写者 |
|
||||
| netTask | 960 words | Normal | 网络初始化 + CH395F 轮询 |
|
||||
| netTask | 960 words | Normal | 网络初始化 + CH395F 轮询(消费 NET_RECONFIG 按代次重建监听) |
|
||||
| ftpTask | 1024 words | Normal | FTP 服务(等待网络+存储就绪) |
|
||||
| testTask | 2048 words | BelowNormal | 硬件测试入口 |
|
||||
| uiTask | 4096 words | BelowNormal | LVGL UI 界面 |
|
||||
| timeSyncTask | 640 words | Normal | 墙钟时间同步 |
|
||||
| adcTask | 640 words | AboveNormal | TPAFE5160 采样(TIM3 1kHz 事件驱动 + 原子快照 + STM32 ADC DMA) |
|
||||
| iec104Task | 640 words | Normal | |
|
||||
| protectTask | 512 words | Normal | |
|
||||
| adcTask | 640 words | AboveNormal | TPAFE5160 采样(TIM3 1kHz 事件驱动 + 原子快照 + STM32 ADC DMA,纯消费者) |
|
||||
| iec104Task | 640 words | Normal | IEC 60870-5-104 上行(:2404 监听,遥信/遥测/定值区) |
|
||||
| protectTask | 512 words | Normal | 保护判据 20ms 节拍(L3 元件 + 采样故障闭锁,B5) |
|
||||
<!-- TASK_TABLE:END -->
|
||||
|
||||
> 上表与 `Src/freertos.c` 的 `osThreadAttr_t` 一致(2026-09-25 校准);改动栈大小前先读
|
||||
> 上表与 `Src/freertos.c` 的 `osThreadAttr_t` 一致(2026-10-14 校准,9 任务);改动栈大小前先读
|
||||
> `docs/内存管理/RAM使用分析与优化方案.md` 的定栈规则与 `docs/任务规划/基线与待确认.md` 的内存预算项。
|
||||
|
||||
### 任务启动顺序管理
|
||||
@@ -111,15 +114,19 @@ STM32F4-Base/
|
||||
│ └── gpio.h / dma.h / spi.h / i2c.h / usart.h
|
||||
├── App/ # 应用层代码
|
||||
│ ├── app/ # 应用入口与全局(app_main / app_cfg / sys_events)
|
||||
│ ├── algo/ # 采集与算法层(L1 adc_input / L2 phasor+freq / L3 prot_set+prot_elm)
|
||||
│ ├── cfg/ # 配置引擎(cfg_file 解析/持久化/迁移 + 存储后端)
|
||||
│ ├── fs/ # 卷锁(vol_lock,syslog/cfg/lftpd 三条路径 try 语义)
|
||||
│ ├── sync/ # 时间同步(time_sync 任务)
|
||||
│ ├── log/ # 日志(sys_log 运行/自检记录、console_log 控制台单写者)
|
||||
│ ├── task/ # FreeRTOS 任务实现
|
||||
│ │ ├── default_task.c/h # 存储挂载 + 配置引擎属主 + syslog 写者
|
||||
│ │ ├── net_task.c/h # 网络任务
|
||||
│ │ ├── ui_task.c/h # UI 任务
|
||||
│ │ ├── adc_task.c/h # ADC 任务
|
||||
│ │ └── rs485_task.c/h # RS-485 任务
|
||||
│ │ ├── adc_task.c/h # ADC 任务(L1/L2 纯消费者,TIM3 1kHz 唤醒)
|
||||
│ │ ├── iec104_serv.c/h # IEC 60870-5-104 上行服务
|
||||
│ │ ├── protect_task.c/h # 保护判据任务(L3 20ms 节拍)
|
||||
│ │ └── rs485_task.c/h # RS-485 任务(已实现,未创建,B2 暂缓)
|
||||
│ ├── util/ # 工具函数(crc / ringbuf / sys_clock)
|
||||
│ └── protocol/ # 通信协议(预留)
|
||||
├── Drivers/
|
||||
@@ -131,6 +138,9 @@ STM32F4-Base/
|
||||
│ │ ├── RS485/ # RS-485 通信驱动
|
||||
│ │ ├── NET/ # BSD Socket API 网络抽象层
|
||||
│ │ │ ├── net_socket.c/h # Socket API
|
||||
│ │ │ ├── net_events.c/h # 芯片边沿事件处理 + 100ms 周期对账
|
||||
│ │ │ ├── net_listener.c/h # 监听生命周期(请求登记 + 单一重建执行者)
|
||||
│ │ │ ├── net_pending.c/h # 阻塞 recv/send 挂起请求表(SEND 二期已落地)
|
||||
│ │ │ ├── net_select.c/h # select/poll 多路复用
|
||||
│ │ │ └── lftpd/ # 轻量 FTP 服务器
|
||||
│ │ ├── NETCFG/ # 网络配置(/config.ini [network] 段加载/保存)
|
||||
@@ -159,7 +169,7 @@ STM32F4-Base/
|
||||
│ │ └── net_latency_test.c/h # 链路时延探针
|
||||
│ └── host/ # 主机端脚本(PC 侧;@test 入口已迁至 .dsh/skills/serial-boot-test/)
|
||||
│ ├── ch395f_socket_test.py # Socket 通信测试
|
||||
│ ├── ftp_test.py / ftp_up_dl_test.py / ftp_speed_test.py / ftp_capture.py / ftp_regression.py
|
||||
│ ├── ftp_test.py / ftp_up_dl_test.py / ftp_regression.py / ftp_integrity_test.py / ftp_capture.py
|
||||
│ ├── e02_probe.py # E-02 专项探针
|
||||
│ ├── latency_peer.py # 链路时延 PC 对端
|
||||
│ └── time_sync_server.py # 时间同步推送服务
|
||||
@@ -265,9 +275,13 @@ UI 改动回归门禁(菜单像素回归 + 内容页黄金参考 + 池水位
|
||||
### 网络层 (NET)
|
||||
|
||||
- BSD Socket API 抽象:`net_socket.h/c`
|
||||
- 事件处理与周期对账:`net_events.c`(芯片边沿事件 + 100ms 对账,`net_poll()` 内分派)
|
||||
- 监听生命周期单一所有者:`net_listener.c`(`net_listener_request` 只登记意图、`net_listener_tick` 唯一执行)
|
||||
- 阻塞挂起请求表:`net_pending.c`(recv 一期 / SEND 二期已落地;调用方铁律 `sent < len`)
|
||||
- select/poll I/O 多路复用:`net_select.h/c`
|
||||
- 线程安全通过消息队列(`netMsgQueue`)实现
|
||||
- 所有 CH395F 操作在 netTask 中串行处理
|
||||
- 网口配置保存后经 `SYS_EVT_NET_RECONFIG` 按网络代次号重建监听(新 IP 免重启生效)
|
||||
|
||||
### 时间子系统
|
||||
|
||||
@@ -303,7 +317,8 @@ UI 改动回归门禁(菜单像素回归 + 内容页黄金参考 + 池水位
|
||||
| `ch395f_socket_test.py` | Socket 通信测试 |
|
||||
| `ftp_test.py` | FTP 服务器基础测试 |
|
||||
| `ftp_up_dl_test.py` | FTP 上传/下载测试 |
|
||||
| `ftp_speed_test.py` | FTP 传输速度测试 |
|
||||
| `ftp_regression.py` | FTP 功能回归(会话流程全序列) |
|
||||
| `ftp_integrity_test.py` | FTP 传输完整性压测(多轮 SHA-256 校验) |
|
||||
| `ftp_capture.py` | FTP 流量抓取 |
|
||||
| `time_sync_server.py` | 时间同步推送服务(PC → 板子) |
|
||||
|
||||
@@ -372,6 +387,9 @@ pre-commit run --all-files
|
||||
| `Drivers/BSP/CH395F/ch395f.c` | 以太网控制器驱动 |
|
||||
| `Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.c` | NAND Flash 驱动 |
|
||||
| `Drivers/BSP/NET/net_socket.c` | BSD Socket API |
|
||||
| `Drivers/BSP/NET/net_events.c` | 芯片边沿事件处理 + 周期对账 |
|
||||
| `Drivers/BSP/NET/net_listener.c` | 监听生命周期(单一重建所有者) |
|
||||
| `App/algo/prot_elm.h` | L3 保护元件框架(判据消费入口) |
|
||||
| `.dsh/skills/keil-build/scripts/keil_build.py` | 编译脚本(`@build`) |
|
||||
| `.dsh/skills/serial-boot-test/scripts/run_boot_test.py` | 自动化测试脚本 |
|
||||
|
||||
@@ -396,6 +414,10 @@ pre-commit run --all-files
|
||||
| `docs/子系统设计/系统墙钟时间维护说明.md` | RTC + 墙钟时间子系统 |
|
||||
| `docs/子系统设计/网络配置说明.md` | 网口设置页配置(UI 可改的 IP/掩码/网关/MAC:持久化 + 立即生效 + 页面操作) |
|
||||
| `docs/网络/BSD_Socket_API_使用指南.md` | BSD Socket API 使用指南(`net_socket` / `net_select`:线程安全 / 快速开始 / TCP / UDP / I/O 多路复用 / 事件回调 / API 参考 / 常见问题) |
|
||||
| `docs/网络/Net层阻塞模型架构设计.md` | NET 阻塞模型(挂起请求表五路语义,recv 一期 / SEND 二期已落地) |
|
||||
| `docs/网络/网络自愈架构设计.md` | 网络自愈架构(监听重建 / 沉降隔离 / 周期对账) |
|
||||
| `docs/子系统设计/IEC104上行设计说明.md` | IEC 60870-5-104 上行(:2404 监听,B4) |
|
||||
| `docs/子系统设计/ADC采样节拍设计说明.md` | TIM3 1kHz 采样节拍(两片转换器同源硬件驱动) |
|
||||
| `docs/UI设计/UI_设计架构.md` | LVGL UI 系统架构(菜单 / 内容页 / 内存预算) |
|
||||
| `docs/UI设计/菜单页面设计.md` | 菜单导航行为、数据流与内容页设计 |
|
||||
| `docs/UI设计/UI_界面制作流程.md` | 参考图 → 设计规格 → LVGL 代码管线(P0~P4 门禁) |
|
||||
|
||||
Reference in New Issue
Block a user