ThreadX

Last updated
Eclipse ThreadX
Developer Express Logic (original)
Microsoft (former)
Eclipse (current)
Written in C
Working stateCurrent
Source model Open source
Initial release1997;28 years ago (1997)
Latest release 6.4.1 [1] / February 28, 2024;10 months ago (2024-02-28)
Repository github.com/eclipse-threadx/threadx/
Marketing target Embedded systems, IoT
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 MIT License (as of 2023)
Official website threadx.io

ThreadX is a deterministic,[ clarification needed ] embedded real-time operating system (RTOS) programmed mostly in the language C. It was originally released in 1997 as ThreadX when Express Logic first developed it, later it was renamed to Azure RTOS (2019) after Express Logic was purchased by Microsoft, [2] then most recently it was renamed again to Eclipse ThreadX (2023), or "ThreadX" in its short form, after it transitioned to free open source model under the stewardship of the Eclipse Foundation. [3]

Contents

History

In 1997, ThreadX was first released and marketed by Express Logic of San Diego, California, United States. It was developed by William Lamie, [4] who was also the original author of Nucleus and PX5 RTOS, and was President and CEO of Express Logic. ThreadX version 4 was introduced in 2001, version 5 was introduced in 2005, then version 6 was introduced in 2020 (latest major version). 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.

On April 18, 2019, Microsoft purchased Express Logic for an undisclosed sum and it was renamed to Azure RTOS. [2]

On November 21, 2023, Microsoft announced Azure RTOS would be transitioning to an open source model under the stewardship of the Eclipse Foundation, and making the project available under the permissive MIT License. [3] With Eclipse Foundation as the new home, Azure RTOS was renamed to Eclipse ThreadX, or "ThreadX" in its short form.

Overview

The name ThreadX was 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. [5]

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. [6]

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. [7]

ThreadX provides a unique construct called event chaining, [8] 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.

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.

Major components

The major ThreadX components are:

ThreadX

ThreadX is the real-time operating system (RTOS).

FileX & LevelX

FileX is an optional file system for ThreadX. It supports FAT12, FAT16, FAT32, and exFAT file systems. The latter extends FAT file sizes beyond 4 GB, which is useful for large video files.

It also offers fault tolerance and supports direct NOR and NAND flash memory media through optional flash wear leveling product called LevelX.

GUIX

GUIX is an optional graphical user interface (GUI) for ThreadX. It provides a 2D computer graphics system that 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.

NetX Duo

NetX Duo is an optional TCP/IP network system for ThreadX. It supports both IPv4 and IPv6 networking with IPsec network security. TCP and UDP socket layers are provided by TLS / DTLS. Optional protocols include ARP, Auto IP, DHCP, DNS, DNS-SD, FTP, HTTP, ICMP, IGMP, mDNS, POP3, PPP, PPPoE, RARP, TFTP, SNTP, SMTP, SNMP, and Telnet. 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. [10]

USBX

USBX is an optional Universal Serial Bus (USB) system for ThreadX. It supports both host / device / on-the-go (OTG). Host controller support includes EHCI, OHCI, and proprietary USB host controllers.

It supports these USB Device Classes: Audio, Asix, CDC/ACM, CDC/ECM, DFU, GSER, HID, PIMA, Printer, Prolific, RNDIS, and Storage.

TraceX

TraceX is optional host software that provides a graphical view of ThreadX RTOS events. It requires Windows XP or later.

Supported ports



Products using ThreadX

Some examples of products that use ThreadX:

See also

Related Research Articles

The Portable Operating System Interface is a family of standards specified by the IEEE Computer Society for maintaining compatibility between operating systems. POSIX defines application programming interfaces (APIs), along with command line shells and utility interfaces, for software compatibility (portability) with variants of Unix and other operating systems. POSIX is also a trademark of the IEEE. POSIX is intended to be used by both application and system developers.

ARM is a family of RISC instruction set architectures (ISAs) for computer processors. Arm Holdings develops the ISAs and licenses them to other companies, who build the physical devices that use the instruction set. It also designs and licenses cores that implement these ISAs.

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

QNX is a commercial Unix-like real-time operating system, aimed primarily at the embedded systems market.

<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.

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

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">QEMU</span> Free virtualization and emulation software

The Quick Emulator (QEMU) is a free and open-source emulator that uses dynamic binary translation to emulate a computer's processor; that is, it translates the emulated binary codes to an equivalent binary format which is executed by the machine. It provides a variety of hardware and device models for the virtual machine, enabling it to run different guest operating systems. QEMU can be used with a Kernel-based Virtual Machine (KVM) to emulate hardware at near-native speeds. Additionally, it supports user-level processes, allowing applications compiled for one processor architecture to run on another.

<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 40 microcontroller platforms. It is distributed under the MIT License.

<span class="mw-page-title-main">.NET Micro Framework</span> Open source .NET platform

