Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
dt_openocd [2014/02/10 23:37] yusa |
dt_openocd [2014/06/27 09:35] (current) beckmanf added flyswatter usb configuration |
||
---|---|---|---|
Line 20: | Line 20: | ||
<code> | <code> | ||
git clone git://git.code.sf.net/p/openocd/code openocd-code | git clone git://git.code.sf.net/p/openocd/code openocd-code | ||
+ | </code> | ||
+ | |||
+ | Install the libusb-1.0 package | ||
+ | |||
+ | <code> | ||
+ | sudo apt-get install libusb-1.0-0-dev | ||
+ | ./bootstrap | ||
+ | ./configure --prefix=$HOME/site | ||
+ | make | ||
+ | make install | ||
+ | </code> | ||
+ | |||
+ | Add the file /etc/udev/rules.d/52-flyswatter.rules. This will make the usb device accessible without root permissions. | ||
+ | |||
+ | <code> | ||
+ | # Flyswatter JTAG Debugger | ||
+ | SUBSYSTEMS=="usb", ATTR{idVendor}=="0403", ATTR{idProduct}=="6010", MODE="0666" | ||
</code> | </code> | ||
Line 36: | Line 53: | ||
You can use openOCD with various hardware, so you have to tell openOCD which one you are actually using. This is done with some special Configuration Files. Overall you need three of these files: | You can use openOCD with various hardware, so you have to tell openOCD which one you are actually using. This is done with some special Configuration Files. Overall you need three of these files: | ||
- | * interface config file descripes which hardware debugger you are usingÌý | + | * interface config file: Descripes which hardware debugger you are usingÌý |
- | * board config file descripes which kind of board you are usingÌý | + | * board config file: Descripes which kind of board you are usingÌý |
- | * target config files descripes which microcontroller you are using | + | * target config files: Descripes which microcontroller you are using |
You can find a lot of configuration files for specific hardware there: | You can find a lot of configuration files for specific hardware there: | ||
Line 153: | Line 170: | ||
reg [NAME] [VALUE] | reg [NAME] [VALUE] | ||
</code> | </code> | ||
+ | |||
=== Debugging with gdb === | === Debugging with gdb === | ||
- | Follows soon... | + | If you want to debug your hardware more comfortable you are able to use gdb.Ìý |
+ | You should use the gdb provided by your Toolchain. For example mipsel-none-elf-gdb for a MIPS architecture. | ||
+ | <code> | ||
+ | mipsel-none-elf-gdb main.elf | ||
+ | </code> | ||
+ | |||
+ | |||
+ | Connect to the gdbserver on the local pc using port 3333. | ||
+ | |||
+ | <code> | ||
+ | (gdb) target remote localhost:3333 | ||
+ | </code> | ||
+ | |||
+ | Send commands to gdbserver using the monitor command | ||
+ | |||
+ | <code> | ||
+ | (gdb) monitor reset halt | ||
+ | </code> | ||
+ | |||
+ | Now the hardware performs a reset and halts directly. You can use gdb as normal: | ||
+ | |||
+ | You can list the source code: | ||
+ | |||
+ | <code> | ||
+ | (gdb) list | ||
+ | </code> | ||
+ | |||
+ | Set breakpoints (e.g. at line 27) | ||
+ | |||
+ | <code> | ||
+ | (gdb) br 27 | ||
+ | </code> | ||
+ | |||
+ | Run the program until the next breakpoint occurs. | ||
+ | |||
+ | <code> | ||
+ | (gdb) continue | ||
+ | </code> | ||
+ | |||
+ | Walk step by step through your source code | ||
+ | |||
+ | <code> | ||
+ | (gdb) next | ||
+ | </code> | ||
+ | |||
+ | or print variable content | ||
+ | |||
+ | <code> | ||
+ | (gdb) print [var] | ||
+ | </code> | ||