Después de un año de desarrollo, se ha lanzado la versión RT-Thread 5.1, un sistema operativo en tiempo real (RTOS) para dispositivos de Internet de las Cosas. El sistema ha estado en desarrollo desde 2006 por una comunidad de desarrolladores chinos y actualmente está portado en 154 placas, chips y microcontroladores basados en arquitecturas x86, ARM, MIPS, C-SKY, Xtensa, ARC y RISC-V. La construcción minimalista de RT-Thread (Nano) requiere solo 3 KB de Flash y 1.2 KB de RAM para funcionar. Para los dispositivos IoT, que no están muy limitados en recursos, se ofrece una versión completamente funcional que admite gestión de paquetes, configuradores, pila de red, paquetes con implementación de interfaz gráfica, sistemas de control por voz, bases de datos, servicios de red y motores para ejecutar scripts. El código está escrito en C y se distribuye bajo la licencia Apache 2.0.
El sistema operativo se compone de tres capas básicas:
- El núcleo, que proporciona la ejecución de tareas en tiempo real. El núcleo ofrece primitivas básicas universales que abarcan áreas como gestión de bloqueos y sincronización de datos, planificación de tareas, gestión de hilos, manejo de señales, colas de mensajes, gestión de temporizadores, gestión de memoria. Las características específicas del hardware se implementan a nivel de libcpu y BSP, que incluyen los controladores necesarios y el código para el soporte de la CPU.
- Componentes y servicios que trabajan sobre el núcleo y ofrecen abstracciones como un sistema de archivos virtual, un sistema de manejo de excepciones, almacenamiento en formato clave/valor, interfaz de línea de comandos FinSH, pila de red (LwIP) y marcos de red, bibliotecas para el soporte de dispositivos, subsistema de audio, pila inalámbrica, componentes para soporte de Wi-Fi, LoRa, Bluetooth, 2G/4G. La arquitectura modular permite conectar componentes y servicios según las necesidades y los recursos de hardware disponibles.
- Paquetes de software. Los componentes de software de propósito general y las bibliotecas de funciones se distribuyen e instalan en forma de paquetes. Actualmente, el repositorio incluye más de 450 paquetes que ofrecen desde interfaces gráficas, aplicaciones multimedia y aplicaciones de red hasta sistemas de control robotizado y manejadores basados en aprendizaje automático. Los paquetes también incluyen motores para la ejecución de programas en lenguajes como Lua, JerryScript, MicroPython, PikaScript y Rust (rtt_rust).

Características de la plataforma:
- Soporte de arquitecturas:
- ARM Cortex-M0/M0+/M3/M4/M7/M23/M33 (se admiten microcontroladores de fabricantes como 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.
- Arquitectura modular ampliable que 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 diversas interfaces estándar para el desarrollo de software, como POSIX, CMSIS y API de C++. Se desarrolla por separado una capa RTduino para la compatibilidad con las API y bibliotecas del proyecto Arduino.
- Capacidad de expansión a través del sistema de paquetes y componentes conectables.
- Soporte para el desarrollo de aplicaciones para el procesamiento de información de alto rendimiento.
- Sistema de gestión de energía flexible que permite poner automáticamente el dispositivo en modo de suspensión y gestionar dinámicamente el voltaje y la frecuencia en función de la carga.
- Soporte de hardware para cifrado y descifrado, proporcionando bibliotecas con diversos algoritmos criptográficos.
- Interfaz unificada para el acceso a dispositivos periféricos y hardware adicional.
- FS virtual y controladores disponibles para FS como FAT, UFFS, NFSv3, ROMFS y RAMFS.
- Pila de protocolos para TCP/IP, Ethernet, Wi-Fi, Bluetooth, NB-IoT, 2G/3G/4G, HTTP, MQTT, LwM2M, etc.
- Sistema de entrega e instalación remota de actualizaciones que admite cifrado y verificación con firma digital, reanudación de instalaciones interrumpidas, recuperación ante fallos, reversión de cambios, etc.
- Sistema de módulos de núcleo cargados dinámicamente, que permite compilar y desarrollar componentes del núcleo por separado, y cargarlos de forma dinámica cuando sea necesario.
- Soporte para varios paquetes de terceros, como Yaffs2, SQLite, FreeModbus, Canopen, etc.
- Capacidad de compilar directamente el paquete BSP (Paquete de Soporte de Placa) con componentes para soportar una plataforma de hardware específica y cargarlo en la placa.
- Disponibilidad de un emulador (BSP qemu-vexpress-a9) que permite desarrollar aplicaciones sin el uso de placas reales.
- Soporte para compiladores y herramientas de desarrollo estándar, como GCC, MDK Keil e IAR.
- Desarrollo de un entorno de desarrollo integrado RT-Thread Studio IDE, que permite crear y depurar aplicaciones, cargarlas en las placas y gestionar configuraciones. También hay disponibles complementos para el desarrollo de programas para RT-Thread en Eclipse y VS Code.
- Disponibilidad de una interfaz de consola Env, que facilita la creación de proyectos y la configuración del entorno.
Entre los cambios en la nueva versión:
- En RT-Smart, un sistema operativo híbrido basado en RT-Thread que separa las aplicaciones del núcleo, se incluye por defecto soporte para mecanismos epoll, eventfd, signalfd, timerfd y select. Se ha implementado una subestructura de emulador de terminal. Se ha agregado soporte para los dispositivos DFZU2EG MPSoC y cv181x-riscv.
- En RTduino, la capa que proporciona compatibilidad con el ecosistema Arduino, se ha añadido soporte para las placas raspberry-pico, stm32h503-st-nucleo, stm32h563-st-nucleo, stm32f412-nucleo, stm32f407-rt-spark.
- Se han actualizado componentes de terceros, como ssh, sftp, weston y vim.
- Se ha agregado 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 funcionamiento de los programadores de tareas y CPU. Se ha añadido una capa para abstraer el programador rt_sched.
- Se ha realizado una optimización del rendimiento en sistemas multiprocesador.
- Se ha proporcionado la posibilidad de conectar controladores a las operaciones de asignación de memoria malloc.
- Para las arquitecturas ARM64 y RV64, se ha implementado soporte para la retrotrazabilidad (backtrace) del núcleo.
- Se ha continuado la transición a un nuevo modelo de controladores de dispositivos.
- En los controladores virtio qemu-virt64-aarch64 y qemu-virt64-riscv se ha añadido soporte para SDL2.
- Se ha añadido un marco para el desarrollo de controladores clk.
- En DFS se ha incorporado la configuración exfat. El núcleo por defecto ha sido trasladado a utilizar el sistema de archivos dfsv2.
- Se ha mejorado el soporte para terminales TTY.
- Se agregó soporte para las flags O_DIRECT y O_SYNC en el sistema de entrada/salida.
- En la implementación de procesos ligeros lwP (Lightweight Process), la función wp_new fue reemplazada por lwp_create. Se agregó la función sys_setitimer.
- El administrador de memoria MM ahora soporta la reserva de memoria y se implementó la función rt_aspace_mremap_range.
- Se añadió soporte para los procesadores ARM Cortex-M85 y Cortex-R52 en Libcpu.
Fuente: opennet.ru
