Homepage  
Homepage | FAQ

FreeRTOS FAQ - What is This All About?

What is a Real Time Operating System (RTOS)?
What is a Real Time Kernel?
What is a Real Time Scheduler?
How do I use FreeRTOS?
How do I get started?
Why use an RTOS?

FAQ Top



What is a Real Time Operating System (RTOS)?

This is not a quick question to answer. I will summarise briefly here. For more information see the fundamentals section of How FreeRTOS Works.

A Real Time Operating System is an operating system that is optimised for use in embedded/real time applications. Their primary objective is to ensure a timely and deterministic response to events. An event can be external like a limit switch being hit, or internal like a character being received.

Using a real time operating system allows a software application to be written as a set of independent tasks. Each task is assigned a priority and it is the responsibility of the Real Time Operating System to ensure that the task with the highest priority that is able to run is the task that is running. Examples of when a task may not be able to run include when a task is waiting for an external event to occur, or when a task is waiting for a fixed time period.



What is a Real Time Kernel?

A Real Time Operating System can provide many resources to application writers - including TCP/IP stacks, files systems, etc. The Kernel is the part of the operating system that is responsible for task management and intertask communication and synchronisation. FreeRTOS is a real time kernel.



What is a Real Time Scheduler?

Real Time Scheduler and Real Time Kernel are sometimes used interchangeably. Specifically the Real Time Scheduler is the part of the kernel that is responsible for deciding which task should be executing and switching between tasks.



How do I use FreeRTOS?

FreeRTOS is supplied as source code. The source code should be included in your application project. Doing so makes the public API interface available to your application source code.

When using FreeRTOS your application should be written as a set of independent tasks. This means your main() function does not contain the application functionality, but instead creates the application tasks, then starts the kernel. See the main.c and project files (makefile or equivalent) included with each port for examples.



How do I get started?

Start with one of the preconfigured demo applications that comes included in the download. This will ensure that you are using all the correct compiler switches - which in some cases is very important. When this is operational you can modify the project files (makefile or equivalent) to include your own application tasks.

If you don't have any hardware then have a look at the Keil ARM7 port. This can be executed in the simulator supplied with the evaluation version of the Keil development tools.



Why use an RTOS?

You do not need to use an RTOS to write good embedded software. At some point though, as your application grows in size or complexity, the services of an RTOS might become beneficial for one or more of the reasons listed below. These are not absolutes, but opinion. As with everything else, selecting the right tools for the job in hand is an important first step in any project.

In brief:


FAQ Top




Copyright (C) 2003 - 2008 Richard Barry
Any and all data, files, source code, html content and documentation included in the FreeRTOS distribution or available on this site are the exclusive property of Richard Barry. See the files license.txt (included in the distribution) and this copyright notice for more information. FreeRTOSTM and FreeRTOS.orgTM are trade marks of Richard Barry.