BeagleBone and JTAG
Introduction
Hardware
Subarctic
CrossWorks for ARM
Download
 

Introduction

What is a BeagleBone?

The BeagleBone is the low-cost, high-expansion focused BeagleBoard using a low cost Sitara AM335x Cortex A8 ARM processor. It is similar to the earlier BeagleBoards and can act as a USB or Ethernet connected expansion companion for your current BeagleBoard and BeagleBoard-xM or work stand-alone. The BeagleBone is small even by BeagleBoard standards and with the high-performance ARM capabilities you expect from a BeagleBoard, the BeagleBone brings full-featured Linux to places it has never gone before. (Source: circuitco)

Personal I use the BeagleBone for Bare-Metal development and not for Linux. Here the JTAG is needed for debugging, and I would like to show different ways to use it.

Hardware

The easiest way to use JTAG could be done by the onboard JTAG adapter. This can be realized by using the "USB Client" connector. The connector is at the front, downside the PCB:

Onboard JTAG adapter
 

For more informatione take a look at the "BeagleBone System Reference Manual". If more performance is needed compared to the integrated JTAG adapter, an external adapter could be used. It is possible to modify the BeagleBone to use an optional 20 pin CTI JTAG header. More information about the modification can be found here, Optional JTAG Header. After the modification an additional adapter is needed too. The complete solution looks like:

External adapter
 

Here the additional adapter is a "J-Link TI-CTI-20 Adapter" from Segger which can be find here. An external JTAG hardware like a FT2232H based hardware can be used to increase the JTAG performance now.

If you prefer a DIY solution, it might look as follows:

DIY adapter
 

This solution based on the "Optional JTAG Header" but without the Samtec connector. A direct connection is soldered to the bottom of the circuit board. It looks like:

(Click inside the picture to expand)

Subarctic

If the bootloader is active on the BeagleBone, you will be asked for a SUBARCTIC driver by the Windows system. This is the case for example when the SD card is not used. It is annoying and I could not find any official driver. That is why I decided to create a dummy driver with libusb-win. You will find the dummy driver in the download section. The driver is for VID: 0451 and PID: 6141.

CrossWorks for ARM

I like to work with CrossWorks for ARM. You don't know CrossWorks for ARM? Take a look here. If the onboard JTAG adapter is used from the BeagleBone board, the "Texas Instruments XDS100" target which is supported by CrossWorks for ARM must be used.

It is also possible to use the external or DIY adapter with e.g. the "Olimex ARM-USB-TINY-H" target, which is faster than the onboard JTAG adapter. But in this case it is very important to set the
"JTAG Clock divider" to 2 in the target properties. I am using CrossWorks for ARM v2.3.5. But unfortunately it was not possible to use the J-Link JTAG adapter here.

A major advantage of the CrossWorks for ARM solution is that the CPU and SDRAM is being initialized before the actual start of the debugging session. Therefore it is possible to load the application into the external SDRAM. This is realized by load and execute of a Sitara StarterWare "Bootloader" before the application to debug.

Download

SUBARCTIC Dummy v20131013

CW-B2Test CrossWorks for ARM project