Опубліковано випуск RT-Thread 5.3, операційної системи реального часу (RTOS) для пристроїв інтернет-речей. Система розвивається з 2006 року спільнотою китайських розробників і зараз портована для 155 плат, чіпів та мікроконтролерів на базі архітектур x86, ARM, MIPS, С-SKY, Xtensa, ARC та RISC-V. Мінімалістичне складання RT-Thread (Nano) вимагає для роботи всього 3 КБ Flash та 1.2 КБ ОЗУ. Для IoT-пристроїв, сильно не обмежених у ресурсах, пропонується повнофункціональна версія, що підтримує управління пакетами, конфігуратори, мережевий стек, пакети з реалізацією графічного інтерфейсу, системи голосового управління, СУБД, мережевих сервісів та двигунів для виконання скриптів. Код написаний мовою Сі та поширюється під ліцензією Apache 2.0.
Операційну систему утворюють три базові шари:
- Ядро, що забезпечує виконання завдань як реального часу. Ядро надає універсальні базові примітиви, що охоплюють такі області, як керування блокуваннями та синхронізацією даних, планування завдань, керування потоками, обробка сигналів, черги повідомлень, керування таймером, керування пам'яттю. Специфічні для апаратного забезпечення особливості реалізовані на рівні libcpu та BSP, які включають необхідні драйвери та код для підтримки CPU.
- Компоненти та послуги, що працюють поверх ядра та пропонують такі абстракції як віртуальна файлова система, система обробки винятків, сховище у форматі ключ/значення, інтерфейс командного рядка FinSH, мережевий стек (LwIP) та мережеві фреймворки, бібліотеки для підтримки пристроїв, звукова підсистема, бездротовий стек, компоненти підтримки Wi-Fi, LoRa, Bluetooth, 2G/4G. Модульна архітектура дозволяє підключати компоненти та послуги залежно від своїх завдань та наявних апаратних ресурсів.
- Пакети програм. Програмні компоненти загального призначення та бібліотеки функцій поширюються та встановлюються у формі пакетів. В даний час репозиторій включає понад 450 пакетів, що пропонують від графічних інтерфейсів, мультимедійних додатків та мережевих додатків до систем керування роботами та обробників на базі машинного навчання. У пакетах також поставляються двигуни для організації виконання програм на мовах 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.
- Модульна архітектура, що розширюється, дозволяє сформувати оточення, що підходить для систем з обмеженими ресурсами (мінімальні вимоги — 3 КБ Flash і 1.2 КБ ОЗУ).
- Підтримує різні стандартні інтерфейси для розробки програм, таких як 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-пакета (Board Support Package) з компонентами для підтримки певної апаратної платформи та його завантаження на плату.
- Наявність емулятора (BSP qemu-vexpress-a9), що дозволяє розробляти програми без реальних плат.
- Підтримка типових компіляторів та інструментів для розробки, таких як GCC, MDK Keil та IAR.
- Розвиток власного інтегрованого середовища розробки RT-Thread Studio IDE, що дозволяє створювати та налагоджувати програми, завантажувати їх на плати, керувати налаштуваннями. p align="justify"> Плагіни для розробки програм для RT-Thread також доступні для Eclipse і VS Code.
- Наявність консольного інтерфейсу Env, що спрощує створення проектів та настроювання оточення.
Серед змін у новому випуску:
- Розширено підтримку розробки компонентів мовою Rust. Додані Rust-обв'язки для потоків, м'ютексів, семафорів, черг повідомлень, а також операцій з пам'яттю, часом та файлами. Реалізовані компоненти для інтеграції з SCons та Cargo. Забезпечено автоматичне визначення цільових платформ ARM, AArch64 та RISC-V. Додані процедурні макроси для ініціалізації та реєстрації команд.
- Для мікроконтролерів Cortex-M включено підтримку стандарту Open Firmware з описом периферії через Device Tree.
- Додано підтримку VirtIO 1.2 з можливістю використання черг пакетів, транспортів MMIO/PCI та синхронізації DMA. Додані VirtIO-драйвери 9P, crypto, RNG, SCMI та SCSI. Оновлено VirtIO-драйвери для мережі, блокових пристроїв, консолі, пристроїв введення та GPU.
- Доданий фреймворк DVFS (Dynamic Voltage and Frequency Scaling) для динамічного керування частотою CPU та пристроїв. Забезпечено інтеграцію з прошивкою ARM SCMI для керування енергоспоживанням. Поліпшено керування кулерами.
- Додана підтримка TEE-оточень (Trusted Execution Environment) та механізму обміну повідомленнями RPMSG (Remote Processor Messaging).
- Реалізовано підтримку Unix-сокетів.
- Додано підтримку механізмів захисту бездротових мереж WPA3, EA (Enterprise Authentication), WAPI, OWE та DPP.
- Додано підтримку протоколу синхронізації часу PTP (Precision Time Protocol).
- Додано фреймворк Clock Time для роботи з часом, що підтримує високоточні таймери та синхронізацію часу за кількома джерелами. Новий фреймворк прийшов на зміну компонентам ktime, cputime і hwtimer, що використовуються раніше.
- Реалізована файлова система 9PFS, що застосовується для обміну файлами між хост-оточенням і віртуальними машинами.
- У реалізації легковажних процесів lwP (Lightweight Process) з'явилася підтримка архітектури ARM та додана підтримка механізму vDSO (virtual dynamic shared object), що дозволяє перенести обробники з ядра в простір користувача та уникнути перемикань контексту.
- В ядрі реалізована підтримка 8- та 16-розрядних атомарних операцій.
- Додано підтримку симетричної мультипроцесорності (SMP) для RISC-V процесорів серії XuanTie C/R та емулятора QEMU virt64.
- Оновлено стек USB CherryUSB 1.6.1.
- Додано нові DM-драйвери (Device Manager) для UFS, AHCI, NVMe, Ethernet, Intel HDA, джойстиків та сенсорних екранів.
Джерело: opennet.ru
