Después de un año de desarrollo, ya está disponible RT-Thread 5.1, un sistema operativo en tiempo real (RTOS) para dispositivos de Internet de las cosas. El sistema ha sido desarrollado desde 2006 por una comunidad de desarrolladores chinos y actualmente ha sido portado a 154 placas, chips y microcontroladores basados en arquitecturas x86, ARM, MIPS, C-SKY, Xtensa, ARC y RISC-V. La versión minimalista RT-Thread (Nano) requiere sólo 3 KB de Flash y 1.2 KB de RAM para funcionar. Para dispositivos IoT que no tienen recursos muy limitados, se ofrece una versión con todas las funciones que admite administración de paquetes, configuradores, pila de red, paquetes con implementación de interfaz gráfica, sistemas de control por voz, DBMS, servicios de red y motores de ejecución. guiones. El código está escrito en C y distribuido bajo la licencia Apache 2.0.
El sistema operativo consta de tres capas básicas:
- Un kernel que permite ejecutar tareas en tiempo real. El kernel proporciona primitivas centrales genéricas que cubren áreas como administración de bloqueos y sincronización de datos, programación de tareas, administración de subprocesos, manejo de señales, colas de mensajes, administración de temporizadores y administración de memoria. Las funciones específicas del hardware se implementan en los niveles libcpu y BSP, que incluyen los controladores y el código necesarios para admitir la CPU.
- Componentes y servicios que se ejecutan sobre el kernel y ofrecen abstracciones como un sistema de archivos virtual, un sistema de manejo de excepciones, almacenamiento de claves/valores, interfaz de línea de comandos FinSH, pila de redes (LwIP) y marcos de redes, bibliotecas de soporte de dispositivos, subsistema de audio, Pila inalámbrica, componentes compatibles con Wi-Fi, LoRa, Bluetooth, 2G/4G. La arquitectura modular le permite conectar componentes y servicios según sus tareas y los recursos de hardware disponibles.
- Paquetes de programas. Los componentes de software de uso general y las bibliotecas de funciones se distribuyen e instalan en forma de paquetes. El repositorio incluye actualmente más de 450 paquetes, que ofrecen de todo, desde interfaces gráficas, aplicaciones multimedia y aplicaciones de red hasta sistemas de control de robots y procesadores basados en aprendizaje automático. Los paquetes también proporcionan motores para organizar la ejecución de programas en los lenguajes Lua, JerryScript, MicroPython, PikaScript y Rust (rtt_rust).

Características de la plataforma:
- Soporte de arquitectura:
- ARM Cortex-M0/M0+/M3/M4/M7/M23/M33 (se admiten microcontroladores de fabricantes como ST, Winner Micro, MindMotion, Realtek, Infineon, GigaDevic, Nordic, Nuvoton, NXP).
- BRAZO Cortex-R4.
- BRAZO 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).
- ARCO (SINOPSIA)
- DSP (TI).
- C-Cielo.
- x86.
- Arquitectura modular extensible que le permite crear un entorno adecuado para sistemas con recursos limitados (requisitos mínimos: 3 KB de Flash y 1.2 KB de RAM).
- Soporte para varias interfaces estándar para el desarrollo de programas, como POSIX, CMSIS, C++ API. La capa RTduino se está desarrollando por separado para ser compatible con la API y las bibliotecas del proyecto Arduino.
- Posibilidad de ampliación mediante sistema de paquetes y componentes plug-in.
- Soporte al desarrollo de aplicaciones para el procesamiento de información de alto rendimiento.
- Sistema de administración de energía flexible que le permite poner automáticamente el dispositivo en modo de suspensión y controlar dinámicamente el voltaje y la frecuencia dependiendo de la carga.
- Soporte de hardware para cifrado y descifrado, provisión de bibliotecas con varios algoritmos criptográficos.
- Interfaz unificada para acceso a dispositivos periféricos y equipos adicionales.
- Sistema de archivos virtual y disponibilidad de controladores para sistemas de archivos como FAT, UFFS, NFSv3, ROMFS y RAMFS.
- Pila de protocolos para TCP/IPEthernet, Wi-Fi, Bluetooth, NB-IoT, 2G/3G/4G, HTTP, MQTT, LwM2M, etc.
- Un sistema para la entrega e instalación remota de actualizaciones que admite cifrado y verificación mediante firma digital, reanudación de una instalación interrumpida, recuperación de una falla, reversión de cambios, etc.
- Un sistema de módulos del kernel cargados dinámicamente que le permite construir y desarrollar componentes del kernel por separado y cargarlos dinámicamente cuando sea necesario.
- Admite varios paquetes de terceros, como Yaffs2, SQLite, FreeModbus, Canopen, etc.
- La capacidad de compilar directamente un paquete BSP (Board Support Package) con componentes para admitir una plataforma de hardware específica y cargarlo en la placa.
- Disponibilidad de un emulador (BSP qemu-vexpress-a9), que permite desarrollar aplicaciones sin utilizar placas reales.
- Soporte para compiladores comunes y herramientas de desarrollo como GCC, MDK Keil e IAR.
- Desarrollo de nuestro propio entorno de desarrollo integrado RT-Thread Studio IDE, que le permite crear y depurar aplicaciones, cargarlas en placas y administrar configuraciones. Los complementos de desarrollo para RT-Thread también están disponibles para Eclipse y VS Code.
- La presencia de la interfaz de la consola Env, que simplifica la creación de proyectos y la configuración del entorno.
Entre los cambios en la nueva versión:
- RT-Smart, un sistema operativo híbrido basado en RT-Thread que separa las aplicaciones del kernel, admite mecanismos epoll, eventfd, signalfd, timerfd y select de forma predeterminada. Se ha implementado el subsistema del emulador de terminal. Se agregó soporte para dispositivos DFZU2EG MPSoC y cv181x-riscv.
- RTduino, una capa para garantizar la compatibilidad con el ecosistema Arduino, ha agregado soporte para las placas raspberry-pico, stm32h503-st-nucleo, stm32h563-st-nucleo, stm32f412-nucleo, stm32f407-rt-spark.
- Componentes de terceros actualizados como ssh, sftp, weston y vim.
- Se agregó soporte para nuevas placas y chips como 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).
- Se ha optimizado el trabajo de los programadores de tareas y las CPU. Se agregó una capa para abstraer el programador rt_sched.
- Se ha llevado a cabo la optimización del trabajo en sistemas multinúcleo.
- Se ha proporcionado la capacidad de conectar controladores a operaciones de asignación de memoria malloc.
- Para las arquitecturas ARM64 y RV64, se implementa la compatibilidad con el seguimiento del kernel.
- Continúa la transición hacia un nuevo modelo de controladores de dispositivos.
- Se agregó compatibilidad con SDL64 a los controladores virtio qemu-virt64-aarch64 y qemu-virt2-riscv.
- Marco agregado para desarrollar controladores clk.
- Se agregó la configuración exfat a DFS. El kernel se ha cambiado para utilizar el sistema de archivos dfsv2 de forma predeterminada.
- Soporte mejorado para terminales TTY.
- El sistema de E/S ha agregado soporte para los indicadores O_DIRECT y O_SYNC.
- En la implementación de procesos ligeros lwP (Lightweight Process), la función wp_new se reemplaza por lwp_create. Se agregó la función sys_setimer.
- Se agregó soporte para reserva de memoria al administrador de memoria MM y se implementó la función rt_aspace_mremap_range.
- Libcpu añade soporte para procesadores ARM Cortex-M85 y Cortex-R52
Fuente: opennet.ru
