Alguns sistemas embarcados (a) precisam atender a requisitos difíceis em tempo real, e ainda (b) ter hardware muito limitado (o que dificulta ainda mais o atendimento a esses requisitos).
Se você não pode alterar o hardware, existem várias situações em que você é forçado a descartar o Linux e usar outra coisa:
- Talvez a CPU não tenha sequer uma MMU, o que torna impossível executar o Linux (exceto o uClinux e, até onde eu sei, o uClinux não é em tempo real).
- Talvez a CPU esteja relativamente lenta e a latência de interrupção de pior caso no Linux não atenda a algum requisito difícil, e alguns outros RTOS sintonizados para latência de interrupção de pior caso extremamente baixa podem atender ao requisito.
- Talvez o sistema tenha muito pouca memória RAM. Há alguns anos, uma configuração mínima do Linux exigia cerca de 2 MB de RAM; uma configuração mínima do eCos (com uma camada de compatibilidade permitindo a execução de alguns aplicativos originalmente projetados para rodar no Linux) exigia cerca de 20 kB de RAM.
- Talvez não exista porta de Linux para o seu hardware, e não há tempo suficiente para portar o Linux antes de você precisar lançar (trocadilho!) seu sistema. Muitos dos RTOS mais simples demoram muito menos tempo para migrar para um novo hardware do que o Linux.