One of the things I've found more interesting and useful in Robotics is debugging.
Most of the time we use to print out traces through a serial port and, the luckiest ones, who own a JTAG emulator, can dig deeper into their bugs but always with a cable plugged.
So, now thanks to the excellent Espardino project and the help of its author, Ajo, who is a very good friend of mine, I decided to write my own stub for the ARM cortex-m3 architecture. You can check out more information about Espardino's remote monitor here.
Also, the following are a nice source of information I used to write this stub:
- The definitive guide to the ARM Cortex-m3
- Application Note 209 Using Cortex-M3 and Cortex-M4 Fault Exceptions by Keil
- Daniel Jacobwitz patch for the Linux Kernel - single stepping Thumb2 programs
The video below shows a debugging session of the stub running inside the LPC1343 ARM Cortex-M3 of the uXbot robot. The GDB is connected to a tiny application which acts as a bridge between the TCP connection and the bluetooth link to the robot. Given that this application is listening on a TCP port, the GDB debugger can be running somewhere else (on my iPhone? ;)) and it would still work.
In my next article I will get more into detail about the stub itself and the exception handling.