Open Source Flight Intrument Documentation [index]


Software Development Environment

Language

All software is written in ANSI C.  The only exception is the QTG module which contains several C++ classes.

Applications

Several software applications will be produced for this project including the applications for each of the three hardware variants.

Several GUI applications will also be produced for simulating each of the three hardware variants on a PC environment.

An integration test suite may also be developed. These tests may run on a PC operating system as well as on the target instruments.

A set of simulators may be developed to assist with integration testing. These can be used in place of the target instrument driver code so as to allow various flight scenarios to be simulated.

Compilers

The software is to be developed possibly with several different compilers. The "ImageCraft ICC12" and the "GNU Development Chain for 68HC11 and 68HC12" will be used to develop software for the instruments. Likewise compilers such as GCC for Linux and MINGW for Windows may be used to compile test software to run in the PC environment.

GUI

The PC GUI applications will be built using the Qt cross platform development framework, version 4.  Open source versions of this for Linux and Windows are available from Trolltech.

Portable Interfaces

A portable platform interface is used to isolate any OS or compiler specific code.

A driver interface is used so that most of the code will not know if it is using real hardware or the simulators.

Software Modules

Code is broken into logical groups known as modules. Each module consists of one or more source files.

Portable modules are those that have no dependence upon a particular compiler, OS, or whether the hardware is real or simulated. Portable modules have a short name, possibly an acronym that will identify each module.

Non-portable modules are those that are specific to a particular compiler, OS, or whether the hardware is real or simulated. Non-portable modules implement the functionality behind the portable interfaces.

Directory Structure

The source code is stored in a set of directories as shown below.

(OSFI_ROOT)/
    +- include/
    |    +- platform/
    |    +- driver/
    +- src/
    |    +- module1/
    |    +- module2/
    |    +- ...
    +- bin/
    +- docs/

The include/ directory contains the public header files associated with the portable modules. All function names in these headers begin with the module identifier so that the function can be associated with it's source module. The header filename itself will also reflect the module name whose functions they contain.

The include/<portable interface>/ directories contain the public header files associated with the non-portable modules.

The src/<module>/ directories contain the private header files and source files associated with each of the software modules.

The bin/ directory is where the actual software images are written to after linking.

The docs/ directory contains project documentation.

Version Control

All source code is saved in Sourceforge's CVS servers under the osfi project.

BDM

The hardware is provided with a BDM port through which software can be downloaded and on chip debugging can occur.