ThreadX

Last updated
Azure RTOS ThreadX
Windows Azure logo.png
Developer Express Logic (original)
Microsoft
Written in C
Working stateCurrent
Source model Source-available software
Initial release1997;24 years ago (1997)
Latest release 6.1.6_rel [1] / April 3, 2021;7 months ago (2021-04-03)
Repository github.com/azure-rtos/threadx/
Marketing target Embedded systems, IoT: including sensors, devices, edge routers, gateways
Update methodRe-install
Package manager None
Platforms ARC, ARM, Blackfin, CEVA, C6x, MIPS, NXP, PIC, PowerPC, RISC-V, RX, SH, SHARC, TI, V850, Xtensa, x86, Coldfire, others
Kernel type Embedded, deterministic, real-time microkernel, picokernel
Default
user interface
Embedded UI support (GUIX)
License Proprietary
Official website azure.microsoft.com/en-us/services/rtos

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

Contents

Overview

ThreadX was originally developed and marketed by Express Logic of San Diego, California, United States. The author of ThreadX (and the original author of the Nucleus RTOS in 1990) is William Lamie, [2] who was also President and CEO of Express Logic.

Express Logic was purchased for an undisclosed sum by Microsoft on April 18, 2019. [3]

The name ThreadX is derived from the threads that are used as the executable elements, and the letter X represents context switching, i.e., it switches threads. ThreadX provides priority-based, preemptive scheduling, fast interrupt response, memory management, interthread communication, mutual exclusion, event notification, and thread synchronization features. Major distinguishing technology characteristics of ThreadX include preemption-threshold, priority inheritance, efficient timer management, fast software timers, picokernel design, event-chaining, and small size: minimal size on an ARM architecture processor is about 2 KB.

ThreadX supports multi-core processor environments via either asymmetric multiprocessing (AMP) or symmetric multiprocessing (SMP). Application thread isolation with memory management unit (MMU) or memory protection unit (MPU) memory protection is available with ThreadX Modules.

ThreadX has extensive safety certifications from Technischer Überwachungsverein (TÜV, English: Technical Inspection Association) and UL (formerly Underwriters Laboratories) and is Motor Industry Software Reliability Association MISRA C compliant.

ThreadX is the foundation of Express Logic's X-Ware Internet of things (IoT) platform, which also includes embedded file system support (FileX), embedded UI support (GUIX), embedded Internet protocol suite (TCP/IP) and cloud connectivity (NetX/NetX Duo), and Universal Serial Bus (USB) support (USBX). ThreadX has won high appraisal from developers and is a very popular RTOS. [4] As of 2017, according to marketing research firm VDC Research, the ThreadX RTOS has become one of the most popular RTOSes in the world, having been deployed in over 6.2 billion devices, including consumer electronics, medical devices, data networking applications, and SoCs. [5]

ThreadX is distributed using a marketing model in which source code is provided and licenses are royalty-free.

Supported platforms

History

ThreadX was first introduced in 1997. ThreadX 4 was introduced in 2001. ThreadX 5 was introduced in 2005, and is the latest version as of 2020.

FileX – the embedded file system for ThreadX was introduced in 1999.

NetX – the embedded TCP/IP networking stack for ThreadX was introduced in 2002.

USBX – the embedded USB support for ThreadX was introduced in 2004.

ThreadX SMP for SMP multi-core environments was introduced in 2009.

ThreadX Modules was introduced in 2011.

ThreadX achieved safety certifications for: TÜV IEC 61508 in 2013, and UL 60730 in 2014.

GUIX – the embedded UI for ThreadX was introduced in 2014.

Express Logic was purchased for an undisclosed sum by Microsoft on April 18, 2019. [3]

Technology

ThreadX implements a priority-based, preemptive scheduling algorithm with a proprietary feature called preemption-threshold. The latter has been shown to provide greater granularity within critical sections, reduce context switches, and has been the subject of academic research on guaranteeing scheduling. [6]

ThreadX provides a unique construct called event chaining, [7] where the application can register a callback function on all application programming interfaces (APIs) that can signal an external event. This helps applications chain together various public objects in ThreadX such that one thread can effectively block on multiple objects.

ThreadX also provides counting semaphores, mutexes with optional priority inheritance, event flags, message queues, software timers, fixed sized block memory, and variable sized block memory. All APIs in ThreadX that block on resources also have an optional timeout.

ThreadX offers multi-core processor support via either AMP or SMP. Application code isolation is available through ThreadX Modules component.

Major components

ThreadX RTOS components include:

  1. Embedded file system
  2. Embedded graphical user interface
  3. Embedded networking
  4. Embedded USB
  5. Safety certification
  6. Packaging

Embedded file system

