Blueno's Operating System
This is my long-term hobby project to create an operating system for the Raspberry Pi.
Some of the overarching goals for this project include
- Understand everything
- Run on real hardware
- Be a testbed to learn new things
- Write XModem lib
- Write client
- Write bootloader, refactor LD and boot.S
- Refactor driver stuff into pi
- Graphics + MBox
- Shell
- Malloc
- FS
- VFS
- RamFS
- SD Driver
- FAT32 (S5FS?)
- Proc (possibly earlier)
- Userspace
Misc
- QEMU integration tests
- README writeup
- ACT LED
- Write some of this up
Long Term
- USB (Keyboard / Mouse)
- Networking
- Display Manager
- Scripting lang / real shell
- Image encoder / decoder
- Drone
- Sound
- Multicore
(not to scale)
┏━━━━━━━━━━━━━━━━━━ 0x40000000 Max VC Mem
┃
┃ ┏━━━━━━━━━━━━━━
┃ ┃ Peripheral MMIO
┃ ┗━━━━━━━━━━━━━━ 0x3F000000
┃
┣━━━━━━━━━━━━━━━━━━ 0x3B400000 Max CPU Mem
┃
┃ ┏━━━━━━━━━━━━━━━
┃ ┃ Bootloader
┃ ┗━━━━━━━━━━━━━━━ 0x04000000
┃
┃
┃ Kernel Heap ▲
┣━━━━━━━━━━━━━━━━━━
┃ bss
┣━━━━━━━━━━━━━━━━━━
┃ data
┣━━━━━━━━━━━━━━━━━━
┃ rodata
┣━━━━━━━━━━━━━━━━━━
┃ text
┣━━━━━━━━━━━━━━━━━━
┃ text.boot
┣━━━━━━━━━━━━━━━━━━ 0x00080000 Kernel Start
┃ Kernel Stack ▼
┃
┗━━━━━━━━━━━━━━━━━━ 0x00000000
The BCM2835 Peripheral Manual
has lots of the random addresses used for driver stuff. If you see a reference to (Section X.X)
in comments it's referring to this.
Bits pulled from: