EEL 410143 – Programação de Sistemas Embarcados
Trimestre 2014/2
Curso: Programa de Pós-Graduação em Engenharia Elétrica
Código da disciplina: EEL 410143
Número de créditos: 3
Professor: Eduardo Augusto Bezerra
Horário das aulas
- Seg 7:30 – 10:50
Ementa
Conceitos introdutórios; Sistema operacional; Orientação a objetos; Classes; Estruturas de dados; Encapsulamento; Herança; Polimorfismo; Tratamento de exceções; Templates; Entrada e saída; System-on-a-chip; Teste e verificação.
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 embarcados.
- Compreender os conceitos fundamentais do paradigma de programação orientada a objetos.
- Desenvolver a capacidade de análise de programas em C++ de complexidade 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 embarcados, e também sistemas do tipo System-on-a-chip (SoC).
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
- 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.
Avaliação
- A média geral do trimestre (MT) é obtida a partir da média aritmética MT = (S + T) / 2, onde S é a nota da preparação/apresentação de seminários, e T é a nota do trabalho final
Bibliografia
- 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++.
- Walter J. Savitch, “Absolute C++”, Addison Wesley, 2004 ISBN 85-88639-09-2.
- 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.H. M. Deitel e P. J. Deitel, “C++ How to Program”, Pearson Prentice Hall, 2006.
- Victorine V. Mizrahi, Treinamento em Linguagem C++: módulo 1, Makron Books, 2007.
- Victorine V. Mizrahi, Treinamento em Linguagem C++: módulo 2, Makron Books, 2007.
- Herb Sutter, “Exceptional C++ Style”, Pearson Makron Books, 2006.
- Richard C. Lee; William M. Tepfenhart, “C++ – A Practical Guide to Object-Oriented Development”, Makron Books.
- B. Stroustrup, The C++ Programming Language. Reading: Addison-Wesley, 1997.
Trabalho prático
- Especificação do Trabalho Final: “Projeto e implementação em C/C++ para microprocessador embarcado de sistema para aquisição/envio de sinais AD/DA, com comunicação I2C“
- Data da entrega e apresentações: 08/set/2014
Organização das aulas
Aula | Data | Conteúdo |
1 | 09/06 |
|
2 | 16/06 |
|
3 | 23/06 |
|
4 | 30/06 |
|
5 | 07/07 |
|
6 | 14/07 |
|
7 | 21/07 |
|
8 | 04/08 |
|
9 | 11/08 |
|
10 | 18/08 |
|
11 | 01/09 | Apresentações de seminários:
|
12 | 08/09 |
|
Artigos selecionados para apresentação:
- Artigo 1 – 7:30-7:45 – Rogério Paludo, Selecting a programming language for your project
- Artigo 2 – 7:45-8:00 – Leonardo Slongo, Towards Unified Design of Hardware and Software Components Using C++
- Artigo 3 – 8:00-8:15 – Carlos Speranza, Re-engineering C++ Component Models Via Automatic Program Transformation
- Artigo 4 – 8:15-8:30 – Carla Mendes, The role of SW architecture in solving fundamental problems in object-oriented development of large embedded SW systems
- Artigo 5 – 8:30-8:45 – Fernando Silvano Gonçalves, Arm Benfica vs. ARM Georgia Tech
- Artigo 6 – 8:45-9:00 – Fabrizio Maziero, Issues with object orientation in verifying safety-critical systems
- Artigo 7 – 9:00-9:15 – Felipe Sabino, Design of a Middleware Interface for ARINC 429 Data Bus
- Artigo 8 – 9:15-9:30 – João Gabriel Reis, R3TOS: A Novel Reliable Reconfigurable Real-Time Operating System for Highly Adaptive, Efficient, and Dependable Computing on FPGAs
Material de apoio
- [1] Notas de aula C++ Prof. Eduardo Bezerra – herança, herança múltipla, classes virtuais, funções virtuais, funções friend, classes abstratas, sobrecarga de funções, sobrecarga de operadores, polimorfismo, template, GUI.
- [2] Notas de aula “Classes” Prof. Eduardo Bezerra – Classes e objetos em C++
- [3] “Ponteiros” Prof. Eduardo Bezerra – “Ponteiros” e exemplos
- [4] “Strings” – material sobre strings em C++
- [5] “Strings – getline” – Dica para ler strings com espacos em C++
- [6] Tutorial introdução Linux/C++ “Hello World!” - Primeira aula prática!
- [7] Estrutura de um programa
- [8] Variáveis e definições
- [9] Operadores
- [10] Controle do fluxo da execução de um programa
- [11] Funções
- [12] Structs e Classes
- [13] Exercícios – possível solução para o exercício 5
- [14] Objetos
- [15] Classes
- [16] Abstração
- [17] Encapsulamento
- [18] Classes e construtores
- [19] Exercícios sobre classes e objetos
- [20] Material sobre linux – Comandos mais usados em uma página; Comandos básicos; Resumo dos comandos básicos; Exercícios
- [Arquivos] – material sobre arquivos em C++
- [Bibliotecas padrão] – Resumo das bibliotecas padrão do C++
- [Pilha] – uma classe “Pilha” para armazenar dados genéricos
- [Fila] – uma classe “Fila” para armazenar dados genéricos
- [Lista] – uma classe “Lista” para armazenar dados genéricos
- [Lista encadeada] – exemplo de lista encadeada genérica, armazenando alunos, professores, …
- [Árvores] – Nodo para construção de árvores binárias (de inteiros): Nodo_arvoreb.h e Nodo_arvoreb.cpp. Classe para criação e manipulação de Árvore Binária de Pesquisa utilizando Nodo_arvoreb.h: ABP.h, ABP.cpp e testeABP.cpp.
- [Standard Template Library – STL] – Tutorial STL – Exemplo de vector, com métodos disponíveis, e comparação com list
- Aplicações exemplo:
- Classe SystemUser (ler antes o arquivo README.txt)
- Classe Racional (solução)
- Herança bastante simples: (Pessoa.cpp, Aluno.cpp, main.cpp)
- Herança: (Heranca)
- Agregação: (Agregacao)
- Herança: (Sistema Bank Account)
- Exemplo/exercício de herança: ex_heranca.cpp, mmamals.cpp, e vmammals.cpp