RTU_ALL_AI/PLAN.md

9.9 KiB
Raw Blame History

RTU_ALL_AI 项目 — 纯 C AI 开发工作计划

版本: v1.0
日期: 2026-07-07
远程仓库: http://127.0.0.1:3000/admin/RTU_ALL_AI.git
分支策略: master主分支所有开发在 master 上直接进行)


一、项目定位

RTU_ALL_AI 是一个纯 C 编写的嵌入式通讯装置示例工程100% 由 AI 编写。项目采用与 RTU 一致的模块化架构,使用 Linux 内核侵入式链表(list.h)作为核心数据结构。工程既是 AI 编程能力的验证,也是后续 RTU 实际模块开发的参考模板。


二、项目架构(对齐 RTU 结构)

RTU_ALL_AI/
├── .gitignore
├── README.md
├── src/
│   ├── public/                    # 公共基础库
│   │   ├── liblist/               # [P0] Linux 内核侵入式链表
│   │   │   ├── inc/list.h
│   │   │   └── src/(纯头文件实现,无需 .c
│   │   ├── libfunc/               # [P0] 基础工具函数库
│   │   │   ├── inc/myFunc.h
│   │   │   └── src/myFunc.c
│   │   ├── liblog/                # [P0] 日志库
│   │   │   ├── inc/myLog.h
│   │   │   └── src/myLog.c
│   │   ├── libtask/               # [P1] 任务调度库
│   │   │   ├── inc/myTask.h
│   │   │   └── src/myTask.c
│   │   ├── libdatacenter/         # [P1] 数据中心(信号存储)
│   │   │   ├── inc/myDatacenter.h
│   │   │   └── src/myDatacenter.c
│   │   └── libcomm/               # [P2] 通讯抽象层
│   │       ├── inc/myComm.h
│   │       └── src/myComm.c
│   ├── protocol/                  # 协议实现层
│   │   ├── libmodbus/             # [P1] Modbus RTU/TCP 协议站
│   │   │   ├── inc/myModbus.h
│   │   │   └── src/myModbus.c
│   │   └── lib60870/              # [P2] IEC 60870-5-104 协议站
│   │       ├── inc/my104.h
│   │       └── src/my104.c
│   ├── system/                    # 系统管理层
│   │   ├── RTU/                   # [P2] 主程序入口
│   │   │   ├── inc/app_sys.h
│   │   │   └── src/main.c
│   │   └── libweb_server/         # [P3] Web 管理界面
│   │       ├── inc/web_server.h
│   │       └── src/web_server.c
│   └── test/                      # 单元测试
│       ├── test_list.c            # [P0] 链表单元测试
│       ├── test_datacenter.c      # [P1] 数据中心单元测试
│       └── test_modbus.c          # [P1] Modbus 单元测试
└── release/                       # 构建系统
    ├── build.sh                   # 编译脚本
    ├── linux.mk                   # 编译选项(支持 x86/arm 切换)
    ├── makefile                   # 顶层 Makefile递归
    ├── inc/                       # 对外暴露的公共头文件(软链接/复制)
    └── src/                       # 每个模块的 makefile
        ├── makefile               # 第二层
        ├── public/
        │   ├── libfunc/makefile
        │   ├── liblog/makefile
        │   └── ...
        ├── protocol/
        └── system/

三、代码规范(严格对齐 RTU 风格)

3.1 命名规范

类型 规范 示例
文件名 驼峰/下划线混合 myFunc.c, myLog.h, app_sys.h
函数名 小写+下划线 func_cal_crc16(), dc_signal_set()
结构体 小写+_t 后缀 log_message_t, dc_signal_t
宏/常量 全大写+下划线 LOG_LEVEL_INFO, SHORT_STR_LEN
全局变量 g_ 前缀 g_log_path, g_tableCRC16
静态函数 LOCAL 宏修饰 LOCAL void helper_func()

3.2 头文件规范

#ifndef _MY_MODULE_H_          // 全大写+下划线
#define _MY_MODULE_H_

#include <stdint.h>             // 系统头文件在前

#ifdef __cplusplus
extern "C" {                    // 兼容 C++ 调用
#endif

// 宏定义
// 结构体
// 函数声明

#ifdef __cplusplus
}
#endif

#endif // _MY_MODULE_H_

3.3 注释规范

  • 函数头部:/** 功能简述 */// 功能描述
  • 复杂逻辑:行间注释 // 步骤1: xxx
  • 段落分隔:/******...******/ 分隔不同功能区域

3.4 编码规范

  • 缩进Tab4 空格宽度)
  • 所有函数入口参数必须校验NULL、越界检查
  • 函数行数控制在 80 行以内
  • 复杂逻辑拆分为独立静态函数
  • 错误路径必须打 LOG_E

