Programação C++ para Sistemas Embarcados

Semestre 2014/2
Cursos: Engenharia Elétrica, Engenharia Eletrônica, Engenharia de Controle e Automação, Engenharia de Produção Elétrica
Turmas: 08202
Código da disciplina: EEL7323
Carga horária: 72 horas-aula
Número de créditos: 4
Professores: Eduardo Augusto Bezerra


Horário das aulas

  • Ter 18:00-21:30

Ementa

Conceitos Introdutórios, Paradigma de orientação a objetos, Classes, Estruturas de Dados, Encapsulamento, Herança, Polimorfismo, Tratamento de exceções, Templates, Entrada e Saída, Alocação de memória, Programação de Sistemas Embarcados.


Objetivos

O cumprimento da disciplina busca dar ao aluno, ao final do semestre, condições de:

  • Dar continuidade aos estudos de programação de sistemas computacionais.
  • Compreender os conceitos fundamentais do paradigma de programação orientada a objetos.
  • Desenvolver a capacidade de análise de programas em C++ de complexidade baixa ou média.
  • Entender o funcionamento básico de sistemas operacionais para acesso a periféricos.
  • Desenvolver programas em C++ para sistemas embarcados baseados em microprocessadores e microcontroladores.

Metodologia

  • O conteúdo programático será desenvolvido por meio de aulas expositivas com auxílio de recursos multimídia.
  • Aulas teóricas e práticas, expositivas, com slides preparados a partir dos livros texto da disciplina
  • Exercícios a serem resolvidos em aula e extra-classe pelos alunos
  • Práticas, em laboratório, onde os alunos seguirão tutoriais fornecidos pelo professor com instruções para utilização de ferramentas e placas de desenvolvimento
  • O material das aulas é disponibilizado na página da disciplina
  • A plataforma Moodle é a ferramenta oficial da universidade e da disciplina para comunicação com os alunos e para entrega de trabalhos.
  • Atendimento aos alunos em horário extra-classe visando esclarecer dúvidas pontuais e individuais
  • Auxílio de monitor para esclarecer dúvidas

Avaliação

  • Serão desenvolvidos trabalhos durante o semestre, que serão utilizados como base para a implementação do trabalho final.
  • A nota final (NF) do semestre será a nota obtida na avaliação do trabalho final da disciplina.
  • Condição para a aprovação:
    • Freqüência > 75% e NF >= 6,0

Bibliografia

  • Livro texto:
    • Walter J. Savitch, “C++ absoluto”, Addison Wesley, 2004 ISBN 85-88639-09-2. Disponível na biblioteca da UFSC em “Livros Eletrônicos”. Título original: Absolute C++.
  • Bibliografia complementar:
    • H. M. Deitel e P. J. Deitel, C++: como programar, São Paulo: Pearson Prentice Hall, 2006. ISBN 85-7605-056-0 – Disponível na biblioteca da UFSC em “Livros Eletrônicos”. Título original: C++ How to Program.
    • Victorine V. Mizrahi, Treinamento em Linguagem C++: módulo 1, Makron Books, 2007. ISBN 9788534602907 – Disponível na biblioteca da UFSC em “Livros Eletrônicos”.
    • Victorine V. Mizrahi, Treinamento em Linguagem C++: módulo 2, Makron Books, 2007. ISBN 9788534603034 – Disponível na biblioteca da UFSC em “Livros Eletrônicos”.
    • Herb Sutter, Programação avançada em C++, Pearson Makron Books, 2006. ISBN 85-346-1545-4 – Disponível na biblioteca da UFSC em “Livros Eletrônicos”. Título original: Exceptional C++ Style.
    • Richard C. Lee; William M. Tepfenhart, UML e C++ – Guia Prático de Desenvolvimento Orientado a Objeto, Makron Books, ISBN 85-346-1364-8 – Disponível na biblioteca da UFSC em “Livros Eletrônicos”.. Título original: UML and C++ – A Practical Guide to Object-Oriented Development.
    • B. Stroustrup, The C++ Programming Language. Reading: Addison-Wesley, 1997.
    • W. Wolf, Computer as Components – Principles of embedded computing system design, Morgan Kaufmann Publishers, 2000.
    • L. Lavagno, UML for real design of embedded real-time systems, Kluwer Academic, 2003.
    • Christopher Hallinan, Embedded Linux Primer, Prentice Hall, 2007.

Equipe de apoio

  • Paulo Villa – email: prcvilla AT gmail com

Trabalho prático

  • Especificação do Trabalho Final: “a ser definido”
  • Data da entrega e apresentações: /12/2014

Organização das aulas

Aula Data Conteúdo
1 12/08
2 19 / 08
3 26 / 08
4 02 / 09
5 09 / 09
6 16 / 09
7 23 / 09
8 30 / 09
  • Tutorial: Desenvolvimento de software em C++ para o processador Leon3. Links: [Página do Paulo Villa] e [Versão local].
  • Atividade de avaliação: Implementação do relógio/calendário das notas de aula, utilizando os conceitos de herança múltipla, funções friend, sobrecarga de operadores, e classes abstratas.
    • Realizar a implementação no microcontrolador M16C/26A da Renesas [ver exercício 2], e no processador Leon3 no kit Atlys.
    • Utilizar o conceito de classes abstratas, de forma semelhante ao que foi feito na Classe Robot, visando a definição de uma classe base abstrata, que possa ser herdada possibilitando o reaproveitamento de métodos que funcionem tanto no kit da Renesas, quanto no kit Atlys. Os métodos que forem específicos para cada um dos kits, devem ser implementados em classes especializadas, utilizando assim esses conceitos de orientação a objetos.
    • Preparar um relatório descrevendo todas as etapas necessárias para a implementação do relógio/calendário nas duas arqutieturas. Por exemplo, fornecer detalhes sobre os recursos dos compiladores C++ utilizados, recursos disponíveis nas plataformas Renesas e Atlys para apresentação dos resultados, e para realizar o avanço do relógio, …
9 07 / 10
  • Desenvolvimento do programa relógio/calendário nos dois kits.
10 14 / 10
  • Conclusão, entrega e avaliação dos fontes e documentação do programa relógio/calendário, para os dois kits.
11 21 / 10
12 28 / 10
13 04 / 11
  • Programação de sistemas embarcados
14 11 / 11
  • Programação de sistemas embarcados
15 18 / 11
  • Programação de sistemas embarcados
16 25 / 11
  • Programação de sistemas embarcados
17 02 / 12
  • Programação de sistemas embarcados
18 09 / 12
  • Apresentação do trabalho final.

Material de apoio