An RTOS designed and verified to enable reliable software updates and operation for embedded systems.
| Directory | Description |
|---|---|
| src/ | This is the actual kernel code of osiris. It is a hardware independent layer providing scheduling, memory management, etc. |
| machine/ | This contains all the HALs and hardware specific code in general. It exports a hardware independent interface to the kernel. |
- Rust: A recent version of the Rust toolchain.
- Just: A command runner, used for all project tasks.
- ARM Toolchain:
arm-none-eabi-gcc(version 13+ recommended). - CMake: Version 3.28 or newer.
- Clang: Used as the C/C++ compiler.
- Kani: A recent version of the Kani Rust Verifier.
These tools are used for flashing, debugging, and other development tasks.
- stlink (Fork): For flashing and debugging on STM32 hardware.
arm-none-eabi-gdb: The GNU debugger for ARM targets.cargo-binutils: Providesobjdump,objcopy, etc. for Rust.
Configure all build components. The configuration is stored in .cargo/config.toml as environment variables with the OSIRIS_ prefix.
$ just configor load a preset via:
$ just config load <preset_name> [--no-confirm]if you want to reset the configuration run:
$ just config clean [--no-confirm]This will build the kernel for your current config.
$ just buildAfter the build a binary named Kernel.bin will be created at the source root folder.
$ just hooksOsiris is distributed under the terms of both the MIT license and the Apache License (Version 2.0).
See LICENSE-APACHE and LICENSE-MIT for details.
Read the CONTRIBUTING.md before submitting a pull request or otherwise contributing to this repository.
Osiris was created and is maintained by Thomas Wachter (@thomasw04).