Das Echtzeitsystem RT-Thread 5.1 wurde veröffentlicht.

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.

Das Echtzeitsystem RT-Thread 5.1 wurde veröffentlicht.

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

60GB SSD 8Gb DDR4