feat: 完善 MCU 芯片自动化测试架构
- 重构为三角色协作:人+Arch AI+执行AI - 新增 Excel 寄存器表格解析工具,自动生成测试代码 - 新增串口日志分析工具,自动生成测试报告 - 完善项目文档:AGENTS.md、README.md - 创建自动化测试架构设计文档 - 添加示例测试任务 P01-001
This commit is contained in:
@@ -0,0 +1,198 @@
|
||||
# 自动化测试架构设计
|
||||
|
||||
## 目标
|
||||
|
||||
基于芯片手册和 Excel 寄存器表格,通过 JTAG 调试工具和串口工具,自动验证芯片实际功能是否与文档描述一致。
|
||||
|
||||
---
|
||||
|
||||
## 架构概览
|
||||
|
||||
```
|
||||
┌────────────────────────────────────────────────────────────┐
|
||||
│ 输入资源层 │
|
||||
│ ┌──────────────────┐ ┌──────────────────────┐ │
|
||||
│ │ Excel寄存器表格 │ │ 芯片手册/文档 │ │
|
||||
│ └──────────────────┘ └──────────────────────┘ │
|
||||
└────────────────────────┬───────────────────────────────────┘
|
||||
│
|
||||
┌────────────────────────▼───────────────────────────────────┐
|
||||
│ 解析与生成层 (Arch AI) │
|
||||
│ ┌─────────────────────────────────────────────────────┐ │
|
||||
│ │ 寄存器解析 → 寄存器定义头文件 → 测试框架代码生成 │ │
|
||||
│ └─────────────────────────────────────────────────────┘ │
|
||||
└────────────────────────┬───────────────────────────────────┘
|
||||
│
|
||||
┌────────────────────────▼───────────────────────────────────┐
|
||||
│ 自动化测试层 (执行AI) │
|
||||
│ ┌─────────────────────────────────────────────────────┐ │
|
||||
│ │ 测试固件编译 → JTAG下载 → 运行 → 串口日志收集 │ │
|
||||
│ └─────────────────────────────────────────────────────┘ │
|
||||
└────────────────────────┬───────────────────────────────────┘
|
||||
│
|
||||
┌────────────────────────▼───────────────────────────────────┐
|
||||
│ 验证与报告层 │
|
||||
│ ┌─────────────────────────────────────────────────────┐ │
|
||||
│ │ 日志解析 → 与预期结果对比 → 生成测试报告 │ │
|
||||
│ └─────────────────────────────────────────────────────┘ │
|
||||
└────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 核心组件
|
||||
|
||||
### 1. 寄存器解析器
|
||||
- 输入:`docs/00_芯片资料/registers/*.xlsx`
|
||||
- 输出:
|
||||
- C 头文件 (`projects/P01_chip_test/inc/registers.h`)
|
||||
- 测试描述文件 (`projects/P01_chip_test/tests/test_specs.json`)
|
||||
|
||||
### 2. 测试固件生成器
|
||||
- 输入:测试描述文件
|
||||
- 输出:
|
||||
- 自动生成的测试代码 (`projects/P01_chip_test/src/auto_*.c`)
|
||||
- 包含:寄存器读写测试、功能验证、串口输出
|
||||
|
||||
### 3. JTAG 调试工具
|
||||
- 位置:`tools/jtag/`
|
||||
- 功能:
|
||||
- 自动编译固件
|
||||
- JTAG 下载固件
|
||||
- 单步调试控制
|
||||
- 断点设置
|
||||
|
||||
### 4. 串口监控工具
|
||||
- 位置:`tools/uart/`
|
||||
- 功能:
|
||||
- 实时监控串口输出
|
||||
- 日志捕获与保存
|
||||
- 日志格式解析
|
||||
|
||||
### 5. 结果验证器
|
||||
- 输入:捕获的串口日志
|
||||
- 输出:
|
||||
- PASS/FAIL 结果
|
||||
- 差异报告
|
||||
- 统计信息
|
||||
|
||||
---
|
||||
|
||||
## 测试流程
|
||||
|
||||
```
|
||||
┌─────────────────┐
|
||||
│ 1. 解析寄存器 │
|
||||
│ Excel 表格 │
|
||||
└────────┬────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────────┐
|
||||
│ 2. 生成头文件 │
|
||||
│ registers.h │
|
||||
└────────┬────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────────┐
|
||||
│ 3. 生成测试代码 │
|
||||
│ auto_test.c │
|
||||
└────────┬────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────────┐
|
||||
│ 4. 编译固件 │
|
||||
│ Arm GCC/Clang │
|
||||
└────────┬────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────────┐
|
||||
│ 5. JTAG 下载 │
|
||||
│ 到芯片 │
|
||||
└────────┬────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────────┐
|
||||
│ 6. 运行测试 │
|
||||
│ 串口输出日志 │
|
||||
└────────┬────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────────┐
|
||||
│ 7. 日志捕获 │
|
||||
│ 分析结果 │
|
||||
└────────┬────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────────┐
|
||||
│ 8. 验证与报告 │
|
||||
│ 生成测试报告 │
|
||||
└─────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 测试类型
|
||||
|
||||
### 1. 寄存器读写测试
|
||||
- 写入已知值到寄存器
|
||||
- 读回寄存器值
|
||||
- 验证读写一致性
|
||||
|
||||
### 2. 位域操作测试
|
||||
- 设置特定位域
|
||||
- 读取并验证位域值
|
||||
- 验证复位值
|
||||
|
||||
### 3. 功能模块测试
|
||||
- GPIO:输入输出、中断
|
||||
- UART:发送接收
|
||||
- Timer:定时、中断
|
||||
- 其他外设
|
||||
|
||||
### 4. 边界条件测试
|
||||
- 极端值测试
|
||||
- 非法值测试
|
||||
- 时序测试
|
||||
|
||||
---
|
||||
|
||||
## 串口日志格式
|
||||
|
||||
测试固件输出日志格式:
|
||||
|
||||
```
|
||||
[TEST] 测试名称: 开始
|
||||
[REG] 寄存器名: 写入值=0x1234, 读回值=0x1234
|
||||
[PASS] 寄存器名: 读写一致
|
||||
[FAIL] 寄存器名: 期望值=0x1234, 实际值=0x5678
|
||||
[INFO] 附加信息
|
||||
[TEST] 测试名称: 结束
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 工具链
|
||||
|
||||
| 工具 | 位置 | 用途 |
|
||||
|------|------|------|
|
||||
| parse_registers.py | shared/scripts/ | 解析 Excel 寄存器表格 |
|
||||
| flash.sh | tools/jtag/ | JTAG 下载固件 |
|
||||
| monitor.sh | tools/uart/ | 串口监控 |
|
||||
| analyze_log.py | shared/scripts/ | 日志分析与验证 |
|
||||
|
||||
---
|
||||
|
||||
## 配置文件
|
||||
|
||||
### test_config.json
|
||||
```json
|
||||
{
|
||||
"target": "Cortex-M7",
|
||||
"compiler": "arm-none-eabi-gcc",
|
||||
"jtag_tool": "pyocd",
|
||||
"uart_port": "/dev/ttyUSB0",
|
||||
"uart_baud": 115200,
|
||||
"test_timeout": 30,
|
||||
"retry_count": 3
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user