InfiniTTy™ RTOS

InfiniTTy product logo

All RapidiTTy™ products include a licence for the InfiniTTy™ RTOS family. Where a Production Licence is purchased, the use of InfiniTTy™ is royalty-free.

When a project is created, the user may opt to use an implementation of the InfiniTTy™ RTOS or to simply create an “empty project”.

A summary of the available InfiniTTy™ options is given on this WWW page.

At present, full support for all of the options listed on this page is provided only in RapidiTTy™ Pro and RapidiTTy™ MCU. All of the options described here will be supported in forthcoming releases of RapidiTTy™ FPGA and RapidiTTy™ x86 products.

Empty” RapidiTTy™ project (no InfiniTTy™ support)

The empty project option provides a minimal skeleton consisting of just enough code to compile and debug an embedded application and nothing else. It includes the generation of basic startup and linker scripts, as well as a main source file containing the application entry point (the main function) and functions to either handle or trap any interrupts that might occur.

Empty” projects are ideal for initial testing, for systems that do not need any form of RTOS, or where you wish to use a third-party RTOS. Empty projects still have access to the RapidiTTy™ drivers.

Time-triggered architectures

At TTE Systems, our products and services are based on time-triggered (TT) technology, and all of our RapidiTTy™ products support the creation of systems with a TT architecture.

Fixed priority co-operative scheduler (“InfiniTTy™ / FPC”)

The Fixed-Priority Co-operative (FPC) scheduler will execute tasks after a given delay and periodically at a given interval, based on multiples of the system tick. Each task will run to completion before the task with the next highest priority (that is due to run) begins. Task priorities are specified explicitly and cannot change at runtime.

Where appropriate, the use of a fully co-operative approach provides a number of advantages. The lack of context switching means that the scheduler’s operation is very simple and easy to fully comprehend. Similarly, there is no need for critical sections or locking and all tasks may share a single stack (which saves a considerable amount of memory).

FPC schedulers are useful for any set of tasks where the total combined (worst-case) execution time of all tasks due to execute in a given tick is less than the scheduler’s tick period.

If you want to learn more about FPC scheduling, a textbook is available which describes - in detail (1000 pages …) - the use of an early version of this operating system.

The textbook is called “Patterns for Time-Triggered Embedded Systems”. A complete soft copy of this textbook can now be downloaded without charge from this website.

A Chinese translation of “PTTES” is also available.

Cover of Pattern for Time-Triggered Embedded Systems

  • Pont, M.J.(2001) “Patterns for Time-Triggered Embedded Systems”, Addison-Wesley / ACM Press. ISBN: 0-201-331381.
  • Pont, M.J.(2004) “Patterns for time-triggered embedded systems”, Chinese Electric Power Press ISBN: 7-5083-2206-1.

Fixed priority hybrid scheduler (“InfiniTTy™ / FPH”)

The Fixed Priority Hybrid (FPH) scheduler - sometimes simply called a “hybrid” scheduler - will execute most tasks in exactly the same way as the FPC scheduler. There is one exception: a single task may be designated as “pre-empting”: this task will have the highest priority and will be allowed to interrupt any other (co-operative) task that is executing when it (the pre-empting task) is due to run.

The introduction of a single pre-emptive (time-triggered) task will only moderately increase the complexity of a scheduler, as the task may be executed directly from the scheduler’s ISR and so benefit from the microcontroller’s built-in context switch (as well as utilising the separate ISR stack).

FPH schedulers are useful when we have one high-priority task with a short worst-case execution time that must execute at a very high frequency (compared to the other tasks in the system).

Use of FPH schedulers is also discussed in detail in the “Patterns for Time-Triggered Embedded Systems“ textbook.

Fixed priority pre-emptive scheduler (“InfiniTTy™ / FPP”)

The Fixed Priority Pre-emptive scheduler will allow any task to interrupt any other task with a lower priority. The FPP scheduler requires a priority for each task.

FPP schedulers are useful when a co-operative or hybrid solution would be inappropriate. Note also that each task needs a separate stack area.

Event-triggered architectures

For maximum flexibility, RapidiTTy™ products also support event-triggered architectures. Please note that we do not recommend the use of these architectures in systems where predictable timing behaviour is required.

Dynamic priority co-operative scheduler (“InfiniTTy™ / DPC”)

The Dynamic Priority Co-operative scheduler operates in the same basic manner as the FPC scheduler, except that the task’s priorities are determined dynamically based on the Earliest Deadline First (EDF) approach.

Each task in the DPC scheduler must be provided with a deadline, which represents the time (within each period) that the task should be completed by.

DPC schedulers are useful when the execution time of tasks is highly variable or cannot be known prior to execution.

Dynamic priority pre-emptive scheduler (“InfiniTTy™ / DPP”)

The Dynamic Priority Pre-emptive (DPP) scheduler is based on the FPP scheduler, with the difference that it determines task’s priorities dynamically based on an “earliest deadline first” (EDF) algorithm.

DPP schedulers are useful when a co-operative or hybrid solution would be inappropriate. Note also that each task needs a separate stack area.