Difference between revisions of "Developer Guide"
(20 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
==Introduction== | ==Introduction== | ||
By the time you land on this page, you probably want to enhance the Paparazzi project, that is really good for your karma and really appreciated. | By the time you land on this page, you probably want to enhance the Paparazzi project, that is really good for your karma and really appreciated by the Paparazzi community. We welcome contributions and improvements to the documentation. | ||
[[Image:FixIt.jpg|right|FixIt]] | [[Image:FixIt.jpg|right|FixIt]] | ||
See also [[Doxygen]] for documentation close to the code. | |||
==[[Contributing|Contributing]]== | ==[[Contributing|Contributing]]== | ||
You would like to contribute, but are not | You would like to contribute, but are not sure how, then [[Contributing|this is the page to visit]] | ||
==[[DevGuide/CodeEditors|Code Editing]]== | ==[[DevGuide/CodeEditors|Code Editing]]== | ||
How to setup your IDE for use with the | How to setup your IDE for use with the source code | ||
==[[DevGuide/LearningToProgram|Learning to Program]]== | ==[[DevGuide/LearningToProgram|Learning to Program]]== | ||
Improve your Paparazzi code in OCAML,C,C++ and Python | Improve your Paparazzi code in OCAML,C,C++ and Python | ||
==[[DevGuide/AircraftBuildProcess|Aircraft build process and code generation]]== | |||
Description of the (rather complicated) build system and code generation regarding the airborne firmwares | |||
==[[DevGuide/DesignOverview|Design Overview]]== | ==[[DevGuide/DesignOverview|Design Overview]]== | ||
Line 38: | Line 43: | ||
==[[Reference/bootloader]]== | ==[[Reference/bootloader]]== | ||
All questions about bootloader but | All of the questions and answers about the bootloader, but were afraid to ask | ||
===[[Lpc21iap|LPC USB firmware]]=== | ===[[Lpc21iap|LPC USB firmware]]=== | ||
All answers to the Paparazzi USB bootloader of question you never dared to ask | All of the answers to the Paparazzi USB bootloader of question you never dared to ask | ||
====[[Lpc21BootloaderUpload|Upload Bootloader for LPC21xx]]==== | ====[[Lpc21BootloaderUpload|Upload Bootloader for LPC21xx]]==== | ||
How to [[[[Lpc21BootloaderUpload|upload the Bootloader]] to a LPC2148 processor based | How to [[[[Lpc21BootloaderUpload|upload the Bootloader]] to a LPC2148 processor based Autopilot board like the TWOG | ||
===[[Luftboot|Upload the luftboot bootloader]]=== | ===[[Luftboot|Upload the luftboot bootloader]]=== | ||
How to upload the Bootloader to a STM32 processor based | How to upload the Bootloader to a STM32 processor based Autopilot board like the [[Elle0]] or [[Lisa/M]] | ||
===[[DFU|Upload with DFU (with native or custom dfu bootloader)]]=== | ===[[DFU|Upload with DFU (with native or custom dfu bootloader)]]=== | ||
Using the native ( | Using the native (embedded in ROM) or custom (e.g. [[Luftboot]] or [[KroozSD#Bootloader|KroozSD]]==) bootloader to upload Paparazzi code | ||
===[[STLink|Upload with STLink via SWD (without Bootloader)]]=== | ===[[STLink|Upload with STLink via SWD (without Bootloader)]]=== | ||
General ST-LinkV2 page. | |||
==[[DevGuide/ | ==[[DevGuide/GDB_OpenOCD_Debug|GDB OpenOCD Debug]]== | ||
Using GDB or OpenOCD to directly flash and debug Hardware | |||
==[[DevGuide/USB-Serial|USB-Serial]]== | ==[[DevGuide/USB-Serial|USB-Serial]]== | ||
Using | Using a USB connection instead of UART for use with telemetry | ||
==[[ControlTheory]]== | ==[[ControlTheory]]== | ||
All [[ControlTheory|information you are looking for about the harsh reality of | All [[ControlTheory|information you are looking for about the harsh reality of Control Theory]] needed to let your aircraft fly | ||
==[[Demystified/Altitude and Height|Altitude and Height]]== | ==[[Demystified/Altitude and Height|Altitude and Height]]== | ||
Altitude and Height demystified | Altitude and Height demystified | ||
==[[ | ==[[Abi|AirBorne Interface ABI]]== | ||
Presentation of the airborne communication system | |||
==[[DevGuide/StateInterface]]== | ==[[DevGuide/StateInterface]]== | ||
Line 78: | Line 83: | ||
==[[Builds|Continuous Integration builds]]== | ==[[Builds|Continuous Integration builds]]== | ||
Info on the [[Builds|Continuous Integration builds]] (CI) server | Info on the [[Builds|Continuous Integration builds]] (CI) server | ||
==Coding Standards== | |||
JPL (Jet Propulsion Laboratory) released their own coding standards (can be downloaded for free here: [http://lars-lab.jpl.nasa.gov/JPL_Coding_Standard_C.pdf JPL C Coding Standards and Guidelines]). They include MISRA-C rules and directives, but add their own rules on top of that. They also specify different levels of compliance (LOC) because not always it is necessary to comply with all of the rules. Anyway, they are making things that go to space, so we can definitely learn something about good coding practices from them. | |||
==[[DevGuide/Releasing]]== | |||
Info for maintainers on how to create a new release. | |||
[[Category:Developer_Documentation]] | [[Category:Developer_Documentation]] |
Latest revision as of 07:42, 28 November 2017
Introduction
By the time you land on this page, you probably want to enhance the Paparazzi project, that is really good for your karma and really appreciated by the Paparazzi community. We welcome contributions and improvements to the documentation.
See also Doxygen for documentation close to the code.
Contributing
You would like to contribute, but are not sure how, then this is the page to visit
Code Editing
How to setup your IDE for use with the source code
Learning to Program
Improve your Paparazzi code in OCAML,C,C++ and Python
Aircraft build process and code generation
Description of the (rather complicated) build system and code generation regarding the airborne firmwares
Design Overview
Attempt at a longer walk through the airborne code architecture
Firmware Architecture
Attempt at brief overview of the firmware architecture with modules and subsystems
Communications
How telemetry and datalink is done
Communications (Proposed New system)
How the telemetry and datalink works
Server-GCS communications
How the Server and the Ground Control Station interact with each other
Values
A short walk through the system and how values are handled
Settings
Settings is the generic mechanism that allows to set and get the value of any variable of the embedded code.
Paparazzi Math Library
The custom Paparazzi math library written in C and how to use it in external programs
Reference/bootloader
All of the questions and answers about the bootloader, but were afraid to ask
LPC USB firmware
All of the answers to the Paparazzi USB bootloader of question you never dared to ask
Upload Bootloader for LPC21xx
How to [[upload the Bootloader to a LPC2148 processor based Autopilot board like the TWOG
Upload the luftboot bootloader
How to upload the Bootloader to a STM32 processor based Autopilot board like the Elle0 or Lisa/M
Upload with DFU (with native or custom dfu bootloader)
Using the native (embedded in ROM) or custom (e.g. Luftboot or KroozSD==) bootloader to upload Paparazzi code
Upload with STLink via SWD (without Bootloader)
General ST-LinkV2 page.
GDB OpenOCD Debug
Using GDB or OpenOCD to directly flash and debug Hardware
USB-Serial
Using a USB connection instead of UART for use with telemetry
ControlTheory
All information you are looking for about the harsh reality of Control Theory needed to let your aircraft fly
Altitude and Height
Altitude and Height demystified
AirBorne Interface ABI
Presentation of the airborne communication system
DevGuide/StateInterface
A stateinterface is a stateinterface is a stateinterface, poems aside read more about what the stateinterface entails here
RT_Paparazzi
Real Time Paparazzi how-to and guidelines
Continuous Integration builds
Info on the Continuous Integration builds (CI) server
Coding Standards
JPL (Jet Propulsion Laboratory) released their own coding standards (can be downloaded for free here: JPL C Coding Standards and Guidelines). They include MISRA-C rules and directives, but add their own rules on top of that. They also specify different levels of compliance (LOC) because not always it is necessary to comply with all of the rules. Anyway, they are making things that go to space, so we can definitely learn something about good coding practices from them.
DevGuide/Releasing
Info for maintainers on how to create a new release.