Спустя полгода работы выпущен релиз RT-Thread 5.1, это RTOS (ОС реального времени) для устройств интернета вещей. Проект не новый, он появился в 2006 году и активно развивается всё это время. Сейчас ОС поддерживает свыше 150 различных систем, включая платы, чипы и микроконтроллеры. При этом архитектуры тоже разные — операционную систему можно назвать универсальной. С ней совместимы x86, ARM, MIPS, С-SKY, Xtensa, ARC и RISC-V. 

Что это за система и на что она способна?

Разработчики заявляют, что для работы требуется минимальный объём ресурсов, это 3 Кб Flash и 1.2 Кб ОЗУ. Но это для минималистичной сборки. Если у девайса больше возможностей, то и версия ОС используется другая. У неё есть уже управление пакетами, сетевой стек, графический интерфейс и другие возможности, включая системы голосового управления, СУБД, сетевых сервисов и скрипты.

Основные модули ОС:

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

  • компоненты и сервисы. Они работают поверх ядра и обеспечивают доступность виртуальной файловой системы, обработку исключений, хранилище в формате ключ/значение, интерфейс командной строки FinSH, сетевой стек (LwIP) и сетевые фреймворки, библиотеки для поддержки устройств, звуковая подсистема, беспроводной стек, компоненты для поддержки Wi-Fi, LoRa, Bluetooth, 2G/4G. Если какие-то из компонентов не нужны, их можно не подключать. Всё зависит от потребностей пользователя и аппаратных ресурсов, которые доступны

  • программные компоненты. Они доступны для расширенных версий ОС, всего предлагается почти 500 пакетов. Варианты самые разные — от графических интерфейсов, мультимедийных и сетевых приложений до управления роботизированными системами и машинного обучения. Компоненты совместимы с Lua, JerryScript, MicroPython, PikaScript и Rust (rtt_rust)

Архитектуры, которые поддерживаются системой:

  • ARM Cortex-M0/M0+/M3/M4/M7/M23/M33 (поддерживаются микроконтроллеры таких производителей, как ST, Winner Micro, MindMotion, Realtek, Infineon, GigaDevic, Nordic, Nuvoton, NXP)

  • ARM Cortex-R4

  • ARM Cortex-A8/A9 (NXP)

  • ARM7 (Samsung)

  • ARM9 (Allwinner, Xilinx, GOKE)

  • ARM11 (Fullhan)

  • MIPS32 (Loongson, Ingenic)

  • RISC-V RV32E/RV32I[F]/RV64[D] (sifive, Canaan Kendryt, bouffalo_lab, Nuclei, T-Head, HPMicro)

  • ARC (SYNOPSYS)

  • DSP (TI)

  • C-Sky

  • x86

Поскольку разработка китайская, то и, кроме традиционных архитектур, включены проекты разработчиков из КНР и Loongson.

Что ещё:

  • отличительная особенность этой операционной системы — модульная архитектура. Она даёт возможность создать окружение с минимальными требованиями к ресурсам, о чём и говорилось выше

  • ОС поддерживает разные интерфейсы для разработки софта, включая POSIX, CMSIS, C++ API. Отдельно развивается прослойка RTduino для совместимости с API и библиотеками проекта Arduino

  • расширить возможности ОС всегда можно при помощи как компонентов, так и модулей

  • если есть потребность, можно автоматически переводить устройство в режим сна и динамически управлять напряжением и частотой в зависимости от нагрузки

  • при необходимости можно разрабатывать и приложения для высокопроизводительной обработки данных

  • поддерживаются аппаратные средства для шифрования и расшифровки плюс поддерживаются и предоставляются библиотеки с разными криптографическими алгоритмами

  • упрощённый унифицированный интерфейс для работы с периферийными устройствами и сторонним оборудованием

  • собственная виртуальная файловая система плюс есть драйверы для FAT, UFFS, NFSv3, ROMFS и RAMFS

  • поддержка большого количества сетевых протоколов, например, TCP/IP, Ethernet, Wi-Fi, Bluetooth, NB-IoT, 2G/3G/4G, HTTP, MQTT, LwM2M

  • разработчики обеспечили возможность удалённой доставки и установки апдейтов, возобновление прерванной установки, восстановление после сбоя, предусмотрели и другие аварийные ситуации

  • поддерживаются такие пакеты, как Yaffs2, SQLite, FreeModbus, Canopen

  • есть эмулятор BSP qemu-vexpress-a9, который позволяет разрабатывать приложения без реальных плат

