Efter et års udvikling er RT-Thread 5.1 nu tilgængelig, et realtidsoperativsystem (RTOS) til Internet of Things-enheder. Systemet har været udviklet siden 2006 af et fællesskab af kinesiske udviklere og er i øjeblikket porteret til 154 platforme, chips og mikrocontrollere baseret på x86, ARM, MIPS, C-SKY, Xtensa, ARC og RISC-V arkitekturer. Den minimalistiske version af RT-Thread (Nano) kræver kun 3 KB Flash og 1,2 KB RAM at køre. For IoT-enheder, der ikke er stærkt begrænsede i ressourcer, tilbydes en fuldfunktionel version, der understøtter pakkehåndtering, konfigurationer, netværksstak, implementering af grafiske interfacepakker, stemmeaktiverede systemer, databaser, netværkstjenester, og scriptsystemer. Koden er skrevet i C og distribueres under Apache 2.0 licensen.
Operativsystemet består af tre grundlæggende lag:
- Kernen, der muliggør udførelse af opgaver i realtid. Kernen tilbyder universelle grundlæggende primitive, der dækker områder som låshåndtering og datasynkronisering, opgaveplanlægning, trådadministration, signalbehandling, meddelelseskøer, timerstyring og hukommelsesstyring. Hardware-specifikke funktioner er implementeret på libcpu- og BSP-niveauet, som inkluderer nødvendige drivere og kode til understøttelse af CPU.
- Komponenter og tjenester, der arbejder oven på kernen og tilbyder sådanne abstraktioner som virtuel filsystem, undtagelseshåndteringssystem, lager i nøgle/værdi-format, kommandolinjegrænseflade FinSH, netværksstak (LwIP) og netværksrammer, biblioteker til støtte for enheder, lydundersystem, trådløs stak, komponenter til støtte for Wi-Fi, LoRa, Bluetooth, 2G/4G. Den modulære arkitektur muliggør tilslutning af komponenter og tjenester afhængigt af ens opgaver og tilgængelige hardware-ressourcer.
- Programmer, der er tilgængelige i pakker. Funktionelle komponenter og funktionsbiblioteker distribueres og installeres i form af pakker. I øjeblikket inkluderer repository over 450 pakker, der tilbyder alt fra grafiske grænseflader, multimediaapplikationer og netværksapplikationer til robotstyringssystemer og machine learning-baserede håndterere. Pakkerne indeholder også motorer til at organisere programudførelse på sprog som Lua, JerryScript, MicroPython, PikaScript og Rust (rtt_rust).

