Nach einem Jahr der Entwicklung wird die RT-Thread 5.1 veröffentlicht, ein Echtzeitbetriebssystem (RTOS) fĂŒr Internet-of-Things-GerĂ€te. Das System wird seit 2006 von einer Gemeinschaft chinesischer Entwickler entwickelt und ist mittlerweile fĂŒr 154 Plattformen, Chips und Mikrocontroller auf Basis der Architekturen x86, ARM, MIPS, C-SKY, Xtensa, ARC und RISC-V portiert. Der minimalistische RT-Thread (Nano) benötigt lediglich 3 KB Flash-Speicher und 1,2 KB RAM. FĂŒr IoT-GerĂ€te mit höheren Ressourcenanforderungen steht eine voll funktionsfĂ€hige Version zur VerfĂŒgung, die Paketmanagement, Konfiguratoren, einen Netzwerkstack, GrafikoberflĂ€chen, Sprachsteuerungssysteme, Datenbanksysteme, Netzwerkanwendungen und SkriptausfĂŒhrungsengines unterstĂŒtzt. Der Code ist in C geschrieben und wird unter der Apache 2.0 Lizenz vertrieben.
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:
- In RT-Smart, einem hybriden Betriebssystem auf Basis von RT-Thread, das Anwendungen vom Kernel trennt, ist standardmĂ€Ăig die UnterstĂŒtzung fĂŒr die Mechanismen epoll, eventfd, signalfd, timerfd und select enthalten. Ein Terminals emulator-Subsystem wurde implementiert. UnterstĂŒtzung fĂŒr die DFZU2EG MPSoC und cv181x-riscv GerĂ€te wurde hinzugefĂŒgt.
- In RTduino, einer Schicht zur Sicherstellung der KompatibilitĂ€t mit dem Arduino-Ăkosystem, wurde die UnterstĂŒtzung fĂŒr die Raspberry-Pico-, stm32h503-st-nucleo-, stm32h563-st-nucleo-, stm32f412-nucleo- und stm32f407-rt-spark-Platinen hinzugefĂŒgt.
- Drittanbieter-Komponenten wie ssh, sftp, weston und vim wurden aktualisiert.
- Die UnterstĂŒtzung neuer Plattformen 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 FunktionalitĂ€t der Task-Scheduler und CPU wurde optimiert. Eine Abstraktionsschicht fĂŒr den rt_sched Scheduler wurde hinzugefĂŒgt.
- Die Leistung auf Mehrkernsystemen wurde optimiert.
- Die Möglichkeit zur Anbindung von Handlern an die Speicherzuweisungsoperationen malloc wurde bereitgestellt.
- FĂŒr die Architekturen ARM64 und RV64 wurde die UnterstĂŒtzung fĂŒr die Kernel-Backtracing (backtrace) Implementierung realisiert.
- Der Ăbergang zu einem neuen Modell der GerĂ€tetreiber geht weiter.
- 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.
- In DFS wurde die exfat-Konfiguration hinzugefĂŒgt. Der Kernel wurde standardmĂ€Ăig auf die Nutzung des dfsv2-Dateisystems umgestellt.
- Verbesserte UnterstĂŒtzung fĂŒr TTY-Terminals.
- Im Eingabe-/Ausgabesystem wurde UnterstĂŒtzung fĂŒr die Flags O_DIRECT und O_SYNC hinzugefĂŒgt.
- In der Implementierung leichter Prozesse lwP (Lightweight Process) wurde die Funktion wp_new durch lwp_create ersetzt. Die Funktion sys_setitimer wurde hinzugefĂŒgt.
- Im MM-Speicher-Manager wurde die UnterstĂŒtzung fĂŒr die Reservierung von Speicher hinzugefĂŒgt und die Funktion rt_aspace_mremap_range implementiert.
- In Libcpu wurde die UnterstĂŒtzung fĂŒr die ARM Cortex-M85 und Cortex-R52 Prozessoren hinzugefĂŒgt.
Quelle: opennet.ru
