Threadx
Eclipse ThreadX (anteriormente denominado Azure RTOS y ThreadX) es un sistema operativo en tiempo real (RTOS) integrado y altamente determinista, programado principalmente en la lengua c.
Descripción general
ThreadX fue desarrollado y comercializado inicialmente por Express Logic de San Diego, California, Estados Unidos. El autor de ThreadX es William Lamie, quien también fue el autor original de Nucleus RTOS en 1990. William Lamie fue presidente y director ejecutivo de Express Logic.
Microsoft compró Express Logic por una suma no revelada el 18 de abril de 2019 y le cambió el nombre a Azure RTOS. El 21 de noviembre de 2023, Microsoft anunció que Azure RTOS haría la transición a un modelo de código abierto bajo la dirección de la Fundación Eclipse y que el proyecto estaría disponible bajo la permisiva licencia MIT. Con Eclipse Foundation como nuevo hogar, Azure RTOS pasó a llamarse Eclipse ThreadX, o "ThreadX" en su forma corta.
El nombre ThreadX se deriva de los subprocesos que se utilizan como elementos ejecutables, y la letra X representa el cambio de contexto, es decir, cambia de subprocesos. ThreadX proporciona funciones de programación preventiva y basada en prioridades, respuesta rápida a interrupciones, administración de memoria, comunicación entre subprocesos, exclusión mutua, notificación de eventos y sincronización de subprocesos. Las principales características tecnológicas distintivas de ThreadX incluyen umbral de preferencia, herencia de prioridad, gestión eficiente de temporizadores, temporizadores de software rápidos, diseño de picokernel, encadenamiento de eventos y tamaño pequeño: el tamaño mínimo en un procesador de arquitectura ARM es de aproximadamente 2 KB.
ThreadX admite entornos de procesadores de múltiples núcleos mediante multiprocesamiento asimétrico (AMP) o multiprocesamiento simétrico (SMP). El aislamiento de subprocesos de aplicaciones con protección de memoria de unidad de administración de memoria (MMU) o unidad de protección de memoria (MPU) está disponible con módulos ThreadX.
ThreadX cuenta con amplias certificaciones de seguridad de Technischer Überwachungsverein (TÜV, inglés: Technical Inspection Association) y UL (anteriormente Underwriters Laboratories) y cumple con la Motor Industry Software Reliability Association MISRA C.
ThreadX es la base de la plataforma X-Ware Internet de las cosas (IoT) de Express Logic, que también incluye compatibilidad con sistemas de archivos integrados (FileX), compatibilidad con UI integrada (GUIX), conjunto de protocolos de Internet integrados (TCP/ IP) y conectividad en la nube (NetX/NetX Duo) y compatibilidad con Universal Serial Bus (USB) (USBX). ThreadX ha obtenido una gran valoración por parte de los desarrolladores y es un RTOS muy popular. A partir de 2017, según la firma de investigación de mercados VDC Research, ThreadX RTOS se ha convertido en uno de los RTOS más populares del mundo, habiéndose implementado en más de 6,2 mil millones de dispositivos, incluidos productos electrónicos de consumo, dispositivos médicos, aplicaciones de redes de datos y SoC.
Plataformas compatibles
- Dispositivos analógicos
- Blackfin
- CM4xx
- Microcontroladores de precisión
- SHARC
- ULP Microcontroladores
- 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
- Ciclone
- Arria 10
- x86
- Microchip
- AVR32
- PIC24
- dsPIC33
- PIC32
- SAM C-V
- SAM7
- SAM9
- SAMA5
- MIPS
- MIPS32 4Kx
- MIPS32 14Kx
- MIPS32 24Kx
- MIPS32 34Kx
- MIPS32 74Kx
- MIPS32 1004Kx
- inter Aptiv
- microAptiv
- proAptiv
- M-Class
- NXP
- ColdFire+/Cold Fuego
- i.MX
- Kinetis
- LPC
- PowerPC
- S32
- Renesas
- H8/300H
- RX
- RZ
- SH
- Sinergía
- V850
- ST
- STM32F0
- STM32F1
- STM32F2
- STM32F3
- STM32F4
- STM32F7
- STM32H5
- STM32H7
- STM32L
- STM32U5
- STM32WB
- Laboratorios de silicona
- 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
- Instrumentos de Texas
- C674x
- C64x+
- Hércules
- MSP430
- SimpleLink MSP432
- Sitara
- Tiva-C
- Xilinx
- Microblaze
- Zynq-7000
- Zynq UltraScale+
Historia
ThreadX se introdujo por primera vez en 1997. ThreadX 4 se introdujo en 2001. ThreadX 5 se introdujo en 2005 y es la última versión a partir de 2020.
FileX: el sistema de archivos integrado para ThreadX se introdujo en 1999.
NetX: la pila de redes TCP/IP integrada para ThreadX se introdujo en 2002.
USBX: la compatibilidad con USB integrado para ThreadX se introdujo en 2004.
ThreadX SMP para entornos SMP multinúcleo se introdujo en 2009.
Los módulos ThreadX se introdujeron en 2011.
ThreadX obtuvo certificaciones de seguridad para: TÜV IEC 61508 en 2013 y UL 60730 en 2014.
GUIX: la interfaz de usuario integrada para ThreadX se introdujo en 2014.
Express Logic fue adquirido por Microsoft por una suma no revelada el 18 de abril de 2019.
Tecnología
ThreadX implementa un algoritmo de programación preventiva basado en prioridades con una característica patentada llamada umbral de preferencia. Se ha demostrado que este último proporciona una mayor granularidad dentro de las secciones críticas, reduce los cambios de contexto y ha sido objeto de investigaciones académicas sobre cómo garantizar la programación.
ThreadX proporciona una construcción única llamada encadenamiento de eventos, donde la aplicación puede registrar una función de devolución de llamada en todas las interfaces de programación de aplicaciones (API) que pueden señalar un evento externo. Esto ayuda a las aplicaciones a encadenar varios objetos públicos en ThreadX, de modo que un subproceso pueda bloquear eficazmente varios objetos.
ThreadX también proporciona semáforos de conteo, mutex con herencia de prioridad opcional, indicadores de eventos, colas de mensajes, temporizadores de software, memoria de bloque de tamaño fijo y memoria de bloque de tamaño variable. Todas las API en ThreadX que bloquean recursos también tienen un tiempo de espera opcional.
ThreadX ofrece compatibilidad con procesadores multinúcleo a través de AMP o SMP. El aislamiento del código de la aplicación está disponible a través del componente ThreadX Modules.
Componentes principales
Los componentes de ThreadX RTOS incluyen:
- Sistema de archivos embebidos
- Interfaz gráfica de usuario incorporada
- Redes integradas
- USB incorporado
- Certificación de seguridad
- Embalaje
Sistema de archivos integrado
FileX es el sistema de archivos integrado para ThreadX. FileX admite los formatos FAT12, 16, 32 y exFAT. Este último extiende el tamaño de los archivos FAT más allá de los 4 GB, lo que es especialmente útil para archivos de vídeo y requiere una licencia directa de Microsoft para su uso. FileX también ofrece tolerancia a fallas y admite medios de memoria flash NOR y NAND directos a través de un producto de nivelación de desgaste de flash llamado LevelX.
Interfaz gráfica de usuario integrada
GUIX es la interfaz gráfica de usuario (GUI) integrada para ThreadX. GUIX proporciona un sistema (entorno) de ejecución 2D para aplicaciones integradas que ejecutan ThreadX. GUIX admite múltiples dispositivos de visualización con una variedad de resoluciones de pantalla y profundidades de color. Hay muchos widgets gráficos predefinidos disponibles. Una herramienta host WYSIWYG de Windows llamada GUIX Studio genera automáticamente código C para que GUIX lo ejecute en tiempo de ejecución.
Redes integradas
NetX Duo es el sistema TCP/IP integrado para ThreadX. NetX Duo admite redes IPv4 e IPv6 junto con protocolos como ARP, Auto IP, DHCP, DNS, DNS-SD, FTP, HTTP, ICMP, IGMP, mDNS, POP3, PPP, PPPoE, RARP, TFTP, SNTP, SMTP, SNMP y TELNET. La seguridad de la red de capa IP la proporciona IPsec. La seguridad de la capa de socket TCP y UDP la proporcionan TLS y DTLS, respectivamente. La compatibilidad con el protocolo IoT Cloud incluye CoAP, MQTT y LWM2M. NetX Duo también es compatible con Thread y 6LoWPAN. En 2017, ThreadX y NetX Duo se convirtieron en productos certificados por Thread.
USB integrado
USBX es el sistema de bus serie universal (USB) integrado para ThreadX. USBX admite tanto host como dispositivo. La compatibilidad con el controlador de host incluye EHCI, OHCI y controladores de host USB propietarios. USBX también admite OTG. El soporte de clase USBX incluye Audio, Asix, CDC/ACM, CDC/ECM, DFU, GSER, HID, PIMA, Impresora, Prolific, RNDIS y Almacenamiento.
Certificación de seguridad
ThreadX (y FileX y NetX Duo) han sido precertificados por SGS-TÜV Saar según los siguientes estándares de seguridad: IEC 61508 SIL 4, IEC 62304 Clase C, ISO 26262 ASIL D y EN 50128 SW-SIL 4.
ThreadX (y FileX y NetX Duo) han sido precertificados por UL según los siguientes estándares de seguridad: UL/IEC 60730, UL/IEC 60335, UL 1998
ThreadX también ha sido certificado según los estándares DO-178 por varias empresas militares y aeroespaciales. Es compatible con bibliotecas populares de Transport Layer Security (SSL/TLS), como wolfSSL.
Embalaje
A partir de 2017, ThreadX está empaquetado como parte de X-Ware IoT Platform en código fuente completo y sin pago de regalías por tiempo de ejecución.
Productos que lo utilizan
Algunos productos de alto perfil que utilizan ThreadX van desde pequeños dispositivos portátiles hasta impresoras Hewlett-Packard e incluso la sonda espacial Deep Impact de la NASA.
La línea Raspberry Pi de computadoras de placa única ejecuta ThreadX como un blob binario en la unidad de procesamiento de gráficos (GPU). Esto controla el arranque inicial, que a su vez se utiliza para arrancar sistemas operativos secundarios como Linux, y continúa funcionando en un rol más privilegiado incluso después del proceso de arranque.