Footprint: concrete figures

rbornet wrote on Friday, June 11, 2010:

Hi FreeRTOS fans

I’m a swiss embedded sw engineer and I’m working on a research project for developing new kinds of medical devices for drug monitoring and delivering (http://www.nano-tera.ch/projects/405.php). For this project we will work with a new 32-bits ultra low-power processor/SoC developed at http://www.csem.ch. The chip does not implement any known architecture but resembles the Coldfire/68K architecture in many aspects. I will have to port a RTOS to this chip and googling around I came across FreeRTOS which seems to be an ideal candidate for the targeted application.

Before attempting any porting effort I would like to have some points regarding footprint/memory usage cleared to be sure the whole thing would fit in with my reduced resources. The chip we will use has 48KB RAM + 48 KB ROM.

On http://www.freertos.org/FAQMem.html I read that a typical FreeRTOS configuration requires ~4KB ROM and some key figures on RAM usage. I also found different reference figures on the web for different architectures/compilers combinations but most of the time the measurements are made with the demo application/s which is a good reference but still not a complete system. Would some forum’s members have figures for concrete/production applications ? It would be nice to have some key figures with basic project/system information e.g. “Medical device application (infusion pump): …KB ROM + max … RAM”, “Automation (motor controller): … KB ROM + … RAM”.

My intent is really to clarify if FreeRTOS could be used for our project or if our resources are too limited…
I originally come from another embedded systems’ world where I had GHz PowerPCs and hundreds MB of RAM and dealing with my new CPU running at 3.2 MHz and with strong memory constraints is a big challenge. :slight_smile:

rtel wrote on Friday, June 11, 2010:

Sounds like an interesting project.  I have actually visited some companies who are part of the CSEM in Switzerland to talk about operating systems.

I can give you some footprint figures for the ARM Cortex-M3, which is also a 32 bit core, and also a newish design.  Using GCC I would expect the kernel itself to take between 5 and 10 KBytes, depending on optimisation and options selected.  With regards to RAM I know, for example, that the SafeRTOS in the ROM of the Stellaris (Cortex-M3) consumes exactly 0x20C bytes itself.  However,  if you are running with full pre-emption then the actual amount of RAM required depends on the size of stack allocated to each task.  Using the Cortex as an example once more then I know you can get that down to 70 words quite comfortably (note words not bytes in this last figure) *if* you take care with your task design.  A lot also depends on the C libraries you are using, some are vastly better than others when it comes to footprint.

I would like to mention that if your product is going to require certification (FDA, EN62304, etc.) then SafeRTOS might be a good option for you as it comes with all the lifecycle evidence required (its not free though ;o).  Not only that but its suppliers (WITTENSTEIN high integrity systems) have experience with infusion pumps, and the documentation they provide already covers the FDA requirements that have just been published specifically for that domain.  I like to keep this forum non-commercial, so if you would like to discuss this option further then feel free to contact me using r  barry (at) freertos.org and I can put you in touch with the right people. 

Regards.

rbornet wrote on Friday, June 11, 2010:

Hi Richard

Thanks for the prompt and useful answer. It sounds like FreeRTOS would then fulfill our requirements. For now certification is not a direct concern since we are mainly researching new techniques, developing prototypes and testing new sensors,… The SafeRTOS option is nevertheless really interesting for the long term when our researches/techniques would be implemented in real production-grade medical devices. As far as I could read the migration from FreeRTOS to SafeRTOS is rather straightforward and well documented therefore FreeRTOS would be best suited for the development/research phase whereas SafeRTOS could be licensed and used in commercial medical devices. This is also an aspect which I find really interesting with FreeRTOS/OpenRTOS/SafeRTOS. The licensing model is really flexible and can accommodate with different development cycles, requirements and level of support. Really a great idea !