FileX is the embedded file system for ThreadX. FileX supports FAT12, 16, 32, and exFAT formats. The latter extends FAT file sizes beyond 4 GB, which is especially useful for video files, and it requires license directly from Microsoft for use. FileX also offers fault tolerance and supports direct NOR and NAND flash memory media through a flash wear leveling product called LevelX.

Embedded graphical user interface

GUIX is the embedded graphical user interface (GUI) for ThreadX. GUIX provides a 2D runtime system (environment) for embedded applications running ThreadX. GUIX supports multiple display devices with a variety of screen resolutions and color depths. Many predefined graphical widgets are available. A Windows WYSIWYG host tool called GUIX Studio automatically generates C code for GUIX to execute at runtime.

Embedded networking

NetX Duo is the embedded TCP/IP system for ThreadX. NetX Duo supports both IPv4 and IPv6 networking along with protocols such as ARP, Auto IP, DHCP, DNS, DNS-SD, FTP, HTTP, ICMP, IGMP, mDNS, POP3, PPP, PPPoE, RARP, TFTP, SNTP, SMTP, SNMP, and TELNET. IP layer network security is provided by IPsec. TCP and UDP socket layer security is provided by TLS and DTLS, respectively. IoT Cloud protocol support includes CoAP, MQTT, and LWM2M. NetX Duo also supports Thread and 6LoWPAN. In 2017, ThreadX and NetX Duo became a Thread Certified Product. [8]

Embedded USB

USBX is the embedded Universal Serial Bus (USB) system for ThreadX. USBX supports both host and device. Host controller support includes EHCI, OHCI, and proprietary USB host controllers. USBX also supports OTG. USBX class support includes Audio, Asix, CDC/ACM, CDC/ECM, DFU, GSER, HID, PIMA, Printer, Prolific, RNDIS, and Storage.

Safety certification

ThreadX (and FileX and NetX Duo) have been precertified by SGS-TÜV Saar to the following safety standards: IEC 61508 SIL 4, IEC 62304 Class C, ISO 26262 ASIL D, and EN 50128 SW-SIL 4.

ThreadX (and FileX and NetX Duo) have been precertified by UL to the following safety standards: UL/IEC 60730, UL/IEC 60335, UL 1998

ThreadX has also been certified to DO-178 standards by various military and aerospace companies. It is supported by popular Transport Layer Security (SSL/TLS) libraries such as wolfSSL. [9]

Packaging

As of 2017, ThreadX is packaged as part of X-Ware IoT Platform in full source code and with no runtime royalty payment.

Products using it

Some high-profile products using ThreadX range from small wearable devices, to Hewlett-Packard printers, and even NASA’s Deep Impact space probe. [10]

The Raspberry Pi line of single-board computers runs ThreadX as a binary blob on the graphics processing unit (GPU). This controls initial booting, which in turn is used to boot secondary operating systems such as Linux, and continues to operate in a more privileged role even after the boot process. [11]

See also

Related Research Articles

MIPS Technologies American fabless semiconductor design company

MIPS Technologies, Inc., formerly MIPS Computer Systems, Inc., was an American fabless semiconductor design company that is most widely known for developing the MIPS architecture and a series of RISC CPU chips based on it. MIPS provides processor architectures and cores for digital home, networking, embedded, Internet of things and mobile applications.

OS-9 is a family of real-time, process-based, multitasking, multi-user operating systems, developed in the 1980s, originally by Microware Systems Corporation for the Motorola 6809 microprocessor. It was purchased by Radisys Corp in 2001, and was purchased again in 2013 by its current owner Microware LP.

QNX

QNX is a commercial Unix-like real-time operating system, aimed primarily at the embedded systems market. QNX was one of the first commercially successful microkernel operating systems. As of 2020, it is used in a variety of devices including cars and mobile phones.

pSOS is a real-time operating system (RTOS), created in about 1982 by Alfred Chao, and developed and marketed for the first part of its life by his company Software Components Group (SCG). In the 1980s, pSOS rapidly became the RTOS of choice for all embedded systems based on the Motorola 68000 series family architecture, because it was written in 68000 assembly language and was highly optimised from the start. It was also modularised, with early support for OS-aware debugging, plug-in device drivers, Internet protocol suite (TCP/IP) stacks, language libraries, and disk subsystems. Later came source code level debugging, multiprocessing support, and further computer networking extensions.

VxWorks

VxWorks is a real-time operating system (RTOS) developed as proprietary software by Wind River Systems, a wholly owned subsidiary of TPG Capital, US. 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 and defense, medical devices, industrial equipment, robotics, energy, transportation, network infrastructure, automotive, and consumer electronics.

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.

FreeRTOS

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