四、分阶段开发计划

阶段 0基础设施搭建预计 1-2 天)

序号 任务 产出 状态
0.1 搭建构建系统 release/linux.mk, release/makefile, release/build.sh
0.2 创建 myBase.h 基础定义 release/inc/myBase.h
0.3 实现 liblist 侵入式链表 src/public/liblist/inc/list.h
0.4 实现 liblog 日志库 src/public/liblog/
0.5 实现 libfunc 基础工具 src/public/libfunc/
0.6 编写链表单元测试 src/test/test_list.c
0.7 编译验证 + 代码审查 全量编译通过、测试通过

阶段 1数据中心 + 任务调度(预计 2-3 天)

序号 任务 产出 状态
1.1 设计信号数据模型 设计文档 + dc_signal_t 结构体
1.2 实现 libdatacenter 信号存储 CRUD 接口,侵入式链表管理
1.3 实现 libtask 任务调度 任务注册、定时触发、事件驱动
1.4 编写数据中心单元测试 src/test/test_datacenter.c
1.5 编译验证 + 代码审查 全量编译通过、测试通过

阶段 2通讯协议预计 3-4 天)

序号 任务 产出 状态
2.1 实现 libcomm 通讯抽象层 串口/TCP 统一接口
2.2 实现 libmodbus Modbus 从站 RTU/TCP 模式,线圈/寄存器读写
2.3 编写 Modbus 单元测试 src/test/test_modbus.c
2.4 实现 lib60870 IEC104 从站 总召、遥测、遥信、遥控
2.5 编译验证 + 代码审查 全量编译通过、测试通过

阶段 3系统集成预计 2-3 天)

序号 任务 产出 状态
3.1 实现 RTU/main.c 主程序 模块初始化、主循环
3.2 实现 Web 服务器(可选) libweb_server
3.3 端到端集成测试 多模块联调
3.4 全量编译验证 + 代码审查 交叉编译ARM、单元测试
3.5 编写 README 文档 项目说明、编译指南、架构图

五、AI 开发工作流

┌──────────┐    ┌──────────┐    ┌──────────┐    ┌──────────┐
│ 1. 制定  │───▶│ 2. AI    │───▶│ 3. 编译  │───▶│ 4. 代码  │
│   计划   │    │   编码   │    │   验证   │    │   审查   │
└──────────┘    └──────────┘    └──────────┘    └──────────┘
      ▲                                               │
      └───────────────────────────────────────────────┘
                     5. 修复 + 迭代

工作流规则

  1. 计划先行每个模块编写前先输出设计计划数据结构、API、依赖关系经审查后再编码
  2. 增量迭代:每个函数编写后立即编译,消除编译错误再继续
  3. 测试驱动:先写单元测试框架,再实现功能代码
  4. 审查门禁:每个模块完成后必须进行代码审查(检查风格、注释、边界处理)
  5. 单文件提交:每个模块或逻辑单元完成后单独 git commitcommit message 使用中文描述

六、Git 推送规则(对齐 RTU

  • 分支: 所有开发在 master 分支
  • Commit 格式: [模块名] 功能描述
    • 例: [liblist] 实现 Linux 内核侵入式双向链表
    • 例: [libdatacenter] 添加信号点 CRUD 接口
  • 推送频率: 每个模块完成后推送一次
  • 远程: originhttp://admin:admin123@127.0.0.1:3000/admin/RTU_ALL_AI.git

七、关键技术点

7.1 Linux 内核侵入式链表list.h

  • 使用标准的 struct list_head 双向循环链表
  • 实现 list_add, list_add_tail, list_del, list_for_each_entry 等宏
  • 所有模块的数据结构使用侵入式链表管理

7.2 编译系统

  • 支持 x86(本地调试)和 armRK3568 交叉编译)两种模式
  • 每个模块编译为 .a 静态库
  • 顶层 makefile 递归构建
  • build.sh x86build.sh arm 一键编译

7.3 日志系统

  • 支持控制台 + 文件双输出
  • 异步日志队列(侵入式链表实现)
  • 级别INFO / ERROR

八、风险与对策

风险 对策
AI 编码风格不一致 严格对照 RTU 已有代码,代码审查时逐项检查
侵入式链表使用不当 先写完整单元测试,验证所有链表操作
编译环境差异 优先保证 x86 本地编译通过ARM 交叉编译作为验证步骤
模块间耦合过重 每个模块独立编译为 .a依赖通过头文件接口明确

九、审查清单

  • 计划是否覆盖所有必要的模块?
  • 代码规范是否对齐 RTU 风格?
  • 模块优先级排序是否合理?
  • 是否需要调整模块范围(增/删/改)?
  • 构建系统方案是否可行?
  • 侵入式链表的实现粒度是否合适?