Difference between revisions of "Dev/Debugging"

From PaparazziUAV
Jump to navigation Jump to search
(moved gdb/jtag content to DevGuide/JTAG-Debug)
Line 1: Line 1:
= Introduction =
== GDB via JTAG ==
GDB can be used for debugging the code on the boards. Here are a couple of words on [[JTAG]] itself and [[DevGuide/JTAG-Debug#JTAG_debugging|debugging process]].
GDB and JTAG can be used for debugging the code directly on the boards. Here are a couple of words on [[JTAG]] itself and the [[DevGuide/JTAG-Debug|debugging process]].


= Procedure =
== Test programs ==
# Start openocd in a new shell since this process needs to remain running.
:-)
#: To program the Lisa/L board run the command
#:<pre>openocd -f interface/lisa-l.cfg -f board/lisa-l.cfg</pre>
#:or if you are still using the old paparazzi-stm32 package and your path is not set properly
#:<pre>cd /opt/paparazzi/stm32/share/openocd/scripts/; /opt/paparazzi/stm32/bin/openocd -f interface/lisa-l.cfg -f board/lisa-l.cfg</pre>
#: To program the Lisa/M board via JTAG change dir to "<paparazzi root>/arm-multilib/share/openocd/scripts", and run the command:
#:<pre>openocd -f interface/flossjtag.cfg -f board/lisa-l.cfg</pre>


''NOTICE:'' 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>
# Start GDB with an argument of the elf file created and uploaded to the board.
#: If you programmed with the ap target then the command would be along the lines of
#:<pre>arm-none-eabi-gdb var/<airframe>/ap/ap.elf</pre>
#:or (if you are using the old paparazzi-stm32 package)
#:<pre>/opt/paparazzi/stm32/bin/arm-none-eabi-gdb ./var/<airframe>/ap/ap.elf</pre>
#: Replace <airframe> with the name of the airframe that has been built.
# Now connect GDB to the board
#:<pre>target remote localhost:3333</pre>
# Now we need to set some break points in the code.
#: In this example the ap target was part of the rotorcraft and main.c contains the main program. Open rotorcraft sw/airborne/firmwares/rotorcraft/main.c and find a line at which you'd like to set a break point.
#: <pre>break main.c:113</pre>
# Stop the currently running code
#: <pre>monitor reset halt</pre>
# Reset the code back to the start
#: <pre>monitor reset init</pre>
# We probably want to ignore the interrupt calls for the moment so we can step through the code as it's being called. Note that we don't always want to do this.
#:<pre>monitor cortex_m3 maskisr on</pre>
# Now we can run the program which will stop at the break point we set.
#:<pre>continue</pre>
== Useful commands ==
* A stack trace can be printed with the command
*:<pre>bt</pre>
* show the variable of a variable
*:<pre>print i2c1.status</pre>
* Show (eXamine) the value of the 9 bytes hardware register at address 0x40005800 and show them in hex format:
*:<pre>x/9x 0x40005800</pre>
* In some cases you may not be able to access some memory areas in the mcu, in that case you should try:
*:<pre>set mem inaccessible-by-default off</pre>


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

Revision as of 06:35, 12 February 2012

GDB via JTAG

GDB and JTAG can be used for debugging the code directly on the boards. Here are a couple of words on JTAG itself and the debugging process.

Test programs

:-)