I bought my first hardware debugger. The TI XDS110 Debug Probe.
Up till now, I always used the on-board debug modules of development boards to program and debug devices. That's great for prototyping and evaluation. In industry settings, you use different tools to do development on custom boards and to program + test designs on a production line.
Most development and evaluation boards have a debugger on board.
It's often a dedicated IC that uses USB to handle power, serial communication and debugging at once:
- Many TI LaunchPads use a TM4C microcontroller (they run XDS110 emulation, same as the probe I'm describing here).
- Older LaunchPads use the FTDI FT2322 in combination with a Xilinx XC2C32A CoolRunner-II CPLD (XDS100 emulation).
- The Infineon XMC 2Go has an Infineon XMC4200 (Segger emulation).
- The Maxim MAX32660 dev board uses a MAX32625 (Segger emulation).
The principle is always the same: provide an easy to use development and debug experience with just a single USB connection.
When you are evaluating a microcontroller - or learning to program it - this is perfect. The best possible experience.
Also in the prototype stage you often use an evaluation board instead of designing your own PCB with microcontroller on it.
The on-board debugger gives you a headstart then.
Once you go beyond this point and you build for production, the situation changes.
You can still get by for early prototypes of your device. Several dev boards allow to tap off the debugger signal and use it to program other devices.
While working on your bench, you can use the original dev board's debugger and wire it up to your early proto's JTAG (and optionally serial RX/TX) lines.
In particular the SimpleLink CC1310 LaunchPad is handy. It has a dedicated 10 pin debug output connector and most pins can be tapped of via the jumpers in the middle of the board.
But these emulators don't have all debug pins - it's a subset. And it's not an officially supported debug/program device for production use.
Given these constraints, they are still excellent for home and early design.
For later stages of the development where you're no longer tinkering on your workbench, a separate debugger/ programmer will come into play.
What's in the Package?
The debugger comes with a few add-ons. These allow you to adapt the pin-out of the probe (see TI Compact 20-pin in the table below) to a few popular configurations.
source: product page
There's an auxiliary output with configurable I/O pins and a supply that can be used to power your target design.
These are the main parts:
- TI 20-pin debug cable
- TI 20-pin to TI 14-pin converter adapter
- TI 20-pin to ARM Cortex 20-pin converter adapter
- TI 20-pin to ARM Cortex 10-pin converter adapter
- 14-pin auxiliary cable
- Breakout board for auxiliary cable
The layout of the JTAG types supported by the device are shown below.
source: TI Resource Explorer
Column 2, 4 and 5 are supported by the 3 adapters. Column 3 is the pinout of the default flat cable.
I've tested the debugger with three different ARM microcontrollers.
The SimpleLink CC1310 shown above in the blog header.
A Hercules TMS570LS04 automotive device. This time I used the debug probe's aux to power the target design:
The third device was a CC2650 SensorTag.
In all situations, the debugger worked straight away.
I used Code Composer Studio to load firmware and run a full debug session with breakpoints, stepping, watches and expressions.
I also used the UniFlash loader to test a firmware load from command line and SmartRF Studio to talk to the on-board radio of the CC1310 and CC2650 devices.
The critique I have is that the status LEDs are almost invisible.
The LEDs shine straight-up from the PCB, but the holes to see them are at the side of the case. You almost have to lay your face on the table and peek through the holes to see activity.
Most development boards will have at least 2 USB ports when you plug them into a PC: the debug port and a UART serial port. This probe is the same. But the serial lines aren't automatically connected to the target controller. They aren't part of the JTAG standard.
The serial TX and RX lines are available on the aux connector. You can tap them of there and connect them to your microcontroller's UART peripheral.
I've taken some pictures of the internals.