This is a fully functional operating system built over a RaspberryPi Bootloader. We used RaspberryPi version 2B for the sake of working with ARMv7 instruction set.
The following parts were implemented from scratch:
- Drivers (UART, LED, Timer)
- Library (kprintf, kscanf, some string related functions such as strcpy etc.)
- Memory (MMU, L1 and L2 page table)
- Exceptions (exception handlers, trampoline, routine for testing exceptions)
- Multithreading (RR-scheduler and threads, context switching mechanism etc.)
- Processes (memory segmentation, 8 processes and 8 process stacks, routine for testing processes)
- User interface (seperation mechanism between kernel and system, syscall interface for inter-process-communication)
- Heap (dynamic memory allocation using malloc and free, routine for testing heap robustness)