Início > brtos > BRTOS com suporte a Apps

BRTOS com suporte a Apps

Após lermos o artigo do Rodrigo Almeida da Unifei, que é muito bom por sinal, começamos a pensar na possibilidade de incluirmos o suporte a aplicativos no BRTOS. Aplicativos nada mais são do que programas independentes desenvolvidos utilizando uma API pré-existente. Através desta API é possível utilizar os recursos e drivers do sistema.

Já com essa ideia em mente, recebemos o contato de um português chamado Gonçalo que tinha a intenção de utilizar o BRTOS para o desenvolvimento de uma plataforma para jogos simples. Ele gostaria de desenvolver essa plataforma para ampliar seus conhecimentos sobre o desenvolvimento de software para embarcados. Assim, ele me perguntou sobre a possibilidade de tarefas serem instaladas dinamicamente no BRTOS. Eu lhe respondi que era possível, mas que ainda não tínhamos suporte. Assim, partimos para o desenvolvimento de um demo bem simples para demonstrar que era possível.

A implementação que fizemos para apps no BRTOS é completamente independente do sistema até agora. Simplesmente fizemos uma demonstração de como é possível implementá-la. O download do código fonte do sistema com uma API bem simples está disponível no site do google code do projeto. Também disponibilizamos o projeto dos dois aplicativos utilizados no demo.

http://brtos.googlecode.com/files/BRTOS%2520%252B%2520Apps.rar

Temos ainda um pequeno vídeo demonstrativo, onde os aplicativos são carregados de um cartão SD para a RAM através do terminal do BRTOS:

Esperamos que gostem do demo !!!

Anúncios
  1. 09/03/2012 às 18:45

    Adorei!

  2. 03/02/2016 às 3:25

    Bom dia Gustavo, tudo bem?
    Agora que eu estava de férias sobrou mais tempo para estudar. Porém, eu no achei nenhuma documentação ou manual de como fazer apps e nem sobre como funciona para criar as apps. Mas esse seu trabalho é notoriamente interessantíssimo. Você por algum acaso não tería algum material sobre isso ou podería me apontar algumas bibliografias ou conceitos que você tenha usado para chegar nesse resultado? assim eu podería pesquisar e estudar o assunto..
    O máximo que eu pude imaginar (viajar) foi que a api usasse ponteiros de funções com endereços estáticos, permitindo assim talvez que as apps fossem compiladas pelo gcc arm separadamente. e depois rodassem através de uma task dinâmicamente alocada. eu fiquei muito intrigado em entender como isso foi feito..
    Desde já agradeço!

    • 04/02/2016 às 17:35

      Olá William, que bom que você gostou da ideia. Quanto a documentação, realmente não existe nada pq nunca evoluímos muito o projeto. Para retirar um pouco a tua curiosidade, a ideia é basicamente o que você comentou. No sistema operacional gravado no firmware nós criamos uma estrutura com ponteiros de funções para todos os serviços do RTOS e gravamos essa estrutura em um endereço fixo na memória RAM. Assim, para criar um APP era somente necessário criar uma estrutura do mesmo tipo localmente no APP e apontar para esse endereço. Assim, todas as chamadas do sistema eram realizadas por essa estrutura de ponteiros de funções. Do sistema só era necessário utilizar os arquivos de header com os protótipos das funções. O grande problema é que em cada arquitetura/compilador é diferente para fixar uma variável em um endereço de memória.

      Para instalar o APP nós copiávamos o conteúdo da tarefa compilada a partir do endereço inicial para um bloco de RAM e utilizamos o inicio do código como o ponteiro das tarefas para instalar o APP. Se você achar interessante, o demo está disponível em:
      https://code.google.com/archive/p/brtos/downloads?page=2

      Se não me engano lá estão os projetos do firmware principal e dos apps. Qualquer dúvida estamos a disposição.

      Abraço.

      • 04/02/2016 às 22:04

        muitíssimo obrigado pela explicação, eu vou estudar o código do seu exemplo e tentar reproduzir com o compilador ac6 da ST, pois só tenho a stm32discovery aqui. abracos e uma ótima semana

  1. No trackbacks yet.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: