OpenOCD (Open On-Chip Debugger)
OpenOCD JTAG server is a open-source on-chip debug solution for targets based on the ARM7, ARM9, Cortex-M3 and XSCALE families with Embedded-ICE macrocell support via JTAG port. It enables source level debugging with the standard GNU Debugger GDB compiled for the ARM architecture. In addition internal and external FLASH memory programming is supported. Any GDB aware integrated development environment, example Eclipse IDE, IAR or Emacs, can benefit from OpenOCD. “Free” means that it is licensed under the General Public License (GPL).
User interaction is realized through a telnet command line interface and a gdb (the GNU debugger) remote protocol server.
OpenOCD supports various different types of Amontec JTAG interfaces/programmers:
* Parallel port wigglers as: - Macraigor Wiggler JTAG cable (via Amontec ARM Debug ValuePack / Chameleon POD) - Amontec JTAG Accelerator (via Amontec ARM Debug ValuePack / Amontec Chameleon POD) * USB port FTDI FT2232: - Amontec JTAGkey (USB JTAG / 5V 3.3V 3V 2.5V 1.8V 1.5V) - Amontec JTAGkey-Tiny(USB JTAG / 3.3V Only)
It supports a number of different ARM cores (Flash programming / core debugging):
* OpenOCD for ARM ARM7TDMI (-s) * OpenOCD for ARM ARM9TDMI * OpenOCD for ARM ARM920t * OpenOCD for ARM ARM922t * OpenOCD for ARM ARM926ej-s * OpenOCD for ARM ARM966e * OpenOCD for ARM Cortex-M3
Support for Intel XScale CPUs is also included:
* OpenOCD for XSCALE PXA25x * OpenOCD for XSCALE PXA27x * OpenOCD for XSCALE IXP42x
Support for the Marvell Feroceon CPU core as found in the Orion SoC family is included as well.
Support for TI OMAP is in the pipe.
Support for cod:blocks is in the pipe. This will enable a much easier IDE than the Eclipse IDE.
OpenOCD .pdf Documentation
Here you will find the last openocd.pdf
OpenOCD .html Documentation
Here you will find the openocd documentation in a browsable HTML format.
OpenOCD Source View
Here you will view the last svn source.
OpenOCD Source checkout by SNV
Fetch the source with :
svn checkout http://svn.berlios.de/svnroot/repos/openocd/trunk
OpenOCD Environment
All the OpenOCD is designed in C code style. It comes with makefiles to build openOCD on different Operating Systems as Windows and Linux for the most popular.
OpenOCD is initialized at startup from a .cfg Configuration file. The Configuration file allows to define the Telnet connection / the JTAG cable used / the specific JTAG chain / the start-up sequence / ...
OpenOCD JTAG Server and Amontec JTAGkey
From the begin of OpenOCD, Amontec provides low-cost hardware solutions for debugging over OpenOCD. The first Hardware was the Amontec Chameleon POD and his Amontec JTAG Accelerator Core (VHDL JTAG Accelerator IP). Actually Amontec JTAG Accelerator is still the faster solution for downloading Flash over OpenOCD).
6 months after the begin of OpenOCD, Amontec developed first commercial USB JTAG cable for the OpenOCD, the Amontec JTAGkey. The Amontec JTAGkey is very robust and very popular. You can find a lot of OpenOCD scripts based on the JTAGkey Hardware.
Also, the Amontec JTAGkey is used by many other specific JTAG boundary scan software like Universal Scan, Scanseer, the Toradex Colibri Software.
OpenOCD Target Support
The ARM core is the CPU of an ARM-based system on-chip (SOC). ARM released a series of architectures of their cores, currently the most important are v4, v4T and v5T. The architecture corresponds with the instruction set. The cores can be grouped into core families, e.g. ARM7T, ARM9T and ARM9E. Besides the CPU there are a number of other macrocells e.g. for debugging, in-circuit emulation, memory management, caches, DSP extensions, 64-bit multiplication and other purposes.
|
Architecture
|
Core Family
|
System Core
|
Processor
|
|
v4T
|
ARM7TDMI
|
ARM720T
|
(a) (h)
|
|
|
ARM7TDMI-S
|
ARM720T
|
(d)
|
|
|
ARM9TDMI
|
ARM920T ARM922T ARM940T
|
(b) (c)
|
|
v5TE
|
ARM9E
|
ARM946E-S ARM966E
|
(e)
|
|
|
ARM9EJ
|
ARM926EJ-S
|
(j)
|
|
|
XSCALE
|
PCA2xx IXP4XX IOP3XX
|
(f) (f) (f)
|
|
V7M
|
Cortex
|
Cortex M3
|
(g)
|
|
|
Cortex
|
Cortex M8
|
(h)
|
|
Currently the OpenOCD JTAG Server and the Amontec JTAGkey have successfully been used with Atmel AT91R40008 (a), Atmel AT91SAM7 (a), Atmel AT91RM9200 (b), Analog Devices ADuC70xx (a), Cirrus EP93xx (b), Hynix / Hyundai HMS30C7202 (h), Intel XScale (f), Luminarymicro LM3S811 (g), Micrel KS8695PX (c), NetSilicon NET+50 (a), NetSilicon NS7520 (a), NXP (Philips) LPC2xxx (d), Samsung S3C44B0 (a), Samsung S3C2410 (b), Sharp LH7A404 (c), ST Microelectronics STR7x (a), ST Microelectronics STR9x (e), TI MSP470 (a), Atmel AT91RM9261 (e), Samsung S3C2412 (e), Philips LPC3xxx (e) and Hilscher NETX 500 (e), ST Microelectronics STM32 (g), Luminar Cortex-M3 (g). TI OMAP
Probably many more devices including those from other manufacturers will immediately work ...
OpenOCD Forum and OpenOCD Mailing List
Official OpenOCD forum : https://lists.berlios.de/pipermail/openocd-development/
The best of way of getting patches integrated is sending them to the OpenOCD mailing list , see https://lists.berlios.de/mailman/listinfo/openocd-development for instructions on how to subscribe to the mailing list.
OpenOCD History
2005 Hubert Hogl and Dominic Rath from Fachhochschule Augsburg working on the OpenOCD C source code. 2005 Laurent Gauch from Amontec introducing Amontec JTAG Accelerator on the Chameleon POD. 2005 Laurent Gauch from Amontec introducing first USB to JTAG solution for the OpenOCD with the Amontec JTAGkey (based on the FTDI FT2232 chip). 2005 Martin THOMAS from Technische Universitat Kaiserslautern test and resume many ARM7 ARM9 projects using OpenOCD and Amontec JTAGkey, see here. 2006 Michael Fischer from Yagarto starts the great YAGARTO website introducing the full Eclipse IDE - GNU ARM - JTAG solution with excellent setups, tutorials and configuration file example based on the Amontec JTAGkey. 2006-2007 Other companies come with other JTAG FT2232 solutions (Olimex - Xverves - Limunar ...) 2007 you as many Engineers / Hobbyists join the work on OpenOCD Server and participate to its development. 2008 a lot of code improvements + Jim script introduction 2009 OpenOCD get Doxygen for a future documentation of the C code itself.
|