The sources are organized as follows:
australis/
: Contains the Australis Firmware
components and test code, including:source/
core/
: Core firmware component linked to all sources that implement Australisextra/
: Extra firmware component providing additional functionality with modulessystem/
: System startup and platform dependant sources; Currently only supports STM32F439test/
target/
: Hardware target sources. Each subdirectory within target/
represents a specific platform officially supported by Australis.Australis Firmware
must link against this component.module
is dependant only on Australis Core
and can be individually built and linked as necessary.The target/
directory contains specific configurations for different hardware platforms. Each target defines:
Target specific #defines
in AustralisConfig.h
.
All hardware peripherals (CAN
, SPI
, etc.) are initialised by the target and passed to any devices that require them during initialisation.
Each device required by the target must be appropriately initialised and registered in the core device list.
It is the responsibility of the target to initialise and run Australis Core
. A target's source code must define the main()
entry function and execute any code required by the above.
target/README.md
for more information about currently available targets (TODO: remember to fill this file out).The build process uses CMake to generate Makefiles, which are then used to compile and link the firmware.
/usr/bin/arm-none-eabi-gcc
.HARDWARE_TARGET
: Define the HARDWARE_TARGET
variable when invoking CMake. This specifies which hardware target in the target/
directory will be built. For example: ```bash cmake -DHARDWARE_TARGET=minimal -S . -B build ``` This command, when invoked from within the firmware source root `firmware/`, tells CMake to build against the `minimal` target.
Build the Firmware: Navigate to the build directory and invoke cmake
, or pass cmake
the appropriate path to your build tree.
bash cd build cmake --build
or bash cmake --build path/to/build