<<Include(Tag/NeedsExpansion)>>

||<tablestyle="float:right; font-size: 0.9em; width:40%; background:#F1F1ED; margin: 0 0 1em 1em;" style="padding:0.5em;"><<BR>><<TableOfContents(2)>>||

= OpenOCD =


= Introduction =

OpenOCD provides [[http://openocd.berlios.de/web/|Free and Open On-Chip Debugging, In-System Programming and Boundary-Scan Testing]]

= Installation Instructions =

Look for the package named '''openocd''' in the Synaptic Package Manager and install it.

= Usage examples =

== Using OpenOCD with Olimex ARM-USB-OCD and LPC-H2103 ==

=== OpenOCD Setup ===
After installing OpenOCD package, you need to set permissions right. Create a file ""/etc/udev/rules.d/45-ft2232.rules"" with following contents:
{{{
BUS!="usb", ACTION!="add", SUBSYSTEM!=="usb_device", GOTO="kcontrol_rules_end"

SYSFS{idProduct}=="0003", SYSFS{idVendor}=="15ba", MODE="664", GROUP="plugdev"

LABEL="kcontrol_rules_end" 
}}}

Then connect ARM-USB-OCD to the USB port. Check ""dmesg"" which should give approximately the following output:

{{{
[  347.868034] usb 2-2: new full speed USB device using uhci_hcd and address 3
[  348.172550] usb 2-2: configuration #1 chosen from 1 choice
[  348.360463] usbcore: registered new interface driver usbserial
[  348.360496] USB Serial support registered for generic
[  348.360556] usbcore: registered new interface driver usbserial_generic
[  348.360561] usbserial: USB Serial Driver core
[  348.525815] USB Serial support registered for FTDI USB Serial Device
[  348.526020] usb 2-2: Ignoring serial port reserved for JTAG
[  348.526109] ftdi_sio 2-2:1.1: FTDI USB Serial Device converter detected
[  348.526155] usb 2-2: Detected FT2232C
[  348.526250] usb 2-2: FTDI USB Serial Device converter now attached to ttyUSB0
[  348.526277] usbcore: registered new interface driver ftdi_sio
[  348.526282] ftdi_sio: v1.4.3:USB FTDI Serial Converters Driver
}}}


Connect ARM-USB-OCD dongle to LPC-H2103 prototype board via JTAG cable.

Power on LPC-H2103 board by giving 5 volts between ''Vin'' and ''gnd'' pins. Refer to board schematics for correct pins ( http://www.olimex.com/dev/pdf/lpc-h2103-pins.pdf ). The board should now have power led (red) on and the other led (green) blinking.

Next you need to create a configuration file. More information here: http://openfacts.berlios.de/index-en.phtml?title=OpenOCD_configuration

The file can be named for example ''openocd.cfg'', and the contents of that file:

{{{
source [find interface/olimex-arm-usb-ocd.cfg]
source [find target/sam7x256.cfg]
}}}

This configuration should automatically find the correct default configurations for the board and for the dongle.

Start OpenOCD daemon with the following command:

{{{
openocd -f openocd.cfg

TODO: Add output here
}}}

Test the setup by connecting to openocd daemon with telnet:

{{{
telnet localhost 4444

TODO: add some more stuff here
}}}



=== ARM development toolchain ===

As there currently is no package for gnuarm toolchain, probably the easiest way to install the toolchain is first download the binaries from GNU ARM site:

http://www.gnuarm.com/files.html

I chose GNU/Linux (x86) package called "binutils-2.15, gcc-3.4.3-c-c++-java, newlib-1.12.0, insight-6.1, TAR BZ2" [56.0MB]

Save this file to some directory, e.g. /home/username/bin, and extract it there by right-clicking the package and selecting "Extract here". This results to a directory /home/username/bin/gnuarm-3.4.3.

You may want to make a softlink to this directory: 
{{{
ln -s /home/username/bin/gnuarm-3.4.3 /home/username/bin/arm
}}}

There is now a directory /home/username/bin/arm/bin which includes all gnu arm tools. This directory can be added to your path for easier access by adding the following to the end of /etc/profile:

{{{
# set PATH so it includes ARM cross-compiling tools
if [ -d "/home/username/bin/arm/bin" ] ; then
    PATH="/home/username/bin/arm/bin:$PATH"
fi
}}}

You may need to activate the change with
{{{
source /etc/profile
}}}
until the changes are made active. 

Finally, try out the toolchain by issuing a command:
{{{
user@machine:~$ arm-elf-gcc --version
arm-elf-gcc (GCC) 3.4.3
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
}}}



In case you want to compile the toolchain from sources, have a look at these sites:

http://blog.nutaksas.com/2009/05/installing-gnuarm-arm-toolchain-on.html

http://www.alphapogo.de/



=== Blinking led example ===

''Todo: Blinking led code''

''Todo: Compilation''

''TODO: upload with openocd''

''TODO: Running''

= Further Help and Documentation =

Most of the instructions in this page are adopted from
http://danielromaniuk.com/?q=node/19

OpenOCD website: http://openocd.berlios.de


= Further Reading =

SparkFun Electronics forum: http://forum.sparkfun.com/


Usage info: http://openfacts.berlios.de/index-en.phtml?title=Open%20On-Chip%20Debugger

Good howto: http://www.sparkfun.com/tutorial/ARM/ARM_Cross_Development_with_Eclipse.pdf



----