Programação C++ para Sistemas Embarcados


Semestre 2012/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: EEL7832
Carga horária: 72 horas-aula
Número de créditos: 4
Professores: Eduardo Augusto Bezerra e Djones Vinícius Lettnin


Horário das aulas

  • Qua 17: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

  • Roberto de Matos – email: roberto  AT eel ufsc br
  • Frederico Ferlini – email: fferlini AT gmail com
  • Paulo Villa – email: prcvilla AT gmail com

Horário de atendimento aos alunos

  • Ter 14:00-16:00 (enviar email para reserva de horário)

Trabalho prático


Organização das aulas

Aula Data Conteúdo
1 19/09 Apresentação da disciplina, revisão de C, introdução a C++.
Material: Estrutura programa [7]; Variáveis [8]; Operadores [9]; Controle de fluxo [10]; Funções [11]; Class x struct [12]; Exercícios [13]
2 03/10 Paradigma de orientação a objetos.
Material: Objetos [14]; Classes [15]; Abstração [16]; Encapsulamento [17]; Métodos, atributos, construtores [18]; Classe ResistorExercícios [19]; Projeto Final
3 10/10 Ambiente de desenvolvimento [20]Tutorial [6]; One page Linux; Comandos básicos; Exercícios Linux. Ponteiros [3]Notas de aulaExemplos; Exercícios; Soluções.
4 17/10 Hierarquia de classesHerança; Exemplo; Herança múltipla; Construtores e destrutores; Notas de aula [1]; I/O Serial/Paralela. Exercício: Herança + I/O Linux
5 24/10 Relacionamento entre classes: Agregação; Exercícios.  Programação em C++ de microcontrolador de 16 bits: Site da Renesas; e Tutorial.
6 31/10 C++ com IAR para RenesasTutorial para uso de C++ com a ferramenta IAR no kit QSK26A da Renesas.
7 07/11 Classes bases virtuais; Funções virtuais; Friends; Sobrecarga de operadoresNotas de aula [1]; Exemplo friendsExercícios.
8 14/11 Exercícios: Implementação de calendário no microcontrolador M16C/26A da Renesas [ver exercício 2]; Comunicação serial no Linux [ver exercício 3].
9 21/11 Classes abstratas; Polimorfismo: Notas de aula [1]. Tratamento de exceções: exemplos e std::exceptionManipulação de arquivos: exemplosSistema básico de E/S: exemplos. Exercício sobre polimorfismo: implementar as classes necessárias para que o programa testCShape3d.cpp funcione corretamente.
10 28/11 Funções Template e Classes Template: Notas de aula e exemplosC++ Standard Template Library – STL: tutorial e exemplos. Exercício: Adaptar o programa da última aula para utilização de templates, possibilitando o cálculo de volumes com float e inteiro. Projeto do trabalho final.
11 05/12 SystemC
12 12/12 SystemC
13 19/12 SystemC
14 20/02 Apresentação do trabalho final.

Material de apoio