======================================================================== D60E 自动边界扫描测试仪 (D60E Auto-Tester) 基于 STM32F103 + OpenJTAG + Semihosting
[项目简介] 本项目利用 STM32F103 (Blue Pill) 作为 JTAG 主机,通过 GPIO 模拟 JTAG 时序,对 D60E 车载主板进行边界扫描测试(Boundary Scan)。 测试结果通过 OpenOCD Semihosting 技术实时回传至 PC 端显示。 本项目包含“反向供电”方案,无需 12V 外部电源即可激活目标板 MCU 进行测试。
[系统架构] PC (Git Bash) <==USB==> OpenJTAG <==JTAG==> STM32 <==GPIO==> D60E (Target)
- 硬件接线指南 (Hardware Setup)
A. OpenJTAG -> STM32 (下载/调试接口) 使用标准 20-pin JTAG 或 SWD 接口连接 OpenJTAG 与 STM32 Blue Pill。 确保 OpenOCD 能正常识别 STM32。
B. STM32 -> D60E (X701 接口) [核心连接]
- 注意:Pin 8 用于反向给 D60E 供电,严禁同时接入 P679 的 12V 电源!
| STM32 引脚 | D60E X701 引脚 | 功能说明 |
|---|---|---|
| PB12 | Pin 1 | TCK (时钟) |
| PB13 | Pin 9 | TMS (状态控制) |
| PB14 | Pin 7 | TDI (数据输出) |
| PB15 | Pin 5 | TDO (数据输入) |
| 3.3V | Pin 8 | 3.3V 反向供电 |
| GND | Pin 14 | 共地 |
- 软件环境 (Prerequisites)
- Windows 10/11 (推荐使用 Git Bash 终端)
- ARM GCC 编译器 (已包含在 gcc/ 目录下)
- OpenOCD (已包含在 openocd/ 目录下)
[目录结构说明] JTAG_Test/ ├── gcc/ # 编译器目录 ├── openocd/ # OpenOCD 工具 ├── fast_build.sh # [步骤1] 生成源码与工程文件脚本 ├── compile.cmd # [步骤2] 编译脚本 (生成 .elf) ├── setup_stm32_tester_v2.sh # [步骤3] 烧录与运行脚本 └── main.c # (自动生成) 测试固件源码
- 快速开始 (Quick Start)
步骤 1: 生成工程文件 在 Git Bash 中运行: $ ./fast_build.sh
此操作将生成 main.c, startup.s, linker.ld 和 compile.cmd。
步骤 2: 编译固件
在 Windows 资源管理器中双击运行 compile.cmd,或在终端运行:
$ ./compile.cmd
成功标志:显示 "[SUCCESS] Firmware created: D60E_Tester.elf"
步骤 3: 烧录并运行 连接好所有硬件,在 Git Bash 中运行: $ ./setup_stm32_tester_v2.sh run
OpenOCD 将自动启动,烧录固件,并开启监听窗口。
- 结果解读 (Logs)
运行成功后,终端将显示实时测试日志:
STM32 D60E Tester (Powered by 3V3 Pin) Raw Data [0-3]: AA BB ... <-- 显示原始数据的头几个字节 PB2 State: HIGH <-- 引脚测试结果 (HIGH/LOW)
- PB2 State: HIGH -> 引脚正常 (3.3V)
- PB2 State: LOW -> 引脚短路至地 (GND) 或开路
- Error: No Data -> JTAG 链路不通 (检查 Pin 8 供电和 Pin 14 接地)
- 自定义测试点 (Customization)
如需测试其他引脚(如 PA0):
- 打开
main.c。 - 找到
while(1)循环中的判断逻辑。 - 根据 BSDL 报告修改字节偏移量 (rx_buffer[x] >> y)。
- 重新运行
./compile.cmd编译。 - 重新运行
./setup_stm32_tester_v2.sh run。