Nach einem Jahr Entwicklung steht RT-Thread 5.1, ein Echtzeitbetriebssystem (RTOS) für Internet der Dinge (IoT) Geräte, zur Verfügung. Das System wird seit 2006 von einer Gemeinschaft chinesischer Entwickler weiterentwickelt und ist derzeit für 154 Plattformen, Chips und Mikrocontroller auf Basis der Architekturen x86, ARM, MIPS, C-SKY, Xtensa, ARC und RISC-V portiert. Die minimalistische Version von RT-Thread (Nano) benötigt nur 3 KB Flash und 1,2 KB RAM für den Betrieb. Für ressourcenreiche IoT-Geräte wird eine voll funktionsfähige Version angeboten, die Paketmanagement, Konfigurationstools, einen Netzwerkstack, Pakete mit einer grafischen Benutzeroberfläche, Spracherkennungssysteme, Datenbankmanagementsysteme, Netzwerkservices und Skripting-Engines unterstützt. Der Code ist in C geschrieben und wird unter der Lizenz Apache 2.0 bereitgestellt.
Das Betriebssystem besteht aus drei grundlegenden Schichten:
- Ein Kern, der die Ausführung von Aufgaben in Echtzeit ermöglicht. Der Kern bietet universelle Basisprimitive, die Bereiche wie Lock- und Datensynchronisationsmanagement, Aufgabenplanung, Thread-Management, Signalverarbeitung, Nachrichtenwarteschlangen, Timerverwaltung und Speicherverwaltung abdecken. Hardwarespezifische Funktionen werden auf der Ebene von libcpu und BSP implementiert, die die erforderlichen Treiber und Code zur Unterstützung der CPU enthalten.
- Komponenten und Dienste, die über dem Kern arbeiten und Abstraktionen wie ein virtuelles Dateisystem, ein Ausnahmebehandlungssystem, einen Schlüssel/Wert-Speicher, die FinSH-Befehlszeilenschnittstelle, den Netzwerkstack (LwIP) und Netzwerkinfrastrukturen, Bibliotheken zur Unterstützung von Geräten, ein Audio-Subsystem, einen Wireless-Stack sowie Komponenten zur Unterstützung von Wi-Fi, LoRa, Bluetooth und 2G/4G anbieten. Die modulare Architektur ermöglicht das Anschließen von Komponenten und Diensten entsprechend den spezifischen Anforderungen und den verfügbaren Hardware-Ressourcen.
- Paketierte Software. Allgemeine Softwarekomponenten und Funktionsbibliotheken werden in Form von Paketen verteilt und installiert. Derzeit umfasst das Repository mehr als 450 Pakete, die von grafischen Benutzeroberflächen und Multimedia-Anwendungen bis hin zu Netzwerkapplikationen sowie Steuerungssystemen für Roboter und maschinenlernenden Prozessoren reichen. In den Paketen werden auch Engines bereitgestellt, die die Ausführung von Programmen in den Sprachen Lua, JerryScript, MicroPython, PikaScript und Rust (rtt_rust) ermöglichen.

