ThreadX

From Wikipedia, the free encyclopedia
  (Redirected from Threadx)
Jump to navigation Jump to search
ThreadX RTOS
DeveloperExpress Logic
Written inC
OS familyReal-time operating system (RTOS)
Working stateCurrent
Source modelClosed source
Latest releaseThreadX 5.8 / release date June 1, 2017
Marketing targetembedded devices, IoT, including IoT sensors, devices, edge routers, gateways
PlatformsARC, ARM, Blackfin, CEVA, C6x, MIPS, NXP, PIC, PowerPC, RISC-V, RX, SH, SHARC, TI, V850, Xtensa, x86 and others.
Kernel typeembedded, deterministic real-time kernel, microkernel, picokernel
LicenseProprietary
Official websiteThreadX RTOS

ThreadX, developed and marketed by Express Logic of San Diego, California, United States, is a highly deterministic, embedded real-time operating system (RTOS) written mostly in the C (programming language). The author of ThreadX (as well as the original author of the Nucleus RTOS in 1990) is William Lamie,[1] who is the President and CEO of Express Logic.

The name ThreadX is derived from the fact that threads 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, picokernel design, event-chaining, fast software timers, and compact size. The minimal footprint of ThreadX on an ARM processor is on the order of 2KB.

ThreadX supports multi-core environments in either AMP or SMP fashion. Application thread isolation with MMU or MPU memory protection is available with ThreadX Modules.

ThreadX has extensive safety certifications from TUV and UL and is MISRA C compliant.

ThreadX is the foundation of Express Logic's X-Ware IoT Plaform, which also includes embedded file support (FileX), embedded UI support (GUIX), embedded TCP/IP and cloud connectivity (NetX/NetX Duo), and USB support (USBX). ThreadX has won high appraisal from developers and is a very popular RTOS.[2] According to the marketing research firm VDC Research, the ThreadX RTOS has been deployed in over 6.2 billion devices (as of 2017), ranging from consumer electronics, medical devices, data networking applications, and SoCs.[3]

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

Supported Platforms[edit]

  • Analog Devices
    • Blackfin
    • CM4xx
    • Precision Microcontrollers
    • SHARC
    • ULP Microcontrollers
  • ARM architecture
    • ARM7
    • ARM9
    • ARM Cortex-A
    • ARM Cortex-R
    • ARM Cortex-M
    • ARM Cortex-A 64-bit
    • ARMv8M TrustZone
  • Cadence
    • Xtensa
  • CEVA
    • TeakLite-III
  • EnSilica
    • eSi-RISC
  • Infineon
    • XMC1000
    • XMC4000
  • Intel
    • Nios II
    • Cyclone
    • Arria 10
    • X86
  • Microchip
    • AVR32
    • PIC24
    • dsPIC33
    • PIC32
    • SAM C-V
    • SAM9
    • SAMA5
  • MIPS architecture
    • 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
  • Synopsys
    • 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[edit]

ThreadX was first introduced in 1997. ThreadX 4 was introduced in 2001 and ThreadX 5 was introduced in 2005. ThreadX 5 is the current version of ThreadX. In 2013 ThreadX achieved TUV IEC 61508 safety certification and in 2014 ThreadX achieved UL 60730 certification.

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

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.

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

ThreadX has become one of the most popular RTOSes in the world, with over 6.2 billion deployments per a VDC Research study in 2017.

Technology[edit]

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

ThreadX provides a unique construct called event chaining,[5] where the application can register a callback function on all 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 support in either AMP or SMP fashion. Application code isolation is available through ThreadX Modules component.

Major components[edit]

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

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

Embedded Graphical User Interface[edit]

GUIX is the embedded UI for ThreadX. GUIX provides a 2D run-time environment for embedded applications running ThreadX. GUIX supports multiple displays with a variety of screen resolutions and color depths. An extensive amount of pre-defined widgets are available. A Windows WYSIWYG host tool called GUIX Studio automatically generates C code for GUIX to execute at run-time.

Embedded Networking[edit]

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

Embedded USB[edit]

USBX is the embedded 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[edit]

ThreadX (and FileX and NetX Duo) have been pre-certified by SGS-TUV 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 pre-certified 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 SSL/TLS libraries such as wolfSSL.[7]

Packaging[edit]

As of 2017, ThreadX is now packaged as part of X-Ware IoT Platform in full source code and with no run-time royalties.

Products Using ThreadX[edit]

Some high profile products using ThreadX range from small wearable devices, to HP printers, and even NASA’s Deep Impact Space probe.[8]

See also[edit]

References[edit]

  1. ^ Bernard Cole & Toni McConnel (September 2010). "Bill Lamie: Story of a man and his real-time operating systems". Embedded.
  2. ^ Jonh Carbone. "Enabling Shorter Time to Market and Reduced Development Cost". Renesas.
  3. ^ "IoT & Embedded Operating Systems". www.vdcresearch.com. Retrieved 2018-07-31.
  4. ^ Yun Wang and Manas Saksena. "Scheduling Fixed-Priority Tasks with Preemption Threshold" (PDF). Department of Computer Science University of Utah.
  5. ^ "Event Chaining Enables Real-Time Systems to Respond to Multiple Real-Time Events More Efficient" (PDF). Express Logic.
  6. ^ "Thread Certified Products". Thread Group.
  7. ^ "wolfSSL with Improved ThreadX/NetX Support - wolfSSL". 2018-01-16. Retrieved 2019-02-13.
  8. ^ "NASA's "Deep Impact" employs embedded systems to score bullseye 80 million miles away". Military Embeded Systems.

External links[edit]