Desarrollador | Express Logic (original) Microsoft |
---|---|
Escrito en | C |
Estado de trabajo | Actual |
Modelo fuente | Software de fuente disponible |
Versión inicial | 1997 |
Último lanzamiento | 6.1.6_rel [1] / 3 de abril de 2021 |
Repositorio | github |
Objetivo de marketing | Sistemas integrados , IoT : incluidos sensores, dispositivos, enrutadores de borde, puertas de enlace |
Método de actualización | Reinstalar |
Gerente de empaquetación | Ninguna |
Plataformas | ARC , ARM , Blackfin, CEVA, C6x, MIPS , NXP , PIC , PowerPC , RISC-V , RX, SH, SHARC, TI , V850, Xtensa, x86 , Coldfire , otros |
Tipo de grano | Incrustado , determinista , en tiempo real microkernel , picokernel |
Interfaz de usuario predeterminada | Soporte de interfaz de usuario integrado (GUIX) |
Licencia | Propiedad |
Sitio web oficial | azure |
Azure RTOS ThreadX es una, altamente determinista incrustado sistema operativo en tiempo real (RTOS) programada sobre todo en el lenguaje C .
ThreadX fue desarrollado y comercializado originalmente por Express Logic de San Diego, California , Estados Unidos. El autor de ThreadX (y el autor original de Nucleus RTOS en 1990) es William Lamie, [2] quien también fue presidente y director ejecutivo de Express Logic.
Microsoft compró Express Logic por una suma no revelada el 18 de abril de 2019. [3]
El nombre ThreadX se deriva de los hilos que se utilizan como elementos ejecutables, y la letra X representa el cambio de contexto , es decir, cambia los hilos. ThreadX proporciona funciones de programació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 . Las principales características tecnológicas distintivas de ThreadX incluyen umbral de preferencia , herencia de prioridad , gestión eficiente del temporizador, temporizadores de software rápidos, diseño de picokernel , encadenamiento de eventos y tamaño pequeño: tamaño mínimo en unEl procesador de arquitectura ARM tiene 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 aplicación con protección de memoria de unidad de gestión de memoria (MMU) o unidad de protección de memoria (MPU) está disponible con los 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 MISRA C de la Asociación de confiabilidad de software de la industria del motor .
ThreadX es la base de la plataforma X-Ware de Internet de las cosas (IoT) de Express Logic , que también incluye compatibilidad con el sistema de archivos integrado (FileX), compatibilidad con la interfaz de usuario integrada (GUIX), conjunto de protocolos de Internet integrado (TCP / IP) y conectividad en la nube (NetX). / NetX Duo) y compatibilidad con bus serie universal ( USB ) (USBX). ThreadX ha ganado una alta valoración por parte de los desarrolladores y es un RTOS muy popular. [4] A partir de 2017 [actualizar], 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. [5]
ThreadX se distribuye mediante un modelo de marketing en el que se proporciona el código fuente y las licencias son libres de regalías .
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 de 2020 [actualizar].
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: el soporte USB integrado para ThreadX se introdujo en 2004.
ThreadX SMP para entornos SMP de varios núcleos 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.
Microsoft compró Express Logic por una suma no revelada el 18 de abril de 2019. [3]
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 investigación académica sobre cómo garantizar la programación. [6]
ThreadX proporciona una construcción única llamada encadenamiento de eventos, [7] 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 hilo 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 los 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.
Los componentes ThreadX RTOS incluyen:
FileX es el sistema de archivos integrado para ThreadX. FileX es compatible con los formatos FAT12 , 16 , 32 y exFAT . Este último amplía el tamaño de los archivos FAT más allá de los 4 GB, lo que es especialmente útil para archivos de video y requiere una licencia directamente de Microsoft para su uso. FileX también ofrece tolerancia a fallas y admite medios de memoria flash directa NOR y NAND a través de un producto de nivelación de desgaste flash llamado LevelX.
GUIX es la interfaz gráfica de usuario (GUI) integrada para ThreadX. GUIX proporciona un sistema de tiempo de ejecución 2D (entorno) para aplicaciones integradas que ejecutan ThreadX. GUIX admite varios dispositivos de visualización con una variedad de resoluciones de pantalla y profundidades de color. Hay muchos widgets gráficos predefinidos disponibles. Una herramienta de host WYSIWYG de Windows llamada GUIX Studio genera automáticamente código C para que GUIX se ejecute en tiempo de ejecución.
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 red de la capa IP la proporciona IPsec. La seguridad de la capa de socket TCP y UDP es proporcionada por TLS y DTLS, respectivamente. El soporte del 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. [8]
USBX es el sistema de bus serie universal ( USB ) integrado para ThreadX. USBX admite tanto el host como el dispositivo. El soporte del controlador de host incluye EHCI, OHCI y controladores de host USB patentados. USBX también es compatible con OTG. El soporte de clase USBX incluye Audio, Asix, CDC / ACM, CDC / ECM, DFU, GSER, HID, PIMA, Printer, Prolific, RNDIS y Storage.
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 las bibliotecas populares de Transport Layer Security (SSL / TLS) como wolfSSL . [9]
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 .
Algunos productos de alto perfil utilizando ThreadX gama de pequeños dispositivos portátiles, a impresoras Hewlett-Packard , e incluso la NASA ‘s Deep Impact sonda espacial . [10]
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 usa para arrancar sistemas operativos secundarios como Linux , y continúa operando en un rol más privilegiado incluso después del proceso de arranque. [11]