Toy UNIX-like operating system written for RealView Platform Baseboard Explore for Cortex-A9.
- Install the necessary headers
make install-headers
- Build and install the OS-specific toolchain
make tools-binutils make tools-gcc
- Build the standard C library
make all-lib
- Build and install the libstdc++ library
make tools-libstdc++-v3
- Build the kernel and command-line utils
make all
- Build the ported packages (optional)
make ports-coreutils make ports-dash make ports-binutils make ports-gcc make ports-gzip make ports-sed make ports-ncurses make ports-less
- Run the kernel in the emulator (you'll need
qemu-system-arm
):make qemu
The C Library code is heavily based on the following reference implementation:
- The Standard C Library, P.J. Plauger, 1992
- ARM Category in OSDev Wiki
- ARM System Developer's Guide, Andrew Sloss, Dominic Symes, Chris Wright, 2004
- Embedded and Real-Time Operating Systems, K.C. Wang, 2017
- ARM GCC Inline Assembler Cookbook
- ARM RealView Platform Baseboard Explore for Cortex-A9
- Generic Interrupt Controller -
kernel/drivers/gic.c
- Keyboard -
kernel/drivers/console/kbd.c
,kernel/drivers/console/pl050c
- LCD -
kernel/drivers/console/lcd.c
,kernel/drivers/console/pl111.c
- Maxim DS1338 RTC -
kernel/drivers/rtc.c
- SD card -
kernel/drivers/sd.c
- UART -
kernel/drivers/console/serial.c
,kernel/drivers/console/pl011.c
- Ethernet -
kernel/drivers/eth.c