5 ms·
I also wrote a preemptive threaded operating system for AVR atmega 128. At the start we had threads, pipes between threads, serial io, interrupts. After we fi
by andrewguy9 6y ago
I also wrote a preemptive threaded operating system for AVR atmega 128.
At the start we had threads, pipes between threads, serial io, interrupts.
After we finished the project, I ported the system to standard UNIX system calls. Now I can tinker on it, and get full access to GDB/prints/profilers. I use signals, timers and pipes to simulate interrupts, clock and serial ports respectively.
Because I’m targeting UNIX it’s pretty easy to get started and build little toy experiments. I haven’t gotten it to compile on AVR for 10 years. But I have been maintaining it as a playground for new ideas.
Some recent additions are resumable functions (like python generators), A lisp user space, and a performance regression test suite.
https://github.com/andrewguy9/kernelpanic https://github.com/andrewguy9/kernelpanic