# Notes for the talk's outline ## About Me * Based in Singapore * Hardware and software ## Outline 1. Project History 2. Why a new OS? 3. What can it do? ## Project History ### Novena: A really open laptop We always wanted to make a laptop. Decided to give it a shot to see what happened. The processor in this was "relatively large" -- ARM Cortex A9 Ran Linux ### Chibitronics: Programming for 8-year-olds This had a "relatively small" processor -- ARM Cortex M0 with 4 kB RAM and 32 kB flash We got to know this chip really well * Bit-banged USB * AFSK demodulation * https://ltc.chibitronics.com/ Ran ChibiOS and a very custom program ### Precursor: Secure communications device * FPGA-based (any processor you want!) * 16 MB RAM * 128 MB storage ## Why a new OS? Two major markets: * MCU * No MMU, maybe an MPU * <= 1 MB RAM * <= 4 MB storage * CPU * MMU designed for multiple processes * >= 64 MB RAM * >= 256 MB storage (external) ## What can it do? * Kernel is 17 ksloc * 6k of that is a RISC-V disassembler for optional GDB support * Threads * Processes * Tier 2 Rust support * libstd * Entire project built on *stable* Rust ## Other features * Fully Rust * Microkernel * Stable channel * Requires an MMU * Interrupts in userspace * Each page of memory is mapped once ## Xous Organization * Kernel is single-threaded * Services use well-defined API calls * All drivers provided in user space * Each page of memory can only be lent once ## How can I use it? * Talk to system vendors -- get them to include MMUs! * Emulation is easiest -- Renode support