Boardcore is a framework for developing and building missile software for custom boards with Miosix.
Miosix is a lightweight OS for embedded developing which provides support for basic things such as Threads, GPIO, Time and many other. You can find our fork of the kernel here: skyward/miosix-kernel
Building is made with SBS, which was created to easily compile and reuse code for different boards.
Content
src/ | sources! |
---|---|
shared/ | objects, drivers and other stuff written by us |
entrypoints/ | each file here is a 'main' |
tests/ | contains the 'main' of every test |
build/ | compiled binaries that can be flashed on a target board |
data/ | configuration (barely used now) |
libs/ | external libs (Miosix kernel as a git submodule) |
scripts/ | some tools (e.g. script for flashing on the boards) |
In the main folder you will find CMakeLists.txt which is used to configure the build system.
Getting Started
Dependencies
- CMake
- Git
- Miosix Toolchain
Also, Ccache, Ninja, OpenOCD, Cppcheck, clang-format and pre-commit are recommended for a better experience.
Cloning the repo
Clone this repo with the --recursive
option.
git clone --recursive https://git.skywarder.eu/scs/skyward-boardcore.git
cd skyward-boardcore
Building
You can build everything using CMake:
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 .
Or using the SBS wrapper script:
./sbs
The build system will start building all the targets (entrypoints and tests). Depending on how many targets there are, this operation may take several minutes.
Contributing
You can install a pre-commit hook to ensure changes to the code will pass CI:
pre-commit install
What's next?
In the Wiki you will find some first-steps guides (configuring the IDE, building a firmware, etc.) as well as the coding guidelines and some best practices we adopt.
If you want to contribute to this repository, please read Git Workflow.
If you just want to start messing around, try this.