DevGuide/GDB OpenOCD Debug
JTAG debugging
Paparazzi boards do not have a JTAG interface. The one time we needed a JTAG debugger because of some strange problems we used Keil/Olimex LPC2148 boards with a professional JTAG tool. All the parallel port Wiggler adapters and the software for that showed poor performance and were abandoned.
Recently some new JTAG adapters that use the FTDI2232 USB-parallel converter were introduced through OpenOCD (you can try your Wiggler with that, too). The USB JTAG adapters are available from Olimex or Amontec and work fine with Windows (Yagarto). Getting them to work with Linux is still a little adventure. This is collected info from various sites. The paparazzi-dev packages should be installed.
Install
The low level interfacing is done by libftdi, get it from http://www.intra2net.com/de/produkte/opensource/ftdi/ 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
Get the OpenOCD software http://openfacts.berlios.de/index-en.phtml?title=Building_OpenOCD It needs some additional packages to be built.
apt-get install autoconf apt-get install automake apt-get install subversion svn checkout svn://svn.berlios.de/openocd/trunk cd trunk ./bootstrap ./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
Put an entry with the vendor/device ID into your udev rules directory to get the correct access rights (or use the file from cvs in conf/system/udev/rules). This applies to Amontec JTAG-Tiny.
add 'BUS=="usb", SYSFS{idVendor}=="0403", SYSFS{idProduct}=="cff8", GROUP="plugdev"'
Generate an OpenOCD config - this one worked for me, 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
The arm-gdb is not in the Paparazzi package yet, you have to get it from somwhere else for now. This .gdbinit should start gdb in the correct way:
#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
Get Eclipse 3.2.2 (Debian Etch Eclipse package does not work, there is some problem with JRE 1.4.x)
wget http://download.eclipse.org/eclipse/downloads/drops/R-3.2.2-200702121330/download.php?dropFile=eclipse-SDK-3.2.2-linux-gtk.tar.gz tar xvfz eclipse-SDK-3.2.2-linux-gtk.tar.gz
Unzip the Eclipse embedded CDT from Zylin for embedded debugging http://www.zylin.com/embeddedcdt.html
wget http://www.zylin.com/embeddedcdt-linux-gtk-20060908.zip wget http://www.zylin.com/zylincdt-20060908.zip cd eclipse unzip embeddedcdt-linux-gtk-20060908.zip unzip zylincdt-20060908.zip
Now you have to get used to Eclipse, read this using the LPC2148 examples: http://www.yagarto.de/howto/yagarto2/index.html