Die Veröffentlichung von RT-Thread 5.3, einem Echtzeitbetriebssystem (RTOS) für Geräte des Internets der Dinge, wurde bekanntgegeben. Das System wird seit 2006 von einer Community chinesischer Entwickler weiterentwickelt und ist derzeit auf 155 Boards, Chips und Mikrocontroller mit den Architekturen x86, ARM, MIPS, C-SKY, Xtensa, ARC und RISC-V portiert. Die minimalistische RT-Thread-Build (Nano) benötigt für den Betrieb lediglich 3 KB Flash und 1.2 KB RAM. Für IoT-Geräte, die nicht stark ressourcenbeschränkt sind, steht eine vollwertige Version bereit, die Paketverwaltung, Konfiguratoren, einen Netzwerk-Stack sowie Pakete mit Implementierungen für grafische Benutzeroberflächen, Sprachsteuerungssysteme, Datenbanken, Netzwerkdienste und Script-Engines unterstützt. Der Code ist in C geschrieben und wird unter der Apache-2.0-Lizenz veröffentlicht.
Das Betriebssystem besteht aus drei grundlegenden Schichten:
- Der Kernel, der die Ausführung von Aufgaben in Echtzeit ermöglicht. Der Kernel bietet universelle grundlegende Primitiven, die Bereiche wie Lock-Management und Datensynchronisation, Task-Planung, Thread-Management, Signalverarbeitung, Nachrichtenwarteschlangen, Timer-Verwaltung und Speicherverwaltung abdecken. Hardwarespezifische Merkmale werden auf der Ebene libcpu und BSP realisiert, die die erforderlichen Treiber und Codes zur Unterstützung der CPU enthalten.
- Komponenten und Dienste, die über dem Kernel arbeiten und Abstraktionen wie ein virtuelles Dateisystem, ein Ausnahmeverarbeitungssystem, einen Schlüssel/Wert-Speicher, eine Kommandozeilenoberfläche FinSH, einen Netzwerkstack (LwIP) und Netzwerk-Frameworks, Bibliotheken zur Unterstützung von Geräten, ein Audiosubsystem, einen Wireless-Stack sowie Komponenten zur Unterstützung von Wi-Fi, LoRa, Bluetooth, 2G/4G anbieten. Die modulare Architektur ermöglicht das Anschließen von Komponenten und Diensten basierend auf den eigenen Anforderungen und vorhandenen Hardware-Ressourcen.
- Programmpakete. Software-Komponenten allgemeiner Art und Funktionsbibliotheken werden in Form von Paketen verteilt und installiert. Derzeit umfasst das Repository mehr als 450 Pakete, die von grafischen Benutzeroberflächen, Multimedia-Anwendungen und Netzwerkanwendungen bis hin zu Robotersteuerungssystemen und Machine-Learning-Handlern reichen. In den Paketen sind auch Engines zur Ausführung von Programmen in den Sprachen Lua, JerryScript, MicroPython, PikaScript und Rust (rtt_rust) enthalten.

