Loading...
Searching...
No Matches
Australis Firmware Reference

Australis Avionics Firmware

FreeRTOS Based Firmware For Australis Series Flight Computers

Static Badge Static Badge [Static Badge]()
Static Badge Static Badge
Want to submit an issue?



Operating avionics hardware for winning rocket of Technical Excellence Award and runner's up overall in AURC 2024 - Aurora V
Powering IREC & AURC 2025 entries for avionics subsystem - Legacy III

Table of Contents

Requirements

To successfully install and contribute to the project, ensure you have the following prerequisites installed:

Project Includes

In order to build the project you must ensure the correct include paths are added for the compiler to recognise the headers. At minimum the following must be included:

/path/to/Australis-Avionics-firmware/Australis-Avionics/Core/Inc
/path/to/Australis-Avionics-firmware/Australis-Avionics/Middlewares/Third_Party/FreeRTOS/Source/include
/path/to/Australis-Avionics-firmware/Australis-Avionics/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F
/path/to/Australis-Avionics-firmware/Australis-Avionics/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS
/path/to/Australis-Avionics-firmware/Australis-Avionics/Drivers/CMSIS/Include
/path/to/Australis-Avionics-firmware/Australis-Avionics/Drivers/CMSIS/Device/ST/STM32F4xx/Include
/path/to/Australis-Avionics-firmware/Australis-Avionics/Middlewares/Third_Party/FreeRTOS/Source/include
/path/to/Australis-Avionics-firmware/Australis-Avionics/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F
/path/to/Australis-Avionics-firmware/Australis-Avionics/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS
/path/to/Australis-Avionics-firmware/Australis-Avionics/Drivers/CMSIS/Device/ST/STM32F4xx/Include
/path/to/Australis-Avionics-firmware/Australis-Avionics/Drivers/CMSIS/Include
/path/to/Australis-Avionics-firmware/Australis-Avionics/Drivers/STM32F4xx_HAL_Driver/Inc
/path/to/Australis-Avionics-lib/inc
/path/to/Australis-Avionics-lib/inc/DSP/Include
/path/to/Australis-Avionics-lib/inc/DSP/PrivateInclude
/path/to/Australis-Avionics-lib/inc/CORE/Include

If running Tracealyzer also make sure to include these headers:

/path/to/Australis-Avionics-firmware/Australis-Avionics/Middlewares/Third_Party/TraceRecorder/config
/path/to/Australis-Avionics-firmware/Australis-Avionics/Middlewares/Third_Party/TraceRecorder/include
Important
Additional includes may also be necessary, in particular any directories nested in /Australis-Avionics/Core/Inc/ are required.

Getting Started

Building the Project

Before making any changes to the project source it is recommended to ensure the environment is correctly set-up.

To start, the compiler toolchain arm-none-eabi-gcc should be installed and visible to whatever build system is intended to be used.


Windows

For Windows systems a Keil uVision project is provided in /Australis-Avionics/MDK-ARM/ as Australis-Avionics.uvprojx.

This project is already configured for building for and debugging on the target platform, however maintenance for this platform is likely to be behind – one should double check all sources and includes prior to beginning of development to minimise difficulties.


Linux/MacOS

A CMake profile is available for building the project from the command line across other platforms. To start, make sure the toolchain path is correct in /Australis-Avionics/toolchain.cmake, navigate to /Australis-Avionics/Build/ and run the following:

cmake ..
cmake --build .

Compile time flags can be defined with CMake prior to building. These flags are declared in /Australis-Avionics/CMakeLists.txt and can be passed at build time.

Once built, the compiled binary will be available as /Australis-Avionics/Build/Australis-firmware and a .map file will be generated.

Remarks
Debugging over JTAG on Linux and MacOS systems can be achieved with JLink GDB Server and any choice of GDB debugger. Documentation on how to set-up and use the GDB server is available here

Docker

This repository additionally provides a Dockerfile for building an Arch Linux based Docker to host containers on. This image includes the base tooling requirements for development and debugging as well as the contents of the repository.

To get started with the Docker image you must first clone this repository; ensure Docker is installed on the host system, then run the following from the root directory of the repo, substituting {name} with any choice of name for the container:

docker build -t australis/dev:latest . # Build image from the supplied Dockerfile
docker run -w /root --name {name} -it australis/dev:latest # Run a container and attach
Remarks
If you intend to deploy and debug over JLink from within the Docker container you may additionally pass the --device flag to docker run e.g. docker run -w /root --name avionics --device=/dev/ttyUSB0 -it australis/dev:latest

Code Guidelines

Specification for coding standard and best practices for this project can be found on the wiki

Acknowledgements

Key Contributors

Name Role
Matthew Ricci Principal firmware developer
William Houlahan Initial driver implementations
Benjamin Wilsmore Initial driver implementations

Special Thanks

Other members of the Aurora V Avionics team:

  • Hugo Begg - avionics hardware
  • Jonathan Chandler - ground control station
  • Jeremy Timotius - data analysis
  • Lucas Webb - ground control station

Thank you to Aurora & Legacy project team leads Patrick Underwood and Brodie Alexander for providing the opportunity and environment to work on these rockets as part of the team, and thank you to everyone who helped make them a reality!