NXP MIMXRT1170-EVKB 开发板默认启用 SWD 调试模式,仅需 2 个引脚即可实现基础烧录与调试,但在边界扫描测试、多平台兼容调试等场景下,需切换至 JTAG 模式(支持边界扫描、多设备链调试等扩展功能)。RT1170 系列无需烧写 eFuse(区别于 RT10xx 系列),仅需通过硬件 Rework 隔离信号复用、软件配置引脚复用模式,即可成功启用 JTAG。本文详解从硬件改造到调试连接的完整流程,解决 “Rework 后仍无法识别 JTAG” 的常见问题。
资料获取:RT1170-EVKB使能JTAG调试
1. SWD 与 JTAG 核心差异对比
1.1 功能与适用场景
| 调试模式 | 核心优势 | 引脚数量 | 适用场景 |
|---|---|---|---|
| SWD | 引脚少(2 个)、烧录速度快、仅支持 ARM 平台 | 2(SWDIO、SWCLK) | 常规开发调试、快速烧录 |
| JTAG | 支持边界扫描、多设备级联、兼容 FPGA/MCU 多平台 | 5(TDI、TDO、TCK、TMS、TRST) | 生产测试、边界扫描、多设备调试 |
1.2 RT10xx 与 RT11xx 使能 JTAG 的关键区别
- RT10xx:需烧写 eFuse 切换模式,烧写后不可恢复,且需移除特定电阻隔离复用信号;
- RT11xx(含 RT1170):无需烧写 eFuse,支持 SWD/JTAG 动态切换,仅需硬件 Rework + 引脚配置即可启用。
2. RT1170-EVKB JTAG 使能步骤
2.1 硬件 Rework:隔离信号复用(核心前提)
RT1170-EVKB 的 JTAG 引脚与 DMIC、GPIO 等功能复用,需通过移除电阻断开复用,避免信号干扰:
(1)需移除的电阻
- 关键电阻:R187、R208、R195、R78(参考 RT1170-EVK 官方文档,EVKB 同理);
- 操作目的:这些电阻用于连接 JTAG 引脚与其他外设(如 DMIC),移除后可确保 JTAG 信号纯净。
(2)断开板级调试器隔离
2.2 软件配置:引脚复用模式切换(解决 “识别不到 JTAG” 的关键)
客户反馈 “硬件 Rework 后仍无法识别 JTAG”,核心原因是默认代码将 JTAG 引脚(如 TDO)复用为 SWO(ARM 跟踪输出),且配置为下拉模式,导致 JTAG 信号异常。需通过代码配置引脚为 JTAG 功能:
(1)JTAG 引脚对应关系
RT1170-EVKB 的 JTAG 引脚与 GPIO 映射如下:
| JTAG 信号 | 对应 GPIO 引脚 | 复用模式(ALT0) |
|---|---|---|
| TDI | GPIO_LPSR_12 | JTAG_MUX_TDI |
| TDO | GPIO_LPSR_11 | JTAG_MUX_TDO |
| TCK | GPIO_LPSR_14 | JTAG_MUX_TCK |
| TMS | GPIO_LPSR_15 | JTAG_MUX_TMS |
| TRST | GPIO_LPSR_10 | JTAG_MUX_TRSTB |
(2)引脚配置代码(添加到BOARD_InitPins(void)函数)
#include "fsl_iomuxc.h"
void BOARD_InitPins(void) {
// 启用GPIO_LPSR时钟(JTAG引脚属于LPSR域)
CLOCK_EnableClock(kCLOCK_Iomuxc_Lpsr);
// 配置JTAG引脚为ALT0模式(JTAG功能),禁用下拉/上拉或按需配置
IOMUXC_SetPinMux(IOMUXC_GPIO_LPSR_10_JTAG_MUX_TRSTB, 0U); // TRST
IOMUXC_SetPinMux(IOMUXC_GPIO_LPSR_11_JTAG_MUX_TDO, 0U); // TDO
IOMUXC_SetPinMux(IOMUXC_GPIO_LPSR_12_JTAG_MUX_TDI, 0U); // TDI
IOMUXC_SetPinMux(IOMUXC_GPIO_LPSR_14_JTAG_MUX_TCK, 0U); // TCK
IOMUXC_SetPinMux(IOMUXC_GPIO_LPSR_15_JTAG_MUX_TMS, 0U); // TMS
// 配置引脚电气属性(按需调整,确保信号稳定)
// TDO引脚配置示例:慢斜率、高驱动能力、弱上拉
IOMUXC_SetPinConfig(IOMUXC_GPIO_LPSR_11_JTAG_MUX_TDO,
0x0AU | // Slew Rate: 慢斜率
0x30U | // Drive Strength: 高驱动能力
0x00U | // Pull Select: 禁用下拉
0x01U | // Pull Up/Down: 弱上拉
0x00U); // Open Drain: 禁用
}
(3)配置说明
MUX_MODE=0U:选择 ALT0 模式,即 JTAG 功能(默认可能为 ALT7 模式,对应 SWO);- 上拉 / 下拉配置:TDO 引脚需配置为弱上拉(避免电压过低),其他引脚可按实际需求配置;
- 代码位置:需在系统初始化阶段(如
main函数之前)执行,确保引脚配置优先于其他功能。
2.3 调试器连接与验证
(1)硬件连接
- 使用 20-pin 标准 JTAG 调试座,连接 RT1170-EVKB 的 JTAG 接口;
- 调试器选择:支持 JTAG 的调试器(如 J-Link、ULINK Pro)。
(2)调试软件配置
- 打开调试软件(如 J-Link Commander);
- 配置接口类型为 JTAG,速率设为 4000kHz;
- 选择目标设备为
MIMXRT1176XXXA_M7; - 执行连接命令,若显示 “JTAG chain detection found 1 devices”,且识别到 JTAG-DP,说明连接成功。
(3)边界扫描测试(可选)
- 若需进行边界扫描,可使用调试软件自带的边界扫描工具,读取 JTAG 链信息,验证扫描功能正常。
3. 常见问题排查
问题 1:Rework 后仍识别不到 JTAG
- 排查方向:
- 电阻是否完全移除(未虚焊);
- J113 是否断开;
- TDO 引脚电压是否过低(若为低电平,大概率是被复用为 SWO,需检查引脚配置代码);
- 解决方法:重新检查硬件 Rework,确保引脚配置代码正确执行(可在串口打印引脚复用模式验证)。
问题 2:JTAG 连接不稳定,频繁断开
- 排查方向:
- 解决方法:降低调试速率,增强引脚驱动能力,优化电源滤波。
问题 3:连接成功但无法调试代码
- 排查方向:
- 目标设备选择错误(需选择
MIMXRT1176XXXA_M7,而非其他型号); - 代码未正确配置引脚(JTAG 功能未启用);
- 调试器固件版本过低(更新调试器固件);
- 目标设备选择错误(需选择
- 解决方法:确认设备型号,重新烧录含 JTAG 引脚配置的代码,更新调试器固件。
4. 关键避坑事项
- 无需烧写 eFuse:RT1170 支持 SWD/JTAG 动态切换,烧写 eFuse 会导致功能受限,切勿操作;
- 引脚复用优先级:JTAG 引脚需优先配置为 ALT0 模式,避免被其他功能(如 SWO、UART)占用;
- 调试速率匹配:JTAG 速率需与 MCU 时钟匹配,过高会导致信号失真,建议从低速率(如 1000kHz)开始测试;
- 硬件 Rework 精度:移除电阻时需避免损坏周边焊盘,建议使用热风枪低温操作。
RT1170-EVKB 启用 JTAG 调试的核心是 “硬件隔离复用信号 + 软件配置引脚功能”,区别于 RT10xx 系列,无需烧写 eFuse,配置灵活且可恢复。关键步骤是移除复用电阻、断开板级调试器隔离,并通过代码将引脚切换为 JTAG 模式,解决 TDO 引脚电压过低的核心问题。该方案适用于生产测试、边界扫描等场景,帮助开发者充分利用 JTAG 的扩展功能。
阅读全文
280