Hi AlphaBeta, thanks for the welcome!
Well, as I commented in my first post, DuinOS is based in open source tools. To be more specific, it's a layer over the FreeRTOS v5.4.2 kernel (
www.freertos.org), which implements a RoundRobin preemptive multitasking subsystem, with only one timer.
That RTOS is robust (it's available since a few years), but there is no much really simple AVR code out there, specially for the smaller mcus (the demo app comes for the old ATMega323, and for the ATMega32).
So, we started to integrate it in our projects, porting it to the m88, m168, m644, m1284 and m1280, and finally made this, which we think has a more "arduino" syntax, simplifying some things. For example: instead of working with taskHandles, you can suspend or resume them by name (thanks to some simple macros).
The other part of our work was to make it fit in the smaller devices.
Finally, we are working now on integrating it to the Arduino IDE, because we want to just add some dirs, without overwriting existing ones, and making the IDE and the OS work together with the 644 and the 1284, wich we use in our robots.
Regarding the BlinkWithoutDelay, that's a typical cooperative application. DuinOS is full preemptive (and FreeRTOS has cooperative tasks too, that we disabled them in this port, but can be reenabled by the user).
In small applications, the cooperative is generally better, due to it's small footprint (both Flash and RAM). But when the apps grows and goes more complex (please think about the 1284, with 128 KB of flash and 16 KB or RAM), the preemptive really simplifies things, and in bigger cpus (328+) this kernel fits well.
Regards,
Julián