Here's some brief info on how to get started digging into the MatrixPilot code base.
First of all, as of MatrixPilot 3.0, the code is divided into a few sections:
One of the best ways to learn about the architecture of MatrixPilot is to study the interrupt service routines in libUDB. MatrixPilot is run almost completely from interrupts and their timers. The interrupts are described in an online document here ( PDF version here).
As of MatrixPilot 3.4 we're targeting not just the dsPIC based controller boards, but also other platforms when building the code for Software-In-the-Loop (SILSIM) Simulation. This means that we need to keep the code portable. Things to keep in mind:
Wiki: MatrixPilot
Wiki: RollPitchYaw
Wiki: Sidebar
Wiki: SidebarMP33
Wiki: SoftwareInLoop