ThreadX RTOS

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 16:07, 23 января 2019.
ThreadX RTOS
Logo-threadx.png
Разработчик Express Logic
Написана на C
Линейка ОС Операционная система реального времени
Состояние разработки Поддерживается
Исходный код Закрытая разработка
Последний релиз ThreadX 5.8 / 1 июня 2017 года
Целевой маркетинг встроенные устройства, интернет вещей
Платформы ARC, ARM (Advanced RISC Machine), Blackfin, CEVA, C6x, MIPS (Microprocessor without Interlocked Pipeline Stages), NXP, PIC, PowerPC, RISC-V, RX, SH, SHARC, Texas Instruments, V850, Xtensa, X86 и др.
Ядро (тип) встроенное, ядро реального времени, микроядро, пикоядро
Лицензия Проприетарное программное обеспечение
Официальный веб-сайт ThreadX RTOS
ThreadX (ST EXP-RTOS) – это операционная система реального времени (RTOS) Express Logic, разработанная специально для встроенных приложений. ThreadX предоставляет расширенные средства планирования, передачи сообщений, управления прерываниями и службами обмена сообщениями. ThreadX обладает множеством расширенных функций, включая собственную архитектуру picokernel, планирование Preemption-Threshold, цепочку событий и набор системных служб. В сочетании с простотой использования ThreadX является идеальным выбором для самых требовательных встраиваемых приложений. ThreadX был развернут на более чем 1,5 миллиардах решениях.[Источник 1]

Компания Ренесас Технолоджи Европа объявила о выходе операционной системы реального времени (ОСРВ) ThreadX компании Express Logic с поддержкой семейства микроконтроллеров SH-2A. Для устройств, построенных на микроконтроллерах SuperH с модулями Ethernet и USB, совместно с ОСРВ, предлагается файловая система FileX, сетевой стек NetX и USB стек USBX. В состав программных продуктов также входит графический интерфейс пользователя (GUI) профессионального качества PEGX, имеющий небольшой размер и высокую скорость работы.

Особенности

Данное решения обладает следющими особенностями:

  • поддержка всего семейства SuperH, включая SH1, SH2, SH-2A, SH3, SH4, SH4A и SH-DSP
  • разумная цена
  • без доплат
  • исходный код написан в соответствии с ANSI C
  • простые в использовании и мощные сервисы
  • качественная техническая поддержка
  • абсолютные (без ограничений) Процессы, Очереди Процессов, Флаги Событий, Таймеры, Семафоры, Исключения, Объединения Блоков и Байтов
  • гибкое использование памяти
  • наличие таймаутов при любом зацикливании
  • расширенный механизм порога доступа
  • минимально возможное использование таймеров
  • автоматическое изменение размера
  • архитектура «picokernel», малый размер, высокая скорость работы
  • малый занимаемый объем (сравнимый с 3 Кб)
  • быстрое исполнение (переключение контекста за 1.8 мкс на 20 МГц, без задержек, SH3)[Источник 2]

Пониженное потребление памяти

ThreadX требует меньше памяти, чем, например, другие операционные системы, такие как Windows, Linux, VxWorks и QNX. Таким образом, он подходит для приложений, которые могут использовать преимущества недорогого процессора и небольшого объема памяти. Но, выбрав меньше памяти, разработчики могут прийти к выводу, что они ограничивают код и приложения, которые может использовать их система. Для решения этой проблемы Express Logic теперь может включать «загружаемые модули приложения» в ThreadX. Это означает, что небольшая компьютерная система может динамически получать дополнительные инструкции по сети или из локального запоминающего устройства (флэш-карта SD, карта памяти USB, небольшой жесткий диск и т. д.). Таким образом, дополнительные или более крупные приложения все еще могут работать на небольшом компьютере, и компании могут загружать новый или пересмотренный код, не беспокоясь о нехватке памяти для целевого процессора.

Согласно Express Logic, модули ThreadX представляют собой наборы потоков приложений, не связанных с ядром ThreadX. Вместо этого модули загружаются в целевую память и используют службы ядра ThreadX через интерфейс с менеджером модулей. Диспетчер модулей ThreadX - часть ядра системы запускает модуль и обрабатывает все запросы модулей для API-сервисов ThreadX. Хотя ThreadX имеет только одну копию диспетчера модулей, он не ограничивает количество модулей, которые могут быть загружены одновременно, а также не ограничивает количество потоков в любом модуле.[Источник 3]

Поддерживаемые архитектуры

