Content originally posted in LPCWare by rmteo on Fri Apr 22 07:50:27 MST 2011
Thank you very much for the size info guys. I am particularly interested in small footprint RTOSes that can run in the smallest ARM Cortex micros such as the LPC1111 which has only 8K Flash and 2K RAM.
The commercial RTOSes I am looking at are Avix-RT, Q-Kernel (not yet for ARM, only PIC32) and emBOS. All 3 are pre-emptive (and claim to be hard real time) and optionally co-operative. The free ones that I looked at are ChibiOS and CooOS but not FreeRTOS which is why I asked for the size info. It appears that they are all fairly similar in their memory requirements for typical applications - starting at about 15-25K Flash and several kBytes of RAM depending upon number of tasks and task stack sizes. The exception to these numbers is emBOS which needs as little as <2K flash for a minimum configuration.
Another interesting option is the Tasking Library that is an integral part of the CrossWorks (supports ARM7, ARM9, XScale and Cortex-M0/3/4) development system for ARM. It is a royalty-free library that provides a multi-priority, pre-emptive, task switching and synchronisation facility. Additionally, the library can also provide timer and interrupt handling support. Its memory requirements are small - similar to that of emBOS.
As for a purely co-operative RTOS, I have pretty much settled on Salvo. Without going into the pros and cons of co-operative vs. pre-emptive, there are situations where I feel one would be more apprpriate over the other. The interesting thing about a co-operative one such as Salvo is that you can do a multitasking app with 5-6 tasks (including things like soft RS232) in 1K Flash and <50 bytes RAM on an 8-bit MCU (obviously more on a 32-bit Cortex, I am seeing <2x).
BTW, all 3 commercial pre-emptive RTOSes are about US$5-6K for a royalty free source code license and Salvo is US$1.5K - CrossWorks is US$1.5K for the development system that includes the tasking library.