3 ms·
I wrote a pre-emptive, multi-threaded OS for the AVR atmega 128 back in college as a sensor networking operating system called Mantis OS (mos). For anyone inte
by goldenshale 6y ago
I wrote a pre-emptive, multi-threaded OS for the AVR atmega 128 back in college as a sensor networking operating system called Mantis OS (mos). For anyone interested in this direction, it also provides a device layer and “drivers” for timers, ADCs, eeprom, serial port, networking, etc. A great group of folks kept improving it for years so there is a lot there to learn from just as a resource too.
https://github.com/rosejn/mantis https://github.com/rosejn/mantis
- andrewguy9 6y agoI 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