SafeRTOS
This article, SafeRTOS, has recently been created via the Articles for creation process. Please check to see if the reviewer has accidentally left this template after accepting the draft and take appropriate action as necessary.
Reviewer tools: Inform author |
This article, SafeRTOS, has recently been created via the Articles for creation process. Please check to see if the reviewer has accidentally left this template after accepting the draft and take appropriate action as necessary.
Reviewer tools: Inform author |
Comment: Still reads like an advertisement. See WP:NPOV and puffery for help improving this article. Cheers! Stella BATPHONEGROOVES 16:40, 1 August 2012 (UTC)
Developer | WITTENSTEIN high integrity systems |
---|---|
OS family | Real-time operating systems |
Working state | Current |
Source model | Open source |
Marketing target | Embedded devices |
Platforms | Same as FreeRTOS |
Kernel type | Microkernel |
License | Proprietary |
Official website | http://www.highintegritysystems.com/rtos/safertos/ |
SAFERTOS is an priority-based pre-emptive real-time operating system for use with 32 microcontrollers. SafeRTOS is one of a growing number of pre-certified embedded operating systems, having been initially certified by TUV SUD in 2007 to IEC 61508 SIL3.[1]
SafeRTOS has been developed by WITTENSTEIN high integrity systems, in partnership with Real Time Engineers Ltd, the company behind the popular[2] FreeRTOS project. Both SafeRTOS and FreeRTOS share the same scheduling algorithm and have similar API’s but differing code bases.[3]
WITTENSTEIN high integrity systems is located in Bristol in the UK and is part of the WITTENSTEIN AG, a global technology company with its headquarters base in south west Germany.
Key features
Safety Features
- IEC 61508-3 SIL3 certified.
- IEC 62304 Class C compliant.[4]
- Full Design Assurance Pack
Technical Features
- Any number of tasks can be created - system RAM constraints are the limiting factor.
- Each task is assigned a priority - any number of priorities can be used.
- Any number of tasks can share the same priority.
- The highest priority task that is able to execute (i.e. that is not blocked or suspended) will be the task selected by the scheduler to execute.
- Supports time sliced round robin scheduling for tasks of equal priority.
- Queues can be used to send data between tasks, and to send data between tasks and interrupt service routines.
- Binary semaphores and counting semaphores make use of the queue primitive.
- Tasks can block for a fixed period.
- Tasks can block to wait for a specified time.
- Tasks can block with a specified timeout period to wait for events.
- FPU support.
- Definition and manipulation of MPU regions on a per task basis.
- Run time statistics.
Scheduling Policy
Only one task can actually be executing at any one time. The scheduler is responsible for selecting the task to execute in accordance with each task’s relative priority and state. A task can exist in one of the following state:
- Running The task selected by the scheduler to execute and is currently utilising the processor.
- Blocked A task waiting for an event. It cannot continue until the event occurs. Tasks in the Blocked state always have a timeout period, after which the task will become unblocked.
- Suspended A task will enter the Suspended state when it is the subject of a call to the xTaskSuspend() API function, and remain in the Suspended state until unsuspended by a call to the xTaskResume() API function.
- Ready A task is in the Ready state if it is able to enter the Running state but is not currently the task that is selected to execute.
The scheduler selects as the task to be in the Running state the highest priority task that would otherwise be in the Ready state. In other words, the task chosen to execute is the highest priority task that is able to execute. Tasks in the Blocked or Suspended state are not able to execute.
Different tasks can be assigned the same priority. When this is the case the tasks of equal priority are selected to enter the Running state in turn. Each task will execute for a maximum of one tick period before the scheduler selects another task of equal priority to enter the Running state.
While the scheduler will ensure that tasks of equal priority will be selected to enter the Running state in turn, it is not guaranteed that each such task will get an equal share of processing time.
Supported architectures
- Altera Nios II
- ARM architecture
- Atmel
- SAM7
- SAM9
- Freescale
- Kinetis
- PIC microcontroller
- PIC24
- PIC32
- Renesas
- RX600
- RX200
- STMicroelectronics
- Texas Instruments
- Stellaris
- Hercules
- Concerto
- NXP
- LPC2000
- LPC1000
- LPC4300
- Infineon
- TriCore
- XMC4000
- Microsemi
Selected members of the Stellaris microcontroller from Texas Instruments come with a pre-built version of SafeRTOS embedded in ROM. Applications running on these processors can link to and use the ‘ROMed’ copy of SafeRTOS in commercial applications.
See also
References
External links
Category:Real-time operating systems
Category:Embedded operating systems
Category:Microkernel-based operating systems