Введение

Операционная система реального времени Eclipse ThreadX (ранее известная как Azure RTOS и ThreadX) — высокодетерминированная встраиваемая операционная система реального времени (RTOS), написанная преимущественно на языке C.

Обзор

ThreadX был первоначально разработан и продвигался компанией Express Logic из Сан-Диего, Калифорния, США. Автором ThreadX является Уильям Лами, который также был первоначальным автором RTOS Nucleus в 1990 году. Уильям Лами занимал должности президента и генерального директора Express Logic. Компания Express Logic была приобретена Microsoft за нераскрытую сумму 18 апреля 2019 года и переименована в Azure RTOS. 21 ноября 2023 года Microsoft объявила о переходе Azure RTOS на модель с открытым исходным кодом под управлением Eclipse Foundation и предоставлении проекта под лицензией MIT. С Eclipse Foundation в качестве нового дома, Azure RTOS была переименована в Eclipse ThreadX, или "ThreadX" в сокращенной форме. Название ThreadX происходит от потоков, используемых в качестве исполняемых элементов, а буква X обозначает переключение контекста, то есть переключение между потоками. ThreadX обеспечивает приоритетную вытесняющую (прерывистую) планировку, быстрый отклик на прерывания, управление памятью, межпоточную коммуникацию, взаимное исключение, уведомление о событиях и функции синхронизации потоков. К основным отличительным технологическим характеристикам ThreadX относятся порог прерывания, наследование приоритетов, эффективное управление таймерами, быстрые программные таймеры, пикоядерная архитектура, цепочки событий и малый размер: минимальный размер на процессоре с архитектурой ARM составляет около 2 КБ. ThreadX поддерживает многоядерные процессорные среды посредством асимметричной (AMP) или симметричной (SMP) многопроцессорной обработки. Изоляция потоков приложений с использованием блока управления памятью (MMU) или блока защиты памяти (MPU) доступна с модулями ThreadX. ThreadX имеет обширные сертификаты безопасности от Technischer Überwachungsverein (TÜV, англ. Technical Inspection Association) и UL (ранее Underwriters Laboratories) и соответствует стандарту MISRA C для надежности программного обеспечения автомобильной промышленности. ThreadX является основой платформы Express Logic X-Ware для Интернета вещей (IoT), которая также включает в себя поддержку встроенных файловых систем (FileX), встроенного пользовательского интерфейса (GUIX), встроенного стека протоколов TCP/IP и облачной связи (NetX/NetX Duo), а также поддержку универсальной последовательной шины (USB) (USBX). ThreadX завоевал высокую оценку разработчиков и является очень популярной RTOS. По данным маркетинговой исследовательской компании VDC Research, по состоянию на 2017 год ThreadX RTOS стала одной из самых популярных RTOS в мире, будучи развернутой более чем на 6,2 миллиардах устройств, включая бытовую электронику, медицинские приборы, сетевые приложения и системы-на-чипе (SoC).

История

ThreadX был впервые представлен в 1997 году. ThreadX 4 был представлен в 2001 году. ThreadX 5 был представлен в 2005 году и является последней версией по состоянию на 2020 год. FileX – встроенная файловая система для ThreadX – была представлена в 1999 году. NetX – встроенный TCP/IP сетевой стек для ThreadX – был представлен в 2002 году. USBX – встроенная поддержка USB для ThreadX – была представлена в 2004 году. ThreadX SMP для многоядерных сред SMP был представлен в 2009 году. ThreadX Modules был представлен в 2011 году. ThreadX получил сертификаты безопасности: TÜV IEC 61508 в 2013 году и UL 60730 в 2014 году. GUIX – встроенный пользовательский интерфейс для ThreadX – был представлен в 2014 году. Express Logic была приобретена Microsoft за нераскрытую сумму 18 апреля 2019 года. ThreadX предоставляет уникальную конструкцию, называемую цепочкой событий, позволяющую приложению регистрировать функцию обратного вызова для всех интерфейсов программирования приложений (API), способных сигнализировать о внешнем событии. Это позволяет приложениям связывать различные общедоступные объекты в ThreadX таким образом, что один поток может эффективно блокироваться на нескольких объектах. ThreadX также предоставляет счетные семафоры, мьютексы с необязательным наследованием приоритета, флаги событий, очереди сообщений, программные таймеры, память блоков фиксированного размера и память блоков переменного размера. Все API в ThreadX, которые блокируют ресурсы, также имеют необязательный тайм-аут. ThreadX предлагает поддержку многоядерных процессоров через AMP или SMP. Изоляция кода приложений доступна через компонент ThreadX Modules.

Встроенная файловая система

FileX – это встроенная файловая система для ThreadX. FileX поддерживает форматы FAT12, 16, 32 и exFAT. Последний позволяет работать с файлами FAT размером более 4 ГБ, что особенно важно для видеофайлов, и требует получения лицензии непосредственно от Microsoft для использования. FileX также обеспечивает устойчивость к сбоям и поддерживает работу с прямой NOR и NAND флеш-памятью посредством продукта LevelX, предназначенного для выравнивания износа флеш-памяти.

Встроенный графический пользовательский интерфейс

GUIX — это встроенный графический пользовательский интерфейс (GUI) для ThreadX. GUIX предоставляет 2D-среду выполнения для встроенных приложений, работающих под управлением ThreadX. GUIX поддерживает несколько устройств отображения с различным разрешением экрана и глубиной цвета. Доступно множество предопределенных графических виджетов. Windows-инструмент разработки с поддержкой WYSIWYG, GUIX Studio, автоматически генерирует C-код для GUIX, который выполняется во время работы программы.

Встроенные сети

NetX Duo — это встроенная TCP/IP система для ThreadX. NetX Duo поддерживает сети IPv4 и IPv6, а также протоколы, такие как ARP, Auto IP, DHCP, DNS, DNS SD, FTP, HTTP, ICMP, IGMP, mDNS, POP3, PPP, PPPoE, RARP, TFTP, SNTP, SMTP, SNMP и TELNET. Безопасность сетевого уровня IP обеспечивается IPsec. Безопасность сокетного уровня TCP и UDP обеспечивается TLS и DTLS соответственно. Поддержка протоколов IoT Cloud включает CoAP, MQTT и LWM2M. NetX Duo также поддерживает Thread и 6LoWPAN. В 2017 году ThreadX и NetX Duo получили сертификацию Thread.

Встроенный USB

USBX — это встроенная универсальная последовательная шина (USB) для ThreadX. USBX поддерживает режимы хоста и устройства. Поддержка хост-контроллеров включает EHCI, OHCI и собственные USB-хост-контроллеры. USBX также поддерживает OTG. Поддержка классов USBX включает Audio, Asix, CDC/ACM, CDC/ECM, DFU, GSER, HID, PIMA, Printer, Prolific, RNDIS и Storage.

Упаковка

По состоянию на 2017 год ThreadX поставляется в составе платформы X Ware IoT с полным исходным кодом и без выплаты роялти за время использования.

Продукты, использующие его

Некоторые известные продукты, использующие ThreadX, включают в себя как небольшие носимые устройства, так и принтеры Hewlett Packard и даже космический зонд Deep Impact от NASA. В одноплатных компьютерах Raspberry Pi ThreadX работает как бинарный модуль на графическом процессоре (GPU). Он управляет начальной загрузкой, которая затем используется для запуска вторичных операционных систем, таких как Linux, и продолжает функционировать в более привилегированном режиме даже после завершения процесса загрузки.