Boardcore is a C++14 rocket software framework targeting custom embedded boards designed by Skyward Experimental Rocketry.
Boardcore runs on top of Miosix, a lightweight operating system for microcontrollers. It implements a POSIX-like API, the C standard library and the C++ standard library. It also provides a pre-emptive scheduler (among others) and a custom concurrency API with support for Threads and synchronization primitives. A FAT32 filesystem, a serial port driver, platform timers and General Purpose I/O functionalities (GPIO) are also exposed through a custom API.
We maintain a fork of the Miosix OS to fit our needs: skyward/miosix-kernel
The project is built with the CMake build system. We also have our own script that is built on top of CMake, to automate compilation and deployment to different hardware targets, SBS.
Path | Description |
---|---|
src/bsps/ | Board Support Packages (BSP) |
src/shared/ | Device drivers and general-purpose classes/utilities |
src/entrypoints/ | Entry points for general tasks (e.g. calibration) |
src/tests/ | Entry points for on-device unit testing |
build/ | Build output directory |
libs/ | External libraries (git submodules) |
scripts/ | Various tools and utilities (e.g. linting, log decoder) |
CMake
3.25Git
Miosix
Toolchain
We also recommend to install Ccache
, Ninja
, OpenOCD
, Cppcheck
,ClangFormat
and pre-commit
for a smoother development experience.
Clone the repository with the --recursive
option:
git clone --recursive https://git.skywarder.eu/avn/swd/skyward-boardcore.git
cd skyward-boardcore
Using the SBS script is the recommended way to build the project. When called with no arguments, it will build all targets:
./sbs
This may take a while depending on how many targets there are. If ccache
is installed, it will be used to cache intermediate compilation artifacts to speed-up incremental builds.
Alternatively, you can build with CMake commands:
mkdir build
cd build
cmake -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_TOOLCHAIN_FILE=../libs/miosix-kernel/miosix/_tools/toolchain.cmake -GNinja ..
cmake --build .
The code is documented with Doxygen, check it out here.
You can install a pre-commit hook to ensure changes to the code will pass CI:
pre-commit install
You can find first-step guides in the Wiki (configuring the IDE, building examples, etc.) as well our code guidelines and best practices that we follow.
If you want to contribute to this repository, please read our Git Workflow.
If you want to start messing around with the code, check out the LED blink guide.