This project is a custom, monolithic operating system kernel designed specifically for the Raspberry Pi Pico (RP2040) and the newer RP2350 microcontrollers. Written primarily in ARM Assembly to maximize low-level control and serve as an educational deep-dive into OS architecture, it implements core features like dynamic memory allocation, a custom libc, preemptive multitasking, and a POSIX-influenced syscall interface.
I also engineered a custom GeT Computer PCB, available here.
| Feature | Status | Notes |
|---|---|---|
| Dynamic memory allocation | ✅ | Modified Linked-List allocator |
| Custom LIBC | ✅ | For kernel and userspace |
| Multitasking | ✅ | Pre-emptive task scheduler |
| POSIX-like syscalls | ✅ | List of syscalls |
| Filesystem | ✅ | Virtual Filessystem structure and RAMFS |
| EXT2 support | 🚧 | Planned |
| Multithreading | 🚧 | In progress |
| Custom C compiler and assembler for userspace | 🚧 | In progress |
| Driver | Status | Notes |
|---|---|---|
| PS/2 keyboard driver | ✅ | Both immediate and parallel interfaces (with shift-registers) |
| UART communication | ✅ | |
| VGA driver (640x480) | ✅ | Scaling up resolutions is in progress |
| SD card driver | 🚧 | In progress |
| Ethernet (WIZnet W5100S) | 🚧 | In progress |
- Porting LIBC to user space programs as a dynamic library
- Extending shell and writing user-space programs like vim-like editor
- Introducing Rust into kernel
- ELF executable support
- Memory Protection
- After full filesystem support move some parts of firmware into bootloader. The kernel and the initramfs should reside in the
/bootdirectory
- ARM GCC toolchain (
arm-none-eabi-gcc) - CMake
git clone https://github.com/atwardzik/os_kernel.git
cd os_kernel
cmake -DCMAKE_EXPORT_COMMANDS=ON -DARCH_RP2350=1 -B build
cd build
make -j4Depending on your needs you should choose -DARCH_RP2040=1 or -DARCH_RP2350=1.
Issues and pull requests are welcome! Please open an issue before starting major work.
Open-source and released under the BSD 3-Clause License. Feel free to use, modify, and distribute the code in accordance with the terms specified in the license.
Copyright (C) 2024-2026 Artur Twardzik

