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

3.9 KiB
Raw Blame History

app_init 模块说明(app_init.c / app_init.h

本文档描述 CCU621_M 工程中 app_init.capp_init.h 的职责、接口与使用约束。

返回主说明

快速跳转


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 的条目(如 EthIfTCP/IP 由 lwIP 内部创建)。

5. 任务表说明(当前版本)

my_task_data[] 当前主要任务:

  • EthIf(占位,lwIP线程)
  • TCP/IP(占位,lwIP线程)
  • DataColl
  • FaultCheck
  • MduComm
  • MyShell(条件编译)
  • UiComm
  • WatchDog
  • MeterColl
  • MyLog
  • EthLink

EthIfTCP/IP 仅用于参数对齐与状态展示,不由 app_os_init 直接创建。


6. 依赖关系

  • main.c 调用:app_os_init()
  • 依赖模块:
    • mylog/collect_ctrl/fault_cheak/mdu_comm/ui/meter_calculate/wdt_task
    • BSP/net_lwipeth_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 条件编译)。

关联文档