Comunidade OSDevBrasil.net
Maio 22, 2012, 06:46:18 *
Bem-vindo, Visitante. Por favor faça o Login ou Registro.

Login com nome de usuário, senha e duração da sessão
Notícias: Anuncie a nossa comunidade a amigos, fóruns...
 
   Home   Ajuda Pesquisa Login Registrar  
Páginas: [1]
  Imprimir  
Autor Tópico: Sistemas Operacionais Para Sistemas Embarcados  (Lida 584 vezes)
anthony collucci
it not exist
Moderador Global
OS Full Member
*****

Karma: 3
Mensagens: 100


Ver Perfil WWW Email
« : Janeiro 31, 2010, 10:14:13 »

Bom Dia,

Estou abrindo esse topico para discutir sobre sistemas operacionais quer rodam em sistemas embarcados.

Estou construindo um circuito de acionamento de motores de passo, quero que ele controle ate 10 motores. Ele tem um cerebro que e um microcontrolador PIC, vai ter memoria ram e flash tambem.

Estou pensando na hipotese de ao invés de criar um software para controle de cada maquina que utilize essa placa. Eu desenvolver um sistema que aceite outros softwares criados para ele. De forma que ele possa ser usado em varias aplicações sem necessariamente alguem entender como a maquina funciona eletronicamente.

Meu uso para essa placa será para controlar telescopios. Mas um amigo que me ajuda a desenvolver esta trabalhando num uso para uma CNC.

Algum de voces ja ouviu falar em Sistemas Operacionais para Sistemas embarcados?

att,
Registrado

Mounter
Administrador
OS Sr. Member
*****

Karma: 12
Mensagens: 432


mrjostz@hotmail.com
Ver Perfil WWW Email
« Responder #1 : Janeiro 31, 2010, 05:48:05 »

Geralmente nesses casos é usado um SO com uma máquina virtual e os executáveis seriam programas java...
Registrado

╔╗╔╦══╦╗╔╦══╦╗
║╚╝║╔╗║╚╝║╔╗║║
║╔╗║╠╣║╔╗║╠╣╠╣
╚╝╚╩╝╚╩╝╚╩╝╚╩╝

Projeto SOmBRA - http://code.google.com/p/projeto-sombra

S.O.: Ubuntu 10.04
Browser: Google Chrome 10

cacio jg
OS Newbie
*

Karma: 1
Mensagens: 12


caciojg@hotmail.com
Ver Perfil Email
« Responder #2 : Março 02, 2010, 12:10:49 »

Se me permitem 'intrometer'.

Acho que é absolutamente possivel construir um SO para circuitos embarcados (Na verdade é um velho projeto meu).

Mas devemos nos ater a ideia de que um circuito embarcado é um circuito 'monotarefa', ele é criado para uma tarefa especifica (se não poderiamos simplesmente usar um PC), por isso um SO para um PIC seria um sistema operacional totalemente direcionado para aquele circuito.

Ou seja, do meu ponto de vista, teriamos que apenas nos 'basear' em OS de PC, mas nunca tentar 'adaptar' o SO de PC num PIC. E nesta linha de 'basear-se' num OS de PC, mas nunca adapta-lo, teriamos sim um meio de fazer um SO para PIC:

Uma maneira simples de implementar seria usar a memoria interna do PIC para gerar a 'BIOS'.
Nela nos inicializamos o PIC, criamos uma rotina de controle da RAM interna do PIC, ligamos alguma das maquinas de comunidação do PIC, e criamos uma sequencia de rotinas que seriam 'as funções do sistema'.

Essas funções seriam chamadas através de uma tabela de GOTO's calculados. Vou tentar dar um exemplo, imaginemos que a maquina usada seja a Serial, então o pic recebe um byte pela maquina serial, move para a primera alocação da RAM interna, e esperar para receber outro byte (que pode ser um argumento do 'comando', ou um sinalizador de 'fim de transmissão').

