Página 1 de 1

Devo ou não utilizar o RTOS?

MensagemEnviado: 12 Nov 2007 11:33
por lrfad2
Pessoal,

Atualmente me deparo com o seguinte problema. Estou na fase de transição de um 80251 para um LPC2138.

O programa do 80251 roda 3 "tasks" diferentes. É como se ele fizesse o seguinte: Roda o task 0 por 1 ms, salva todo o Stack e passa para o task1.
O task 1 roda por mais 1 ms, recupera a pilha e volta para o Task 0. O task 0 executa novamente por mais 1ms salva a pilha novamente e passa para o task2. O mesmo roda por 1ms, recupera a pilha e volta para o task0 e o precesso se repete. Sei que é um pouco complicado mesmo... :)

Bom, então qual é a questão?
Eu estou utilizando o uVision3 da keil e não sei como fazer isso. Outra opção que vejo é utilizar o RTOS, que nunca mexi antes.
Alguem tem alguma dica do caminho que devo trilhar? Ou algum exemplo de como salvar um stack ou como utilizar o RTOS?

Muito obrigado a todos pela atenção
Abraços

Re: Devo ou não utilizar o RTOS?

MensagemEnviado: 12 Nov 2007 13:15
por Rodrigo_P_A
Tem pronto www.freertos.org

MensagemEnviado: 12 Nov 2007 13:24
por RobL
No caso de micros do tamanho dos ARM e similares, usar sempre RTOS.
Não tem jeito, tem que sentar, estudar o RTOS escolhido, dar uma mexida, para adequar à sua aplicação, quando for o caso.
Depois é só alegria.

MensagemEnviado: 12 Nov 2007 15:23
por lrfad2
Rodrigo, vc já mexeu nisso? Eu não faço a mínima ideia por onde começar, o que fazer download, etc...

RobL, eu vou seguir as suas sugestões....

O problema é que não tenho muito tempo... então se puderem me ajudar com algumas dicas, serei grato. Só pra começar mesmo e depois eu me viro.

abraços

MensagemEnviado: 12 Nov 2007 15:46
por lrfad2
Ah outra coisa...
Teoricamente o uVision3 da Keil, já vem com um RTOS. Vcs sabem qual é o melhor para mexer (FreeRTOS ou Keil)? Qual tem mais exemplos, documentação disponível na net, mais fácil de usar, etc?

RTOS

MensagemEnviado: 19 Nov 2007 09:41
por precisao
Gente o q é RTOS ? , seria :

Real Time Operation System ?

Mas como posso ter um sistema operacional se estaria escrevendo um programa meu ? , nao entendi , alguem pode me ajudar ?

Marcos

MensagemEnviado: 19 Nov 2007 09:58
por xultz
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?

MensagemEnviado: 19 Nov 2007 10:04
por Rodrigo_P_A
lrfad2 escreveu:Ah outra coisa...
Teoricamente o uVision3 da Keil, já vem com um RTOS. Vcs sabem qual é o melhor para mexer (FreeRTOS ou Keil)? Qual tem mais exemplos, documentação disponível na net, mais fácil de usar, etc?


vou fazer um projetinho simples no Keil, e posto aqui..

MensagemEnviado: 20 Dez 2007 20:12
por tcpipchip

MensagemEnviado: 21 Dez 2007 07:55
por lrfad2
Galera.... Muito obrigado pelas dicas...
eu consegui fazer a parada funcionar... é bem fácil... pelo menos agora..rs