Irfad, se você tem alguma grana prá investir, compra o sistema X da eSysTech, daqui de Curitiba. O lado bom é que o manual é em português, e o suporte técnico também
Eu dei uma olhada no manual dele (não cheguei a usar) e me parece ser bem bacana, ele vai simplificar bastante teu desenvolvimento. O preço pode parecer um pouco salgado, mas você vai poder usá-lo em quantos projetos quiser, e isso é uma baita vantagem (além de ser royaltie free).
Precisao, a definição de RTOS é essa.
Em ambientes embarcados (no nosso caso, placas com microcontroladores) os SO´s facilitam a vida permitindo que várias rotinas funcionem de forma preemptiva, o que no fim das contas faz parecer que estão todas rodando ao mesmo tempo.
Funciona mais ou menos assim:
Imagine que você tenha algumas rotinas, uma que fica recebendo dados pela porta serial, interpreta, mastiga, e deixa os dados prontos para serem usados, outra rotina fica tratando um teclado, outra fica tratando um display, e assim por diante. Com um SO, você cria as rotinas livrementes, como se ela fosse fazer só aquilo (e realmente só o faz). No main(), normalmente as rotinas são chamadas com create_task(rotina_de_serial() ); create_task(rotina_de_teclado() ); e assim por diante e no final o main fica travado num for(;;);
O kernel do SO vai ficar ciclando entre as rotinas. Alguns SOs mais simples passam o comando para a rotina, e quando a rotina tiver um comando tipo sleep(); a execução volta pro kernel e este executa outra rotina, até que esta dê um sleep(); e assim ele vai girando entre as rotinas, e procurando respeitar os tempos de sleep();. Obviamente, se uma rotina pedir um sleep de 1 nano segundo, ele não vai conseguir respeitar, e o sleep acaba sendo maior. E também se uma rotina travar e não chamar o sleep, as outras rotinas também não serão chamadas.
Daí tem os SO´s mais evoluídos, que trocam de tarefas automaticamente, ele dá um pedaço de tempo (slice) para cada rotina, a menos que ela esteja num sleep, ele chama e interrompe e salva o contexto automaticamente e assim ele troca entre tarefas. O lado bom é que uma rotina travada nem sempre derruba o sistema, e o desenvolvimento das rotinas fica ainda mais trasparente pro programador.
Para o firmware, normalmente o SO é um arquivo objeto ( .o ) que é linkado na compilação, e as rotinas do kernel e de criação de tasks fica neste objeto, o resto, é firmware puro e simples.
Me fiz entender?
98% das vezes estou certo, e não estou nem aí pros outros 3%.