RTOS: OSE
This article introduces the Real-Time Operating System OSE (Operating System Embedded) and OSEck (OSE Compact Kernel).
OSE
Enea OSE is a high-performance, POSIX compatible, multicore real-time operating system maximizing your hardware utilization. It is compact and robust, and powers embedded systems in wide-range of vertical markets from telecom to automotive to industrial automation and beyond.
OSE uses events (named signals due to ENEA’s telecom background) in the form of messages passed to and from processes in the system. Messages are stored in a queue attached to each process. A link handler mechanism allows signals to be passed between processes on separate machines, over a variety of transports. The OSE signalling mechanism formed the basis of an open-source inter-process kernel design project called LINX.
OSE Architecture
OSE Supported Processors
Enea OSE is available for ARM and Power architectures. The following processor families are supported:
- ARM Cortex-A series
- ARM Cortex-R series
- ARM Cortex MPCore
- ARM11
- ARM9E
- LSI Axxia (multicore support on PPC476FP)
- INTEL ARM5 XScale
- IBM PPC4xx
- IBM PPC7xx
- Freescale QorIQ P50xx series
- Freescale QorIQ P40xx series
- Freescale QorIQ P20xx series
- Freescale QorIQ P10xx series
- Freescale QorIQ T4240
- Freescale QorIQ Qonverge B4860
- Freescale MPC86xx (multicore support on MPC8641D)
- Freescale MPC86xx (multicore support on MPC8641D)
- Freescale MPC85xx (multicore support on MPC8572DS)
- Freescale MPC83xx
- Freescale MPC82xx
- Freescale MPC74xx
- Netlogic Microsystems; XLP, XLR and XLS
- TI OMAP-L137/138
OSEck
Enea OSEck (OSE Compact Kernel) is a DSP-optimized version of the Enea OSE RTOS, suitable for high performance, memory constrained applications.
Built on a compact kernel with an extremely small memory footprint, OSEck brings rich functionality, high performance, and true real-time behavior for single and multicore devices.
OSEck Architecture
OSEck Supported Processors
Texas Instruments
-
Texas Instruments KeyStone II including:
- TCI663x (e.g. TCI6636/38)
- 66AK2Hx
-
Texas Instruments C6000 and C5000 families including:
- TMS320C66x (e.g. C6670/78)
- TMS320C64x+ (e.g. C6455/72/74/82/84/86/87/88)
- TMS320C67x
- TMS320C55x
- TMS320C54x
- TI OMAP-L137/8
Freescale
- B4-series (e.g. B4860/4420)
- MSC815x (e.g. MSC8156/57)
- MSC8144
- MSC812x
- MSC810x
- MPC5554
- MPC555
- MPC565
LSI Logic
- SP27xx
- SP26xx
- DSP 16K
- ZSP500
- ZSP400 and DSP cores
CEVA
- CEVA-XC323
- CEVA-X16xx
- CEVA-TeakLite-III
Analog Devices
- TigerSHARC TS201S
- TS101S
LINX
LINX is a new generation of the OSE Link Handler for Inter-process communications (IPC) that provides high performance and robust functionality developed by ENEA AB in Sweden. LINX was released as free and open-source software, subject to the requirements of the GNU General Public License (GPL), version 2.
LINX was ported later on Linux, works with same success on both OSE and Linux kernels. It’s possible to interconnect a Linux machine with an OSE one and have a direct communication path between processes that run under different kernels.
Utilizing direct message passing, LINX scales from DSPs and microcontrollers to 64-bit CPUs. LINX is independent of the underlying processor, operating system, or interconnect, supports control and data plane applications over reliable and unreliable media.
LINX also supports any distributed system topology, from a single processor on a single blade, to large networks with complex cluster topologies deployed on hundreds of processors in a multi-rack system.
LINX enable application processes distributed across multiple operating systems, CPUs, and interconnects to communicate, as if they were running on the same CPU under the same operating system. LINX provides the same services to the application regardless of hardware, operating system, physical interconnect, and network topology.
LINX utilizes an innovative address map for connections that greatly enhances flexibility and scalability. Unlike other IPC models, which must maintain the entire system address map on every node in the system, LINX nodes store only the addresses needed for active connections.