Die Version 5.0 von RT-Thread, einem Echtzeitbetriebssystem (RTOS) für Internet-of-Things-Geräte, wurde veröffentlicht. Das System wird seit 2006 von einer Gemeinschaft chinesischer Entwickler weiterentwickelt und ist mittlerweile für fast 200 Plattformen, Chips und Mikrocontroller auf Basis der Architekturen x86, ARM, MIPS, C-SKY, Xtensa, ARC und RISC-V portiert. Die minimalistischen RT-Thread (Nano)-Builds benötigen nur 3 KB Flash und 1,2 KB RAM für den Betrieb. Für ressourcenstärkere IoT-Geräte steht eine voll funktionsfähige Version bereit, die Paketmanagement, Konfiguratoren, einen Netzwerkstack, GUI-Pakete, Sprachsteuerungssysteme, Datenbankdienste, Netzwerkservices und Skriptausführungsmaschinen unterstützt. Der Code ist in C geschrieben und wird unter der Lizenz Apache 2.0 verbreitet.
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).
- 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.

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.

Zu den neuen Funktionen der Version 5.0 gehört eine erhebliche Verbesserung der Unterstützung für Mehrkern- und Multithread-Systeme. So wurden beispielsweise der Netzwerkstapel und die Dateisysteme für den Betrieb im Multithread-Modus angepasst und der Scheduler in Varianten für Einkern- und SMP-Systeme unterteilt. Die Implementierung von TLS (Thread Local Storage) wurde hinzugefügt. Die Unterstützung für Cortex-A-Chips wurde verbessert. Zudem wurde die Unterstützung für 64-Bit-Systeme erheblich optimiert (TCP/IP-Stapel und Dateisysteme wurden für 64-Bit-Systeme verifiziert). Komponenten zur Steuerung von Flash-Speichern wurden integriert, und das Toolkit zur Erstellung von Treibern wurde überarbeitet.
Quelle: opennet.ru