Plattformmerkmale:
- Unterstützung der Architekturen:
- ARM Cortex-M0/M0+/M3/M4/M7/M23/M33 (unterstützte Mikrocontroller von Herstellern wie 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.
- Erweiterbare modulare Architektur, die es ermöglicht, eine Umgebung zu schaffen, die für Systeme mit begrenzten Ressourcen geeignet ist (Mindestanforderungen - 3 KB Flash und 1,2 KB RAM).
- Unterstützung verschiedener Standartschnittstellen zur Softwareentwicklung, wie POSIX, CMSIS, C++ API. Eine separate Schicht namens RTduino wird entwickelt, um die Kompatibilität mit APIs und Bibliotheken des Arduino-Projekts zu gewährleisten.
- Erweiterungsmöglichkeiten über ein Paket- und Plugin-System.
- Unterstützung der Anwendungsentwicklung für die Hochleistungsverarbeitung von Informationen.
- Ein flexibles Energiemanagementsystem, das es dem Gerät ermöglicht, automatisch in den Schlafmodus zu wechseln und die Spannung sowie die Frequenz je nach Last dynamisch zu steuern.
- Unterstützung für Hardwarelösungen zur Verschlüsselung und Entschlüsselung, Bereitstellung von Bibliotheken mit verschiedenen kryptografischen Algorithmen.
- Ein einheitliches Interface für den Zugriff auf Peripheriegeräte und zusätzliches Equipment.
- Virtuelles FS und die Verfügbarkeit von Treibern für Dateisysteme wie FAT, UFFS, NFSv3, ROMFS und RAMFS.
- Protokoll-Stack für TCP/IP, Ethernet, Wi-Fi, Bluetooth, NB-IoT, 2G/3G/4G, HTTP, MQTT, LwM2M usw.
- Ein System zur Fernlieferung und Installation von Updates, das Verschlüsselung und digitale Signaturverifizierung unterstützt, die Wiederaufnahme unterbrochener Installationen, Wiederherstellung nach einem Fehler, Rollback von Änderungen usw.
- Ein System dynamisch ladbarer Kernelmodule, das die separate Zusammenstellung und Entwicklung von Kernelkomponenten ermöglicht und diese bei Bedarf dynamisch lädt.
- Unterstützung verschiedener Drittanbieter-Pakete, wie Yaffs2, SQLite, FreeModbus, Canopen usw.
- Möglichkeit zur direkten Kompilierung von BSP-Paketen (Board Support Package) mit Komponenten zur Unterstützung einer bestimmten Hardwareplattform und deren Laden auf das Board.
- Vorhandensein eines Emulators (BSP qemu-vexpress-a9), der die Entwicklung von Anwendungen ohne die Verwendung echter Boards 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, das Laden auf Boards und die Verwaltung von Einstellungen ermöglicht. Plugins zur Entwicklung von Programmen für RT-Thread sind auch für Eclipse und VS Code verfügbar.
- Vorhandensein einer Konsolenoberfläche Env, die das Erstellen von Projekten und die Konfiguration der Umgebung vereinfacht.
Zu den Änderungen in der neuen Version gehören:
- Die Unterstützung für die Entwicklung von Komponenten in Rust wurde erweitert. Hinzugefügt wurden Rust-Bindings für Threads, Mutexe, Semaphore, Nachrichtenwarteschlangen sowie für Operationen mit Speicher, Zeit und Dateien. Komponenten für die Integration mit SCons und Cargo wurden implementiert. Die automatische Erkennung von ARM-, AArch64- und RISC-V-Zielplattformen ist sichergestellt. Außerdem wurden prozedurale Makros für die Initialisierung und Registrierung von Befehlen hinzugefügt.
- Für Cortex-M-Mikrocontroller wurde die Unterstützung des Open-Firmware-Standards mit Beschreibung der Peripherie über Device Tree aufgenommen.
- Die Unterstützung für VirtIO 1.2 wurde hinzugefügt, einschließlich der Nutzung von Paketwarteschlangen, MMIO/PCI-Transports und DMA-Synchronisierung. Ergänzt wurden VirtIO-Treiber für 9P, crypto, RNG, SCMI und SCSI. Aktualisiert wurden zudem die VirtIO-Treiber für Netzwerk, Blockgeräte, Konsole, Eingabegeräte und GPU.
- Hinzugefügt wurde das DVFS-Framework (Dynamic Voltage and Frequency Scaling) zur dynamischen Steuerung der CPU- und Gerätefrequenzen. Die Integration mit der ARM-SCMI-Firmware für das Energiemanagement wurde umgesetzt. Auch die Lüftersteuerung wurde verbessert.
- Die Unterstützung für TEE-Umgebungen (Trusted Execution Environment) und den RPMSG-Mechanismus (Remote Processor Messaging) wurde hinzugefügt.
- Die Unterstützung für Unix-Sockets wurde implementiert.
- Unterstützung für die Schutzmechanismen drahtloser Netzwerke WPA3, EA (Enterprise Authentication), WAPI, OWE und DPP wurde hinzugefügt.
- Die Unterstützung für das Zeitsynchronisationsprotokoll PTP (Precision Time Protocol) wurde hinzugefügt.
- Das Clock Time-Framework für die Zeitverarbeitung wurde hinzugefügt. Es unterstützt hochpräzise Timer und die Zeitsynchronisierung aus mehreren Quellen. Das neue Framework ersetzt die zuvor verwendeten Komponenten ktime, cputime und hwtimer,
- Das Dateisystem 9PFS wurde implementiert und wird für den Dateiaustausch zwischen der Host-Umgebung und virtuellen Maschinen eingesetzt.
- In der Implementierung der leichtgewichtigen Prozesse lwP (Lightweight Process) wurde Unterstützung für die ARM-Architektur ergänzt und der vDSO-Mechanismus (virtual dynamic shared object) hinzugefügt. Dadurch lassen sich Handler aus dem Kernel in den Userspace verlagern und Kontextwechsel vermeiden.
- Im Kernel wurde die Unterstützung für 8- und 16-Bit-Atomaroperationen implementiert.
- Die Unterstützung für symmetrisches Multiprocessing (SMP) wurde für RISC-V-Prozessoren der XuanTie C/R-Serie und den Emulator QEMU virt64 hinzugefügt.
- Der USB-Stack CherryUSB 1.6.1 wurde aktualisiert.
- Neue DM-Treiber (Device Manager) für UFS, AHCI, NVMe, Ethernet, Intel HDA, Joysticks und Touchscreens wurden hinzugefügt.
Quelle: opennet.ru
