Difference between revisions of "DevGuide/OpenOCD"

From PaparazziUAV
Jump to navigation Jump to search
m
Line 7: Line 7:
=== from source ===
=== from source ===
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.
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.
Probably more recent version available?


  wget http://www.intra2net.com/de/produkte/opensource/ftdi/TGZ/libftdi-0.10.tar.gz
  wget http://www.intra2net.com/de/produkte/opensource/ftdi/TGZ/libftdi-0.10.tar.gz
Line 16: Line 17:


Get the OpenOCD software http://openfacts.berlios.de/index-en.phtml?title=Building_OpenOCD It needs some additional packages to be built.
Get the OpenOCD software http://openfacts.berlios.de/index-en.phtml?title=Building_OpenOCD It needs some additional packages to be built.
Not on berlios anymore...


  apt-get install autoconf
  apt-get install autoconf
Line 31: Line 33:
  ldconfig
  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"'
== Configuration ==


Generate an OpenOCD config - this one worked for me, might need some polishing
=== 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 [https://gist.github.com/1808576 xml file with the target description], save it and load it in your <tt>.gdbinit</tt>:
  set tdesc filename ~/path/to/gdb_cortex_m3_target.xml
 
For lisa/m boards file lisa-m.cfg should look like:
<pre># 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]</pre>
 
=== LPC21xx ===
Generate an OpenOCD config - this one worked, might need some polishing


  #daemon configuration
  #daemon configuration
Line 88: Line 102:
  #continue
  #continue


 
Read this using the LPC2148 examples: http://www.yagarto.de/howto/yagarto2/index.html
Unzip the Eclipse embedded CDT from Zylin for embedded debugging http://www.zylin.com/embeddedcdt.html
There probably are more up-to-date versions available ;-)
 
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


[[Category:Software]] [[Category:Developer_Documentation]]
[[Category:Software]] [[Category:Developer_Documentation]]

Revision as of 06:44, 12 February 2012

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 Paparazzi repositories. See Installation. The latest paparazzi-arm-multilib packages also already include gdb for arm.

from source

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. Probably more recent version available?

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. Not on berlios anymore...

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


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