# CLAUDE.md

本文档为 Claude Code (claude.ai/code) 提供本代码仓库的工作指导。

## 项目概述

本项目是面向配电自动化的 DTU（数据传输单元）嵌入式软件，目标平台为伏羲 T536（ARM Cortex-A55, aarch64）。使用 Xenomai 实时框架，UI 采用 LVGL。

## 构建系统

### 构建命令

项目使用基于 Makefile 的自定义构建系统，配合 shell 脚本：

```bash
# 进入构建脚本目录
cd dtu/dtu_main_t536/sh/t536

# 构建广东 2020 标准版本（默认配置）
./mybuild_for_gw_public_t536 NanWang GD_AREA_ECZD_2020 DCPU_FUXI DMACHINE_NULL

# 标准 DTU 5.0 版本的替代构建脚本
./mybuild_for_std_dtu5.0
```

构建参数：
- `$1`：输出目录名称（例如："NanWang"）
- `$2`：区域宏定义（例如：`GD_AREA_ECZD_2020`）
- `$3`：CPU 类型（例如：`DCPU_FUXI`）
- `$4`：机器类型（例如：`DMACHINE_NULL`）

### 交叉编译

- 编译器：`aarch64-none-linux-gnu-gcc`
- 目标平台：ARM Cortex-A55
- 输出文件：`dtu_t536` 可执行文件（作为内核模块链接）

### 构建输出

构建生成以下文件：
- `dtu/dtu_main_t536/dtu_t536`：主可执行文件
- `dtu/dtu_main_t536/ko/<app_dir>/`：包含 CRC 校验二进制文件的输出目录

## 项目结构

### 主要目录

- `dtu/dtu_main_t536/app/`：主应用程序源代码
  - 核心模块：保护逻辑、通信协议、UI 等
  - `main.c`：应用程序入口点
  - `head.h`：包含所有模块头文件的主头文件
- `app_public/`：共享/公共代码库
  - `fuxi_public/`：平台抽象层
    - `rt_lite/`：实时操作系统抽象
    - `fuxi_bsp/`：板级支持包（ADC、GPIO、UART 等）
    - `bsp_share/`：共享 BSP 工具函数
  - `gps/`：GPS 模块
  - `sys_api/`：系统 API
  - `bluetooth/`：蓝牙支持
  - `wavelib/`：波形记录库
  - `xdljd/`：小电流接地逻辑
- `xenomai/`：Xenomai 实时框架头文件和库
- `build/`：CMake 构建目录（用于生成 compile_commands.json）

### 关键架构组件

1. **实时层**：基于 Xenomai，通过 `rt_lite` 抽象提供实时套接字、文件、FIFO
2. **BSP 层**：硬件抽象，包括 ADC (AD7616)、GPIO、UART、CAN、I2C、RTC
3. **协议栈**：IEC101、IEC104、Modbus、IEC61850/GOOSE
4. **保护逻辑**：开关保护、重合闸、FA（馈线自动化）
5. **UI 层**：基于 LVGL 的本地显示界面

### 配置系统

配置定义在 `dtu/dtu_main_t536/app/defineSys.h`：
- 区域特定宏（例如：广东 2020 标准使用 `GD_AREA_ECZD_2020`）
- 保护功能、通信协议的特性开关
- 硬件特定配置

关键配置宏：
- `CPU_FUXI`：目标 CPU 类型
- `GD_AREA_*`：区域/客户特定需求
- `SWITCH_NUM_MAX`：最大支持开关数
- `CFG_LINK_104_NUM`：IEC104 链路数量
- `CFG_LINK_101_NUM`：IEC101 链路数量

## 开发指南

### 文件组织

- 应用程序逻辑：`dtu/dtu_main_t536/app/*.c`
- UI 代码：`dtu/dtu_main_t536/app/ui/`
- BSP 代码：`app_public/fuxi_public/fuxi_bsp/source/`
- 公共头文件：`app_public/fuxi_public/fuxi_bsp/include/`

### 常见任务

**添加新源文件：**
1. 将 `.c` 文件添加到相应目录
2. 更新 `dtu/dtu_main_t536/sh/t536/Makefile` 中的 OBJS 列表
3. 如需要，添加对应的头文件

**修改构建配置：**
- 编辑 `dtu/dtu_main_t536/app/defineSys.h` 设置特性开关
- 编辑 `dtu/dtu_main_t536/sh/t536/` 中的构建脚本设置编译选项

**构建调试：**
```bash
# 启用详细构建输出
make v=1

# 生成 compile_commands.json 用于 IDE 支持
# （使用 bear：bear -- make -j6）
```

### 重要文件路径

- 主入口：`dtu/dtu_main_t536/app/main.c`
- 应用配置：`dtu/dtu_main_t536/app/Appconfig.c`
- 系统定义：`dtu/dtu_main_t536/app/defineSys.h`
- BSP 配置：`app_public/fuxi_public/fuxi_bsp/include/bspconfig.h`
- 构建脚本：`dtu/dtu_main_t536/sh/t536/mybuild_for_gw_public_t536`
- Makefile：`dtu/dtu_main_t536/sh/t536/Makefile`

### 硬件环境

- 平台：伏羲 T536（ARM Cortex-A55）
- ADC：AD7616（16 通道）
- IO 扩展：CH423S
- 温湿度传感器：AHT20
- 实时操作系统：Xenomai（Cobalt 内核）
