Dopo un anno di sviluppo, è disponibile la versione RT-Thread 5.1, un sistema operativo in tempo reale (RTOS) per dispositivi IoT. Il sistema è in sviluppo dal 2006 da parte di una comunità di sviluppatori cinesi ed è attualmente portato su 154 schede, chip e microcontrollori basati su architetture x86, ARM, MIPS, C-SKY, Xtensa, ARC e RISC-V. La versione minimalista di RT-Thread (Nano) richiede solo 3 KB di Flash e 1,2 KB di RAM per funzionare. Per i dispositivi IoT non strettamente limitati in termini di risorse, è disponibile una versione completamente funzionale, che supporta la gestione dei pacchetti, configuratori, stack di rete, pacchetti per implementazioni di interfacce grafiche, sistemi di controllo vocale, database, servizi di rete e motori per l'esecuzione di script. Il codice è scritto in C e distribuito sotto licenza Apache 2.0.
Il sistema operativo è composto da tre strati di base:
- Il kernel, che garantisce l'esecuzione di compiti in tempo reale. Il kernel fornisce primitive di base universali che coprono aree come gestione dei blocchi e sincronizzazione dei dati, pianificazione dei compiti, gestione dei thread, gestione dei segnali, code di messaggi, gestione dei timer, gestione della memoria. Le caratteristiche specifiche per l'hardware sono implementate a livello di libcpu e BSP, che includono i driver necessari e il codice per il supporto della CPU.
- Componenti e servizi che operano sopra il kernel e offrono astrazioni come il file system virtuale, il sistema di gestione delle eccezioni, lo storage in formato chiave/valore, l'interfaccia della riga di comando FinSH, lo stack di rete (LwIP) e framework di rete, librerie per supportare dispositivi, sottosistema audio, stack wireless, componenti per supportare Wi-Fi, LoRa, Bluetooth, 2G/4G. L'architettura modulare consente di collegare componenti e servizi in base alle proprie esigenze e alle risorse hardware disponibili.
- Pacchetti software. I componenti software di uso generale e le librerie di funzioni vengono distribuiti e installati in forma di pacchetti. Attualmente, il repository include oltre 450 pacchetti che offrono interfacce grafiche, applicazioni multimediali e applicazioni di rete, fino a sistemi di gestione dei robot e gestori basati su apprendimento automatico. I pacchetti forniscono anche motori per l'esecuzione di programmi in linguaggi come Lua, JerryScript, MicroPython, PikaScript e Rust (rtt_rust).

Caratteristiche della piattaforma:
- Supporto per le architetture:
- ARM Cortex-M0/M0+/M3/M4/M7/M23/M33 (supportati microcontrollori di produttori come 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.
- Architettura modulare espandibile, che consente di creare un ambiente adatto a sistemi con risorse limitate (requisiti minimi: 3 KB di Flash e 1.2 KB di RAM).
- Supporto di vari standard di interfaccia per lo sviluppo di software, come POSIX, CMSIS, API C++. Si sviluppa separatamente un layer RTduino per la compatibilità con le API e le librerie del progetto Arduino.
- Possibilità di estensione tramite un sistema di pacchetti e componenti plug-in.
- Supporto per lo sviluppo di applicazioni per il processamento ad alte prestazioni.
- Sistema di gestione dell'alimentazione flessibile che consente di mettere automaticamente il dispositivo in modalità di sospensione e di gestire dinamicamente tensione e frequenza in base al carico.
- Supporto per hardware per la crittografia e decrittografia, con la fornitura di librerie con vari algoritmi crittografici.
- Interfaccia unificata per l'accesso ai dispositivi periferici e attrezzature aggiuntive.
- FS virtuale e disponibilità di driver per filesystem come FAT, UFFS, NFSv3, ROMFS e RAMFS.
- Stack di protocolli per TCP/IP, Ethernet, Wi-Fi, Bluetooth, NB-IoT, 2G/3G/4G, HTTP, MQTT, LwM2M, ecc.
- Sistema di distribuzione e installazione remota degli aggiornamenti, che supporta la crittografia e la verifica tramite firma digitale, il ripristino dell'installazione interrotta, il recupero da guasti, l'annullamento delle modifiche, ecc.
- Sistema di moduli del kernel caricabili dinamicamente, che consente di assemblare e sviluppare componenti del kernel separatamente, e di caricarli dinamicamente all'occorrenza.
- Supporto per vari pacchetti di terze parti, come Yaffs2, SQLite, FreeModbus, Canopen, ecc.
- Possibilità di compilazione diretta del pacchetto BSP (Board Support Package) con componenti per il supporto di una specifica piattaforma hardware, e il suo caricamento sulla scheda.
- Presenza di un emulatore (BSP qemu-vexpress-a9) che consente di sviluppare applicazioni senza utilizzare schede reali.
- Supporto per compilatori e strumenti di sviluppo standard, come GCC, MDK Keil e IAR.
- Sviluppo di un ambiente di sviluppo integrato RT-Thread Studio IDE, che consente di creare e debugare applicazioni, caricandole sulle schede e gestendo le impostazioni. I plugin per lo sviluppo di software per RT-Thread sono disponibili anche per Eclipse e VS Code.
- Presenza di un'interfaccia della console Env, che semplifica la creazione di progetti e la configurazione dell'ambiente.
Tra le novità del nuovo rilascio:
- In RT-Smart, un sistema operativo ibrido basato su RT-Thread che separa le applicazioni dal kernel, è inclusa di default la supporto per i meccanismi epoll, eventfd, signalfd, timerfd e select. È stata implementata una sottosistema emulatore di terminale. Aggiunta la supporto per i dispositivi DFZU2EG MPSoC e cv181x-riscv.
- In RTduino, uno strato per garantire la compatibilità con l'ecosistema Arduino, è stata aggiunta la supporto per le schede raspberry-pico, stm32h503-st-nucleo, stm32h563-st-nucleo, stm32f412-nucleo, stm32f407-rt-spark.
- Aggiornati i componenti di terze parti, come ssh, sftp, weston e vim.
- Aggiunta la supporto per nuove schede e chip, come 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).
- Ottimizzato il funzionamento dei pianificatori di attività e della CPU. Aggiunta un'interfaccia per astrarre il pianificatore rt_sched.
- Ottimizzata l'operatività sui sistemi multi-core.
- Fornita la possibilità di collegare gestori alle operazioni di allocazione della memoria malloc.
- Per le architetture ARM64 e RV64 è stata implementata la supporto per il backtrace del kernel.
- Proseguita l'implementazione del nuovo modello di driver per dispositivi.
- Nei driver virtio qemu-virt64-aarch64 e qemu-virt64-riscv è stata aggiunta la supporto per SDL2.
- Aggiunto un framework per lo sviluppo di driver clk.
- Nel DFS è stata aggiunta la configurazione exfat. Il kernel è stato impostato per utilizzare di default il file system dfsv2.
- Migliorato il supporto per i terminali TTY.
- Nel sistema di input/output è stato aggiunto il supporto per i flag O_DIRECT e O_SYNC.
- Nell'implementazione dei processi leggeri lwP (Lightweight Process) la funzione wp_new è stata sostituita con lwp_create. Aggiunta la funzione sys_setitimer.
- Nel gestore di memoria MM è stato aggiunto il supporto per il riservamento della memoria e implementata la funzione rt_aspace_mremap_range.
- Nella Libcpu è stato aggiunto il supporto per i processori ARM Cortex-M85 e Cortex-R52.
Fonte: opennet.ru
