While researching another post recently, I tripped over an impressively small RTOS (real time operating system) that can be built and configured to run in an ARM CPU with as little as 4 KB of FLASH and 1 KB of SRAM.
This claim has a possibly surprising assumption: that there is an ARM CPU that small and that it is useful. There is, the LPC810. The LPC800 family from NXP is a family of ARM CORTEX-M0+ CPUs with a handful of useful peripherals on chip, between 4 KB and 16 KB of FLASH, between 1 KB and 4 KB of SRAM, and available in an 8-pin DIP as well as modern surface mount packages with 16 and 20 pins (that are all physically smaller than the classic 8-pin DIP).
It is occasionally useful to have a minimal amount of operating system available in an embedded system, and there are a large number of choices available. But even the smallest have trouble dealing with as resources as constrained as the LPC810 provides.
That leads us to UOS-LPC800, created specifically for this tiny environment. In just over 2 KB of code space, it provides a multi-tasking kernel that supports either round-robin and priority based scheduling of multiple tasks, task yield, and timed sleeps. While it is lacking semaphores, atomic operations, and other interprocess communication primitives, it easily allows a few independent threads to run in the LPC810 and do useful work.
According to the author, it is practical to run about 3 threads doing useful work in the LPC810. The additional ram available to the LPC811 and LPC812 allow for significantly more threads.
Not too shabby for such a tiny package.
(Written with StackEdit.)