Segger Microcontroller, founded in 1992, is a private company active in the industry of embedded systems. It provides products used to develop and manufacture embedded systems, in 4 categories: real-time operating systems (RTOS) and software libraries (middleware), debugging and trace probes, programming tools and in-system programmers. The company is headquartered in Monheim am Rhein, Germany with offices in the United States in Gardner, Massachusetts and Milpitas, California, and in China in Shanghai.

TI-RTOS is an embedded tools ecosystem created and offered by Texas Instruments (TI) for use in a wide range of their embedded system processors. It includes a real-time operating system (RTOS) component named TI-RTOS Kernel along with added components that support device drivers, networking connectivity stacks, power management, file systems, instrumentation, and inter-processor communications like DSP/BIOS Link.

ChibiOS/RT

ChibiOS/RT is a compact and fast real-time operating system supporting multiple architectures and released under a mix of the GNU General Public License version 3 (GPL3) and the Apache License 2.0. It is developed by Giovanni Di Sirio.

MQX is a real-time operating system (RTOS) developed by Precise Software Technologies, Inc., and currently sold by Synopsys, Embedded Access, Inc., and NXP Semiconductors.

Huawei LiteOS is a lightweight real-time operating system (RTOS) developed by Huawei. It is an open source, POSIX compliant operating system for Internet of things (IoT) devices, released under a three-clause BSD license. Microcontrollers of different architectures such as ARM, x86, and RISC-V are supported by the project. Huawei LiteOS is part of Huawei's '1+8+N' Internet of Things solution, and has been featured in a number of open source development kits and industry offerings.

NuttX is a real-time operating system (RTOS) with an emphasis on technical standards compliance and small size. Scalable from 8-bit to 64-bit microcontroller environments, the main governing standards in NuttX are from the Portable Operating System Interface (POSIX) and the American National Standards Institute (ANSI). Further standard application programming interfaces (APIs) from Unix and other common RTOSes are adopted for functions unavailable under these standards, or inappropriate for deeply embedded environments, such as the fork system call.

OVPsim is a multiprocessor platform emulator used to run unchanged production binaries of the target hardware. It has public APIs allowing users to create their own processor, peripheral and platform models. Various models are available as open source. OVPsim is a key component of the Open Virtual Platforms initiative (OVP), an organization created to promote the use of open virtual platforms for embedded software development. OVPSim requires OVP registration to download.

Imagination Creator

Creator is a family of single-board computers developed by Imagination Technologies to promote educational research and software development based on the MIPS architecture. The first board in the platform, the Creator Ci20, was released in August 2014. A second development kit called Creator Ci40 was introduced through a Kickstarter campaign in November 2015.

Apache Mynewt

Apache Mynewt is a modular real-time operating system for connected Internet of things (IoT) devices that must operate for long times under power, memory, and storage constraints. It is free and open-source software incubating under the Apache Software Foundation, with source code distributed under the Apache License 2.0, a permissive license that is conducive to commercial adoption of open-source software.

Since 1985, many processors implementing some version of the MIPS architecture have been designed and used widely.

PSA Certified

PSA Certified is a security certification scheme for Internet of Things (IoT) hardware, software and devices. It was created by seven stakeholder companies as part of a global partnership. The security scheme was created by Arm Holdings, Brightsight, CAICT, Prove & Run, Riscure, TrustCB and UL.

References

  1. https://github.com/azure-rtos/threadx/tags
  2. Cole, Bernard; McConnel, Toni (September 3, 2010). "Bill Lamie: Story of a man and his real-time operating systems". Embedded. AspenCore.
  3. 1 2 Janakiram, MSV (April 21, 2019). "How Does The Express Logic Acquisition Help Microsoft and the IoT Ecosystem". Forbes.
  4. Carbone, John. "High Performance RTOS "ThreadX": Express Logic: Enabling Shorter Time to Market and Reduced Development Cost". Renesas.
  5. "IoT & Embedded Operating Systems". VDC Research. Retrieved 2018-07-31.
  6. Wang, Yun; Saksena, Manas. "Scheduling Fixed-Priority Tasks with Preemption Threshold" (PDF). Department of Computer Science. University of Utah.
  7. "Event Chaining Enables Real-Time Systems to Respond to Multiple Real-Time Events More Efficient" (PDF). Express Logic.
  8. "Thread Certified Products". Thread Group.
  9. "wolfSSL with Improved ThreadX/NetX Support". wolfSSL. 2018-01-16. Retrieved 2019-02-13.
  10. "NASA's "Deep Impact" employs embedded systems to score bullseye 80 million miles away". Military Embedded Systems.
  11. "What's Wrong with the Raspberry Pi". Own Your Bits.