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

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, who was also President and CEO of Express Logic.

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

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

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

Supported platforms 

 Analog Devices
 Blackfin
 CM4xx
 Precision Microcontrollers
 SHARC
 ULP Microcontrollers

 Andes
 RISC-V

 ARM
 ARM7
 ARM9
 ARM Cortex-A
 ARM Cortex-R
 ARM Cortex-M
 ARM Cortex-A 64-bit
 ARMv8M TrustZone

 Cadence
 Xtensa

 CEVA
 TeakLite-III

 eSi-RISC
 eSi-16x0
 eSi-32x0

 Infineon
 XMC1000
 XMC4000

 Intel
 Nios II
 Cyclone
 Arria 10
 x86

 Microchip
 AVR32
 PIC24
 dsPIC33
 PIC32
 SAM C-V
 SAM9
 SAMA5

 MIPS
 MIPS32 4Kx
 MIPS32 14Kx
 MIPS32 24Kx
 MIPS32 34Kx
 MIPS32 74Kx
 MIPS32 1004Kx
 interAptiv
 microAptiv
 proAptiv
 M-Class

 NXP
 ColdFire+/ColdFire
 i.MX
 Kinetis
 LPC
 PowerPC
 S32

 Renesas
 H8/300H
 RX
 RZ
 SH
 Synergy
 V850

 ST
 STM32F0
 STM32F1
 STM32F2
 STM32F3
 STM32F4
 STM32F7
 STM32L

 Silicon Labs
 Gecko 
 Giant Gecko
 Giant Gecko S1
 Happy Gecko
 Jade Gecko
 Leopard Gecko
 Pearl Gecko
 Tiny Gecko
 Wonder Gecko
 Zero Gecko

 ARC
 ARC 600
 ARC 700
 ARC EM
 ARC HS

 Texas Instruments
 C674x
 C64x+
 Hercules
 MSP430
 SimpleLink MSP432
 Sitara
 Tiva-C

 Xilinx
 Microblaze
 Zynq-7000
 Zynq UltraScale+

History 
ThreadX was first introduced in 1997. ThreadX 4 was introduced in 2001. ThreadX 5 was introduced in 2005, and is the latest 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.

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

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.

ThreadX provides a unique construct called event chaining, 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:

 Embedded file system
 Embedded graphical user interface
 Embedded networking
 Embedded USB
 Safety certification
 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.

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.

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.

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.

See also 
 Intel Management Engine (ME)

References

External links 

What is Azure RTOS ThreadX? | Microsoft Docs
http://www.mapusoft.com//wp-content/uploads/documents/threadx-os-simulator.pdf

1997 software
Microkernel-based operating systems
Microkernels
Microsoft operating systems
Real-time operating systems
Assembly language software