Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ariel-os/ariel-os
Ariel OS is a library operating system for secure, memory-safe, low-power Internet of Things, written in Rust
https://github.com/ariel-os/ariel-os
embedded embedded-systems iot low-power microcontroller multi-core operating-system rtos rust
Last synced: 4 days ago
JSON representation
Ariel OS is a library operating system for secure, memory-safe, low-power Internet of Things, written in Rust
- Host: GitHub
- URL: https://github.com/ariel-os/ariel-os
- Owner: ariel-os
- License: apache-2.0
- Created: 2020-11-04T08:32:13.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2025-01-20T10:25:35.000Z (7 days ago)
- Last Synced: 2025-01-20T11:22:16.970Z (7 days ago)
- Topics: embedded, embedded-systems, iot, low-power, microcontroller, multi-core, operating-system, rtos, rust
- Language: Rust
- Homepage: https://ariel-os.github.io/ariel-os/dev/docs/book/
- Size: 3.74 MB
- Stars: 75
- Watchers: 8
- Forks: 13
- Open Issues: 111
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE-APACHE
- Code of conduct: CODE_OF_CONDUCT.md
- Governance: GOVERNANCE.md
Awesome Lists containing this project
README
# Ariel OS
[![Build Status][build-badge]][build-info]
[![Book][book-badge]][documentation-mdbook]
[![Documentation][rustdoc-badge]][documentation-dev-rustdoc]
[![Matrix][matrix-badge]][matrix-link]Ariel OS is an operating system for secure, memory-safe, low-power Internet of Things (IoT).
Ariel OS is based on Rust from the ground up.
Hardware targets include varieties of hardware based on 32-bit microcontroller architectures (such as Cortex-M, RISC-V, Xtensa).
Check out our [table of supported hardware](https://ariel-os.github.io/ariel-os/dev/docs/book/hardware_functionality_support.html).## Design
Ariel OS builds on top of existing projects in the Embedded Rust ecosystem, including [Embassy](https://github.com/embassy-rs/embassy), [esp-hal](https://github.com/esp-rs/esp-hal), [defmt](https://github.com/knurling-rs/defmt), [probe-rs](https://github.com/probe-rs/probe-rs), [sequential-storage](https://github.com/tweedegolf/sequential-storage), and [embedded-test](https://github.com/probe-rs/embedded-test) among others.
While those provide high-quality building blocks for a wide range of embedded applications, such projects do not provide the high level of integration that developers know from contemporary C-based operating systems for microcontrollers, such as [RIOT](https://github.com/RIOT-OS/RIOT/) or [Zephyr](https://github.com/zephyrproject-rtos/zephyr) for instance.Ariel OS thus follows an approach whereby it simultaneously integrates many heterogeneous pre-existing crates, and adds missing operating system functionalities such as a preemptive multicore scheduler, portable peripheral APIs, additional network security facilities, as well as [laze](https://github.com/kaspar030/laze), a meta-build system to bind it all together.
The result?
A powerful framework that allows to write portable embedded Rust applications with minimal boilerplate, providing a batteries-included experience.## Quickstart
The following assumes you have a Nordic nrf52840dk connected to your PC.
(For other supported boards, you can find your board's name in
[./src/ariel-os-boards/Cargo.toml](https://github.com/ariel-os/ariel-os/blob/main/src/ariel-os-boards/Cargo.toml)
and use it instead of 'nrf52840dk' in the below guidelines.)The following instructions will enable you to flash and run the [`hello-world`
example](https://github.com/ariel-os/ariel-os/tree/main/examples/hello-world):### Prerequisites
1. install needed system dependencies. On Ubuntu, the following is sufficient:
apt install build-essential curl git python3 pkg-config \
libssl-dev llvm-dev cmake libclang-dev gcc-arm-none-eabi \
clang libnewlib-nano-arm-none-eabi unzip lld ninja-build1. install [rustup](https://rustup.rs/)
1. install [laze](https://github.com/kaspar030/laze): `cargo install laze`
1. install [probe-rs](https://github.com/probe-rs/probe-rs): `cargo install probe-rs-tools --locked`
1. clone this repository and cd into it
1. install rust targets: `laze build install-toolchain`
### Run the example
1. Compile, flash and the hello-world example using `probe-rs run`
laze -C examples/hello-world build -b nrf52840dk run
![Example](./doc/hello-world_render.svg)
(might fail if the flash is locked, click here for unlocking instructions)
This might fail due to a locked chip, e.g., on most nrf52840dk boards that are fresh from the factory.
In that case, the above command throws an error that ends with something like this:```
An operation could not be performed because it lacked the permission to do so: erase_all
```The chip can be unlocked using this command:
laze -C examples/hello-world build -b nrf52840dk flash-erase-all
## More information
Please look [at the build system documentation](https://ariel-os.github.io/ariel-os/dev/docs/book/build_system.html) for more usage
information.## Minimum Supported Rust Version (MSRV)
Ariel OS makes use of selected Rust unstable features. For the time being, it is
recommended to use the nightly version pinned by [`rust-toolchain.toml`](rust-toolchain.toml).## Coding Conventions
Please see the chapter on
[coding conventions](https://ariel-os.github.io/ariel-os/dev/docs/book/coding-conventions.html)
in the documentation.## Copyright & License
Ariel OS is licensed under either of
- Apache License, Version 2.0 ([LICENSE-APACHE](./LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license ([LICENSE-MIT](./LICENSE-MIT) or http://opensource.org/licenses/MIT)at your option.
Copyright (C) 2020-2025 Freie Universität Berlin, Inria, Kaspar Schleiser
## Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in the work by you, as defined in the Apache-2.0 license, shall
be dual licensed as above, without any additional terms or conditions.Thanks to all the people who already contributed!
[build-badge]: https://github.com/ariel-os/ariel-os/actions/workflows/main.yml/badge.svg
[build-info]: https://github.com/ariel-os/ariel-os/actions/workflows/main.yml
[matrix-badge]: https://img.shields.io/badge/chat-Matrix-brightgreen.svg
[matrix-link]: https://matrix.to/#/#ariel-os:matrix.org
[book-badge]: https://img.shields.io/badge/Book-%F0%9F%93%94-blue
[rustdoc-badge]: https://img.shields.io/badge/Documentation-%F0%9F%93%94-blue
[documentation-mdbook]: https://ariel-os.github.io/ariel-os/dev/docs/book/
[documentation-dev-rustdoc]: https://ariel-os.github.io/ariel-os/dev/docs/api/