Flyswatter2 BeagleBone Black How To
This guide will walk you through connecting the Flyswatter2 and the BeagleBone Black board to your Linux PC, and installing and running OpenOCD. This guide was written with Ubuntu 12.04 LTS.
- 1 Connecting the Flyswatter2 to the BeagleBone Black
- 1.1 Locate the connector pads for P2 on the back side of the BeagleBone Black board
- 1.2 Take note of P2 pin numbers
- 1.3 Center the cTI 20-pin male header pins on the P2 pads.
- 1.4 Ensure the missing pin is aligned to the key pad
- 1.5 Solder each pin of the male header to the board
- 1.6 Double check the cTI 20-pin connector and make sure it is vertical to the surface of the BeagleBone Black
- 1.7 Attach the four standoffs to the back of the BeagleBone Black board
- 1.8 Connect the ARM20cTI20 JTAG Adapter to the BeagleBone Black Board.
- 1.9 Connect the 20-pin ribbon cable to the ARM20cTI20 JTAG Adapter
- 1.10 Position the 20-pin ribbon cable coming from the ARM20cTI20 JTAG Adapter
- 1.11 Connect the 20-Pin Ribbon Cable to the Flyswatter2.
- 2 Installing OpenOCD
- 3 The BeagleBone Black Config File
- 4 Running OpenOCD
- 5 Common OpenOCD Commands
- 6 Setting up Eclipse for ARM Cross-Development and Debugging
Connecting the Flyswatter2 to the BeagleBone Black
To connect the Flyswatter2 and the BeagleBone Black, you will need the following:
- Flyswatter2 USB JTAG Debugger
- ARM20cTI20 - ARM 20-pin to cTI 20-pin JTAG Adapter Board
- 20-pin ribbon cable
- USB Male A/Male B Cable (included with the Flyswatter2)
- mini USB Cable assembly (included with the BeagleBone Black)
Locate the connector pads for P2 on the back side of the BeagleBone Black board
The BeagleBone Black board comes from the factory without the 20-pin male JTAG header installed. In order to use JTAG with the BeagleBone Black board you must hand solder the cTI 20-pin male JTAG header onto the back of the BeagleBone Black board at location P2 (circled in yellow).
Take note of P2 pin numbers
Center the cTI 20-pin male header pins on the P2 pads.
Make sure the connector pins are centered on the P2 surface mount pads on the pcb.
Ensure the missing pin is aligned to the key pad
Solder each pin of the male header to the board
After you complete soldering all of the pins, double check each pin and make sure there is no solder shorts between adjacent pins. You can use a cotton tipped swab or small toothbrush dipped in isopropyl alcohol to clean and remove any residual solder flux. Removing the sold flux from the board is optional. The solder flux will not cause any electrical problems with the board. Cleaning the board is simply to improve the looks of the board.
Double check the cTI 20-pin connector and make sure it is vertical to the surface of the BeagleBone Black
Make sure there are no solder shorts between any pins on the male header. Also, if you cleaned the board with isopropyl alcohol, make sure all of the isopropyl alcohol has evaporated and the the BeagleBone Black board is completely dry before applying any power to the board.
Attach the four standoffs to the back of the BeagleBone Black board
The four hex standoffs are 1 inch long. This raises up the BeagleBone Black board up high enough so that the ARM20cTI20 JTAG Adapter board will clear the surface.
Connect the ARM20cTI20 JTAG Adapter to the BeagleBone Black Board.
Connect the 20-pin ribbon cable to the ARM20cTI20 JTAG Adapter
Position the 20-pin ribbon cable coming from the ARM20cTI20 JTAG Adapter
Connect the 20-Pin Ribbon Cable to the Flyswatter2.
Plug the mini USB cable into the BeagleBone Black and the other end into the PC.
Plug the USB cable into the Flyswatter2 and the other end into the PC. The green LED should illuminate and indicate power is on.
OpenOCD (Open On-Chip Debugger) is open-source software that interfaces with the BeagleBone Black. OpenOCD provides debugging and in-system programming for embedded target devices. You will need to compile OpenOCD from source. For instructions, see the guide below:
The BeagleBone Black Config File
OpenOCD uses specific configuration files for different devices. The config file for the Flyswatter2 is included with OpenOCD. A config file for the Beaglebone Black is also included, but it isn't compatible with the file for the Flyswatter2. Download the config file below:
Save the file into OpenOCD's /board/ directory. If you followed the compile guide above, you can find the /board/ directory at
Now you are ready to run OpenOCD. If you compiled OpenOCD yourself following the guide above, open a terminal window and enter:
cd ~/openocd-bin sudo ./openocd -f interface/flyswatter2.cfg -f board/ti_beaglebone_with_fs2.cfg -c init -c "reset init"
Your terminal window should now look something like this:
Pay careful attention to this line:
Info : JTAG tap: am335x.jrc tap/device found: 0x1b94402f (mfg: 0x017, part: 0xb944, ver: 0x1)
If you don't see that, you have an error of some kind. Refer to [OpenOCD Troubleshooting] and try again.
JTAG-DP_STICKY_ERROR on startup
The -c init -c "reset init" commands in the OpenOCD startup are a workaround for a bug in OpenOCD that affects the Beagleboard product line. If you start OpenOCD without these commands, you will see errors like this:
If you see these errors, then the next time you try to start OpenOCD it will give an error the next time it tries to communicate with the BeagleBone Black. When you exit OpenOCD you will need to disconnect and reconnect the power cable to the Flyswatter2 before OpenOCD will be able to communicate with the board again.
You cannot enter commands directly into OpenOCD. Open a new terminal window and start a telnet session by typing:
telnet localhost 4444
You will should see this prompt:
You can give commands to OpenOCD through this prompt.
Common OpenOCD Commands
To see a full list of OpenOCD commands, enter help in the telnet window.
Resets the BeagleBone Black. The output of the Reset command should look like this:
Sends a halt request to the BeagleBone Black. If the BeagleBone Black halts, you will see text output in the telnet window. (If the BeagleBone Black is already halted, you will see no output.)
You can also use halt followed by a time in milliseconds. OpenOCD waits for the target to halt the specified amount of time, then gives up if the target has not halted. You can use this to avoid OpenOCD hanging because the BeagleBone Black fails to halt. For example, to send a halt command with a timeout of one second, type:
Enter resume to end a halt. You will not see any text output in the telnet window.
Displays a numbered list of all of the BeagleBone Black's registers.
Run reg with a register number to display the contents of a register, in hexadecimal. The register number corresponds to the output of the reg command with no arguments, above. You must run the halt command before reading registers.
If you run reg while the BeagleBone Black is not halted, you will still see the value stored in the register. However, registers change contents very quickly while the device is running; by the time you see the value, the value actually in the register may be different. If you try to run reg while the device is not halted, you will see this:
reg [entry] [value]
Sets the value of a register. The register number corresponds to the output of the reg command with no arguments, above. Make sure the BeagleBone Black is halted (with the halt command) before you change the value of a register!
You can enter registry values in either decimal, by typing a number by itself, or in hexadecimal, by prefacing the value with 0x.
Shuts down OpenOCD cleanly. Also ends your Telnet session. Use this to exit OpenOCD instead of Ctrl-C.
Setting up Eclipse for ARM Cross-Development and Debugging
For information on setting up cross-development toolchain, Eclipse, and GDB Debugger for use with the BeagleBone Black, see the following guide: