Um novo sistema operacional de código aberto para sistemas embarcados
RT-Thread Smart está trabalhando para abrir o código-fonte do mundo da IoT e da computação de ponta.
Há uma demanda crescente por sistemas operacionais incorporados, e é melhor quando aquele que você utiliza é de código aberto. A equipe de P&D do projeto RT-Thread passou dois anos de pesquisa e desenvolvimento intensivo para chegar à oferta mais recente do projeto: RT-Thread Smart. É um sistema operacional microkernel voltado principalmente para processadores de médio a alto padrão, como RISC-V ou Arm Cortex-A, que possui uma unidade de gerenciamento de memória (MMU) e fornece uma plataforma de software competitiva baseada em POSIX para todos os setores no setor integrado. espaço.
Quem precisa do RT-Thread Smart?
RT-Thread Smart é um sistema operacional microkernel profissional de alto desempenho para aplicações em tempo real. Ele oferece uma base de código aberto para dispositivos embarcados em qualquer mercado, incluindo segurança (por exemplo, câmeras de protocolo de Internet), controle industrial, dispositivos integrados, eletrônicos de consumo e qualquer outra coisa que utilize tecnologia embarcada (que cada vez mais significa "tudo"). É significativo porque, ao contrário dos sistemas operacionais IoT tradicionais, um sistema operacional microkernel pode preencher a lacuna entre um sistema operacional em tempo real (RTOS) tradicional e um sistema operacional comparativamente grande como o Linux para alcançar o melhor equilíbrio entre desempenho em tempo real, custo, segurança, velocidade de inicialização e muito mais.
Arquitetura do RT-Thread Smart
RT-Thread Smart divide um sistema em espaço de kernel e espaço de usuário, aproveitando as vantagens do MMU e dos métodos de chamada do sistema. Em seguida, ele divide o espaço de endereço para cada modo (um sistema de 32 bits fornece espaço de endereço 4G).
(RT-Thread, CC BY-SA 4.0)
O kernel RT-Thread Smart inclui a funcionalidade básica da plataforma e oferece suporte a personalizações. O ambiente de aplicativo de espaço do usuário do RT-Thread Smart usa musl libc para fornecer chamadas de interface POSIX e suporte de tempo de execução C. Ele também herda o ecossistema RT-Thread original, usando SCons ou outras ferramentas de construção como Autotools, Makefiles, CMake e assim por diante para apoiar o desenvolvimento, bem como os pacotes de software on-line prontos para uso do RT-Thread (mais de 342 no momento em que este livro foi escrito). Você pode até portar aplicativos Linux, como wget/cURL, BusyBox, OpenSSL e Simple DirectMedia Layer, para sua plataforma.
O kernel RT-Thread Smart compactado tem apenas 217 KB, com um sistema de arquivos raiz de 127 KB. O uso típico de memória é de cerca de 2 MB.
Incluindo suporte completo para sistemas de arquivos, pilhas de protocolos de rede e multimídia, leva apenas de três a cinco segundos para o RT-Thread concluir seu processo de inicialização. Sem executar ou carregar aplicativos de usuário complexos, o RT-Thread Smart requer menos de 500 ms para iniciar e estar pronto.
Com seu componente de interface de usuário (IU) integrado do Persimmon, o tempo que leva desde a inicialização até uma IU em execução é de cerca de um segundo. Em outras palavras, este é um sistema muito pequeno e rápido. É claro que “tempo real” não se trata de inicialização, mas de como o sistema funciona de forma consistente ao longo do tempo. Para RT-Thread, o desempenho em tempo real é uma prioridade e a latência de interrupção é inferior a 1 μs, o que atende à maioria dos casos de aplicação com os mais rígidos requisitos de tempo real.
RT-Thread Inteligente vs.
Você deve estar se perguntando sobre as diferenças entre RT-Thread Smart e RT-Thread. Simplificando, RT-Thread Smart é um sistema operacional RT-Thread baseado em RTOS, mas integra o processo do espaço do usuário. A parte do kernel do RT-Smart é essencialmente RT-Thread RTOS; ele é executado em endereços virtuais, adiciona gerenciamento de processos e usa mecanismos de comunicação entre processos, memória virtual/gerenciamento de espaço de endereço, carregadores ELF e assim por diante, e torna todos esses recursos componentes dentro do RT-Thread RTOS. Quando os componentes são desabilitados, o RT-Smart recorre ao RT-Thread RTOS.
Aqui está uma comparação:
RT-Thread | RT-Thread Smart | |
---|---|---|
Supported chips | Cortex-M/R, RISC-V RV32IMAC (and similar), Cortex-A MPU | MPU with MMU, such as ARM Cortex-A and RISC-V |
Compiling | The kernel and application are compiled into an image program. | The kernel and application can be separately compiled and executed. |
Memory | Runs on a linear address space (even with MMU) and uses virtual addressing with the physical address | Runs on a 32-bit system with the kernel running on more than 1GB, the user-space process that has full 4G address spaces are isolated from each other. Peripheral drivers must access peripherals with virtual addresses. |
Running errors | When an application fails, the overall system collapses. | When an application fails, it does not affect kernel and other process execution. |
Running model | Multi-thread model | Multiprocess model (multithread is supported within the process, and kernel threads are supported by the kernel) |
User model | Single-user model | Single-user model |
API | RT-Thread API, POSIX PSE52 | RT-Thread API (on kernel and userspace), plus a full POSIX API |
Real time | Preemptive hard real-time system | Preemptive hard real-time system |
Resource utilization | Very small | Relatively small |
Debugging | Generally debugged through the emulator | Supports GDB debugging and no emulator required |
RT-Thread RTOS é muito compacto. Todos os aplicativos e subsistemas são compilados na imagem e os aplicativos multithread são executados e compartilham o mesmo espaço de endereço.
RT-Thread Smart é independente. Sistemas e aplicativos são compilados e executados separadamente. Os aplicativos possuem um espaço de endereço completo e são mantidos isolados uns dos outros. Ele também herda todos os excelentes recursos de tempo real do RT-Thread e possui um ambiente POSIX.
Da mesma forma, ambos são compatíveis com a API RT-Thread, portanto, os aplicativos no RT-Thread RTOS podem ser facilmente portados para o RT-Thread Smart.
Incorporar código aberto
RT-Thread Smart é um projeto de código aberto, com código disponível no GitHub. Você pode baixar o código e sua documentação, experimentá-lo, enviar comentários e feedback e ajudar a divulgá-lo para mais defensores do código aberto. Os sistemas embarcados devem pertencer aos seus usuários, e há muitos desenvolvedores embarcados por aí que não percebem o que está disponível.
Se você é desenvolvedor, ajude a hackear o RT-Thread Smart! À medida que o projeto RT-Thread continua avançando, pretendemos tornar os mundos emocionantes da IoT e da computação de ponta em código aberto.