Rustic is a framework that provides a platform upon which to build embedded applications. Rustic offers abstractions that make performing common tasks such as MMIO, working with GPIO pins, and handling timers easy, amongst many other helpful features.
There are naturally components that are written Assembly, but the goal is to write as much of the framework as possible in Rust.
The repository contains an example application in src/example,
which writes text to the screen and serial port, and shows a spinner in the
lower right corner of the screen.
The initial goal is to support:
Rustic currently provides abstractions for:
rustic::mach::Screen trait)rustic::mach::Serial trait)rustic::mach::Keyboard trait)rustic::mach::TimerHandlers trait)rustic::mach::Gpio trait)rustic::mach::Mmio trait)rustic::mach::IrqHandler trait)NOTE: IRQ handling is currently broken, but it'll be back.
Rustic builds using Cargo:
$ cargo +nightly -Z unstable-options build --out-dir=build
After the command above, the example kernel will be output in the build
directory, and can be run with:
$ qemu-system-i386 -kernel build/rustic-example -serial stdio
The Makefile generates an ISO image from this binary that can be run on bare
metal or your favorite virtualisation platform.
$ make
$ ls build/rustic.iso
Please open issues at https://github.com/miselin/rustic for any issues you may come across.
Pull requests are also welcome.
See the LICENSE file in the root of the repository for the licensing terms for Rustic.
There are a few other Rust kernels out there that are worth looking at:
The Rust OSDev community hangs out in #rust-osdev on irc.mozilla.org.
Rust
81.4%
Assembly
12.9%
RenderScript
3.9%
Makefile
1.8%
Rustic is a framework that provides a platform upon which to build embedded applications. Rustic offers abstractions that make performing common tasks such as MMIO, working with GPIO pins, and handling timers easy, amongst many other helpful features.
There are naturally components that are written Assembly, but the goal is to write as much of the framework as possible in Rust.
The repository contains an example application in src/example,
which writes text to the screen and serial port, and shows a spinner in the
lower right corner of the screen.
The initial goal is to support:
Rustic currently provides abstractions for:
rustic::mach::Screen trait)rustic::mach::Serial trait)rustic::mach::Keyboard trait)rustic::mach::TimerHandlers trait)rustic::mach::Gpio trait)rustic::mach::Mmio trait)rustic::mach::IrqHandler trait)NOTE: IRQ handling is currently broken, but it'll be back.
Rustic builds using Cargo:
$ cargo +nightly -Z unstable-options build --out-dir=build
After the command above, the example kernel will be output in the build
directory, and can be run with:
$ qemu-system-i386 -kernel build/rustic-example -serial stdio
The Makefile generates an ISO image from this binary that can be run on bare
metal or your favorite virtualisation platform.
$ make
$ ls build/rustic.iso
Please open issues at https://github.com/miselin/rustic for any issues you may come across.
Pull requests are also welcome.
See the LICENSE file in the root of the repository for the licensing terms for Rustic.
There are a few other Rust kernels out there that are worth looking at:
The Rust OSDev community hangs out in #rust-osdev on irc.mozilla.org.
Rust
81.4%
Assembly
12.9%
RenderScript
3.9%
Makefile
1.8%