Houve discussões relacionadas a esta pergunta aqui: link
Extratos: O artigo do Linux Journal mencionado aqui está: link
Eu acho que as portas 8052 e M68HC12 são escolhas especialmente ruins para caracterizar o NuttX porque ambos têm alguns problemas, e o NuttX está agora na versão 5.16 com 63 lançamentos.
Eu completei a entrevista na aba "Publisher" aqui: link ; também há uma crítica: link .
Uma extensa documentação do NuttX está disponível aqui: link .
Os problemas com as peças hcs12 e 8051 são os seguintes:
8051 / 80c52: Essa arquitetura é realmente hostil ao RTOS. Ele possui uma pequena pilha de hardware (128 bytes no 8051, 256 no 80c52) em um local de memória dedicado (endereço 0). Para alternar tarefas, você deve copiar a pilha inteira da tarefa a ser bloqueada do endereço dedicado para algum local de salvamento e copiar a pilha inteira da tarefa a ser iniciada do local de salvamento para o local dedicado da pilha. YECH!
E desde então, a pilha é tão pequena. É muito, muito fácil sobrecarregar a pilha - especialmente durante o manuseio de interrupções.
A porta NuttX 8051 está completa e funcional (pelo menos na última vez que a usei). Mas, para torná-lo útil, você provavelmente teria que copiar toda a pilha em cada interrupção para evitar que ela transbordasse. Basicamente, eu perdi o interesse naquele momento, mas se alguém estava realmente motivado para usar o 8051, é factível (se não for bem recomendado).
O que foi bom na porta 8051 é que foi um ótimo exercício colocar o NuttX em um local de memória muito pequeno. A porta 8051 é executada em 32Kb de RAM - que inclui as bibliotecas do compilador RTOS, libc, um programa de teste substancial, .data / .bss e heap. E com um pouco de memória de sobra!
hcs12: Este é um projeto em que trabalho nas horas vagas, quando não estou fazendo mais nada. Ainda não está terminado e ainda não está pronto para o horário nobre.
No que diz respeito à comparação com outros RTOSs, eu realmente não tenho nenhuma resposta boa e autorativa porque não uso outros RTOSs. Mas aqui está o meu entendimento ingênuo:
O FreeRTOS possui muitos downloads e uma área realmente pequena de cerca de 4Kb. É o RTOS de escolha para os MCUs realmente pequenos. Uma porta FreeRTOS é fornecida por fornecedores de silício com praticamente todos os MCU. Portanto, é a opção RTOS padrão.
Existem dezenas de concorrentes com o FreeRTOS por aí. O ChiBIOS vem à mente imediatamente. Todos esses são planejadores minúsculos de tipos variados.
Para fazer uma comparação real, uma coisa que precisamos fazer primeiro é definir o que queremos dizer com um RTOS: é apenas um agendador? Ou é um conjunto integrado de recursos padrão do sistema operacional - como agendador, sistema de arquivos, drivers de dispositivo, gerenciamento de memória, rede, etc. A maioria dos sistemas operacionais, Linux, por exemplo, são ambientes de desenvolvimento completos, não apenas agendadores. NuttX é um sistema operacional completo é o mesmo sentido que o Linux. Aqui estão alguns outros:
RTEMS : Eu trabalhei com este. Existe sempre e deve ser muito estável. É grande; pense> 100kb. Eu acho que ele visa um pouco acima do mercado de MCU.
uCOS : Nunca usei, mas esse é o RTOS em vários gerenciadores de inicialização populares, não é? Minha impressão é que é semelhante ao RTEMS, mas eu realmente não sei do que estou falando.
Como eu compararia o NuttX com aqueles: Bem, é muito menor. A pegada inicial é de cerca de 20 KB. Uma configuração com todos os recursos é de 10 a 20 KB a mais. Outra diferença desses RTOSs é que o NuttX é muito orientado a padrões. Você pode pensar no NuttX como um pequeno Linux, semelhante ao trabalho. A maioria dos códigos que compila e executa no Linux também será executada no NuttX (alguns códigos do sistema, como código de rede ou daemons, podem precisar de alguns ajustes).
Eu acho que o RTEMS está mais focado em microprocessadores; O NuttX está mais focado em microcontroladores.