Beagleboard Troubleshooting: JTAG Tap Unexpected

From eLinux.org
Revision as of 18:18, 11 April 2012 by Wmat (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

This page is specific to the Beagleboard. For non-board-specific troubleshooting, see OpenOCD Troubleshooting: JTAG Tap Unexpected.


You start OpenOCD with the Flyswatter or Flyswatter2 and the Beagleboard and see an error like this:

Beagle ocdstartup jtagfailed.png


Info : JTAG tap: omap3530.jrc tap/device found: 0x000000ff (mfg: 0x07f, part: 0x0000, ver: 0x0)
Warn : JTAG tap: omap3530.jrc       UNEXPECTED: 0x000000ff (mfg: 0x07f, part: 0x0000, ver: 0x0)
Error: JTAG tap: omap3530.jrc  expected 1 of 1: 0x0b7ae02f (mfg: 0x017, part: 0xb7ae, ver: 0x0)

OpenOCD has read the board's CPU tap ID as 0x000000ff. If you see the value 0x000000ff or 0x00000000, OpenOCD has failed to read the tap ID correctly. This guide will walk you through troubleshooting the issue.





Solution 1: Restart with -c "init" -c "reset init"

An issue with OpenOCD and the Beagleboard sometimes prevents OpenOCD from initializing the JTAG chain correctly. As described in the Flyswatter How To, you can prevent the issue by running the init and reset init commands on OpenOCD startup.

  • Unplug the USB cable from the Flyswatter or Flyswatter2.
  • Unplug the power cable from the Beagleboard.
  • Plug both devices back in.
  • Start OpenOCD as follows:



(with the Flyswatter2)

openocd -f interface/flyswatter2.cfg -f board/ti_beagleboard.cfg -c "init" -c "reset init"

(with the Flyswatter)

openocd -f interface/flyswatter.cfg -f board/ti_beagleboard.cfg -c "init" -c "reset init"

If using Ubuntu, use the sudo command as normal.

 sudo openocd -f interface/flyswatter2.cfg -f board/ti_beagleboard.cfg -c "init" -c "reset init"





Solution 2: Check the JTAG Cable Connections

OpenOCD won't be able to read the Beagleboard's CPU tap ID if the JTAG ribbon cable is connected incorrectly. Make sure the cable is secured at both ends and aligned correctly on the pins.

Make sure the JTAG cable isn't connected backwards. The pin numbers are marked on the Beagleboard in small print around the JTAG header. On the ribbon cable included with the Beagleboard Adapter Kit, Pin 1 is marked with a red stripe. Make sure it aligns with Pin 1 on the board.

Beagle jtag wrong.png Beagle jtag wrong2.png Beagle jtag correct.png





Solution 3: Disable Adaptive Clocking

OpenOCD sometimes has issues initializing the Beagleboard's JTAG with the Flyswatter2 adaptive clocking enabled. Adaptive clocking is enabled in the config file omap3530.cfg, called from ti_beagleboard.cfg. You will need to run OpenOCD with a modified config file that doesn't enable adaptive clocking.


Download omap3530_norclk.cfg
Right-click the link and select "Save As"

  • Download the file above to OpenOCD's /target folder:
  • Unplug the USB cable from the Flyswatter2.
  • Unplug the power cable from the Beagleboard.
  • Plug both devices back in.
  • Start OpenOCD as follows:



openocd -f interface/flyswatter2.cfg -f target/omap3530_norclk.cfg -c "init" -c "reset init"

If using Ubuntu, use the sudo command as normal.

 sudo openocd -f interface/flyswatter2.cfg -f target/omap3530_norclk.cfg -c "init" -c "reset init"


After OpenOCD starts successfully the first time you may be able to start it again as normal. Unplug the Flyswatter/Flyswatter2 and the Beagleboard and restart as in Solution 1. If you need to resort to disabling adaptive clocking again, you can still enable adaptive clocking manually once OpenOCD starts. Connect to OpenOCD via telnet or GDB as normal and enter the following command:

jtag_rclk 1000