Platformfunktioner:
- Understøttelse af arkitekturer:
- ARM Cortex-M0/M0+/M3/M4/M7/M23/M33 (understøttede mikrocontrollere omfatter producenter som 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, HPMicro).
- ARC (SYNOPSYS)
- DSP (TI).
- C-Sky.
- x86.
- Udvidelig modulær arkitektur, der muliggør oprettelse af et miljø, der er velegnet til systemer med begrænsede ressourcer (minimumskrav — 3 KB Flash og 1,2 KB RAM).
- Understøttelse af forskellige standardgrænseflader til softwareudvikling, såsom POSIX, CMSIS, C++ API. En separat lag RTduino udvikles for at sikre kompatibilitet med API'er og biblioteker fra Arduino-projektet.
- Mulighed for udvidelse gennem et pakke- og komponentbaseret system.
- Understøttelse af applikationsudvikling til højtydende databehandling.
- Fleksibel strømbesparende styringssystem, der muliggør automatisk at sætte enheder i dvaletilstand og dynamisk styre spænding og frekvens afhængigt af belastningen.
- Understøttelse af hardware til kryptering og dekryptering, levering af biblioteker med forskellige kryptografiske algoritmer.
- Standardiseret grænseflade for adgang til perifere enheder og ekstra udstyr.
- Virtuel filsystem og tilgængelighed af drivere for filsystemer som FAT, UFFS, NFSv3, ROMFS og RAMFS.
- Protokolstack for TCP/IP, Ethernet, Wi-Fi, Bluetooth, NB-IoT, 2G/3G/4G, HTTP, MQTT, LwM2M osv.
- Et system til fjernlevering og installation af opdateringer, der understøtter kryptering og verifikation ved digital signatur, genoptagelse af afbrudt installation, genopretning efter fejl, tilbagerulning af ændringer osv.
- Et system med dynamisk indlæselige kernelmoduler, der muliggør separat bygning og udvikling af kernelkomponenter, og dynamisk indlæsning af disse, når behovet opstår.
- Understøttelse af forskellige tredjepartspakker, såsom Yaffs2, SQLite, FreeModbus, Canopen osv.
- Mulighed for direkte kompilering af BSP-pakken (Board Support Package) med komponenter til støtte for en bestemt hardwareplatform og dens indlæsning på boardet.
- Tilstedeværelsen af en emulator (BSP qemu-vexpress-a9), der muliggør udvikling af applikationer uden brug af fysiske boards.
- Understøttelse af standardkompilatorer og udviklingsværktøjer som GCC, MDK Keil og IAR.
- Udviklingen af et eget integreret udviklingsmiljø, RT-Thread Studio IDE, der gør det muligt at skabe og debugge applikationer, indlæse dem på boards og administrere indstillinger. Plugins til udvikling af programmer til RT-Thread er også tilgængelige for Eclipse og VS Code.
- Tilstedeværelsen af et konsolinterface Env, der forenkler oprettelsen af projekter og konfigurationen af miljøet.
Blandt ændringerne i den nye udgave:
- RT-Smart, et hybridoperativsystem baseret på RT-Thread, der adskiller applikationer fra kernen, inkluderer som standard support for mekanismerne epoll, eventfd, signalfd, timerfd og select. En terminalemulator under-system er implementeret. Support for DFZU2EG MPSoC og cv181x-riscv-enheder er tilføjet.
- I RTduino, et lag for at sikre kompatibilitet med Arduino-økosystemet, er support for raspberry-pico, stm32h503-st-nucleo, stm32h563-st-nucleo, stm32f412-nucleo, stm32f407-rt-spark plader tilføjet.
- Tredjeparts komponenter som ssh, sftp, weston og vim er blevet opdateret.
- Support for nye plader og chips såsom 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) er blevet tilføjet.
- Ydeevnen af opgaveplanlæggere og CPU er blevet optimeret. Et lag til abstraktion af rt_sched-planlæggeren er blevet tilføjet.
- Optimering af ydeevnen på multicore-systemer er blevet gennemført.
- Mulighed for at tilslutte håndterere til hukommelsesallokeringsoperationer malloc er blevet givet.
- Support for kernel backtrace er blevet implementeret for ARM64- og RV64-arkitekturer.
- Overgangen til en ny model for enhedsdrivere er fortsat.
- Support for SDL2 er blevet tilføjet i virtio-drivere qemu-virt64-aarch64 og qemu-virt64-riscv.
- Et framework til udvikling af clk-drivere er blevet tilføjet.
- I DFS er konfigurationen exfat blevet tilføjet. Kernen er som standard blevet oversat til at bruge FS dfsv2.
- Support for TTY-terminaler er blevet forbedret.
- Systemen for input/output har fået tilføjet støtte til flagene O_DIRECT og O_SYNC.
- I implementeringen af letvægtsprocesser lwP (Lightweight Process) er funktionen wp_new blevet erstattet af lwp_create. Funktionen sys_setitimer er blevet tilføjet.
- I MM-hukommelseshåndteringen er der tilføjet støtte til hukommelsesreservationsfunktioner, og funktionen rt_aspace_mremap_range er blevet implementeret.
- I Libcpu er der tilføjet støtte til processorerne ARM Cortex-M85 og Cortex-R52.
Kilde: opennet.ru
