“Projeto e implementação em C/C++ para o processador Leon3 de sistema para gerência de letreiros eletrônicos”

UFSC/CTC/EEL/PPGEEL, 2015/1

Programação de Sistemas Embarcados (C++)

Prof. Eduardo Augusto Bezerra

O objetivo do projeto final da disciplina é o desenvolvimento de um software em C/C++ que atenda os requisitos listados a seguir.

Requisitos funcionais:

  • O sistema deverá apresentar mensagens de anunciantes em um letreiro eletrônico;
  • As mensagens devem ser apresentadas continuamente, e em sequencia, permanecendo no letreiro por um certo tempo;
  • Esporadicamente, após um número aleatório de propagandas, a informação de data/hora deve ser mostrada por alguns segundos, antes da sequencia de mensagens voltar a ser apresentada;
  • O sistema deverá possibilitar a inserção de novas mensagens de anunciantes;
  • O sistema deverá possibilitar a remoção de mensagens expiradas;
  • As novas mensagens deverão ficar armazenadas, e só passarão a ser apresentadas no letreiro após o usuário fornecer um comando para adicioná-las ao conjunto de mensagens ativas;
  • O sistema deve ser implementado de forma a possibilitar readequação para diferentes letreiros.

Requisitos não-funcionais e detalhes de implementação:

  • O software deverá ser desenvolvido para execução no processador Leon3 utilizando a plataforma Atlys do laboratório;
  • Utilização de uma fila (“Fila 1″) para armazenar as propagandas a serem apresentadas no letreiro (ver Figura 1);
  • Utilização de uma fila (“Fila 2″) para armazenar as novas propagandas a serem incluídas na fila das propagandas ativas (“Fila 1″);
  • Deve ser utilizado um botão da placa para realizar a remoção de todos as propagandas da “Fila 2″, e a inclusão na “Fila 1″. No momento em que o botão for pressionado, o sistema poderá interromper a apresentação das mensagens, pois estará passando por uma rotina de “manutenção”;
  • A remoção do sistema de uma mensagem expirada (ex. falta de pagamento por parte do anunciante), pode ser realizada por intermédio de um botão da placa. Por exemplo, quando uma determinada mensagem estiver sendo apresentada, o usuário pode pressionar um determinado botão, e uma mensagem de confirmação poderá ser apresentada. Ao responder “Sim”, o nodo em questão não deve ser adicionado no final da “Fila 1″;
  • A inclusão de novas propagandas no sistema pode ser realizada diretamente no computador hospedeiro, e enviadas para a placa Atlys. No momento do envio, um botão pode ser pressionado na placa Atlys, colocando o sistema embarcado em “espera” por novas mensagens de anunciantes, que devem ser adicionadas a “Fila 2″. Essas mensagens só serão enviadas para a “Fila 1″, quando o outro botão mencionado anteriormente for pressionado;
  • As filas devem ser implementadas por intermédio de listas encadeadas (ou duplamente encadeadas), utilizando alocação dinâmica de memória. Não devem ser utilizadas funções da STL;
  • Ao implementar as filas é importante respeitar os conceitos relacionados a esse tipo de estrutura de dados, ou seja, em uma fila só é possível realizar a inclusão no final (após o último nodo), e a leitura do nodo que se encontra na frente (primeiro nodo). Não devem existir facilidades para acesso aos demais nodos da fila, apenas o primeiro (leitura) e o último (escrita) nodo podem ser acessados. Assim, após apresentar uma propaganda, o nodo que se encontra na primeira posição (frente), deve ser removido, e incluído no final da fila;
  • As filas devem ser modeladas por intermédio de classes na linguagem C++. Devem ser definidas classes para representar os nodos, e a lista encadeada propriamente dita;
  • Devem ser definidas classes para modelagem das demais funcionalidades do sistema (ex. gerência do tempo, comunicação com o computador hospedeiro, gerência do display, entre outras);
  • O acesso ao “letreiro” deve ser modelado por intermédio de classes, usando o conceito de polimorfismo. O objetivo é possibilitar a adaptação do sistema a diversos tipos de letreiros como, por exemplo: letreiro simulado na tela do computador hospedeiro; display OLED da placa Atlys; ou outro letreiro qualquer;
  • Cada mensagem (propaganda) deve ser apresentada no display durante 10 segundos (usar 1 segundo durante os testes);
  • A informação de data/hora deve ser apresentada por 5 segundos (usar 1 segundo durante os testes);
  • A data/hora deve ser apresentada, aleatoriamente, a cada 3 a 6 propagandas.

fig1

Figura 1. Filas utilizadas na implementação do sistema de gerência de letreiros eletrônicos.

Dicas e observações:
  • Desenvolver um ÚNICO software (pode ser composto por diversos arquivos .h e .cpp);
  • O software deve ser projetado de forma a ser utilizado tanto na plataforma Atlys (saída no OLED), quanto no computador hospedeiro (saída na tela do computador hospedeiro);
  • O software precisa ser desenvolvido utilizando classes, herança, polimorfismo, e outros mecanismos de orientação a objetos, conforme discutido nas aulas da disciplina.
  • As tentativas mal sucedidas de utilização de recursos de programação da linguagem C++ (devido a limitações do compilador), devem ser relatadas, assim como as soluções adotadas;
  • Atenção!! Antes de realizar qualquer ligação elétrica na placa (ex. display OLED), o professor deve ser consultado para evitar possíveis danos.
  • Preparar uma documentação (relatório técnico) descrevendo a arquitetura do sistema, ferramentas utilizadas, e o fluxo utilizado para o desenvolvimento do software. Incluir comentários sobre a experiência ao utilizar orientação a objetos na implementação do sistema. Quais as vantagens e desvantagens? Quais recursos foram utilizados? Quais recursos gostaria de ter utilizado, e não foi possível devido as limitações do compilador? Porquê gostaria de ter utilizado (ou usou) determinados recursos? Reuso de módulos? Organização do código fonte? A documentação é parte fundamental da avaliação, e deverá ser preparada de forma a possibilitar futuras alterações no software desenvolvido;
  • Preparar um manual do usuário, que pode ser incluído no relatório técnico como um apêndice;
  • Consultar o tutorial da plataforma Atlys com LEON3, para maiores informacoes sobre as tecnologias envolvidas.

Avaliação e entrega:

  • O trabalho pode ser desenvolvido em grupos compostos por, no máximo, dois alunos. Porém a avaliação é individual;
  • A entrega do trabalho será realizada no moodle, respeitando o prazo máximo estabelecido;
  • A apresentação dos trabalhos será realizada na data definida na página da disciplina.