Но и это не всё

  • Да, в новой версии разработчики добавили, например, поддержку механизмов epoll, eventfd, signalfd, timerfd и select. Реализована подсистема эмулятора терминала. Добавлена поддержка устройств DFZU2EG MPSoC и cv181x-riscv.

  • ОС совместима со всей экосистемой Arduino плюс поддерживаются такие платы, как raspberry-pico, stm32h503-st-nucleo, stm32h563-st-nucleo, stm32f412-nucleo, stm32f407-rt-spark.

  • Кроме того, добавлено большое количество нового оборудования, включая HPMicro RISC-V, STM32 Nucleo, Adafruit Metro M4, Seeed Wio-Terminal, ST (stm32L431_tencentos, stm32h7s7-disco, stm32f407-lckfb-skystar, stm32h503-st-nucleo), Renesas (ek-ra8m1, ek-ra8d1, ra8d1-vision-board), AT32 (at32f402-start, at32f405-start), HT32 (ht32f52352, ht32f12366, AVR32 at32uc3a0256, at32uc3b0256), CVITEK (c906_little, cv18xx_risc-v), WCH (yd-ch32v307vct6), HC32 (ev_hc32f4a0_lqfp176, ev_hc32f460_lqfp100_v2), (ev_hc32f448_lqfp80, GD32 gd32407v-lckfb), NXP (frdm-mcxn947, frdm-mcxa153).

  • Добавлен фреймворк для разработки драйверов clk.

  • В DFS добавлена конфигурация exfat. Ядро по умолчанию переведено на использование ФС dfsv2.

  • Улучшена поддержка TTY-терминалов.

  • В системе ввода/вывода добавлена поддержка флагов O_DIRECT и O_SYNC.

  • В реализации легковесных процессов lwP (Lightweight Process) функция wp_new заменена на lwp_create. Добавлена функция sys_setitimer.

Код операционной системы написан на языке Си, распространяется он под лицензией Apache 2.0.

Комментарии (7)


  1. BeQuick
    28.04.2024 08:35
    +2

    Спасибо за статью. Какие существенные отличия от FreeRTOS?


  1. fiego
    28.04.2024 08:35
    +1

    Интересно, но вот если б я хотел использовать это для ESP32, то хотелось бы больше информации, сравнения с ESP-IDF


    1. SergeyKovalev
      28.04.2024 08:35
      +1

      Не будет никакого сравнения, потому что поддержку ESP32 никто и не заявлял. Вообще, везде фигурирует слово Xtensa, но я не нашёл соответствующей платформы в полном списке архитектур https://www.rt-thread.io/board.html. В любом случае, даже если CPU поддерживается, то это не то же самое, что поддерживать весь SoC.

      С другой стороны, есть серия ESP32-C* с RISC-V. Поэтому на ESP32-C* портировать можно, но кто-то должен этим сначала заняться :)


      1. NutsUnderline
        28.04.2024 08:35

        плохо смотрели. там есть esp32-c3 конкретно. минимум функций но и wifi и ble


        1. NetBUG
          28.04.2024 08:35

          Что и 802.11 и BLE?

          Беглый поиск показывает семилетней давности проекты "мы взяли тогдашний RT-Thread и попытались прикрутить фрагменты ESP-IDF" типа такого https://github.com/gbcwbz/rtthread-esp , но это явно не то, про что вы говорите


          1. NutsUnderline
            28.04.2024 08:35

            как бы вот https://github.com/RT-Thread/rt-thread/tree/master/bsp/ESP32_C3

            там readme все содержит


  1. NutsUnderline
    28.04.2024 08:35
    +1

    но вообще эта штука выглядит интереснее чем есть на самом деле. нельзя просто взять софт для одного контроллера и запустить на другом. arduino куда как ближе к этому