Данная ОС поддерживает следующие архитектуры:

  • ARM7, ARM9, ARM11
  • Cortex-M, Cortex-R, Cortex-A
  • Cortex-Axx 64-bit
  • TrustZone ARMv8-M
  • AndesCore RISC-V
  • Blackfin BF5xx, BF6xx, BF7xx
  • SHARC
  • CM4xx
  • Ambiqmicro Apollo MCU
  • Cadence Xtensa и Diamond
  • CEVA TeakLite-III
  • Cypress
    • PSoC, PSoC 4, PSoC 5, PSoC 6
    • FM0+, FM3, FM4
    • WICED WiFi
  • EnSilica eSi-RISC
  • Infineon
    • XMC1000
    • XMC4000
    • TriCore
  • Intel & Intel FPGA
    • ARM (Cyclone SOC, Arria 10 SOC)
    • NIOSII
    • x86PM
  • Microchip
    • ARM (SAM)
    • AVR32
    • PIC24
    • PIC32
  • Microsemi RISC-V
  • NXP
    • ARM (LPC, i.MX, Kinetis)
    • 68K
    • Coldfire
    • PowerPC
  • Renesas
    • ARM (Synergy, RZ)
    • H8/300H
    • RX
    • SH
    • V850
  • Silicon Labs EFM32
  • ST STM32
  • Synopsys
    • ARC 600, 700
    • ARC EM, ARC HS
  • Texas Instruments
    • ARM (Tiva-C, Sitara, OMAP)
    • C5xx
    • C6xx
  • Wave Computing
    • MIPS32 4Kx, 24Kx, 34Kx, 1004K
    • microAptiv, interAptiv, proAptiv
    • M-Class
  • Xilinx

Симметричная и асимметричная многопроцессорная обработка

ThreadX доступна для многоядерных систем в режимах Symmetric Multiprocessing (SMP) или Asymmetric Multiprocessing (AMP), предоставляя разработчикам максимальную гибкость для использования ThreadX как в однородных, так и в гетерогенных системах.

При использовании однородных процессоров, таких как ARC MPCore, Xilinx Zynq и MIPS 34K и 1004K, каждый процессор выполняет один и тот же код из одной копии в памяти. Однородные процессоры также могут использоваться в режиме AMP, где каждый процессор является более независимым и может запускать другой код из собственной локальной памяти. Гетерогенные процессоры, такие как серия TI OMAP и новая архитектура ARM big.LITTLE, не используют режим SMP, поскольку их процессоры, как правило, не могут выполнять одинаковые инструкции из одной и той же копии в памяти и почти всегда работают в режиме AMP.

ThreadX / SMP оптимизирует эффективность процессора с помощью автоматической балансировки нагрузки и / или программно-ориентированной привязки к процессору. Разработчики могут использовать эту функцию для запуска приложений практически независимо от нескольких процессоров в системе или для явного контроля использования каждого процессора. ThreadX / SMP автоматически запускает потоки приложений на любом доступном процессоре, прозрачно отображая многопоточную систему реального времени на многоядерную архитектуру.

В режиме AMP в однородных или гетерогенных многоядерных системах ThreadX работает на одном или нескольких процессорах, обычно из локальной памяти процессора, с отдельными копиями для каждого процессора. Если система состоит из разнородных процессоров, то каждая копия ThreadX отличается, построенная для работы на конкретной архитектуре процессора. Например, OMAP от TI объединяет ядро ​​ARM и ядро ​​TI DSP в неоднородной многоядерной системе, которая может запускать ThreadX на каждом процессоре или только на одном с другой ОСРВ на другом. Точно так же новый Xilinx Zynq (двухпроцессорная, однородная FPGA) может запускать ThreadX на одном процессоре, а Linux - на другом. Межпроцессорная координация обеспечивается приложением с использованием почтового ящика с общей памятью и / или с использованием MCAPI-совместимой системы связи PolyCore от PolyCore Software. Это обеспечивает преимущества обеих операционных систем, вместо того, чтобы пытаться растянуть любую из них для обработки всех системных функций.

В режиме SMP ThreadX / SMP поддерживает MPCore от ARM, MIPS 34K и 1004K и аналоговые устройства Blackfin BF561. В режиме AMP ThreadX поддерживает архитектуру Xilinx Zynq dual-Cortex-A8, а также практически любую гетерогенную архитектуру.[Источник 5]

Tracealyzer

Tracealyzer for ThreadX - это сложный инструмент для отслеживания и визуализации систем на базе ThreadX.

