O RT-Thread 5.0, o sistema operacional em tempo real (RTOS) para dispositivos IoT, foi lançado. O sistema foi desenvolvido desde 2006 por uma comunidade de desenvolvedores chineses e atualmente é portado para quase 200 placas, chips e microcontroladores baseados nas arquiteturas x86, ARM, MIPS, C-SKY, Xtensa, ARC e RISC-V. A versão minimalista do RT-Thread (Nano) requer apenas 3 KB de Flash e 1.2 KB de RAM para funcionar. Para dispositivos IoT que não são fortemente limitados em recursos, é oferecida uma versão completa que suporta gerenciamento de pacotes, configuradores, pilha de rede, pacotes com a implementação de uma interface gráfica, sistema de controle de voz, DBMS, serviços de rede e mecanismos para execução scripts. O código é escrito em C e distribuído sob a licença Apache 2.0.
Recursos da plataforma:
- Suporte de arquitetura:
- ARM Cortex-M0/M0+/M3/M4/M7/M23/M33 (microcontroladores de fabricantes como ST, Winner Micro, MindMotion, Realtek, Infineon, GigaDevic, Nordic, Nuvoton, NXP são suportados).
- ARM Cortex-R4.
- BRAÇO Cortex-A8/A9 (NXP).
- ARM7 (Samsung).
- ARM9 (Allwinner, Xilinx, GOKE).
- ARM11 (Fulhan).
- MIPS32 (Loongson, Ingênico).
- RISC-V RV32E/RV32I[F]/RV64[D] (sifive, Canaan Kendryt, bouffalo_lab, Núcleos, T-Head).
- ARC (SINOPSE)
- DSP (TI).
- c-céu.
- x86.
- Arquitetura modular extensível que permite criar um ambiente adequado para sistemas com recursos limitados (requisitos mínimos - 3 KB Flash e 1.2 KB RAM).
- Suporte para várias interfaces padrão para desenvolvimento de programas, como POSIX, CMSIS, C++ API. Separadamente, a camada RTduino está sendo desenvolvida para compatibilidade com a API e bibliotecas do projeto Arduino.
- Expansível através de um sistema de pacotes e plug-ins.
- Apoio ao desenvolvimento de uma aplicação para processamento de informação de alto desempenho.
- Um sistema flexível de gerenciamento de energia que coloca automaticamente o dispositivo no modo de hibernação e gerencia dinamicamente a tensão e a frequência dependendo da carga.
- Suporte de hardware para criptografia e descriptografia, fornecendo bibliotecas com vários algoritmos criptográficos.
- Interface unificada para acesso a dispositivos periféricos e equipamentos adicionais.
- Virtual FS e disponibilidade de drivers para FS como FAT, UFFS, NFSv3, ROMFS e RAMFS.
- Pilha de protocolos para TCP/IP, Ethernet, Wi-Fi, Bluetooth, NB-IoT, 2G/3G/4G, HTTP, MQTT, LwM2M, etc.
- Um sistema para entrega remota e instalação de atualizações que suporta criptografia e verificação por assinatura digital, retomando uma instalação interrompida, recuperando-se de uma falha, revertendo alterações, etc.
- Um sistema de módulos de kernel dinamicamente carregáveis que permite construir e desenvolver componentes de kernel separadamente e carregá-los dinamicamente quando necessário.
- Suporte para vários pacotes de terceiros, como Yaffs2, SQLite, FreeModbus, Canopen, etc.
- A capacidade de compilar diretamente um pacote BSP (Board Support Package) com componentes para suportar uma plataforma de hardware específica e carregá-lo na placa.
- A presença de um emulador (BSP qemu-vexpress-a9), que permite desenvolver aplicativos sem o uso de placas reais.
- Suporte para compiladores comuns e ferramentas de desenvolvimento como GCC, MDK Keil e IAR.
- Desenvolvimento de nosso próprio ambiente de desenvolvimento integrado RT-Thread Studio IDE, que permite criar e depurar aplicativos, carregá-los em placas e gerenciar configurações. Plugins de desenvolvimento RT-Thread também estão disponíveis para Eclipse e VS Code.
- A presença da interface do console Env, que simplifica a criação de projetos e a configuração do ambiente.
O sistema operacional consiste em três camadas básicas:
- Um kernel que executa tarefas em tempo real. O kernel fornece primitivas básicas genéricas que cobrem áreas como gerenciamento de bloqueio e sincronização de dados, agendamento de tarefas, gerenciamento de threads, manipulação de sinais, enfileiramento de mensagens, gerenciamento de timer, gerenciamento de memória. Recursos específicos de hardware são implementados no nível libcpu e BSP, que incluem os drivers e códigos necessários para suportar a CPU.
- Componentes e serviços executados sobre o kernel e oferecem abstrações como sistema de arquivos virtual, sistema de tratamento de exceções, armazenamento de chave/valor, interface de linha de comando FinSH, pilha de rede (LwIP) e estruturas de rede, bibliotecas para suporte a dispositivos, subsistema de som, pilha sem fio, componentes para suportar Wi-Fi, LoRa, Bluetooth, 2G/4G. A arquitetura modular permite conectar componentes e serviços dependendo de suas tarefas e recursos de hardware disponíveis.
- Pacotes de software. Componentes de software de uso geral e bibliotecas de funções são distribuídos e instalados na forma de pacotes. Atualmente, o repositório inclui mais de 450 pacotes, desde GUIs, aplicativos multimídia e de rede até sistemas de controle de robôs e processadores de aprendizado de máquina. Os pacotes também fornecem engines para organizar a execução de programas em Lua, JerryScript, MicroPython, PikaScript e Rust (rtt_rust).
Dos novos recursos adicionados na versão 5.0, pode-se notar uma melhoria significativa no suporte para sistemas multi-core e multi-thread (por exemplo, a pilha de rede e os sistemas de arquivos são adaptados para funcionar no modo multi-threaded, o agendador é dividido em opções para sistemas single-core e SMP). Implementação adicionada de TLS (Thread Local Storage). Suporte aprimorado para chips Cortex-A. Suporte significativamente aprimorado para sistemas de 64 bits (pilha TCP/IP e sistemas de arquivos verificados para sistemas de 64 bits). Componentes integrados de gerenciamento de memória Flash. As ferramentas para criar drivers foram redesenhadas.
Fonte: opennet.ru