With only 2K lines of code, egos-2000 implements boot loader, microSD driver, tty driver, memory paging, address translation, interrupt handling, process scheduling and messaging, system call, file system, shell, 7 user commands and the mkfs/mkrom
tools.
It runs on a $129 small development board.
# Count lines of code excluding references and README.md
> cloc egos-2000 --exclude-ext=md
......
-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
C 33 452 461 1566
C/C++ Header 11 75 102 311
Assembly 3 6 24 68
make 1 11 0 55
-------------------------------------------------------------------------------
SUM: 48 544 587 2000 << exactly 2000!
-------------------------------------------------------------------------------
EGOS-2000 and EGOS are the two teaching operating systems used at Cornell. They have the same architecture.
- The earth layer implements hardware-specific abstractions.
- tty and disk device interfaces
- cpu interrupt and memory management interfaces
- The grass layer implements hardware-independent abstractions.
- processes, system calls and inter-process communication
- The application layer implements file system, shell and user commands.
- an Artix-7 35T Arty FPGA development board
- a microUSB cable (e.g., microUSB-to-USB or microUSB-to-USB-C)
- [optional] a microSD Pmod, a microSD reader and a microSD card (e.g., Sandisk, Samsung or PNY)
- SiFive freedom riscv-gcc compiler
- Vivado lab solutions or any edition with the hardware manager
- a software to connect with ttyUSB (e.g., screen for Linux/Mac or PuTTY for Windows)
- [optional] a software to program a disk image file to the microSD card (e.g., dd or balena Etcher)
For compiling and running egos-2000, please read USAGES.md. This document further introduces the teaching plans, architecture and development history of egos-2000.
The RISC-V instruction set manual introduces the privileged registers used by egos-2000. The SiFive FE310 manual introduces the processor used by egos-2000, especially the GPIO, UART and SPI bus controllers.
For any questions, please contact Yunhao Zhang.