Linux is mainly used in industrial applications and embedded products,although it is not always competent enough to handle embedded systems that require definite implementation practices. As a result, many organizations usereal-time operating systems instead. RTOS applications have small footprints and are embedded for use in embedded systems or products like industrial robots and scientific research equipment. The Xenomial project is Linux/GNU ported and imitates traditional RTOS to achieve similar results.
The Xenomai Project’s History
The Xenomai project was begun in 2001 to imitate a traditional RTOS while facilitating porting to Linux/GNU. Though it is an independent project, it was originally related to the real-time application interface. The Xenomai project is a dual kernel scheme offered under GPL 2 in kernel space. It supports numerous architectures such as Blackfin, PowerPC, x86, ARM, and x86-64 among others.
Xenomai Project Architecture
As a dual-kernel project, the Xenomai real-time sub-system is reinforced with a Linux kernel as a real-time guarantee to its applications. This is a dual kernel approach whereby both kernels work in parallel without being aware of the other. However, they can communicate with each other through a virtual interrupt controller or I-pipe.
The two kernels are a Linux kernel for non-real time tasks and a Xenomai kernel for real-time tasks. The Xenomai kernel offers predicted results and is also referred to as the primary mode while the Linux kernel offers unpredicted results and is referred to as the secondary mode. Switching between the primary and the secondary modes happens automatically. The Xenomai project aims at facilitating migration of industrial applications from the proprietary world to a Linux/GNU-based environment while maintaining its real-time guarantees.
Additional elements of its Architecture include:
The interrupt pipeline: this is the software between the Linux and Xenomai hardware that acts like the virtual programmable interrupt controller. Abbreviated as I-pipe, it is the software layer that holds policies meant for handling and masking interrupts that connect the Xenomai and Linux domains.
Hardware abstraction layer (HAL):Xenomai relies on its hardware abstraction layer to port it to specific processor architecture.
Xenomai core and nucleus: The Xenomai core supplies operating system services to skins mimicking the traditional RTOS APIs. The core gives developers predictable latencies. The Xenomai core building blocks are gathered to form a single, loadable module referred to as the Xenomai nucleus.
Xenomai skins: Skins supported by Xenomai include VxWorks, POSIX, VRTX, pSOS+, Native API, uITRON, RTAI 3.x and real-time driver model (RTDM).
Real-time Driver Model
Developing a real-time driver model for a dual kernel architecture can be tasking without a common framework. The real-time driver model skin offers the required common framework to facilitate easy real-time driver porting. There are two main RTDMs, the protocol driver and named device. The protocol driver connects to a specified socket interface, making it ideal for managing message-oriented communications with real-time devices. A named device acts like the character driver in the Linux device driver.
The Xenomai project focuses strongly on embedded systems and runs on both desktop and server architectures. It can be helpful when developing, designing and operating a real-time application on Linux, transferring an application from a proprietary RTOS to Linux, and running real-time applications optimally alongside required Linux applications.