RT Paparazzi
Real Time (RT) Paparazzi
Introduction
the RT Paparazzi initiative is a step towards extended flexibility for the core autopilot. In a real time operating system (RTOS) [1] multiple threads are available, which are doing specific jobs e.g. a telemetry thread, a radio thread, a failsafe thread, at a defined rate. Unlike bare-metal application which uses interrupt driven timers for timing tasks, real time OS has a kernel which takes care of scheduling and running the threads. Having a kernel, it is possible to set priority of each thread, how much memory it takes etc.etc. which gives the developer more control over timing and resource managment.
Besides kernel, a typical RTOS also has a harware abstraction layer (HAL) which stands between user application and actual hardware, so the application developer doesn't have to worry about drivers.
Main strength of Paparazzi is it's modularity - combining this with precise timing, scheduling and resource management that brings RTOS, Paparazzi can now exceed even the leading commecial closed UAV autopilots.
Paparazzi with ChibiOS/RT
RT Paparazzi is based on ChibiOS/RT [2]. ChibiOS/RT supports basically all architectures that standard Paparazzi does (see [3]), which makes both systems compatible. Since RTOS makes handling multiple I/O easier, but comes with some extra overhead (context switching, kernel code), it gives most leverage to to STM32 F1xx and F4xx based autopilots (Lisa/M_v20, Lisa/S, STM32F4_Discovery, KroozSD...).
The development of RT Paparazzi with ChibeOS was started by the AggieAir team [4] at Utah State University.
Getting the sourcecode
Most recent code is available under rt_paparazzi branch from Paparazzi Git repo [5], however you can check these two repositories too ([6] and [7])
Debugging with an Eclipse IDE
Having a good development and debugging environment is a must for developing RT embedded system. The steps of setting up Eclipse IDE are described here [8] and here [9].
An alternative guide is for example here [10]
Just a few notes to the process:
- install GCC Arm Embedded toolchain [11] (recommended anyway for Paparazzi since v 5.0)
- get Black Magic probe from Blacksphere [12], it will make your life easier
- in Creating a GDB Debug Configuration use the following commands for Black Magic Probe:
target extended-remote /dev/ttyACM0 monitor jtag_scan attach 1 monitor vector_catch disable hard set mem inaccessible-by-default off monitor option erase set print pretty
(for Lisa/Lia F4 board use swdp_scan instead of jtag_scan)
- if you are using luftboot, don't forget to add image offset into the debug configuration:
- don't forget in "Eclipse->Window->Preferences->Run/Debug->Launching->Default Launchers->GDB Hardware Debugging" set preferred launcher to "Standard GDB" (otherwise the ChibiOS/RT plugin won't work, tested in Eclipse Kepler Service Release 1):
- to use ChibiOS/RT debug module for Eclipse, download ChibiStudio (it is for Windows only) from SourceForge [13], extract it and from ChibiStudio/eclipse/plugins copy
org.chibios.tools.eclipse.config_1.2.1.jar org.chibios.tools.eclipse.debug_1.0.8.jar
to your eclipse/plugins directory. Restart Eclipse and in "Help->About Eclipe->Installation Details->Plugins" you should see both chibios plugins. Enable the plug-in while in the "Debug" view under: Window->Show View->Other...->ChibiOS/RT->ChibiOS/RT" (see [14] for details)
Paparazzi on Linux
Taking the ARDrone 2 base install is a good example how Paparazzi could be used to run the core Autopilot executable