OpenComRTOS

Last updated

OpenComRTOS
OpenComRTOS 1.jpg
OpenComRTOS application view
Developer Altreonic NV
Written in ANSI C
OS family Distributed microkernel
Working stateCurrent
Source modelSource-available, license
Initial release2008;16 years ago (2008)
Latest release 1.6 / August 2014;9 years ago (2014-08)
Marketing target Embedded systems
Available in English
Package manager OpenComRTOS suite msi file
Platforms Freescale PowerPC, Texas Instruments C66xxx DSP, ARM, XMOS, MicroBlaze, LEON, NXP CoolFlux DSP, Melexis MLX16, Win32, Linux
Kernel typenetwork-centric real-time message passing microkernel
Default
user interface
Development environment on host machine
License Binary, source, open technology
Preceded byVirtuoso
Succeeded byVirtuosoNext
Official website www.altreonic.com

OpenComRTOS is a commercial network-centric, formally developed real-time operating system (RTOS), aimed mainly at the embedded system market.

Contents

Overview

OpenComRTOS was developed using formal methods. It has features like the ability to support heterogeneous multi-processor systems transparently, independent of the processor word 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 of Interacting Entities. In the RTOS, the unit of execution is a Task (a function with its local workspace or stack). Task entities synchronise and communicate using intermediate Hubs entities that are decoupled from the interacting Tasks. Hubs are formally modelled as Guarded Actions. The current implementation provides the functions of traditional RTOS services like events, 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 a kernel 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 prioritised packet 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.

History

The initial purpose for developing OpenComRTOS was to provide a software runtime environment supporting a coherent and unified systems engineering methodology based on Interacting 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 the Virtual 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 pioneering Inmos Transputer, a partial hardware implementation of C.A.R. Hoare's communicating sequential processes (CSP) process algebra. Most challenging applications:[ citation needed ]

  1. Oil exploration system with 12,000 processors featuring microcontrollers, fixed point and floating point DSPs and a Linux host in a single network.
  2. Sonar system with 1,600 floating point DSPs.
  3. Rosetta and Giotto ESA space missions.
  4. Converting a 400,000 lines application running on a Portable Operating System Interface (POSIX) style RTOS to OpenComRTOS.

Formal development approach

For the development of OpenComRTOS a systematic but iterative engineering process was followed. Requirements and specifications being defined, models were developed in Leslie Lamport's temporal logic of actions (TLA+) and then model 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 the Uppaal Model Checker. In 2011 Springer published the book on the OpenComRTOS project. [10]

OpenComRTOS Designer: development environment and tools

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 the Event Tracer. A System 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 a Safe 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.

Portability

OpenComRTOS was developed for embedded systems and is written in portable ANSI 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.

See also

Related Research Articles

<span class="mw-page-title-main">Java virtual machine</span> Virtual machine that runs Java programs

A Java virtual machine (JVM) is a virtual machine that enables a computer to run Java programs as well as programs written in other languages that are also compiled to Java bytecode. The JVM is detailed by a specification that formally describes what is required in a JVM implementation. Having a specification ensures interoperability of Java programs across different implementations so that program authors using the Java Development Kit (JDK) need not worry about idiosyncrasies of the underlying hardware platform.

<span class="mw-page-title-main">Embedded system</span> Computer system with a dedicated function

An embedded system is a computer system—a combination of a computer processor, computer memory, and input/output peripheral devices—that has a dedicated function within a larger mechanical or electronic system. It is embedded as part of a complete device often including electrical or electronic hardware and mechanical parts. Because an embedded system typically controls physical operations of the machine that it is embedded within, it often has real-time computing constraints. Embedded systems control many devices in common use. In 2009, it was estimated that ninety-eight percent of all microprocessors manufactured were used in embedded systems.

SuperH is a 32-bit reduced instruction set computing (RISC) instruction set architecture (ISA) developed by Hitachi and currently produced by Renesas. It is implemented by microcontrollers and microprocessors for embedded systems.

<span class="mw-page-title-main">VxWorks</span> Real-time operating system

VxWorks is a real-time operating system developed as proprietary software by Wind River Systems, a subsidiary of Aptiv. First released in 1987, VxWorks is designed for use in embedded systems requiring real-time, deterministic performance and, in many cases, safety and security certification for industries such as aerospace, defense, medical devices, industrial equipment, robotics, energy, transportation, network infrastructure, automotive, and consumer electronics.