Tracealyzer дает беспрецедентное представление о поведении во время выполнения, что ускоряет отладку, проверку и оптимизацию производительности. Проблемы, которые в противном случае могут потребовать многих часов, дней или даже недель, могут быть быстро поняты с помощью Tracealyzer. Это избавит вас от многих часов разочаровывающих проб и ошибок. С Tracealyzer вы видите, что на самом деле происходит в вашей системе!

Tracealyzer обеспечивает современную визуализацию, разработанную с 2004 года, специально разработанную для систем на базе RTOS ведущим специалистом в этой области - компанией Percepio AB, базирующейся в Швеции.

Tracealyzer фактически понимает значение событий RTOS и выполняет расширенный анализ для улучшения визуализации и упрощения понимания. Это значительно облегчает вывод из данных, понимание проблемы и проверку решения. На рисунке 1 представлен пример анализа данных.

Рисунок 1 – Пример анализа данных[Источник 6]

Tracealyzer предоставляет более 25 взаимосвязанных представлений о поведении во время выполнения, включая выполнение задач (потоков), прерываний, взаимодействий между потоками, а также пользовательских событий, которые вы можете регистрировать из кода своего приложения. Tracealyzer может использоваться параллельно с традиционным отладчиком и дополняет представление отладчика перспективой более высокого уровня, идеально подходящей для понимания проблем реального времени, когда классического отладчика недостаточно.

Tracealyzer не требует дополнительного оборудования для отслеживания, что означает, что его можно использовать в развернутых системах для обнаружения редких ошибок, которые в противном случае трудно воспроизвести.

Использование

Этот раздел предназначен для того, чтобы дать краткий обзор возможностей и того, как можно использовать этот инструмент. Более подробная информация о различных функциях доступна в последующих разделах. На рисунке 2 показан главный экран трассировки.

Рисунок 2 – Главный экран трассировки[Источник 6]

Основное представление трассировки предоставляет всю записанную информацию на вертикальной временной шкале, фокусируясь на выполнении потоков, обработчиков прерываний и вызовов ядра. Это представление дополняется примерно 25 дополнительными представлениями, обеспечивающими обзоры высокого уровня или сфокусированные представления с разных точек зрения.

События ядра, такие как вызовы служб ядра и пользовательские события, отображаются в виде текстовых меток справа от трассировки планирования. Ярлыки имеют цветовую кодировку в зависимости от типа и статуса операции (красный для блокировки, зеленый для возобновления, желтый для пользовательских событий и т. д.).

Дополнительные виды

Ниже следует несколько примеров других представлений и диалогов, которые дополняют представление трассировки. Всего более 25 просмотров. Все виды связаны с основным окном трассировки или другим релевантным видом, который позволяет переключать перспективы без потери фокуса. На рисунке 3 можно видеть поиск.

Рисунок 3 – Поиск[Источник 6]

Чтобы найти конкретную задачу или прерывание в режиме трассировки, откройте Finder (сочетание клавиш «Ctrl-F»). В диалоговом окне «Finder» вы также можете указать фильтры на свойства синхронизации, такие как время отклика, чтобы быстро найти крайние случаи. На рисунке 4 показана история объекта.

Рисунок 4 – Просмотр истории объекта[Источник 6]

Просмотр истории объекта позволяет вам отслеживать конкретный объект ядра, например семафоры и мьютексы. Вы видите все операции с этим объектом и как его состояние изменяется в результате. Двойной щелчок в этом представлении выделяет событие в основном представлении трассировки. На рисунке 5 показана загруженность процессора.

Рисунок 5 – График загрузки процессора[Источник 6]

График загрузки ЦП отображает использование ЦП для каждой задачи и прерывание во времени. Это можно увеличить отдельно от основного представления трассировки, а также можно использовать для навигации по представлению трассировки двойным щелчком на графике.[Источник 6]

Уязвимости

Исследователи безопасности из компании Embedi раскрыли информацию об уязвимостях в платформе ThreadX RTOS, активно применяемой для обеспечения работы прошивок различных специализированных одночиповых систем, в том числе чипов для организации беспроводных коммуникаций. Прошивки на базе ThreadX используются в более чем 6 миллиардах различных промышленных и потребительских устройств. На примере беспроводного чипсета Marvell Avastar 88w8897 продемонстрирована возможность совершения реальной удалённой атаки, позволяющей выполнить код с привилегиями ядра операционной системы через отправку специально оформленного WiFi-пакета.

