Спустя полгода работы выпущен релиз 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)
fiego
28.04.2024 08:35+1Интересно, но вот если б я хотел использовать это для ESP32, то хотелось бы больше информации, сравнения с ESP-IDF
SergeyKovalev
28.04.2024 08:35+1Не будет никакого сравнения, потому что поддержку ESP32 никто и не заявлял. Вообще, везде фигурирует слово Xtensa, но я не нашёл соответствующей платформы в полном списке архитектур https://www.rt-thread.io/board.html. В любом случае, даже если CPU поддерживается, то это не то же самое, что поддерживать весь SoC.
С другой стороны, есть серия ESP32-C* с RISC-V. Поэтому на ESP32-C* портировать можно, но кто-то должен этим сначала заняться :)
NutsUnderline
28.04.2024 08:35плохо смотрели. там есть esp32-c3 конкретно. минимум функций но и wifi и ble
NetBUG
28.04.2024 08:35Что и 802.11 и BLE?
Беглый поиск показывает семилетней давности проекты "мы взяли тогдашний RT-Thread и попытались прикрутить фрагменты ESP-IDF" типа такого https://github.com/gbcwbz/rtthread-esp , но это явно не то, про что вы говорите
NutsUnderline
28.04.2024 08:35как бы вот https://github.com/RT-Thread/rt-thread/tree/master/bsp/ESP32_C3
там readme все содержит
NutsUnderline
28.04.2024 08:35+1но вообще эта штука выглядит интереснее чем есть на самом деле. нельзя просто взять софт для одного контроллера и запустить на другом. arduino куда как ближе к этому
BeQuick
Спасибо за статью. Какие существенные отличия от FreeRTOS?