# 自动化测试架构设计 ## 目标 基于芯片手册和 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 } ```