ThreadX es un sistema operativo en tiempo real (RTOS) integrado, programado principalmente en lenguaje C. Fue lanzado originalmente en 1997 como ThreadX cuando Express Logic lo desarrolló por primera vez; posteriormente, pasó a llamarse Azure RTOS (2019) después de que Microsoft comprara Express Logic , [ 2 ] y más recientemente, volvió a llamarse Eclipse ThreadX (2023), o "ThreadX" en su forma abreviada, después de que se convirtiera en software libre de código abierto bajo la dirección de la Fundación Eclipse . [ 3 ]
Historia
En 1997, Express Logic, con sede en San Diego, California , Estados Unidos, lanzó y comercializó ThreadX por primera vez. Fue desarrollado por William Lamie , [ 4 ] quien también fue el autor original de Nucleus y PX5 RTOS, y presidente y director ejecutivo de Express Logic. La versión 4 de ThreadX se presentó en 2001, la versión 5 en 2005 y la versión 6 en 2020 (la última versión principal). FileX, el sistema de archivos integrado para ThreadX, se introdujo en 1999. NetX, la pila de red TCP/IP integrada para ThreadX, se introdujo en 2002. USBX, la compatibilidad USB integrada para ThreadX, se introdujo en 2004. ThreadX SMP, para entornos multinúcleo SMP, se introdujo en 2009. ThreadX Modules se introdujo en 2011. ThreadX obtuvo las certificaciones de seguridad TÜV IEC 61508 en 2013 y UL 60730 en 2014. GUIX, la interfaz de usuario integrada para ThreadX, se introdujo en 2014.
El 18 de abril de 2019, Microsoft compró Express Logic por una suma no revelada y la renombró como Azure RTOS . [ 2 ]
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 tutela de la Fundación Eclipse y pondría el proyecto a disposición bajo la permisiva Licencia MIT . [ 3 ] Con la Fundación Eclipse como nuevo hogar, Azure RTOS pasó a llamarse Eclipse ThreadX , o "ThreadX" en su forma abreviada.
Descripción general
El nombre ThreadX hace referencia a los hilos utilizados como elementos ejecutables, donde X representa el cambio de contexto .
ThreadX ofrece planificación preventiva basada en prioridades, respuesta rápida a interrupciones , gestión de memoria , comunicación entre subprocesos, exclusión mutua , notificación de eventos y sincronización de subprocesos . Entre las principales características tecnológicas distintivas de ThreadX se incluyen un umbral de preempción, herencia de prioridad , gestión eficiente de temporizadores, temporizadores de software rápidos, diseño de picokernel , encadenamiento de eventos y tamaño reducido (el tamaño mínimo en un procesador con arquitectura ARM es de aproximadamente 2 KB).
ThreadX admite entornos de procesadores multinúcleo mediante multiprocesamiento asimétrico (AMP) o multiprocesamiento simétrico (SMP). El aislamiento de subprocesos de aplicación con protección de memoria mediante la unidad de gestión de memoria (MMU) o la unidad de protección de memoria (MPU) está disponible con los módulos ThreadX.
ThreadX cuenta con certificaciones de seguridad de TÜV y UL , y cumple con las normas de la Motor Industry Software Reliability Association y MISRA C.
ThreadX es la base de la plataforma X-Ware de Express Logic para el Internet de las cosas (IoT), que incluye soporte para sistemas de archivos integrados (FileX), soporte para interfaces de usuario integradas (GUIX), conjunto de protocolos de Internet integrados (TCP/IP), conectividad en la nube (NetX/NetX Duo) y soporte para USB (USBX). ThreadX es apreciado por los desarrolladores y es un sistema operativo en tiempo real (RTOS) popular. [ 5 ]
A partir de 2017, ThreadX RTOS se ha convertido en uno de los RTOS más populares del mundo, implementado en más de 6200 millones de dispositivos, incluidos productos electrónicos de consumo, dispositivos médicos, aplicaciones de redes de datos y SoC. [ 6 ]
Tecnología
ThreadX implementa un algoritmo de planificación preventiva basado en prioridades con una característica propietaria denominada umbral de preempción. Este umbral proporciona mayor granularidad dentro de las secciones críticas, reduce el cambio de contexto y ha sido objeto de investigación académica sobre la garantía de la planificación. [ 7 ]
ThreadX proporciona una estructura única llamada encadenamiento de eventos [ 8 ] , donde la aplicación puede registrar una función de devolución de llamada en todas las API que pueden señalar un evento externo. Esto ayuda a las aplicaciones a encadenar varios objetos públicos en ThreadX, permitiendo que un hilo se bloquee en múltiples 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 bloques de tamaño fijo y memoria de bloques de tamaño variable. Todas las API de ThreadX que se bloquean en recursos también tienen un tiempo de espera opcional.
ThreadX ofrece compatibilidad con procesadores multinúcleo mediante AMP o SMP. El aislamiento del código de la aplicación está disponible a través del componente ThreadX Modules.
Certificación de seguridad
ThreadX (y FileX y NetX Duo) han sido precertificados por SGS-TÜV Saar según las siguientes normas 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 las siguientes normas 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 seguridad de la capa de transporte (SSL/TLS) como wolfSSL . [ 9 ]
Embalaje
Desde 2017, ThreadX se distribuye como parte de la plataforma X-Ware IoT en código fuente completo y sin pago de regalías por tiempo de ejecución .
Componentes principales
Los principales componentes de ThreadX son:
HiloX
ThreadX es el sistema operativo en tiempo real (RTOS).
FileX y LevelX
FileX es un sistema de archivos opcional para ThreadX. Admite los sistemas de archivos FAT12 , FAT16 , FAT32 y exFAT . Este último permite que los archivos FAT superen los 4 GB , lo cual resulta útil para archivos de vídeo de gran tamaño.
También ofrece tolerancia a fallos y admite medios de memoria flash NOR y NAND directos mediante un producto opcional de nivelación de desgaste de la memoria flash llamado LevelX .
GUÍA
GUIX es una interfaz gráfica de usuario (GUI) opcional para ThreadX. Proporciona un sistema de gráficos 2D compatible con múltiples dispositivos de visualización , con diversas resoluciones y profundidades de color. Dispone de numerosos widgets gráficos predefinidos. GUIX Studio, una herramienta WYSIWYG para Windows , genera automáticamente código C para que GUIX lo ejecute en tiempo de ejecución.
NetX Duo
NetX Duo es un sistema de red TCP/IP opcional para ThreadX. Admite redes IPv4 e IPv6 con seguridad de red IPsec . Las capas de sockets TCP y UDP se proporcionan mediante TLS / DTLS . Los protocolos opcionales incluyen ARP, Auto IP, DHCP, DNS, DNS-SD, FTP, HTTP, ICMP, IGMP, mDNS, POP3, PPP, PPPoE, RARP, TFTP, SNTP, SMTP, SNMP y Telnet . La compatibilidad con protocolos de IoT Cloud incluye CoAP, MQTT y LWM2M. NetX Duo también admite Thread y 6LoWPAN. En 2017, ThreadX y NetX Duo se convirtieron en un producto certificado por Thread. [ 10 ]
USBX
USBX es un sistema USB (Universal Serial Bus ) opcional para ThreadX. Admite comunicación host/dispositivo/On-The-Go (OTG). La compatibilidad con controladores host incluye EHCI, OHCI y controladores host USB propietarios.
Es compatible con las siguientes clases de dispositivos USB : Audio, Asix, CDC/ACM, CDC/ECM, DFU, GSER, HID, PIMA, Impresora, Prolific, RNDIS y Almacenamiento.
TraceX
TraceX es un software de host opcional que proporciona una vista gráfica de los eventos del sistema operativo en tiempo real ThreadX. Requiere Windows XP o posterior.
Puertos compatibles
- Núcleos ARM clásicos (32 bits) [ 11 ] [ 12 ]
- Núcleos de microcontroladores ARM (32 bits) [ 11 ]
- Núcleos ARM en tiempo real (32 bits) [ 11 ]
- Núcleos de aplicación ARM (32 bits) [ 11 ]
- Núcleos de aplicación ARM (32 bits) [ 11 ]
- Núcleos de aplicación ARM (64 bits) [ 11 ]
- Otros núcleos [ 11 ] [ 12 ]
- Sistemas operativos [ 11 ]
Productos que utilizan ThreadX
Algunos ejemplos de productos que utilizan ThreadX:
- Pequeños dispositivos portátiles.
- Impresoras de inyección de tinta y dispositivos todo en uno de Hewlett-Packard . [ 13 ]
- Motor de administración de Intel (ME). [ 14 ]
- Sonda espacial Deep Impact de la NASA . [ 15 ]
- La línea de computadoras de placa única Raspberry Pi ejecuta ThreadX como un blob binario en la unidad de procesamiento gráfico (GPU). Esto controla el arranque inicial , que a su vez se utiliza para arrancar sistemas operativos secundarios como Linux , y continúa operando en un rol más privilegiado incluso después del proceso de arranque. [ 16 ]
- Teléfono móvil AGM M11 [ 17 ]
Véase también
Referencias
- ^ "Versiones · eclipse-rtos/Threadx" . GitHub .
- ^ a b "¿Cómo ayuda la adquisición de Express Logic a Microsoft y al ecosistema de IoT?" . Forbes . 21 de abril de 2019. Archivado del original el 11 de febrero de 2023.
- ^ a b "Microsoft contribuye con Azure RTOS al código abierto" . Microsoft . 21 de noviembre de 2023. Archivado del original el 23 de noviembre de 2024.
- ^ "Bill Lamie: Historia de un hombre y sus sistemas operativos en tiempo real" . Embedded.com . 3 de septiembre de 2010. Archivado del original el 2 de julio de 2016.
- ^ "RTOS ThreadX de alto rendimiento: Express Logic" . Renesas Electronics . 2018. Archivado del original el 2 de marzo de 2019.
- ^ "Informe sobre IoT y tecnología integrada" . VDC Research . Diciembre de 2017. Archivado del original el 15 de mayo de 2024.
- ^ "Programación de tareas de prioridad fija con umbral de preempción" (PDF) . Universidad de Utah - Departamento de Ciencias de la Computación . Diciembre de 1999. Archivado del original (PDF) el 30 de marzo de 2017.
- ^ "El encadenamiento de eventos permite que los sistemas en tiempo real respondan a múltiples eventos en tiempo real de manera más eficiente" (PDF) . Express Logic . 21 de julio de 2016. Archivado del original (PDF) el 14 de junio de 2018.
- ^ "wolfSSL con soporte mejorado para ThreadX/NetX" . wolfSSL . 16 de enero de 2018. Archivado del original el 30 de marzo de 2023.
- ^ "Productos certificados por Thread" . Thread Group . Archivado del original el 14 de junio de 2018.
- ^ a b c d e f g h "Eclipse - ThreadX - Descripción general de ThreadX" . GitHub . Archivado del original el 3 de diciembre de 2024.
- ^ a b "Eclipse - ThreadX - RTOS Docs" . GitHub . Archivado del original el 3 de diciembre de 2024.
- ^ "Hewlett Packard" . Green Hills Software . Archivado del original el 8 de diciembre de 2024.
- ^ "El motor de gestión de Intel" . bitkeks.eu . 5 de diciembre de 2017. Archivado del original el 23 de abril de 2024.
- ^ "Estudio de caso: El 'Deep Impact' de la NASA emplea sistemas embebidos para dar en el blanco a 80 millones de millas de distancia" . Military Embedded Systems. 13 de enero de 2006. Archivado del original el 4 de abril de 2015. Consultado el 30 de marzo de 2015 .
- ^ "¿Qué le pasa a la Raspberry Pi?" . Own Your Bits . 2 de febrero de 2019. Archivado del original el 31 de mayo de 2022. Consultado el 9 de marzo de 2024 .
- ^ "AGM M11" . Asamblea General Anual . 25 de mayo de 2026.
Lecturas adicionales
- Documentación de ThreadX
- Guía del usuario de ThreadX (2020) - Microsoft
- Guía del usuario de FileX (2020) - Microsoft
- Guía del usuario de GUIX (2020) - Microsoft
- Guía del usuario de NetX (2020) - Microsoft
- Guía del usuario del dispositivo USBX (2020) - Microsoft
- Guía del usuario del host USBX (2020) - Microsoft
- Guía complementaria del usuario del host USBX (2020) - Microsoft
- Comparación de RTOS
- Informe de rendimiento de RTOS 2024 (FreeRTOS / ThreadX / PX5 / Zephyr) - Beningo Embedded Group
- Comparativa de sistemas operativos en tiempo real de 2013 (Nucleus / ThreadX / ucOS / Unison) - Embedded Magazine
Enlaces externos
- STM32
- Introducción a ThreadX en STM32 - ST
- Creación de un hilo para STM32CubeIDE - ST
- 1997 software
- Microkernel-based operating systems
- Microkernels
- Microsoft operating systems
- Real-time operating systems
- Software programmed in assembly language
- ARM operating systems
- X86 operating systems