Эксплуатация уязвимости в RTOS-окружении ThreadX позволяет получить контроль над программным окружением, в котором выполняется прошивка (современные WiFi чипы реализуются на базе архитектуры FullMAC, подразумевающей наличие специализированного процессора, на котором выполнятся отдельная операционная система с реализаций своего беспроводного стека). Данное окружение выполняется в контексте беспроводного чипа и не имеет доступа к системной памяти (подключено через шину SDIO), поэтому для выполнения атаки на основную систему применяется ещё одна уязвимость в проприетарном модуле ядра для чипов Marvell Avastar, отвечающем за взаимодействие окружения прошивки и основной ОС. Эксплуатация уязвимости в драйвере осуществляется через отправку со стороны Wi-Fi SoC некорректно оформленных команд чрез шину SDIO, вызывающих переполнение стека.

Выявлено несколько путей совершения атаки, но наиболее простым является атака во время операции сканирования сети, которая автоматически запускается беспроводным чипом раз в пять минут. Уязвимость позволяет добиться контролируемого переполнения буфера в окружении на базе ThreadX при обработке специально оформленного пакета , полученного во время сканирования сети. В случае удачного стечения обстоятельств атакующий может переписать указатель, используемый для перехода при выполнении дальнейших операций. Атака не требует выполнения от пользователя каких-либо действий - достаточно наличия активного Wi-Fi у жертвы и нахождение в пределах досягаемости от беспроводной точки доступа атакующего.

Вероятность успешного проведения атаки оценивается в 50-60% для каждой попытки и зависит от стадии сканирования, на которой выполнена обработка пакета атакующего. Чип Marvell Avastar достаточно широко распространён и применяется для обеспечения работы Bluetooth и WiFi во многих смартфонах, планшетах, ноутбуках, медиацентрах, домашних маршрутизаторах, игровых контроллерах и автомобильных информационно-развлекательных системах, в том числе в таких устройствах, как Samsung Chromebook, Microsoft Surface, Sony PS4 и Valve Steamlink. Техника эксплуатации не специфична для чипов Marvell и может быть адаптирована для атаки на любые другие чипы, в прошивках которых используется RTOS ThreadX. Пример успешной атаки продемонстрирован для удалённого получения контроля за телеприставкой Valve Steamlink, основное программное окружение которой построено на основе Dеbian и ядра Linux 3.8.13.[Источник 7] Видео эксплуатации уязвимости можно видеть ниже:[Источник 8]

Источники

  1. Express Logic ThreadX Real time operating system (RTOS) // life.augmented [2019]. Дата изменения: 01.01.2019. URL: https://www.st.com/en/embedded-software/exp-rtos.html (дата обращения: 12.01.2019).
  2. Операционная система реального времени ThreadX с поддержкой семейства микроконтроллеров SH-2A Renesas // Symmetron [2019]. Дата изменения: 01.01.2019. URL: http://www.symmetron.ru/news/renesas-ThreadX.shtml (дата обращения: 12.01.2019).
  3. ThreadX RTOS Application Modules Need Less Memory // DesignNews [2019]. Дата изменения: 07.03.2011. URL: https://www.designnews.com/electronics-test/threadx-rtos-application-modules-need-less-memory/180643041430589 (дата обращения: 23.01.2019).
  4. THREADX RTOS Real-Time Operating System // expresslogic [2019]. Дата изменения: 01.01.2019. URL: https://rtos.com/solutions/threadx/real-time-operating-system/ (дата обращения: 12.01.2019).
  5. Design West: Express Logics ThreadX RTOS supports both symmetric and asymmetric multiprocessing for multicores // EETimes [2019]. Дата изменения: 24.03.2012. URL: https://www.eetimes.com/document.asp?doc_id=1317085 (дата обращения: 12.01.2019).
  6. 6,0 6,1 6,2 6,3 6,4 6,5 Tracealyzer for ThreadX // percepio [2019]. Дата изменения: 01.01.2019. URL: https://percepio.com/docs/ThreadX/manual/ (дата обращения: 12.01.2019).
  7. Уязвимость в прошивках на базе ThreadX, позволяющая атаковать различные устройства через WiFi // OpenNET [1996–2019]. Дата изменения: 19.01.2019. URL: https://www.opennet.ru/opennews/art.shtml?num=49985 (дата обращения: 23.01.2019).
  8. Zero click over the air explotation of Marvell Avastar Wi Fi // Youtube [2019]. Дата изменения: 11.01.2019. URL: https://www.youtube.com/watch?v=syWIn62M72Y (дата обращения: 23.01.2019).