Programação de Sistemas Embutidos › 42594

código no paco
42594
área científica
Informática / Arquitetura dos Sistemas Computacionais
créditos
6
escolaridade
ensino teórico-prático (TP) - 3 horas/semana
idioma(s) de lecionação
Português, Inglês
objectivos

A área dos Sistemas Embutidos é, actualmente, das que têm maior expressão económica na indústria Electrónica, valendo, só na UE, dezenas de milhares de milhões de Euros. São a forma de dispositivo computacional mais comum hoje em dia, correspondendo a 98% dos dispositivos existentes.

O desenvolvimento de sistemas embutidos apresenta complexidades particulares. Os sistemas embutidos são sistemas normalmente baseados em microcontroladores que realizam um conjunto de funções inseridos (“encastrados”, “embutidos” ou, em inglês, embedded) num sistema maior e em que a interação com o utilizador, quando existe, se faz através de interfaces específico. Também se distinguem dos sistemas baseados em PC por não serem, em geral, destinados a serem configurados ou programados pelo utilizador. Os exemplos de sistemas embutidos são múltiplos e incluem exemplos tão díspares como comandos de televisão, sistemas de alarme e medidores de tensão arterial.

O objetivo geral desta Unidade Curricular é capacitar os alunos para criarem software para sistemas embutidos (embedded) num contexto de desenvolvimento empresarial, aplicando um conjunto de boas práticas e metodologias. Em concreto, será abordada a utilização de metodologias ágeis (unit-testing, programação por pares, continuous integration, ...), normas de desenvolvimento de código (code standards), análise de risco e modelização (UML, em particular).

competências

No final do semestre, os alunos conhecerão o processo de desenvolvimento de software para  um sistema embutido, quer na vertente tecnológica (hardware, firmware, ...) quer no processo de gestão de um projeto deste tipo, permitindo-lhe assim a integração em equipas de projeto neste domínio.

conteúdos
  • O que são Sistemas Embutidos?

    • Definição e caracterização dos Sistemas Embutidos.

  • Com que é que se constroem Sistemas Embutidos?

    • Soluções tecnológicas e arquiteturais para Sistemas Embutidos.

    • Desenvolvimento de firmware.

  • Como se fazem?

    • Projeto de Sistemas Embutidos. Metodologias de projeto em Sistemas Embutidos. Características particulares do projeto de Sistemas Embutidos. Organização geral do projeto em Engenharia.

    • Especificação de sistemas e engenharia de requisitos.

    • Metodologias e ferramentas para desenvolvimento firmware para sistemas embutidos. Unit-Testing e Peer-Review. Métricas de qualidade de software.

    • Aspetos críticos no desenvolvimento de sistemas embutidos

    • Análise de riscos em Engenharia.

Os conceitos abordados nas aulas serão levados à prática pelo desenvolvimento, durante o semestre, de um sistema embutido.

avaliação

A avaliação será baseada em três componentes:

  • conhecimentos adquiridos na disiciplina

    • avaliação formal escrita e avaliação contínua pelo docente

  • realização do trabalho prático

    • avaliação do grau e qualidade de execução do trabalho prática, através de elementos escritos (relatório, documentação, ...), apresentações e avaliação contínua pelo docente.

  • avaliação pelos pares

requisitos

Programação de Sistemas Embutidos é uma Unidade Curricular terminal, ao nível do 2.º ciclo, dedicada ao desenvolvimento de firmware para sistemas embutidos, focando-se nas metodologias e processos de desenvolvimento de código. Os alunos já deverão saber trabalhar com sistemas baseados em micro-controlador, não sendo, por isso, uma UC para introduzir os alunos aos micro-controladores e à sua programação.

Como pré-requisito, espera-se que o aluno conheça o funcionamento e operação de micro-processadores, a arquitetura de sistemas baseados em micro-processadores e os periféricos mais comuns num micro-controlador, bem como a sua operação. É também pré-requisito ser capaz de, autonomamente, desenvolver código em C ou C++ para micro-controladores.

metodologia

A abordagem às matérias é feita de forma interativa, apresentando problemas e situações concretas da prática da Engenharia e procurando então as soluções para as questões introduzidas.

Em simultâneo, os alunos desenvolvem um projeto concreto, em que deverão aplicar os conhecimentos adquiridos durante as aulas.

bibliografia recomendada

Beck, K., Beedle, M., van Bennekum, A., Cockburn, A., Cunningham, W., Fowler, M., … Sutherland, J. (2001). The Agile Manifesto. Retrieved from http://agilemanifesto.org/

Fowler, M. (2004). UML distilled: a brief guide to the standard object modeling language (3rd edition). Boston: Addison-Wesley.

Ganssle, J. G. (2008). The art of designing embedded systems. Amsterdam; Boston: Elsevier. Retrieved from http://www.engineeringvillage.com/controller/servlet/OpenURL?genre=book&isbn=9780750686440

Grenning, J. W. (2011). Test-driven development for embedded C. Raleigh, N.C.: Pragmatic Bookshelf.

Hallinan, C. (2011). Embedded Linux primer: a practical real-world approach (2nd ed). Upper Saddle River, NJ: Prentice Hall.

Kopetz, H. (1997). Real-Time Systems: Design Principles for Distributed Embedded Applications (1. ed.). Kluwer Academic Publishers.

Larman, C., & Basili, V. R. (2003). Iterative and incremental developments. a brief history. Computer, 36(6), 47–56. http://doi.org/10.1109/MC.2003.1204375

MISRA C:2012 - Guidelines for the Use of the C Language in Critical Systems. (2013). MISRA.

Oshana, R. (2013). Software engineering for embedded systems: methods, practical techniques, and applications. Maltham, MA: Newnes.

Stellman, A., & Greene, J. (n.d.). Applied Software Project Management - Risk Plan. Retrieved 15 June 2012, from http://www.stellman-greene.com/aspm/content/view/19/38/

White, E. (2012). Making embedded systems. Sebastopol, CA: O’Reilly Media, Inc.

Yaghmour, K. (2008). Building embedded Linux systems (2nd ed). Beijing?; Cambridge: O’Reilly.

Este sítio web utiliza cookies sem recolher informação pessoal que permita a identificação dos utilizadores. Ao navegar neste sítio está a consentir a sua utilização.saber mais
Para que esta página funcione corretamente deve ativar a execução de Javascript. Se tal não for possível, algumas funcionalidades poderão estar limitadas.