Kernel/README.md

63 lines
No EOL
1.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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.