![]() | This article has multiple issues. Please helpimprove it or discuss these issues on thetalk page.(Learn how and when to remove these messages) (Learn how and when to remove this message)
|
![]() OpenComRTOS application view | |
Developer | Altreonic NV |
---|---|
Written in | ANSI C |
OS family | Distributedmicrokernel |
Working state | Current |
Source model | Source-available, license |
Initial release | 2008; 17 years ago (2008) |
Latest release | 1.6 / August 2014; 10 years ago (2014-08) |
Marketing target | Embedded systems |
Available in | English |
Package manager | OpenComRTOS suite msi file |
Platforms | FreescalePowerPC,Texas Instruments C66xxxDSP,ARM,XMOS,MicroBlaze,LEON,NXP CoolFluxDSP,Melexis MLX16,Win32,Linux |
Kernel type | network-centric real-timemessage passingmicrokernel |
Default user interface | Development environment on host machine |
License | Binary, source, open technology |
Preceded by | Virtuoso |
Succeeded by | VirtuosoNext |
Official website | www |
OpenComRTOS is a commercial network-centric, formally developedreal-time operating system (RTOS), aimed mainly at theembedded system market.
OpenComRTOS was developed usingformal methods. It has features like the ability to support heterogeneous multi-processor systems transparently, independent of the processorword size (16-bit,24-bit,32-bit,64-bit), and the communication medium (shared memory, buses, point-to-point links or virtual links on extant communication mechanisms). Typical code size on a 32-bit target processor is about 5 KiBytes.
OpenComRTOS is based on the meta-modelling paradigm ofInteracting Entities. In the RTOS, the unit of execution is aTask (a function with its local workspace or stack). Task entities synchronise and communicate using intermediateHubs entities that are decoupled from the interacting Tasks. Hubs are formally modelled asGuarded Actions. The current implementation provides the functions of traditional RTOS services likeevents, semaphores, ports, first in first out (FIFO) stacks, resources, packet pools, and memory pools. The user can also create custom Hub types.
OpenComRTOS uses a uniform architecture with akernel Task, driver Tasks, and application Tasks, each having a Task input Port. The same interface is used for the Interrupt Service Routines. The underlying architecture relies on the use of prioritisedpacket switching with communication and routing being part of the underlying system services. One of the results is that the source code of the Tasks is independent of the mapping of Tasks and Hubs to the processing nodes in the target system.
The initial purpose for developing OpenComRTOS was to provide a software runtime environment supporting a coherent and unified systems engineering methodology based onInteracting Entities. This was originally developed by the Open License Society[1] since 2005, and since 2008 further developed and commercialised by Altreonic.[2] A formerly developed RTOS named Virtuoso[3][4][5][6][7] served as a guideline. Virtuoso is a distributed RTOS, developed by Eonic Systems until the technology was sold to Wind River Systems in 2001. Its overall functionality of transparent parallel processing (called theVirtual Single Processor runtime model) was a major driving force to redevelop it in a better way.[8][9] OpenComRTOS is conceptually a fourth generation of Virtuoso although it was a clean room development. The Virtuoso RTOS had its origin in the pioneeringInmosTransputer, a partial hardware implementation ofC.A.R. Hoare'scommunicating sequential processes (CSP) process algebra.Most challenging applications:[citation needed]
For the development of OpenComRTOS a systematic but iterative engineering process was followed. Requirements and specifications being defined, models were developed inLeslie Lamport'stemporal logic of actions (TLA+) and thenmodel checked with the corresponding TLC model checker. Based on these models, the code was written and then a third person created new models in TLA+ to verify that the implementation was still isomorphic. The timer and associated time-out functionality for services were model checked using theUppaal Model Checker. In 2011 Springer published the book on the OpenComRTOS project.[10]
OpenComRTOS comes with many tools.Visual Designer is a visual modelling environment whereby the user specifies node topology and application topology graphically. From these diagrams, an application specific runtime model is generated. Application specific code is provided in ANSI C for each task. Runtime execution, and interprocessor interactions, are visualised using theEvent Tracer. ASystem Inspector allows reading out and modifying the data structures.Further modules are hostserver modules (these allow any task access to the host node services) and aSafe Virtual Machine for C. The latter requires about 3 KiBytes (10 KiBytes for program and data) and allows dynamically downloading binary-compiled C code at runtime.
OpenComRTOS was developed for embedded systems and is written in portableANSI C, except the context switch and ISR interfaces.OpenComRTOS has been ported to the following targets:Freescale PowerPC, Texas Instruments C66xx DSP,Melexis [fr] MLX16, ARM Cortex M3/4, Xilinx MicroBlaze, LEON3, NXP CoolFlux DSP and to MS-Windows and Linux. The latter versions allow transparent integration of host nodes and serve as well cross development and simulation systems. As the RTOS kernel is identical for single or multi-processor nodes, supporting a multi-processor system requires only to write a small task level driver that can send and receives Packets.
OpenComRTOS is made available in binary, source code and Open Technology licenses. The latter provides formal models, design documents, source code and test suites.