The .NET Micro Framework (NETMF) is a .NET Framework platform for resource-constrained devices with at least 512 kB of flash and 256 kB of random-access memory (RAM). It includes a small version of the .NET Common Language Runtime (CLR) and supports development in C#, Visual Basic .NET, and debugging using Microsoft Visual Studio. NETMF features a subset of the .NET base class libraries, an implementation of Windows Communication Foundation (WCF), a GUI framework loosely based on Windows Presentation Foundation (WPF), and a Web Services stack based on Simple Object Access Protocol (SOAP) and Web Services Description Language (WSDL). NETMF also features added libraries specific to embedded applications. It is free and open-source software released under Apache License 2.0.

A Bluetooth stack is software that is an implementation of the Bluetooth protocol stack.

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

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.

<span class="mw-page-title-main">QP (framework)</span> Operating system

QP is a family of open source real-time embedded frameworks (RTEFs) and runtime environments based on active objects (actors) and hierarchical state machines. The QP family consists of the lightweight QP/C and QP/C++ frameworks, written in C (C99) and C++ (C++11), respectively.

<span class="mw-page-title-main">STM32</span> ARM Cortex-M based Microcontrollers by STMicroelectronics

STM32 is a family of 32-bit microcontroller integrated circuits by STMicroelectronics. The STM32 chips are grouped into related series that are based around the same 32-bit ARM processor core: Cortex-M0, Cortex-M0+, Cortex-M3, Cortex-M4, Cortex-M7, Cortex-M33. Internally, each microcontroller consists of ARM processor core(s), flash memory, static RAM, debugging interface, and various peripherals.

Mbed is a development platform and operating system for internet-connected devices based on 32-bit ARM Cortex-M microcontrollers. The project was a collaboratively developed by Arm and its technology partners. As of July 2024 Mbed is no longer actively developed by Arm.

XMC is a family of microcontroller ICs by Infineon. The XMC microcontrollers use the 32-bit RISC ARM processor cores from ARM Holdings, such as Cortex-M4F and Cortex-M0. XMC stands for "cross-market microcontrollers", meaning that this family can cover due to compatibility and configuration options, a wide range in industrial applications. The family supports three essential trends in the industry: It increases the energy efficiency of the systems, supports a variety of communication standards and reduces software complexity in the development of the application's software environment with the parallel released eclipse-based software tool DAVE.

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

RTX / RTX64 are real-time operating system (RTOS) by the firm IntervalZero. They are software extensions that convert Microsoft Windows operating system into a RTOS. It was the first Windows real-time solution on the market.

PX5 RTOS is a real-time operating system (RTOS) designed for embedded systems. It is implemented using the ANSI C programming language.

William (Bill) Lamie is an American software engineer. He is known as the author of the Nucleus, ThreadX and PX5 real-time operating systems (RTOS).

References

  1. "Releases · eclipse-rtos/Threadx". GitHub .
  2. 1 2 "How Does The Express Logic Acquisition Help Microsoft And The IoT Ecosystem". Forbes . April 21, 2019. Archived from the original on February 11, 2023.
  3. 1 2 "Microsoft Contributes Azure RTOS to Open Source". Microsoft . November 21, 2023. Archived from the original on November 23, 2024.
  4. "Bill Lamie: Story of a man and his real-time operating systems". Embedded.com. September 3, 2010. Archived from the original on July 2, 2016.
  5. "High Performance RTOS ThreadX: Express Logic". Renesas Electronics . 2018. Archived from the original on March 2, 2019.
  6. "IoT & Embedded Technology Report". VDC Research. December 2017. Archived from the original on May 15, 2024.
  7. "Scheduling Fixed-Priority Tasks with Preemption Threshold" (PDF). University of Utah - Department of Computer Science. December 1999. Archived from the original (PDF) on March 30, 2017.
  8. "Event Chaining Enables Real-Time Systems to Respond to Multiple Real-Time Events More Efficiently" (PDF). Express Logic. July 21, 2016. Archived from the original (PDF) on June 14, 2018.
  9. "wolfSSL with Improved ThreadX/NetX Support". wolfSSL. January 16, 2018. Archived from the original on March 30, 2023.
  10. "Thread Certified Products". Thread Group. Archived from the original on 2018-06-14.
  11. 1 2 3 4 5 6 7 8 "Eclipse - ThreadX - ThreadX Overview". GitHub . Archived from the original on December 3, 2024.
  12. 1 2 "Eclipse - ThreadX - RTOS Docs". GitHub . Archived from the original on December 3, 2024.
  13. "Hewlett Packard". Green Hills Software . Archived from the original on December 8, 2024.
  14. "The Intel Management Engine". bitkeks.eu. December 5, 2017. Archived from the original on April 23, 2024.
  15. "Case study: NASA's "Deep Impact" employs embedded systems to score bullseye 80 million miles away". Military Embedded Systems. January 13, 2006. Archived from the original on April 4, 2015. Retrieved March 30, 2015.
  16. "What's Wrong with the Raspberry Pi". Own Your Bits. February 2, 2019. Archived from the original on 2022-05-31. Retrieved 2024-03-09.

Further reading

ThreadX documentation
RTOS comparison
Official
STM32