<span class="mw-page-title-main">XNU</span> Computer operating system kernel

XNU is the computer operating system (OS) kernel developed at Apple Inc. since December 1996 for use in the Mac OS X operating system and released as free and open-source software as part of the Darwin OS, which in addition to macOS is also the basis for the Apple TV Software, iOS, iPadOS, watchOS, visionOS, and tvOS OSes.

Nucleus RTOS is a real-time operating system (RTOS) produced by the Embedded Software Division of Mentor Graphics, a Siemens Business, supporting 32- and 64-bit embedded system platforms. The operating system (OS) is designed for real-time embedded systems for medical, industrial, consumer, aerospace, and Internet of things (IoT) uses. Nucleus was released first in 1993. The latest version is 3.x, and includes features such as power management, process model, 64-bit support, safety certification, and support for heterogeneous computing multi-core system on a chip (SOCs) processors.

<span class="mw-page-title-main">Blackfin</span> Family of 16-/32-bit microprocessors

The Blackfin is a family of 16-/32-bit microprocessors developed, manufactured and marketed by Analog Devices. The processors have built-in, fixed-point digital signal processor (DSP) functionality performed by 16-bit multiply–accumulates (MACs), accompanied on-chip by a microcontroller. It was designed for a unified low-power processor architecture that can run operating systems while simultaneously handling complex numeric tasks such as real-time H.264 video encoding.

<span class="mw-page-title-main">RapidIO</span> High-speed interconnect technology

The RapidIO architecture is a high-performance packet-switched electrical connection technology. It supports messaging, read/write and cache coherency semantics. Based on industry-standard electrical specifications such as those for Ethernet, RapidIO can be used as a chip-to-chip, board-to-board, and chassis-to-chassis interconnect.

In computer programming, a runtime system or runtime environment is a sub-system that exists both in the computer where a program is created, as well as in the computers where the program is intended to be run. The name comes from the compile time and runtime division from compiled languages, which similarly distinguishes the computer processes involved in the creation of a program (compilation) and its execution in the target machine.

<span class="mw-page-title-main">FreeRTOS</span> Real-time operating system

FreeRTOS is a real-time operating system kernel for embedded devices that has been ported to 35 microcontroller platforms. It is distributed under the MIT License.

Eclipse ThreadX is a highly deterministic, embedded real-time operating system (RTOS) programmed mostly in the language C.

TI-RTOS is an embedded tools ecosystem created and offered by Texas Instruments (TI) for use across a range of their embedded system processors. It includes a real-time operating system (RTOS) component named TI-RTOS Kernel, networking connectivity stacks, power management, file systems, instrumentation, and inter-processor communications like DSP/BIOS Link. It is free and open-source software, released under a BSD license.

Dalvik is a discontinued process virtual machine (VM) in the Android operating system that executes applications written for Android. Dalvik was an integral part of the Android software stack in the Android versions 4.4 "KitKat" and earlier, which were commonly used on mobile devices such as mobile phones and tablet computers, and more in some devices such as smart TVs and wearables. Dalvik is open-source software, originally written by Dan Bornstein, who named it after the fishing village of Dalvík in Eyjafjörður, Iceland.

The Multicore Association was founded in 2005. Multicore Association is a member-funded, non-profit, industry consortium focused on the creation of open standard APIs, specifications, and guidelines that allow system developers and programmers to more readily adopt multicore technology into their applications.

Nano-RK is a wireless sensor networking real-time operating system (RTOS) from Carnegie Mellon University, designed to run on microcontrollers for use in sensor networks. Nano-RK supports a fixed-priority fully preemptive scheduler with fine-grained timing primitives to support real-time task sets. "Nano" implies that the RTOS is small, using 2 KB of random-access memory (RAM) and using 18 KB of flash memory, while RK is short for resource kernel. A resource kernel provides reservations on how often system resources can be used. For example, a task might only be allowed to execute 10 ms every 150 ms, or a node might only be allowed to transmit 10 network packets per minute. These reservations form a virtual energy budget to ensure a node meets its designed battery lifetime and to prevent a failed node from generating excessive network traffic. Nano-RK is open-source software, is written in C and runs on the Atmel-based FireFly sensor networking platform, the MicaZ motes, and the MSP430 processor.

