# MiniOS Kernel (ARMv7) This is a minimal bare-metal ARM kernel project built for educational and prototyping purposes. It includes multitasking, a UART shell, a simple task scheduler, and IRQ handling. Tested and compatible with **Windows 10** using `arm-none-eabi-gcc` and QEMU. --- ## Features - ARMv7 Bootloader (`boot.s`, `boot.ld`) - UART driver (`uart.c`, `uart.h`) - Task manager with real context switching (`task.c`, `switch.s`) - Round-robin scheduler triggered by timer IRQ (`irq.s`) - Interactive shell via UART (`shell.c`) - Supported commands: - `ps` – list tasks - `echo` – simple message - `halt` – stop execution --- ## Requirements - **Windows 10** - [Git Bash](https://git-scm.com/download/win) - [GCC ARM Embedded Toolchain](https://developer.arm.com/downloads/-/gnu-rm) - [QEMU for Windows 64-bit](https://qemu.weilnetz.de/w64/) --- ## How to Build and Run ```bash make qemu-system-arm -M versatilepb -m 128M -nographic -kernel kernel.bin ``` Once running, you'll see: ``` MiniOS Kernel Booted MiniOS Shell> ``` Type one of the supported commands (`ps`, `echo`, `halt`). --- ## Next Steps (Optional) - Virtual File System (VFS) - `ls`, `cat`, `cd` shell commands - ELF binary loader - FAT32 filesystem support - Advanced multitasking with priorities --- ## Author Built by Georgiana using ARM bare-metal architecture. Powered by QEMU and the GNU ARM Toolchain.