86 lines
1.6 KiB
Markdown
86 lines
1.6 KiB
Markdown
|
# 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
|
||
|
|