Die Veröffentlichung von RT-Thread 5.0, einem Echtzeitbetriebssystem (RTOS) für Internet-of-Things-Geräte, wurde bekannt gegeben. Das System wird seit 2006 von einer Gemeinschaft chinesischer Entwickler weiterentwickelt und ist derzeit für fast 200 Platinen, Chips und Mikrocontroller basierend auf den Architekturen x86, ARM, MIPS, C-SKY, Xtensa, ARC und RISC-V portiert. Der minimalistischen RT-Thread (Nano) benötigt für den Betrieb nur 3 KB Flash und 1,2 KB RAM. Für IoT-Geräte, die nicht stark in ihren Ressourcen eingeschränkt sind, ist eine voll funktionsfähige Version verfügbar, die Paketverwaltung, Konfiguratoren, einen Netzwerk-Stack, Pakete mit grafischen Benutzeroberflächen, Sprachsteuerungssysteme, Datenbanksysteme, Netzwerkdienste und Engines zur Ausführung von Skripten unterstützt. Der Code ist in C geschrieben und wird unter der Lizenz Apache 2.0 verbreitet.
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).
- 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.

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.

Zu den neuen Funktionen, die in Version 5.0 hinzugefügt wurden, gehört eine bedeutende Verbesserung der Unterstützung für Mehrkern- und Multithread-Systeme (zum Beispiel wurde der Netzwerk-Stack und die Dateisysteme für den Betrieb im Multithread-Modus angepasst, der Scheduler wurde in Varianten für Ein-Kern-Systeme und SMP aufgeteilt). Die Implementierung von TLS (Thread Local Storage) wurde hinzugefügt. Die Unterstützung für Cortex-A-Chips wurde verbessert. Die Unterstützung für 64-Bit-Systeme wurde erheblich verbessert (der TCP/IP-Stack und die Dateisysteme wurden für 64-Bit-Systeme verifiziert). Komponenten zur Verwaltung des Flash-Speichers wurden integriert. Das Werkzeug für die Erstellung von Treibern wurde überarbeitet.
Quelle: opennet.ru


