Skip to content

skyward-er/boardcore

Repository files navigation

Skyward Experimental Rocketry

Skyward Boardcore

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.

Content

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)

Getting Started

Dependencies

  • CMake 3.25
  • Git
  • Miosix Toolchain

We also recommend to install Ccache, Ninja, OpenOCD, Cppcheck,ClangFormat and pre-commit for a smoother development experience.

Cloning the repo

Clone the repository with the --recursive option:

git clone --recursive https://git.skywarder.eu/avn/swd/skyward-boardcore.git
cd skyward-boardcore

Building

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 .

Documentation

The code is documented with Doxygen, check it out here.

Contributing

You can install a pre-commit hook to ensure changes to the code will pass CI:

pre-commit install

What's next?

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.