===== JTAG debugging ===== Some Realtek switches have an unpopulated JTAG header on the main board. Depending on the device, these can be made functional with some small modifications. ==== Header types ==== The following headers have been encountered: * 2.54m pitch, 14-pin header: MIPS EJTAG layout * 1.27mm pitch, 20-pin header: possibly Toshiba MIPS 20-pin with missing nSRST ==== otto.cfg ==== The following config file for OpenOCD can be loaded in addition to your JTAG probe config. It assumes a chain of two elements, with the MIPS CPU being the second device. The first device is assumed to be the switch core, although it could also be something else. # Realtek Otto/Otto40 MIPS SoC # Modified from ath79.cfg # https://openwrt.org/docs/guide-user/hardware/debrick.ath79.using.jtag#ath79cfg if { [info exists CHIPNAME] } { set _CHIPNAME $CHIPNAME } else { set _CHIPNAME otto } if { [info exists ENDIAN] } { set _ENDIAN $ENDIAN } else { set _ENDIAN big } if { [info exists CPUTAPID] } { set _CPUTAPID $CPUTAPID } else { set _CPUTAPID 0x00000001 } if { [info exists SWITCHTAPID] } { set _SWITCHTAPID $SWITCHTAPID } else { set _SWITCHTAPID 0x00001001 } jtag_ntrst_assert_width 200 jtag_ntrst_delay 1 reset_config trst_only #jtag newtap $_CHIPNAME cpu -irlen 5 -ircapture 0x1 -irmask 0x1f -expected-id $_CPUTAPID jtag newtap $_CHIPNAME switchcore -irlen 5 -expected-id $_SWITCHTAPID jtag newtap $_CHIPNAME cpu -irlen 5 -expected-id $_CPUTAPID set _TARGETNAME $_CHIPNAME.cpu target create $_TARGETNAME mips_m4k -endian $_ENDIAN -chain-position $_TARGETNAME {{tag>jtag}}