FreeRTOS Features - help please

rkell wrote on Thursday, August 11, 2011:

Hello estimated colleagues. I am considering the use of FreeRTOS for an upcoming project (switching from ThreadX) and I have a few questions regarding its features that I need answered before I proceed. Can any of you check the following list and tell me whether these features are available? Your help is greatly appreciated!

Feature:
-Fixed size memory management
-Signal a task without requiring a semaphore
-Send messages to a task without needing a message queue
-Is it ROMable?
-ASCII names for each kernel object?
-Task registers
-Built-in performance measurement
-User definable hook functions
-Time stamps on posts
-Built-in Kernel Awareness support
-optimizable scheduler
-tick handling at task level
-Number of services?

Thank you very much.

davedoors wrote on Friday, August 12, 2011:

> Hello estimated colleagues. I am considering the use of FreeRTOS for an upcoming
> project (switching from ThreadX)

Why do you want to switch from ThreadX?

> and I have a few questions regarding its features
> that I need answered before I proceed. Can any of you check the following list
> and tell me whether these features are available? Your help is greatly
> appreciated!

The information you want is all on the web site. Start here
http://www.freertos.org/FreeRTOS_Features.html Normally, if a feature is not explicitly provided, you can use other features to achieve the same effect.

> Feature:
> -Fixed size memory management

Apparently there used to be, but people found it too complicated. See
http://www.freertos.org/a00111.html

> -Signal a task without requiring a semaphore
> -Send messages to a task without needing a message queue

If you mean a posix style signal, then no.

Remember in FreeRTOS code size is king. Queues are used as the base primitive for all task to task and task to interrupt coms, and queues have event management built in.

> -Is it ROMable?

Yes. What isn’t?

> -ASCII names for each kernel object?

Tasks and timers by default. Queues and the various semaphore types can be added to a registry with an ascii name.

> -Task registers

?

> -Built-in performance measurement

http://www.freertos.org/rtos-run-time-stats.html
http://www.freertos.org/rtos-trace-macros.html

> -User definable hook functions

Task switch hooks (definable per task), idle hooks, tick hooks, malloc fail hooks, stack overflow hooks.

> -Time stamps on posts

You can post a structure that has a time stamp you add yourself.

> -Built-in Kernel Awareness support

The kernel is aware of itself, yes.

> -optimizable scheduler

There are features that allow memory use to be inspected and so optimised. The kernel is configurable too, and you have all the source code.

> -tick handling at task level

?

> -Number of services?

?

rkell wrote on Friday, August 12, 2011:

Hello davedoors, thanks for your great reply! I want to switch to FreeRTOS because I’ve worked with ThreadX before and found it kind of hard to work with. I have a new group of engineers for this project so we would be starting from scratch in terms of RTOS-knowledge and figured it would be better to find one that was easier to use. A friend of mine recommended FreeRTOS and figured I’d give it a shot. I am also considering other options such as uC/OS-III. What I liked about freeRTOS is that I have a small amount of kernel files to deal with, and that makes it simpler for me. Furthermore, because of budget reasons, this is an excellent option to explore. Finally, I am an aficionado of open source, so this option seems to suit well.

Speaking of budget, do you (or anyone else) have an idea of how much would i have to pay if I want them to write me a port? The board I plan to work with is a Renesas board for which there is no port available, the RX610. How about prices for private training sessions or support by phone? Even though this case seems unlikely since forum-support seems very solid, perhaps there would be a case were I would need urgent support or training, and I need to plan for everything.

Going back to the features, I like the Task trace functions. Also when I asked about the number of services I meant the number of kernel services provided, such as task management, task scheduling, etc. I’ve seen a few that have from 50 to 100 services. I was just curious.

Thanks!

rtel wrote on Friday, August 12, 2011:

Speaking of budget, do you (or anyone else) have an idea of how much would i have to pay if I want them to write me a port? The board I plan to work with is a Renesas board for which there is no port available, the RX610.

If you write to me directly, I can send you a support and information pack, you can find the email address here http://www.freertos.org/RTOS-contact-and-support.html.  However, currently price is not really the limiting factor, scheduling is.  The development road map, both for kernel enhancements and new ports is extremely busy, and unfortunately the RX610 is not currently on the list.  I could add it to the list, but could not guarantee when the work could start.  I do have a commercial partner company who can also quote for work, but there rates are (understandably) somewhere more commercial than mine.  If you are the same person that inquired through the ticketing system then you will have their details already.

How about prices for private training sessions or support by phone?

If you send an email to training  freertos.org, with details of the type of training you would be interested in, then I can forward it to our official training partner who can then enter into a dialogue with you (he is currently on vacation for a few weeks though).  You can see more information here:  http://www.freertos.org/training.  There are a few people around the world doing training with FreeRTOS, but I can’t recommend anybody in particular without first being familiar with their training material myself.

FreeRTOS is what I would call a mini, preemptive, real time scheduler.  It is designed to be small and portable.  That means it does not necessarily provide all the features of larger systems.  I’m not too familiar with ThreadX myself (although I understand it is a good system) so can’t really give a direct comparison.

One thing you might consider is trying the FreeRTOS Windows simulator.  http://www.freertos.org/FreeRTOS-Windows-Simulator-Emulator-for-Visual-Studio-and-Eclipse-MingW.html  It is quite comprehensive as it is used as a test and development bench too, so not so good for newbies, but for somebody such as yourself with previous kernel experience it is a convenient way of kicking the tires (if you know that expression).  Don’t expect real time out of it though - Windows idea of fine grain or accurate timing is very different to a microcontrollers idea.  If you set it to ‘simulate’ a 1KHz tick is think you will get about 1/30th of the intended speed.  Setting it to a slower tick allows a more accurate representation, at the cost of less fine grained timing.

Regards.

rkell wrote on Friday, August 12, 2011:

That is some really good info Mr. Barry, thanks!

If anyone has experience with FreeRTOS and either ThreadX or uCOS-III, and can provide a comparison that would help too. Thanks a lot!

One would have to question the quality of training suggested when one reads that RTOS’ were invented in 1991 by Linus Torvalds in the Linux kernel…
2 things wrong in that statement: Linux is NOT an RTOS and RTOS’ existed a long time before 1991.

Yes, that site looks to be about working with a Real Time Linux, which does exists. To be factual, they don’t say RTOSes started in 1991 with Linux, but start off talking about using RTOSes, and then go to the history of Linux, and appear to be describing training in using Linux in a real-time system, which is very different than the sort of thing you would be using FreeRTOS for.

Hi Richard, the heading above the hostory of Linux states:

HISTORY OF RTOS

Which is what lead me to make the comment. Now they offer RTLinux training but I’m dubious on the quality when little details like that aren’t correct. I guess I’m just an old fart at this stage and being in quarantine has left me even more of a curmudgeon than usual :wink:

The heading makes some sense if you think of it as the history to get to RTLinux, which is what they seem to focus on. Yes, a very myopic view of the topic, but I guess they push what they have, not what they don’t.

For us users of a ‘Real’ light weight RTOS, the information isn’t that helpful, but for people coming from a ‘big machine’ background and expecting those sorts of service, RTLinux might be useful.