This repository is still in a state of upheaval as the move to tower 9 stabilizes. At this time there is no application code for flying a quadcopter!
At this time, the provided master branch is only suitable for developers who are
interested in the components of the SMACCMPilot project. If you wish to
evaluate an old version of the code where flight controller application works,
stable version of this code, given by the smaccmpilot-build
repository's
master
branch.
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. You can also file issues on Github.
-
The
src
directory contains a collection of Cabal packages for components of the SMACCMPilot build. There is aREADME
in each package directory describing the libraries and executables provided. -
The
boot
directory contains binaries and upload scripts for the PX4 Project bootloader.
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, or provide the following environment variables pointing to the following repositories:
name | env variable |
---|---|
ivory | IVORY_REPO |
tower | TOWER_REPO |
ivory-tower-stm32 | BSP_REPO |
This project requires the GHC Haskell Compiler version 7.6.3 or 7.8.x, and Cabal 1.20 or higher.
This project expects the gcc-arm-embedded toolchain to be present in your
PATH
.
The build system uses recursive makefiles. Individual cabal packages each have a local makefile that creates a sandbox for building, testing, and generating Ivory/Tower programs.
Ivory/Tower programs are Haskell programs which generate C sources and an appropriate makefile. We call these makefiles recursively to build binaries from the generated C sources.