Debugging on DaVinci using OpenOCD

From Texas Instruments Wiki
Jump to: navigation, search

This page gives you short introduction how to debug DaVinci devices (e.g. DM355 EVM) using Olimex JTAG dongles (both "Tiny" and normal ones) and similar JTAG adapters based on ft2232 USB chips.

These devices are available from e.g. See for more details.

Current OpenOCD

As of 7 May 2009, a ti_dm355.cfg file is in the OpenOCD source tree. Releases 0.2.0 and later include it; or you can get a snapshot of the current source tree. Release 0.3.1 updates that support. You can use this with any JTAG adapter supported by OpenOCD, including the FT2232 ones from Olimex and Amontec. XDS100 support can be added easily enough, but TI's license for the schematics prevents distributing such driver tweaks with OpenOCD.

You will probably want to create an openocd.cfg file that may look something like this:

 # these are the defaults, change them if you want
 gdb_port 3333
 telnet_port 4444
 tcl_port 6666

 # **CHANGE THIS** line to reflect the JTAG adapter you use
 # for example, interface/jtagkey.cfg (or jtagkey-tiny) for Amontec
 source [find  interface/olimex-jtag-tiny.cfg]

 # the ft2232 JTAG adapters don't support RTCK, so use a slow
 # clock (TCK) until after reset until the PLLs get set up
 jtag_khz 1500

 # DM355 EVM support ... custom boards may be similar
 # READ THE CONFIG FILE for more information
 source [find board/dm355evm.cfg]

The ETM and ETB are set up; for now you'll probably need to read source code to find out how to use them to trace what the ARM is doing. The GDB linkage works in the normal way. Read the config file to see if you need to change the EMU0 and EMU1 signal settings on your board; current versions of OpenOCD (e.g. 0.3.1) know how to use ICEpick to enable the TAP for the ARM926 core and ETB.

There is a DaVinci NAND driver which you can use to update NAND data. Be sure to use the right OOB layout; several are defined.

There is basic dm6446 and dm365 support too.

Original EMail

Diego Dompe from RidgeRun Engineering reported success with an older version of OpenOCD: