OSEK (Offene Systeme und deren Schnittstellen für die Elektronik in Kraftfahrzeugen; English: "Open Systems and their Interfaces for the Electronics in Motor Vehicles") is a standards body that has produced specifications for an embedded operating system, a communications stack, and a network management protocol for automotive embedded systems. It has produced related specifications, namely AUTOSAR. OSEK was designed to provide a reliable standard software architecture for the various electronic control units (ECUs) throughout a car.

OSEK was founded in 1993 by a German automotive company consortium (BMW, Robert Bosch GmbH, DaimlerChrysler, Opel, Siemens, and Volkswagen Group) and the University of Karlsruhe. In 1994, the French cars manufacturers Renault and PSA Peugeot Citroën, which had a similar project called VDX (Vehicle Distributed eXecutive), joined the consortium. Therefore, the official name was OSEK/VDX and OSEK was registered trademark of Continental Automotive GmbH (until 2007: Siemens AG).

Standards 

OSEK is an open standard, published by a consortium founded by the automobile industry. Some parts of OSEK are standardized in ISO 17356.

 ISO 17356-1:2005 Road vehicles—Open interface for embedded automotive applications—Part 1: General structure and terms, definitions and abbreviated terms
 ISO 17356-2:2005 Road vehicles—Open interface for embedded automotive applications—Part 2: OSEK/VDX specifications for binding OS, COM and NM
 ISO 17356-3:2005 Road vehicles—Open interface for embedded automotive applications—Part 3: OSEK/VDX Operating System (OS)
 ISO 17356-4:2005 Road vehicles—Open interface for embedded automotive applications—Part 4: OSEK/VDX Communication (COM)
 ISO 17356-5:2006 Road vehicles—Open interface for embedded automotive applications—Part 5: OSEK/VDX Network Management (NM)
 ISO 17356-6:2006 Road vehicles—Open interface for embedded automotive applications—Part 6: OSEK/VDX Implementation Language (OIL)

before ISO 
OSEK VDX Portal
 OSEK/VDX Operating system(OS) : "event-triggered" Real-time kernel
 OSEK/VDX Communication(COM) : Application level communication protocol
 OSEK/VDX Newark Management(NM) : Network management
 OSEK/VDX OSEK Implementation Language(OIL) : Offline application description and configuration language
 OSEK/VDX OSEK RTI(ORTI) : Debugging interface
 OSEK/VDX Binding Specification: Binding document	
 MODISTARC
 OSEK/VDX Conformance Testing Methodology	
 OSEK/VDX Operating System Test Plan	
 OSEK/VDX Operating System Test Procedure	 
 OSEK/VDX Communication Test Plan	
 OSEK/VDX Communication Test Procedure	
 OSEK/VDX Communication Test Suites
 OSEK/VDX Network Management Test Plan	
 OSEK/VDX Network Management Test Procedure	
 OSEK/VDX direct Network Management Test Suites	
 OSEK/VDX indirect Network Management Test Suites

OSEK Functioning 
The OSEK standard specifies interfaces to multitasking functions—generic I/O and peripheral access—and thus remains architecture dependent. OSEK is expected to run on microcontroller without memory management unit (MMU), which is favored for safety-critical systems such as cars, therefore features of an OSEK implementation will be usually configured at compile-time. The number of application tasks, stacks, mutexes, etc. is statically configured; it is not possible to create more at run time. OSEK recognizes two types of tasks/threads/compliance levels: basic tasks and enhanced tasks. Basic tasks never block; they "run to completion" (coroutine). Enhanced tasks can sleep and block on event objects. The events can be triggered by other tasks (basic and enhanced) or interrupt routines. Only static priorities are allowed for tasks. First In First Out (FIFO) scheduling is used for tasks with equal priority. Deadlocks and priority inversion are prevented by priority ceiling (i.e. no priority inheritance).

The specification uses ISO/ANSI-C-like syntax; however, the implementation language of the system services is not specified. An Application Binary Interface (ABI) is also not specified.

OSEK-OS scheduling can be configured as:

 Preemptive, a task can always be preempted by means of a higher priority task
 Non-preemptive, a task can only be preempted in prefixed compile-time points (cooperative scheduling)
 Mixed mode scheduling
 Groups of tasks (cooperative)

State of the art

AUTOSAR 
Currently the AUTOSAR consortium reuses the OSEK specifications as part of the Classic Platform.

The operating system is a backwards compatible superset of OSEK OS which also covers the functionality of OSEKtime, and the communication module is derived from OSEK COM. OSEKtime specifies a standard for optional time-triggered real-time operating systems. If used, OSEKtime triggered callbacks run with higher priority than OSEK tasks.

Research 
There is also a limited amount of active research, e. g. in the area of systems engineering and OSEK / VDX RTOS or in relation to the compatibility between OSEK and AUTOSAR.

Quality 
In a 48-page report from 2003 by the Software Engineering Institute (SEI) at Carnegie Mellon University (CMU), the specifications were examined and possible weaknesses in the areas of alarm and event mechanisms were identified with possible solutions. The potential of OSEK was also mentioned.

Implementations
Note: A limited number of implementations and vendors exist. Most products are only commercially sold and licensed, others are freely available with open-source license for a limited number of controllers. See also: Comparison of real-time operating systems.

Open-source derivates 
Note: Open-source developments are often very limited in scope (targets, conformance classes, characteristics) and are not verified against the specifications unless told otherwise.
 ArcCore AUTOSAR OS by Arctic Core (now part of Vector Informatik)
License: Dual GPL/commercial
 Firmware de la CIAA (former FreeOSEK), specifically Firmware v1 (hosted on GitHub)
OSEK by Chalandi Amine hosted on GitHub
 Lego Mindstorms implementations:
ev3OSEK (last release hosted on GitHub: May 2016)
nxtOSEK (last release hosted on SourceForge (nxtOSEK/JSP): January 2013)
 TOPPERS Project (Toyohashi OPen Platform for Embedded Real-time Systems)
Release: ATK1 (2008)
Release: ATK2 (2013)
Targets: m68k, sh1, sh2, sh3, h8, arm 4, m32r, MicroBlaze, tms320c54x, xstormy16, mips3, Nios II, v850, rh850
License: MIT or TOPPERS License 
 Trampoline by IRCCyN (Research Institute in Communications and Cybernetics of Nantes)
Targets: Infineon C166, PowerPC
License: LGPL

Defunct, not active, unknown status 

 mKernel for Microchip PIC18F4550 (Former https://sourceforge.net/projects/mkernel/ - not accessible or available as of October 2021)
 openOSEK (no files, hosted on SourceForge, last update: 2013)
 PicOS18 etc. - formerly available and hosted at picos18.com
 Trioztech OSEK was a commercial implementation

Further reading 

 Berkely EE249 on OSEK (Presentation in PDF formatting)
Christian Michel Sendis. OSEK/RTOS & OSEKturbo Introduction (PDF, March 2009, NXP Semiconductors)

See also
 AUTOSAR
COMASSO association (AUTOSAR BSW consortium)
Comparison of real-time operating systems
Controller Area Network (CAN)
Embedded system
 IEC 61508 is a standard for programmable electronic safety-related systems.
 ISO 26262 Road vehicle safety norm
 Safety standards

References

External links
 AUTOSAR Homepage
 Original OSEK-VDX 

Operating system APIs
Embedded operating systems
Automotive software
Standards of Germany