Home
Products
Services
Industries
Partners
Support
Download
About us

Mapusoft Technologies is the leading provider of porting and abstraction solutions that increase the
level of code re-use to protect software investment.

Copyright © 2017 MapuSoft Techologies, Inc. All rights reserved.


A Few Leading RTOSs

Following are a few RTOSs for further review:
Nucleus
QNX
VxWorks
Windows CE
OSE

An embedded system is a specialized computer system that typically utilizes a RTOS. Generally, such systems perform a limited number of functions, often with tight constraints. For example, many household appliances utilize rudimentary embedded systems. For example, a washing machine only requires a select few operations which do not require a full computer system (imagine having to boot up your washing machine and installing an anti-virus system on it).

How to Choose a RTOS for Your
Embedded System

After a brief introduction regarding the technologies involved, this post will provide you with the resources needed to make an informed decision about which real-time operating system (RTOS) will best fit the needs of your embedded system.

A RTOS is generally necessary for any application which requires control over process priorities. For example, if you need a task to execute every 10 seconds without fail, then you will need a RTOS. For an operating system to be considered as an RTOS, the system must be predictable with respect to timing and be deterministic.

Check out our LinkedIn Group

Scheduling Policies

The first step in determining which RTOS is right for your project is to understand the various types of RTOSs and their application. Use each of the following sections to help determine what your specific RTOS requirements are. Once you have these requirements in hand, you will have the information you need to select the appropriate RTOS.

Runtime Behavior

How Large?

Most embedded systems have tight memory constraints. You must determine how much memory your embedded system allows (i.e. how much and what type of RAM is supported). Then, there are two factors to consider 1) what memory is required by the RTOS itself and 2) how much memory your application requires. For the second factor, you may need to utilize an RTOS simulator (most RTOSs come with one) to gain an accurate estimation, which is especially important if you are working with a severely limited system.

How Flexible?

There are some constraints and requirements that you may not be aware of now but will be very important towards the success of your project in relation to the RTOS architecture. Following are few key areas to explore with each RTOS vendor:

Application Programming Interface (API)

Discover if the RTOS supports dynamic objects at runtime. This will allow for greater flexibility in your code. Otherwise, you will be forced to create all of your system objects before runtime.

Interrupts

It is likely that you may need more than one policy in your application. The most common are Preemptive, Round Robin, Cooperative, Time-Sliced and Multivariate Slicing. Verify which of these are supported by the RTOS.

Event Synchronization

Take a look at the RTOS API and take some time to explore what services are offered. Generally, the more API calls the better. In particular, pay attention to any API calls that are needed by your particular application.

Determine how the RTOS handles interrupts and whether macros/functions are supported. If macros/functions are not supported, you will likely need to write your own code, extending development time.


A Washing Machine Embedded System - Source

Find out of the RTOS supports multiple tasks waiting on a single event and/or a single task waiting on multiple events. Discover any constraints now to help determine if the RTOSs event synchronization model will support your application.

Memory Management

Look for the ability to create deterministic memory allocations so that you can avoid additional overhead associated with garbage cleanup and fragmentation. How much control do you have over the RTOS memory management? (e.g. Can memory be dynamically allocated at runtime?)

Messaging

What options does the RTOS provide for passing data between options? Ideally, the RTOS should support several options. What types of objects can pass data among themselves?

For further detail and additional questions to consider, please review this PDF from Quadros System Inc.

How Fast?

There are two basic types of RTOSs, hard and soft. A hard system is required when you have a situation where a task not meeting a deadline would result in a failure. With a soft system you have no guarantee that your deadline would be met, but there is some window of reliability. For example, the system may not guarantee the execution of your task every 10 seconds, but the system will likely not take more than 11 seconds and generally will make the 10 second requirement.

The response time is the measure of the hardness of a RTOS. The lower the response time, the better (harder) the RTOS. The key question to explore is: What is the worst case response time your application can live with? The value that answers that question is determined by the amount of Jitter in the system.


How Much?

When considering the necessary budget for implementing a RTOS, keep the following possible costs in mind:

Initial software license fees
Recurring license fees
Support Costs
Training Costs
Development labor costs (programmer, QA, manager, etc.)


To help determine the development labor costs, take a look at the RTOS documentation. Pay particular attention to sample code, tutorials and training options.

If you will choose a free and/or open source solution, investigate if there are companies that can offer a support contract. If not, take the time to explore the community surrounding that RTOS. Is the community active? Do they respond to requests quickly? Do the developers interact with the community? How do they respond to feedback and feature requests?

If your application must run on multiple operating systems, then you must also consider the cost of
porting the software. If you are early enough in the planning phases of your project, you may also consider crafting your code for portability at the outset.

Now that you have fine tuned your requirements, you can begin the process of making your final choice of RTOS. It is my hope that by answering the questions posed above, you can significantly cut the time needed during this decision making phase.


Here is a list of real-time operating systems formatted in a table. I suggest that you create an extended version of this table where you add columns for each of the above considerations. That should help you filter solutions at a faster rate.

Contact Us