DevGuide/OpenOCD

== Installation ==
=== Ubuntu/Debian packages ===
openocd 0.5 is a recommendation of the paparazzi-dev package, install it if not already done so. For older distributions (Debian squeeze, Ubunutu Lucid, Maverick and Natty) backported packages are available in the ppa:paparazzi-uav/ppa. See Installation.
The latest paparazzi-arm-multilib packages also already include gdb for arm.
=== from source ===
==== libftdi ====
The low level interfacing is done by libftdi. The package libftdi-dev should already have been installed as a dependency of paprazzi-dev.
As an alternative you can get it from http://www.intra2net.com/de/produkte/opensource/ftdi/ although this is outdated!
It is possible to use a closed source version from FTDI, too.
 wget http://www.intra2net.com/de/produkte/opensource/ftdi/TGZ/libftdi-0.10.tar.gz
 tar xvfz libftdi-0.10.tar.gz
 cd libftdi-0.10
 ./configure
 make
 make install
==== OpenOCD ====
Get the OpenOCD software http://openocd.sourceforge.net/ Make sure you have automake and autoconf installed.
 git clone git://openocd.git.sourceforge.net/gitroot/openocd/openocd
 cd openocd
 ./configure --enable-ft2232_libftdi
 make
 make install
For some debian distributions you might have to add '/usr/local/lib' to /etc/ld.so.conf.d/i486-linux-gnu.conf and call
 ldconfig
== JTAG Debug Configuration ==
=== STM32 ===
GDB needs to exactly know the target architecture and OpenOCD currently does not automatically hand GDB all the needed details.
You will need a xml file with the target description, save it and load it in your .gdbinit:
 set tdesc filename ~/path/to/gdb_cortex_m3_target.xml
For lisa/m boards file lisa-m.cfg should look like:
# the Lost Illusions Serendipitous Autopilot
# http://paparazzi.enac.fr/wiki/Lisa
# Work-area size (RAM size) = 64kB for STM32F103RB device
set WORKAREASIZE 0xFA00
source [find target/stm32f1x.cfg]
=== LPC21xx ===
Generate an OpenOCD config - this one worked, might need some polishing
 #daemon configuration
 telnet_port 4444
 gdb_port 3333
 
 #interface
 interface ft2232
 ft2232_layout "jtagkey"
 ft2232_vid_pid 0x0403 0xcff8
 jtag_speed 2
 
 # reset_config <signals> [combination] [trst_type] [srst_type]
 reset_config trst_and_srst
 
 #jtag scan chain
 jtag_device 4 0x1 0xf 0xe
 jtag_nsrst_delay 333
 jtag_ntrst_delay 333
 
 #target configuration, what to do on a target reset
 target arm7tdmi little run_and_halt 0 arm7tdmi-s_r4
 run_and_halt_time 0 30
 daemon_startup reset
 #target_script 0 reset openocd.script
 working_area 0 0x40000000 0x4000 nobackup
 
 # flash bank lpc2000 <base> <size> 0 0 <variant> <target#> <clock> ['calc_checksum']
 # mthomas: LPC2138 @ 12MHz 0x7D000 from 500*1024 (not 512!)
 flash bank lpc2000 0x0 0x7D000 0 0 lpc2000_v2 0 12000 calc_checksum
This .gdbinit should start gdb in the correct way for the lpc21xx:
 #set directories $cdir:$cwd:../lcds16x2/
 set can-use-hw-watchpoints 2
 set complaints 33
 set history save
 set history size 333
 set logging on
 set output-radix 0x10
 set step-mode on
 set trust-readonly-sections on
 set verbose on
 set watchdog 15
 
 target remote localhost:3333
 monitor soft_reset_halt
 # only for RAM: monitor arm7_9 sw_bkpts enable
 monitor arm7_9 force_hw_bkpts enable
 hbreak main
 #load
 #continue
Read this using the LPC2148 examples: http://www.yagarto.de/howto/yagarto2/index.html
Category:Software Category:Developer_Documentation