2. TRACE32硬件连接与目标板初始化

搭建一个最小可调试系统,核心目标只有一句话:让 TRACE32 软件能够通过调试探头稳定地“看见”目标芯片,并完成一次成功的连接检测。这个过程涉及三个层面的配合——物理连接、上电时序和复位配置。任何一环出错,都会表现为连接失败、芯片识别异常或调试会话频繁断开。本节以 PowerDebug 系列(USB 或以太网接口)配合 PowerTrace 模块调试一颗 ARM Cortex-M 类目标芯片为例,完整走通从接线到首次连接检测的全过程。

物理连接:探头、目标接口与信号定义

TRACE32 调试探头通常由两部分组成:基础调试模块(如 PowerDebug USB/Ethernet)负责与主机通信并提供调试控制,跟踪模块(如 PowerTrace)负责高速程序流或数据跟踪。两者通过专用高速接口级联,最终由一根调试扁平线缆连接到目标板的调试接口。

对于 Cortex-M 芯片,最常见的物理接口是 10 针或 20 针的 JTAG/SWD 排针。SWD 模式只需要四根关键信号:SWCLK(时钟)、SWDIO(双向数据)、GND(地)和 VTref(目标参考电压)。VTref 的作用常被忽视——TRACE32 通过它感知目标 I/O 电平,从而自动调整输出电平。如果 VTref 未连接或电压异常,探头可能无法识别目标或输出错误电平。

接线时需注意三点:第一,GND 必须与目标板共地,且尽量使用线缆中多根地线以降低回流阻抗;第二,SWCLK/SWDIO 走线应尽量短,避免与高频信号并行;第三,若目标板调试口有 nRESET 引脚,建议接入探头,以便 TRACE32 控制复位。下表给出一个典型的 10 针 SWD 接口连接对照。

引脚信号方向说明
1VTref目标→探头目标 I/O 参考电压,决定探头输出电平
2SWDIO双向串行数据线,需上拉
3GND—共地
4SWCLK探头→目标串行时钟,需下拉
5GND—共地
6SWO目标→探头可选,用于 ITM 跟踪
7KEY—通常悬空或接地,防插反
8TDI探头→目标JTAG 模式使用,SWD 可悬空
9GNDDetect—检测目标是否上电
10nRESET探头→目标复位控制,建议连接

上电时序:谁先谁后,为什么重要

上电顺序直接影响探头能否正确识别目标。推荐顺序是:先给目标板上电,再连接探头 USB/以太网到主机,最后启动 TRACE32 软件。原因在于,TRACE32 在启动时会扫描调试链并读取目标 ID,如果此时目标未上电,VTref 为 0,探头会报告“目标未供电”或直接无法识别。

如果目标板与探头由同一电源系统供电,需确保探头的地先于或同时与目标地连接,避免地电位差通过调试线缆灌入芯片 I/O。对于支持热插拔的调试口,虽然探头本身有保护,但反复带电插拔仍可能累积损伤。稳妥做法是:断电接线,先上目标电,再上探头电,最后启动软件。

若目标板由电池供电且无法断电,至少应确保接线时目标处于复位保持状态,接好后再释放复位。

复位配置:让芯片停在可控的起点

复位配置决定了 TRACE32 连接后芯片处于什么状态。常见选项有三类:不复位、复位后运行、复位后停止。对于初次连接检测,建议选择“复位后停止”,这样芯片停在上电复位向量处,便于确认 PC 指针、栈指针和时钟配置是否正常。

在 TRACE32 中,复位行为通过 SYStem 命令组配置。例如:

SYStem.RESetMode HARD      ; 使用硬件复位
SYStem.Option RESetMode STOP ; 复位后停止
SYStem.Option WAITRESET ON   ; 等待复位释放
SYStem.Up                    ; 连接并初始化调试系统

其中 SYStem.Up 是首次连接的核心命令,它会执行复位、停止 CPU、初始化调试寄存器。如果目标芯片有独立看门狗,还需在连接后立即关闭或喂狗,否则芯片可能在调试过程中被复位。

首次连接检测:从命令到现象

完成接线和上电后,在 TRACE32 命令窗口依次执行以下命令进行检测:

SYStem.CPU CortexM4        ; 指定目标 CPU 类型
SYStem.JtagClock 10MHz     ; 设置调试时钟,初次可降低
SYStem.Up                  ; 建立连接
SYStem.Mode                ; 查看当前状态
Register.Set PC            ; 读取 PC 指针
Data.List 0x00000000 /Long ; 读取复位向量表

成功连接的典型现象是:命令窗口返回无错误,状态显示为“stopped”或“running”,PC 指针指向复位向量或当前执行地址,读取 0x00000000 处能看到有效的栈顶地址和复位入口。如果返回 “JTAG ID not found” 或 “Debug port fail”,则说明物理连接或上电时序有问题。

调试时钟在初次连接时建议从较低频率开始,例如 1MHz 或 4MHz,确认连接稳定后再逐步提高到目标允许的上限。过高的时钟在长线缆或噪声环境下容易导致握手失败。

TRACE32 最小可调试系统连接与初始化 主机 PC TRACE32 软件 PowerDebug USB / Ethernet PowerTrace 跟踪模块(可选) 目标板 调试接口 目标芯片 电源 USB/网线 高速接口 跟踪线缆 调试扁平线 关键信号 SWCLK / SWDIO GND / VTref nRESET(可选) 推荐上电时序 ① 目标板上电 VTref 建立 ② 探头接主机 USB/网线 ③ 启动软件 扫描调试链 ④ SYStem.Up 连接检测

连接失败时的排查路径

如果 SYStem.Up 返回错误,按以下顺序排查:先确认 VTref 电压是否在目标 I/O 电平范围内(通常 1.8V~3.3V),用万用表直接测量调试口第 1 针;再检查 SWDIO/SWCLK 是否接反或虚焊;然后降低 JTAG 时钟到 1MHz 重试;最后确认目标芯片是否处于复位保持、低功耗模式或安全启动状态,这些状态可能关闭调试端口。

若目标芯片有 TrustZone 或安全调试使能位,首次连接可能被拒绝。此时需要先通过芯片特定的解锁流程(如写入选项字节)开放调试访问。这类情况在量产芯片中较常见,建议在最小系统搭建阶段就确认芯片的调试安全配置。

不要在目标板上电状态下反复插拔调试排针。带电插拔可能通过 I/O 保护二极管形成瞬态电流路径,损坏探头或芯片引脚。

最小可调试系统的验收标准

完成上述步骤后,用以下四条标准判断系统是否可用:第一,SYStem.Up 无错误返回;第二,Register.Set PC 能读出合理地址(如复位向量指向的 Flash 地址);第三,Data.List 0x00000000 能读出有效的向量表内容;第四,执行 Go 后 Stop 能正常暂停并显示当前 PC。四条全部满足,说明物理连接、上电时序和复位配置均已正确,可以进入后续的下载、断点和跟踪调试环节。

这套最小系统的价值在于把问题隔离在“连接层”。一旦连接稳定,后续的 Flash 编程、RAM 调试、实时跟踪才有可靠基础。建议在每次更换目标板或探头后,都重新执行一次上述检测流程,而不是直接假设连接仍然有效。