The avionics team is responsible for circuit board layout, software architecture, and API. Subsystem-specific code is the responsibility of subsystem teams. Code is integrated using the automated unit testing framework built by the software team around the vxSim simulator and the subversion repository.
The main flight computer, F-12, is built around a PowerPC processor and an FPGA. The computer runs the vxWorks 6.4 operating system to host processing tasks for all spacecraft subsystems. The flight computer is connected through the FPGA to the spaceship's CAN bus, to the drive unit via digital I/O. The dsPIC, the secondary flight computer, interfaces with the CAN bus and with several sensors and actuators, including the magnetometer, solar panel actuators, and engine gimbal system. The two wireless modems and additional sensors and actuators, including the gyroscopes, cold gas thrusters and sun sensors, are hosted directly on the CAN bus. The dsPIC aggregates the sensor and actuator data and communicates it to the F-12. It also provides watchdog functionality and serves as the main flight computer during detachment from the ESPA ring, de-tumbling, deployment and pointing of the solar panels. Also if the F-12 encounters a problem that can't be fixed in orbit, the dsPIC will serve as the main flight computer.
The avionics system is constructed inside an aluminum box for thermal regulation, cable length savings and radiation shielding. The system is composed of four PCBs arranged in a stack. Power converters are mounted closest to the spacecraft, followed by the F-12, the DSC daughterboard containing the dsPIC, GPS unit and gyroscopes, and the wireless modems.
VxWorks is an event-based real-time system, so tasks run only when they are woken by either a scheduled timer for periodic tasks or an incoming system message containing data from another subsystem. The F-12 computer can load a system image from flash memory and boot from it. Alternate images can be specified over serial console or loaded directly over serial or CAN bus, from the FPGA or the dsPIC. The flight computer reboots automatically if the avionics system detects an error that can't be fixed in software. It can be manually rebooted via a signal from one of the wireless modems. When errors that can be fixed in software occur, the watchdog tasks on the F-12 restart the tasks in which errors have occurred. The other system tasks remain unaffected. System tasks can also be manually stopped, started or replaced with newer versions from the ground.