Files
CCU621M/app/app_init/app_init模块说明.md
T

130 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# app_init 模块说明(app_init.c / app_init.h
> 本文档描述 `CCU621_M` 工程中 `app_init.c` 与 `app_init.h` 的职责、接口与使用约束。
[返回主说明](./../../README.md)
## 快速跳转
- [1. 模块职责](#1-模块职责)
- [2. 涉及文件](#2-涉及文件)
- [3. 对外接口](#3-对外接口)
- [4. app_os_init 初始化流程](#4-app_os_init-初始化流程)
- [5. 任务表说明(当前版本)](#5-任务表说明当前版本)
- [6. 依赖关系](#6-依赖关系)
- [7. 维护注意事项](#7-维护注意事项)
- [返回主说明 README](./../../README.md)
---
## 1. 模块职责
`app_init` 是应用层任务初始化总入口,负责:
- 维护统一任务表 `my_task_data[]`(名称/优先级/栈/周期/入口函数/参数);
-`app_os_init()` 中统一创建任务(`xTaskCreate`);
- 维护任务ID枚举 `TASK_ID` 与任务表下标一一对应;
- 提供任务周期、任务名称等统一访问宏;
- 为 lwIP 提供 `MY_TCPIP_NAME/MY_TCPIP_PRIO/MY_TCPIP_SIZE` 参数来源。
> 说明:当前工程是“集中创建任务”模式,不同于 `CCU601E_D` 的“各模块内部 `*_init()` 分散创建”模式。
---
## 2. 涉及文件
| 文件 | 说明 |
|---|---|
| `app/app_init/app_init.c` | 任务表定义 + `app_os_init()` 创建逻辑 |
| `app/app_init/app_init.h` | 栈/周期宏、`TASK_ID`、任务结构体、访问宏 |
| `app/app_init/task_lock.c/h` | 任务锁统一接口(每任务一个锁句柄) |
---
## 3. 对外接口
### 3.1 函数
| 符号 | 说明 |
|---|---|
| `void app_os_init(void)` | 应用任务初始化总入口(由 `main.c` 调用) |
### 3.2 全局数据
| 符号 | 说明 |
|---|---|
| `const MY_TASK_DATA my_task_data[MY_TASK_NUM]` | 全部任务配置表 |
### 3.3 关键类型与宏
- `MY_TASK_DATA`:任务名称、优先级、栈(字节)、周期(ms)、入口函数、入口参数;
- `TASK_ID`:任务ID**必须与 `my_task_data[]` 顺序一致**
- `MY_TASK_NUM`:任务数量(由 `TASK_ID` 枚举尾项决定);
- `mSleep(x)``vTaskDelay(pdMS_TO_TICKS(x))` 封装;
- `MY_GET_SLEEP_TIME(task_id)`:取任务周期;
- `MY_GET_TASK_NAME(task_id)`:取任务名称;
- `MY_TCPIP_NAME/MY_TCPIP_PRIO/MY_TCPIP_SIZE`:由 `my_task_data[TASK_ID_TCPIP]` 映射得出,供 lwIP 配置使用。
---
## 4. `app_os_init()` 初始化流程
当前流程(以 `app_init.c` 为准):
1.`MY_SHELL_EN=1`:执行 `userShellInit()`
2. 遍历 `my_task_data[]`
3.`task_entry != NULL` 的任务执行 `xTaskCreate(...)`
4. 忽略 `task_entry == NULL` 的条目(如 `EthIf``TCP/IP` 由 lwIP 内部创建)。
---
## 5. 任务表说明(当前版本)
`my_task_data[]` 当前主要任务:
- `EthIf`(占位,lwIP线程)
- `TCP/IP`(占位,lwIP线程)
- `DataColl`
- `FaultCheck`
- `MduComm`
- `MyShell`(条件编译)
- `UiComm`
- `WatchDog`
- `MeterColl`
- `MyLog`
- `EthLink`
> `EthIf`、`TCP/IP` 仅用于参数对齐与状态展示,不由 `app_os_init` 直接创建。
---
## 6. 依赖关系
-`main.c` 调用:`app_os_init()`
- 依赖模块:
- `mylog/collect_ctrl/fault_cheak/mdu_comm/ui/meter_calculate/wdt_task`
- `BSP/net_lwip``eth_link_thread`
- `BSP/letter_shell`(条件编译)
---
## 7. 维护注意事项
1. 新增任务时必须同步修改:
- `TASK_ID` 枚举;
- `my_task_data[]` 表项;
- 相关任务源文件中的任务ID宏(若使用模板化风格)。
2. `my_task_data[]``TASK_ID` 顺序不一致会导致:
- 周期读取错误;
- 日志任务名错误;
- 看门狗计数映射异常。
3. 若调整 `TCP/IP` 参数,建议只改任务表对应项,不在其他位置重复写常量。
4. `MY_SHELL_EN` 会影响任务数量与任务ID布局(`TASK_ID_MyShell` 条件编译)。
---
## 关联文档
- 主索引:[`CCU621_M/README.md`](./../../README.md)
- 本文位置:`app/app_init/app_init模块说明.md`