CubeSat Space Protocol (CSP) is a small network-layer delivery protocol designed for CubeSats. The idea was developed by a group of students from Aalborg University in 2008, and further developed for the AAUSAT3 CubeSat mission that was launched in 2013. The protocol is based on a 32-bit header containing both network and transport layer information. Its implementation is designed for embedded systems such as the 8-bit AVR microprocessor and the 32-bit ARM and AVR from Atmel. The implementation is written in C and is ported to run on FreeRTOS and POSIX and pthreads-based operating systems such as Linux. The three-letter acronym CSP was adopted as an abbreviation for CAN Space Protocol because the first MAC-layer driver was written for CAN-bus. The physical layer has since been extended to include several other technologies, and the name was therefore extended to the more general CubeSat Space Protocol without changing the abbreviation.

DDC-I, Inc. is a privately held company providing software development of real-time operating systems, software development tools, and software services for safety-critical embedded applications, headquartered in Phoenix, Arizona. It was first created in 1985 as the Danish firm DDC International A/S, a commercial outgrowth of Dansk Datamatik Center, a Danish software research and development organization of the 1980s. The American subsidiary was created in 1986. For many years, the firm specialized in language compilers for the programming language Ada.

OpenTag is a DASH7 protocol stack and minimal Real-Time Operating System (RTOS), written in the C programming language. It is designed to run on microcontrollers or radio Systems on a Chip (SoC). OpenTag was engineered to be a very compact software package. However, with proper configuration, it can also run in any POSIX environment. OpenTag can also provide all functionality required for any type of DASH7 Mode 2 device, rather than just the eponymous “tag”-type endpoint device.

<span class="mw-page-title-main">Zephyr (operating system)</span> Real-time operating system

Zephyr is a small real-time operating system (RTOS) for connected, resource-constrained and embedded devices supporting multiple architectures and released under the Apache License 2.0. Zephyr includes a kernel, and all components and libraries, device drivers, protocol stacks, file systems, and firmware updates, needed to develop full application software.

References

  1. "Open License Society".
  2. "www.altreonic.com | From Deep Space to Deep Sea". www.altreonic.com. Retrieved 29 April 2023.
  3. Verhulst, Eric (2003). "Beyond the von Neumann machine: communication as the driving design paradigm for MP-SOC from software to hardware". In Jantsch, Axel; Tenhunen, Hannu (eds.). Networks on chip. Hingham, Massachusetts, United States: Kluwer Academic Publishers. pp. 217–238. doi:10.1007/b105353. ISBN   978-1-4020-7392-2. S2CID   19233943.
  4. E. Verhulst. "Virtuoso: providing sub-microsecond context switching on dsps with a dedicated nanokernel". International conference on signal processing applications and technology, Santa Clara, September 1993.
  5. E. Verhulst. "Beyond transputing: fully distributed semantics in Virtuoso’s Virtual Single Processor programming model and its implementation on of-the-shelf parallel DSPs". In Proceedings of WoTUG-20: Parallel Programming and Java, 1997, pages 77–86.
  6. E. Verhulst. "Non-sequential processing: bridging the semantic gap left by the von Neumann architecture". In Signal Processing Systems SIPS’97, pages 35–49.
  7. E. Verhulst. "The rationale for distributed semantics as a topology independent embedded systems design methodology and its implementation in the Virtuoso RTOS". Design Automation for Embedded Systems, 2002, 6:277–294. doi : 10.1023/A:1014018820691.
  8. E. Verhulst, G. de Jong. "OpenComRTOS: an ultra-small network centric embedded RTOS designed using formal modeling". In Proceedings of the 13th international SDL Forum conference on Design for dependable systems, SDL’07, pages 258–271, Berlin, Heidelberg. Springer-Verlag.
  9. Eric Verhulst, Gjalt de Jong, Vitaliy Mezhuyev. "An industrial case: Pitfalls and benefits of applying formal methods to the development of a network-centric RTOS". In Cuellar, J., Maibaum, T., and Sere, K., editors, FM 2008: Formal Methods, volume 5014 of Lecture Notes in Computer Science, pages 411–418. Springer: Berlin, Heidelberg.
  10. Formal Development of a Network-Centric RTOS: Software Engineering for Reliable Embedded Systems by Eric Verhulst, Raymond T. Boute, José Miguel Sampaio Faria and Bernhard H.C. Sputh ( ISBN   978-1-4419-9735-7) 1st Edition., 2011, XVII, 219 p. 54 illus