为RK3588手工启用JTAG

因为RK3588的JTAG信号是与其它设备复用的,所以有些情况下需要手工切换和启用JTAG信号。

根据RK3588的TRM手册,关键的配置寄存器名叫BUS_IOC_GPIO4D_IOMUX_SEL_L,它的高16位是写启用位,低16位定义如下:

挥码枪的SD接头连线如下:
![](https://www.nanocode.cn/wiki/uploads/gedu_ntp_wiki/images/m_95b06dd5cfb710d65b2e9c2e5329807b_r.png)
也就是把SD的D2和D3用作JTAG(TCK、TMS),D0和D1用作串口(UART2).

因为此,在使用挥码枪调试时,BUS_IOC_GPIO4D_IOMUX_SEL_L的值应该是0x5500.Bit 8-15的两个5用来启用TCK和TMS,Bit 0-8的两个0用来选取UART2.

以下是在NDB调试器下看到的正确值。

!dd 0x0`fd5f8000+0x98
00000000`fd5f8098  00005500 00000011 00000000 00000000
00000000`fd5f80a8  00000000 00000000 00000000 00000000
00000000`fd5f80b8  00000000 00000000 00000000 00000000
00000000`fd5f80c8  00000000 00000000 00000000 00000000
00000000`fd5f80d8  00000000 00000000 00000000 00000000
00000000`fd5f80e8  00000000 00000000 00000000 00000000
00000000`fd5f80f8  00000000 00000000 00000000 00000000
00000000`fd5f8108  00000000 00009aa0 00000009 00000000

通过U-Boot命令行启用JTAG

在3588系统启动的U-Boot阶段,按U-Boot热键进入U-Boot命令行。U-Boot热键没有明确的标准,在幽兰上是11.
在U-Boot命令行中执行如下命令进修改BUS_IOC_GPIO4D_IOMUX_SEL_L寄存器:

mw 0xfd5f8098 0xffff5500

使用devmem启用JTAG

进入到Linux系统后,可以使用devmem命令来修改BUS_IOC_GPIO4D_IOMUX_SEL_L寄存器,参考命令如下:

devmem 0xfd5f8098 w 0xffff5500

作者:Zhang Yinkui  创建时间:2024-09-23 15:29
最后编辑:Zhang Yinkui  更新时间:2025-12-30 20:40