Depois vamos a decodificação, onde o PIC lê a primeira alocação da RAM interna, e adiciona esse valor os PCL (Program Counter Low), e com isso usamos a tabela de gotos calculados para pular para a função que queremos.

Dentro da função, podemos chamar novamente a função de leitura da memoria, para ler outros enredeços da RAM do PIC, para usar esse valores como argumentos da função.

eu criei a um tempo atrás uma rotina que permite ler todas os endereços de todos os bancos da RAM do PIC16F628A. Mas imagino que para o que você quer, terá que usar um PIC 'maior'.

deixe-me dar um código de exemplo do texto acima(em assembly PIC Mid-range, usando a USART para comunicar, e supondo que o byte enviado seja o byte 0):

   movf       rcreg,0
   movwf     operando  ; operando é o endereço 0 da RAM, do banco 0.
   *
   *
   *

   movf      operando,0
   addwf     PCL
;tabela de goto
tabela
   goto   motor1
   goto   motor2
   goto   hab_porta
   *
   *
   *

motor1
   bsf    portb,7 ; supondo que o bit 7 do portb 'ligue' o motor, habilitando a alimentação através de       
                       ;um transistor ou de um 'jogo' de portas lógicas
   movf  argumento,0 ; supondo que um segundo byte foi enviado, e gravado no end 1 banco 0 da RAM
                           ; esse byte poderia ter dois valores, um que indicar rotação horaria e outro para anti-horaria.
   movwf  PCL   ; cria um novo pulo
   goto     horario; vai para rotina de giro horario
   goto     anti-horario; rotina de giro anti-hoarario
*
*

e assim o programa seguiria, um terceria byte poderia ser enviado para o pic para dizer o numero de passos que o motor deve dar.
Desta maneira o controlador só teria que enviar ao sistema a sequencia de bytes 0,0,15 para o motor 1 girar no sentido horario 15 passos.

Do mesmo modo todas as outras funções do sistema podem ser implementadas, como leitura e escrita da memoria externa (que você disse que teria) etc.

ufa acho que ajudei, qualquer coisa pergunte.

« Última modificação: Março 02, 2010, 12:14:18 por cacio jg » Registrado
Bencz
OS Full Member
***

Karma: 0
Mensagens: 112



Ver Perfil
« Responder #3 : Junho 07, 2010, 02:04:59 »

Bom Dia,

Estou abrindo esse topico para discutir sobre sistemas operacionais quer rodam em sistemas embarcados.

Estou construindo um circuito de acionamento de motores de passo, quero que ele controle ate 10 motores. Ele tem um cerebro que e um microcontrolador PIC, vai ter memoria ram e flash tambem.

Estou pensando na hipotese de ao invés de criar um software para controle de cada maquina que utilize essa placa. Eu desenvolver um sistema que aceite outros softwares criados para ele. De forma que ele possa ser usado em varias aplicações sem necessariamente alguem entender como a maquina funciona eletronicamente.

Meu uso para essa placa será para controlar telescopios. Mas um amigo que me ajuda a desenvolver esta trabalhando num uso para uma CNC.

Algum de voces ja ouviu falar em Sistemas Operacionais para Sistemas embarcados?

att,

Olá, eu estou querendo criar um sistema também, e eu fiz uma busca por ai, e eu encontrei esses 2 projetos:

http://code.google.com/p/brtos/wiki/BRTOS
http://code.google.com/p/brtos/

eu estou querendo implementar uma maquina virtual em um sistema desse, para facilitar a minha vida também, como o Mounter falou, da para implementar uma MV de java, creio que ele está pensando em implementar essa maquina virtual no Sombra.

VM java -> http://www.codeproject.com/KB/cpp/jvm.aspx

No meu caso, eu estou querendo colocar uma maquina virtual que uns conhecidos meus estão criando
Registrado



Páginas: [1]
  Imprimir  
 
Ir para:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.16 | SMF © 2006-2009, Simple Machines XHTML 1.0 Válido! CSS Válido!