The SMACCMPilot project is an embedded systems software research project by Galois, Inc. We're building open-source autopilot software for small unmanned aerial vehicles (UAVs) using new high-assurance software methods.
Complete documentation for this repository and related SMACCMPilot work is available at smaccmpilot.org.
Developers are encouraged to join our mailing list for project updates.
This repository contains both the flight controller implementation and board support package for the SMACCMPilot project. This includes both C sources and Haskell sources for Ivory language programs.
The /apps
directory contains sources for building applications. The
primary SMACCMPilot flight controller application is called stabilize
,
other applications are for development or testing.
Note that test application sources exist elsewhere in the tree as well.
The /src
directory contains the C and Ivory sources of the SMACCMPilot
flight library, the MAVLink implementation, and board support package.
This repository has several external dependencies which may be burdensome to install. For convenience, we have provided a smaccmpilot-build repository which packages this repository and all of the required dependencies using git submodules. We recommend you clone smaccmpilot-build and follow the documentation instructions for prerequisites and building.
This repository includes Haskell sources for Ivory language programs. The Ivory language compiler will generates C sources as part of the build process.
You'll need to install the smaccpilot
Cabal package in the /ivory
subdirectory
and provide the Ivory language and Tower framework
dependencies.
The Ivory language requires the GHC Haskell Compiler version 7.6.2 or greater.
Download and unpack the gcc-arm-embedded toolchain.
Download the latest FreeRTOS release. We're using version 7.3.0.
Unpack the ZIP file in a directory near the smaccmpilot-stm32f4 tree: the same parent directory is best. We will refer to the path of the unzipped source tree during build configuration.
Many of the libraries in the SMACCMPilot software are from the ArduPilot project.
Clone the Galois fork of the ArduPilot repo, using the master
branch.
Keep this clone in a directory near the smaccmpilot-stm32f4 tree, as you did
with the FreeRTOS sources.
- Copy
Config.mk.example
toConfig.mk
. Open this file in a text editor. - Set
CONFIG_CORTEX_M4_PREFIX
to the location of the Cortex-M4 toolchain. - Copy
Keys.mk.example
toKeys.mk
Simply run make
from the top-level directory. You can also specify
a specific target such as libhwf4.a
.
Build output is placed in the build
directory. Images and other artifacts are
in the build/{platform}_{os}/img
directory, where {platform}
is one of:
px4fmu17_ioar
: PX4FMU 1.7 with the IOAR expansion board, for the Drone based copterpx4fmu17_bare
: PX4FMU 1.7 without an IO expansion board, for a radio control ESC based copter like the 3DR ArduCopter Quad
and {os}
is one of:
freertos
: Produces complete images using the FreeRTOS operating systemaadl
: Produces applications as libraries, and system description output in the Architecture Analysis and Design Language (AADL), for use with other operating systems