一, 抛出问题
RT1170默认是支持JTAG/SWD引脚功能的,正如RM所定义那样:
图1
但是,有时候会发现在使用JLINK commander连接RT1170的时候,出现SWD能连上,JTAG连不上的问题:
SWD连接OK:
图2
JTAG 连接失败:
图3
那么遇到这样的问题,该如何解决呢?
二, 解决问题
这里以NXP 官方的MIMXRT1170-EVK revC1板子为例,需要注意点如下:
- 板子修改
R187,R208,R195,R78去掉,因为这些电阻导致JTAG信号和板上其他电路复用,会影响JTAG的连接和仿真。 - 下载一个使能了JTAG引脚功能的代码。
为什么这么做,防止之前的代码已经把JTAG的引脚给用了,导致这个时候,默认无法连接JTAG,具体做法可以在app的pinmux.c中添加如下代码:
IOMUXC_SetPinMux(
IOMUXC_GPIO_LPSR_10_JTAG_MUX_TRSTB,
0U);
IOMUXC_SetPinMux(
IOMUXC_GPIO_LPSR_11_JTAG_MUX_TDO,
0U);
IOMUXC_SetPinMux(
IOMUXC_GPIO_LPSR_12_JTAG_MUX_TDI,
0U);
IOMUXC_SetPinMux(
IOMUXC_GPIO_LPSR_13_JTAG_MUX_MOD,
0U);
IOMUXC_SetPinMux(
IOMUXC_GPIO_LPSR_14_JTAG_MUX_TCK,
0U);
IOMUXC_SetPinMux(
IOMUXC_GPIO_LPSR_15_JTAG_MUX_TMS,
0U);
确保JTAG功能是被使能的。SWD方式下载完配置好了JTAG引脚功能的代码,这个时候再次使用JLINK commander去连接,结果如下:
图4
可以看到,JTAG已经能够成功找到内核,说明JTAG已经工作了。