A simple Raspberry PI / ARM toy operating system written in C and ARM assembly.
This project was intended for educational purposes only. You shouldn't use it in production ! (you won't go far with it anyway, stick with a GNU/Linux distribution instead !)
Here are the parts already implemented:
- Preemptive scheduler
- Memory Pagination management via ARM's MMU.
- Virtual Memory pager
- System calls
Here are the parts that will be implemented in the future:
- Memory protection between processes and kernel (Ring 0/Ring 1 separation)
fork()syscall
Here are the parts that might be implemented in the future:
- Simple init system (pid 1)
- Basic FS
- Simple CLI
To make the development easier, you should use Vagrant:
vagrant upThen you can ssh yourself into the vm that will be running the emulator.
vagrant sshNow it's compilation time !
cd /vagrant
makeAnd then, let's start qemu and gdb to control how the execution works...
cd /vagrant/debug
sh run-qemu.sh &
sh run-gdb.shAt this point you can input c into gdb to go to the first breakpoint inside the kernel.
Getting to the next line will be n and entering inside a function call will be s.