Merkmale der Plattform:
- Unterstützte Architekturen:
- ARM Cortex-M0/M0+/M3/M4/M7/M23/M33 (unterstützt Mikrocontroller von Herstellern wie ST, Winner Micro, MindMotion, Realtek, Infineon, GigaDevice, 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.
- Erweiterbare modulare Architektur, die es ermöglicht, eine Umgebung zu schaffen, die für ressourcenbeschränkte Systeme geeignet ist (minimale Anforderungen — 3 KB Flash und 1,2 KB RAM).
- Unterstützung verschiedener standardisierter Schnittstellen für die Softwareentwicklung, wie POSIX, CMSIS und C++ API. Separat wird die RTduino-Schicht für die Kompatibilität mit den APIs und Bibliotheken des Arduino-Projekts entwickelt.
- Erweiterbarkeit durch ein Paket- und Plug-in-System.
- Unterstützung für die Entwicklung von Anwendungen zur leistungsstarken Informationsverarbeitung.
- Ein flexibles Energiemanagementsystem, das es ermöglicht, das Gerät automatisch in den Schlafmodus zu versetzen und Spannung sowie Frequenz je nach Last dynamisch zu steuern.
- Unterstützung von Hardware zur Verschlüsselung und Entschlüsselung sowie Bereitstellung von Bibliotheken mit verschiedenen kryptografischen Algorithmen.
- Ein einheitliches Interface für den Zugang zu Peripheriegeräten und zusätzlicher Hardware.
- Virtuelles Dateisystem und Verfügbarkeit von Treibern für Dateisysteme wie FAT, UFFS, NFSv3, ROMFS und RAMFS.
- Protokollstack für TCP/IP, Ethernet, Wi-Fi, Bluetooth, NB-IoT, 2G/3G/4G, HTTP, MQTT, LwM2M usw.
- Ein System zur Fernbereitstellung und Installation von Updates, das Verschlüsselung und digitale Signaturüberprüfung unterstützt, unterbrochene Installationen wiederaufnimmt, Wiederherstellung nach einem Fehler ermöglicht, Änderungen rückgängig macht usw.
- Ein System zur dynamischen Nachladung von Kernelmodulen, das es ermöglicht, Kernkomponenten separat zu erstellen und zu entwickeln, und sie bei Bedarf dynamisch zu laden.
- Unterstützung für verschiedene Drittanbieter-Pakete wie Yaffs2, SQLite, FreeModbus, Canopen usw.
- Die Möglichkeit der direkten Kompilierung eines BSP-Pakets (Board Support Package) mit Komponenten zur Unterstützung einer bestimmten Hardwareplattform und deren Installation auf der Platine.
- Verfügbarkeit eines Emulators (BSP qemu-vexpress-a9), der die Entwicklung von Anwendungen ohne den Einsatz realer Hardware ermöglicht.
- Unterstützung gängiger Compiler und Entwicklungswerkzeuge wie GCC, MDK Keil und IAR.
- Entwicklung einer eigenen integrierten Entwicklungsumgebung RT-Thread Studio IDE, die das Erstellen und Debuggen von Anwendungen sowie das Laden auf Platinen und die Verwaltung von Einstellungen ermöglicht. Entwicklungs-Plugins für RT-Thread sind ebenfalls für Eclipse und VS Code verfügbar.
- Verfügbarkeit einer Konsolenschnittstelle Env, die die Projektgestaltung und Umgebungseinrichtung vereinfacht.
Zu den Änderungen in der neuen Version gehören:
- In RT-Smart, dem hybriden Betriebssystem auf Basis von RT-Thread, das Anwendungen vom Kernel trennt, sind standardmäßig Mechanismen wie epoll, eventfd, signalfd, timerfd und select integriert. Ein Terminal-Emulator-System wurde implementiert. Unterstützung für die DFZU2EG MPSoC und cv181x-riscv Geräte wurde hinzugefügt.
- In RTduino, der Schicht zur Gewährleistung der Kompatibilität mit dem Arduino-Ökosystem, wurde die Unterstützung für die Platinen raspberry-pico, stm32h503-st-nucleo, stm32h563-st-nucleo, stm32f412-nucleo und stm32f407-rt-spark ergänzt.
- Drittanbieter-Komponenten wie ssh, sftp, weston und vim wurden aktualisiert.
- Unterstützung für neue Platinen und Chips wurde hinzugefügt, darunter 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).
- Die Effizienz der Task-Scheduler und der CPU wurde optimiert. Eine Schicht zur Abstraktion des rt_sched-Schedulers wurde hinzugefügt.
- Die Optimierung für Multicore-Systeme wurde durchgeführt.
- Es wurde die Möglichkeit geschaffen, Handler für Speicherzuweisungsoperationen malloc zu verbinden.
- Für ARM64- und RV64-Architekturen wurde die Unterstützung für Kernel-Backtracing implementiert.
- Der Übergang zu einem neuen Modell der Gerätetreiber wird fortgesetzt.
- In den Virtio-Treibern qemu-virt64-aarch64 und qemu-virt64-riscv wurde die Unterstützung für SDL2 hinzugefügt.
- Ein Framework zur Entwicklung von clk-Treibern wurde hinzugefügt.
- Im DFS wurde die Konfiguration für exfat hinzugefügt. Der Kernel wurde standardmäßig auf die Verwendung des Dateisystems dfsv2 umgestellt.
- Die Unterstützung für TTY-Terminals wurde verbessert.
- Im Eingabe-/Ausgabesystem wurde die Unterstützung für die Flags O_DIRECT und O_SYNC hinzugefügt.
- In der Implementierung leichter Prozesse (lwP) wurde die Funktion wp_new durch lwp_create ersetzt. Die Funktion sys_setitimer wurde hinzugefügt.
- Im Speicher-Manager MM wurde die Unterstützung für das Reservieren von Speicher hinzugefügt und die Funktion rt_aspace_mremap_range implementiert.
- In Libcpu wurde die Unterstützung für die Prozessoren ARM Cortex-M85 und Cortex-R52 hinzugefügt.
Quelle: opennet.ru
