MnemOS v0.1.0 is a small, general purpose operating system, written in Rust. MnemOS is designed for constrained hardware, including microcontrollers.
This release includes the v0.1.0 versions of:
- The MnemOS Kernel
- The MnemOS Userspace Library
- The MnemOS Common Library, which defines the System Call interface shared between userspace and kernel.
Together with the Pellegrino hardware system (pictured above), which is a Eurorack modular synth inspired rack system with LEGO mounting rails, it aims to support modular, home-built computer systems.
Although the capabilities are currently limited, it currently supports a number of features, including:
- Multiplexed serial ports, allowing for “TCP Port” like addressing of services
- An RPC-style System Call interface, powered by serde and postcard
- A block storage interface, useful for loading, storing, and retrieving programs and program data from persistent QSPI flash
What hardware does MnemOS support?
At the moment, the only supported Main CPU is the Nordic nRF52840, specifically on the Adafruit nRF52840 Feather Express development board.
What’s up next?
Now that I have the initial release out, I plan to move my attention towards expansion cards. I plan to expose expansion cards over a (relatively simple) SPI bus, acting as a sort of “PCI Express”-style backbone.
In particular, I plan next to add support for the Adafruit Music Maker FeatherWing, which includes a micro-SD card, which I can use for storage of files, as well as a VLSI VS1053b, an audio codec chip capable of playing both WAV/PCM encoded audio (as a “raw audio sink”), as well as a number of standard audio formats, like MP3, OGG, and FLAC lossless audio.
Additionally, I’d like to add support for some kind of networking hardware. This will likely come in the in the form of Adafruit’s AirLift FeatherWing, an ESP32-based WiFi peripheral, or their Ethernet FeatherWing, a WIZ5500 based ethernet controller chip, with a built-in TCP stack.
Read more in the intro blog post.