TiROS (Tickless Real-Time Operating System) is a
pre-emptive priority based real-time task scheduler for
embedded systems with limited memory resources.
It was developed at Sandia National Laboratories
and is released as open-source.
available under a modified GPL license (eCos open source
license) that allows it to
be used for commercial purposes at no cost.
It requires less than 200 bytes of RAM for typical uses (Exact
number is dependent upon number of tasks and hardware; On
MSP430 platform, TiROS with 6 tasks needs approx 120 bytes). Thus it can be
used where sophisticated free OSes like Linux or eCOS cannot be used. It is more closely comparable in
resource usage to FreeRTOS.
It provides the following reliability features and real-time capabilities that are not usually found in an RTOS of its class:
- Hard Priorities: Every task has a unique priority
and TiROS schedules tasks in a deterministically
- Tickless Scheduling: TiROS avoids
most context-switching overhead costs by eliminating
periodic ticks. In most
embedded real-time OSes, there is a trade off between high
time-resolution (by increasing tick frequency) and
overhead. TiROS does not use ticks and achieves
high-time resolution with very low overhead.
- Prevention of Priority Inversion and Deadlock: TiROS has been designed to provide reliable
real-time capabilities. TiROS supports either of two mechanisms for
preventing priority inversion.
The implementation of these mechanisms is described in the TiROS documentation.
Priority Ceiling Protocol (Default): This can prevent
priority inversion and deadlock.
Inheritance Protocol (Optional): This can prevent
What's Not Present: TiROS aims at doing one thing well, that is
providing reliable real-time task scheduling with very low resource consumption. As such, it includes
no networking, no standardized peripheral access, not even
memory management. The user is still free to run RTOS
independent networking code (like uip), external
memory managers etc, with the appropriate mutexes or
- Multi-tasking Primitives: Tasks have access to synchronization primitives such as mutexes, counting
semaphores, message queues, and event flags.
- Low Memory Usage
- Low Overhead Interrupts
- Debugging Capabilities
- TiROS can run on a Posix system (using the Posix
HAL). The hardware independent parts of the system can be
developed rapidly and tested thoroughly on a Windows/Linux
system before deployment on the embedded system.
TiROS is written in "C" and is designed to be easy to
port to different hardware. The hardware-specific portion
of the operating system is separated into a HAL (Hardware
Abstraction Layer). The current version of TiROS is
available with two HALs:
- MSP430 family
with GCC Compiler.
- MSP430 family
with IAR Compiler.
Posix HAL that allows for the use of TiROS on any
Posix compliant operating system such as Linux or even
Windows NT/XP with Cygwin. This allows for easy
simulation and testing of software. This HAL allows TiROS to run within a Posix process.
Download the software.
- There are several example projects.
On a Linux or Cygwin system, use a command shell to navigate to
any of the subdirectories in the os_examples directory.
- Assuming, you have gcc and family already installed, compile the example: Type "make clean; make".
- Run the example: Type "./objects-release/os".
TiROS has detailed documentation available in html and PDF form.
Copyright 2006 Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains certain rights in this software.
TiROS is provided open-source under the eCOS open-source license, which is a GPL compatible license, that allows the use of this software in commercial applications. For details on licensing, please see the eCOS
As with eCOS,
the license is the GNU General Public License with the following exemption clause:
As a special exception, if other files instantiate templates or use macros
or inline functions from this file, or you compile this file and link it
with other works to produce a work based on this file, this file does not
by itself cause the resulting work to be covered by the GNU General Public
License. However the source code for this file must still
be made available in accordance with section (3) of the GNU General Public
This exception does not invalidate any other reasons why a work based on
this file might be covered by the GNU General Public
Top of page