# 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

