Quickstart
Build and run the OS in QEMU in under five minutes
Architecture
How the kernel, scheduler, and processes fit together
OS Internals
Process management, scheduling, and context switching
Platform Support
Configure for BeagleBone Black or QEMU
Library Reference
PRINT, READ, string, and numeric utilities
Add a Process
Step-by-step guide to adding your own user process
How it works
Boot
The ARM vector table in
root.s sets up SVC and IRQ stacks, configures VBAR, and calls main() in the OS.Process initialization
The OS initializes three processes (OS, P1, P2) with separate memory regions defined in the linker script, then enqueues P1 and P2 into the ready queue.
Timer starts
timer_init() programs the hardware timer to fire periodic IRQs. enable_irq() unmasks interrupts — scheduling begins.Supported platforms
| Platform | Target | Timer | UART |
|---|---|---|---|
| BeagleBone Black | TARGET=beagle | DMTIMER2 @ 0x48040000 | UART0 @ 0x44E09000 |
| QEMU versatilepb | TARGET=qemu | SP804 @ 0x101e2000 | PL011 @ 0x101f1000 |