Kitty'S: Writing a toy is for the ATmega168 from scratch
Writing an operating system for a computing platform is one of those non-trivial tasks that few people have to do, whether it's for a small microcontroller or a larger general-purpose computer. Many of us spend a lot of our time producing robust code for embedded systems, sometimes delving deeper into abstraction when we get stuck on a problem. Very often this work relies on an RTOS, which we consider a problem solved. [Jonathan Diamond] had gained a good grasp of some of the low-level AVR black magic, as well as details of the inner workings of operating systems, and so decided to jump into building an operating system toy called KittyOS. , just for the learning experience.
[Jonathan] is quick to add that this is not a hands-on operating system, but a learning platform that needs a few extra bells and whistles to be useful. Aimed at the 8-bit ATmega168 AVR with only 16 KB of flash memory and 1 KB of SRAM, the small chip can still perform more than well enough to house the rudimentary operating system - up to four application tasks and one support for basic system calls.
Already, KittyOS sports preemptive multitasking, with prioritization and support for applications written in C. Hardware support is a bit limited, with just serial I/O and a bit of GPIO, but that's more than enough for a demonstrator. Applications can be loaded into one of four available slots, with execution state control per slot, using the Python-based host interface. The post is long, with an absolute ton of gory detail that we love around those parts, and we're very glad [Jonathan] took the time to do some proper redaction as well as a demo video, which can be found after the break.
Many such operating systems have graced these pages over the years, such as ZARDOS, which is for Arduino Mega/UNO boards. Getting a bit more complex, we saw Snowdrop, which was written in pure x86 and even sports a BASIC interpreter. Finally, we have to mention our guide on RTOS and how to choose the best one for your needs.
Writing an operating system for a computing platform is one of those non-trivial tasks that few people have to do, whether it's for a small microcontroller or a larger general-purpose computer. Many of us spend a lot of our time producing robust code for embedded systems, sometimes delving deeper into abstraction when we get stuck on a problem. Very often this work relies on an RTOS, which we consider a problem solved. [Jonathan Diamond] had gained a good grasp of some of the low-level AVR black magic, as well as details of the inner workings of operating systems, and so decided to jump into building an operating system toy called KittyOS. , just for the learning experience.
[Jonathan] is quick to add that this is not a hands-on operating system, but a learning platform that needs a few extra bells and whistles to be useful. Aimed at the 8-bit ATmega168 AVR with only 16 KB of flash memory and 1 KB of SRAM, the small chip can still perform more than well enough to house the rudimentary operating system - up to four application tasks and one support for basic system calls.
Already, KittyOS sports preemptive multitasking, with prioritization and support for applications written in C. Hardware support is a bit limited, with just serial I/O and a bit of GPIO, but that's more than enough for a demonstrator. Applications can be loaded into one of four available slots, with execution state control per slot, using the Python-based host interface. The post is long, with an absolute ton of gory detail that we love around those parts, and we're very glad [Jonathan] took the time to do some proper redaction as well as a demo video, which can be found after the break.
Many such operating systems have graced these pages over the years, such as ZARDOS, which is for Arduino Mega/UNO boards. Getting a bit more complex, we saw Snowdrop, which was written in pure x86 and even sports a BASIC interpreter. Finally, we have to mention our guide on RTOS and how to choose the best one for your needs.
What's Your Reaction?