|
UNIVERSIDADE FEDERAL DE UBERLÂNDIA Av. João Naves de Ávila, 2121, Bloco 3N - Bairro Santa Mônica, Uberlândia-MG, CEP 38400-902 |
|
Plano de Ensino
IDENTIFICAÇÃO
Componente Curricular: |
|||||||||
Unidade Ofertante: |
|||||||||
Código: |
Período/Série: |
Turma: |
|||||||
Carga Horária: |
Natureza: |
||||||||
Teórica: |
Prática: |
Total: |
Obrigatória: |
Optativa: |
|||||
Professor(A): |
Ano/Semestre: |
||||||||
Observações: |
EMENTA
Desenvolvimento de sistemas embarcados microprocessados, integração com serviços em rede ou nuvem, interfaces homem/máquina (HMI).
JUSTIFICATIVA
Essa disciplina aplica os conceitos teóricos do desenvolvimento de software, de sistemas computacionais conectados e tecnologias eletrônicas para o desenvolvimento de sistemas embarcados. Esses são sistemas computacionais completos e independentes, desenvolvidos para uma tarefa específica e que estão presentes em diversas áreas e aplicações de engenharia.
OBJETIVO
Objetivo Geral: |
Desenvolvimento de sistemas embarcados com hardware de complexidade média ou alta, com foco em comunicação e interatividade com o usuário, em geral executando sistemas operacionais de alto nível. |
Objetivos Específicos: |
1. Uso de Linux embarcado ou de sistema operacional equivalente. Construção e aplicação de imagens; 2. Criação de interfaces homem máquina através de toolkits gráficos; 3. Integração e uso de stacks diversos de comunicação; 4. Programação com linguagem de script ou de desenvolvimento rápido; 5. Utilização de serviços em nuvem para automação e controle; 6. Interfaceamento com periféricos de comunicação e informação (GPS, modems, Bluetooth, WiFi, entre outros); 7. Utilização de redes com e sem fio no processo de integração; 8. Atualização de firmware no campo (OTA - Over the Air); 9. Segurança em sistemas embarcados. |
PROGRAMA
1. Linux Embarcado
1.1. Breve histórico sobre UNIX
1.2. Linux
1.3. Por que utilizar Linux em sistemas embarcados?
1.4. Anatomia de um sistema embarcado
1.5. Considerações sobre armazenamento
1.6. Distribuições Linux para sistemas embarcados
2. Processadores
2.1. Processadores Stand-Alone
2.2. Processadores Integrados (Systems on Chip)
2.3. Outras Arquiteturas
2.4. Plataformas de hardware
3. O Kernel Linux
3.1. Background
3.2. Kernel
3.3. Construção
3.4. Sistemas construtores de Kernel
3.5. Kernel customizados e documentação
3.6. Inicialização
3.7. Fluxo de controle
3.8. Inicializando subsistemas
4. Inicialização do espaço do usuário
4.1. Sistemas de arquivos Root
4.2. O processo de inicialização
4.3. Disco RAM inicial
4.4. Utilizando initramfs
4.5. Shutdown
5. Bootloaders
6. Device Driver
7. Subsistemas MTD
7.1. Introdução
7.2. Partições
7.3. Utilitários
7.4. Conceitos sobre Device Driver
7.5. Módulos
7.6. Métodos
7.7. Device Driver e GPL
8. Ambiente de Desenvolvimento Embarcado
10. Ferramentas de Desenvolvimento
10.1. GNU Debugger
10.2. Ferramentas de Tracing e Profiling
10.3. Utilitários Binários
10.4. Técnicas de Depuração de Kernel
11. Ferramentas de depuração para aplicações em Linux embarcado
12. Linux e Sistemas em Tempo Real
12.1. O que é um sistema de Tempo Real
12.2. Preempção do Kernel
12.3. Real-Time Kernel Patch
12.4. Análise de desempenho do Real-Time Kernel
13. Ferramentas de desenvolvimento para IHM
13.1. Compilação cruzada
13.2. Desenvolvimento de interfaces gráficas
14. Sistemas GSM e GPS
14.1. Definição de sistemas GSM
14.2. Definição de sistemas GPS
14.3. Tipos de aplicação
15. Aplicações para Sistemas Embarcados
15.1. Comunicação Serial
15.2. IHM de dados com interface serial
15.3. Interação com redes GSM, comandos AT
15.4. Geração de informações de posicionamento
15.5. Interação com sistemas em nuvem (AWS)
15.6. Construção de Gateway MQTT com interface para sistemas em nuvem (AWS)
15.7. Reconhecimento facial em nuvem
METODOLOGIA
A presente componente curricular possui carga horária total de 60 horas / 72 ha (hora-aula, com duração de 50 min) com predominância de aulas presenciais e algumas aulas alocadas no modo assíncrono para completar a carga horária obrigatória. Para tal:
· Serão ministradas 2 ha semanais relativas à carga horária teórica (totalizando 36 ha) e mais 2 ha semanais relativas à carga horária prática (totalizando 36 ha);
· As aulas serão expositivas/interativas com uso de projetor, quadro, exemplificação por meio de software e experimentos e demais materiais, conforme os cronogramas apresentados no Quadro 1, referente às aulas teóricas, e Quadro 2, referente às aulas práticas;
· O material de aula será centralizado no MS Teams;
· As atividades da disciplina serão divididas entre atividades semanais e dois trabalhos práticos;
· O atendimento ao aluno será realizado, a qualquer momento, por meio do chat da Plataforma Microsoft Teams ou do e-mail: edermoura@ufu.br, ou de modo presencial na Sala 310, do Bloco 3N.
Quadro 1 – Cronograma de aulas teóricas.
Semana |
Conteúdo |
01 |
Linux com plataforma para o desenvolvimento de sistemas embarcados |
02 |
Biblioteca de programação padrão Glibc |
03 |
Desenvolvimento de aplicações em Linux |
04 |
Programação em script com Python |
05 |
Multiprocessamento e programação concorrente |
06 |
Comunicação interprocesso via socket |
07 |
Desenvolvimento de interface gráfica para sistemas embarcados |
08 |
Linux como servidor de recursos: FTP / SSH / Web |
09 |
Desenvolvimento de aplicações Web no backend |
10 |
Docker e containers |
11 |
Compilação cruzada e toolchains |
12 |
Criando distribuições customizadas |
13 |
Programação de módulos para o Kernel do Linux |
14 |
Configuração de aplicações e atualização OTA |
15 |
Segurança em aplicações de sistemas embarcados |
~ |
Sistemas em Tempo Real e implementação de sistemas de controle em sistemas embarcados |
~ |
Implementação de controladores SISO em sistemas embarcados |
~ |
Implementação de controladores MIMO em sistemas embarcados |
Quadro 2 – Cronograma de aulas de laboratório.
Semana |
Conteúdo |
01 |
Linux com plataforma para o desenvolvimento de sistemas embarcados |
02 |
Biblioteca de programação padrão Glibc |
03 |
Desenvolvimento de aplicações em Linux |
04 |
Programação em script com Python |
05 |
Multiprocessamento e programação concorrente |
06 |
Comunicação interprocesso via socket |
07 |
Desenvolvimento de interface gráfica para sistemas embarcados |
08 |
Linux como servidor de recursos: FTP / SSH / Web |
09 |
Desenvolvimento de aplicações Web no backend |
10 |
Docker e containers |
11 |
Criando distribuições customizadas |
12 |
Programação de módulos para o Kernel do Linux |
13 |
Configuração de aplicações e atualização OTA |
14 |
Apresentação do Primeiro trabalho |
15 |
Apresentação do Segundo Trabalho |
~ |
Sistemas em Tempo Real e implementação de sistemas de controle em sistemas embarcados |
~ |
Implementação de controladores SISO em sistemas embarcados |
~ |
Implementação de controladores MIMO em sistemas embarcados |
AVALIAÇÃO
Distribuição de Pontos: As avaliações serão divididas em atividades semanais e dois trabalhos práticos, totalizando 100 pontos. Esses pontos estão distribuídos em: 50 pontos em atividades semanais (incluindo a parte teórica e laboratórios, com pesos iguais entre si) e 50 pontos em trabalhos práticos.
Das atividades: Os trabalhos semanais poderão compreender uma ou combinação das seguintes possibilidades: questionários; relatórios; programação; pesquisas; configurações. Os trabalhos práticos consistirão da implementação de uma aplicação de sistema embarcado (software e hardware), utilizando das técnicas apresentadas durante a disciplina e conhecimentos compatíveis com o nível de formação esperado, cujos tema e critérios de avaliação serão definidos pelo professor.
Avaliação de recuperação: Será oferecida uma avaliação de recuperação para os discentes que não obtiverem o rendimento mínimo para aprovação e com frequência mínima de 75% na disciplina, conforme Resolução CONGRAD nº 46/2022, Cap. II, Seção III.
A avaliação de recuperação será composta por uma prova extra (teórico/prática), no valor de 100 pontos e em substituição às atividades teóricas, abordando qualquer conjunto de conteúdos ministrados ao longo do semestre.
BIBLIOGRAFIA
Básica
1. ALMEIDA, R.; MORAES, C.; SERAPHIM, T. Programação de sistemas embarcados: desenvolvendo software para microcontroladores em linguagem C. Rio de Janeiro: Elsivier, 2016.
2. MATTHEW, Neil.; STONES, Richard. Beginning Linux programming. [s.l.]: Wiley, 2007.
MOLLOY, Derek. Exploring Raspberry Pi: Interfacing to the Real World with Embedded Linux. New York: John Wiley & Sons, 2016.
3. SALVADOR, Otavio; ANGOLINI, Daiane. Embedded Linux development with Yocto Project. Birmingham: Packt Publishing, 2014.
4. YIU, J. The Definitive Guide to ARM Cortex-M3 and Cortex-M4 Processors. 3a ed. [s.l.]: Newnes/Elsevier, 2014.
Complementar
1. BACKES, André. Linguagem C: completa e descomplicada. Rio de Janeiro: Elsevier, 2013.
2. BARR, Michael; MASSA, Anthony. Programming embedded systems: with C and GNU development tools. O'Reilly Media, 2006.
3. GRENNING, James W. Test Driven Development for Embedded C. [S. l.]: Pragma c Bookshelf, 2011.
4. KLEMENS, Ben. 21st Century C: C ps from the New School. [S. l.]: O'Reilly Media, 2015.
5. HOOK, Brian. Write portable code: An Introduytion to Developing Software for Multiple Platforms. [S. l.]: No Starch Press, 2005.
6. HYDE, Randall. Write great code: understanding the machine. v. 1. [S. l.]: No Starch Press, 2012.
7. MONTGOMERY, Stephen L. MISRA. C: Guidelines for the Use of the C Language in Critical Systems 2012. [S. l.]: Misra, 2013.
8. PRESSMAN, Roger S. Engenharia de software: uma abordagem profissional. 8. ed. Porto Alegre: McGraw-Hill, 2016.
9. SINK, E. Version Control by Example. [S. l.]: Pyrenean Gold Press, 2011.
10. TANENBAUM, Andrew S. Organização estruturada de computadores. São Paulo: Pearson, 2013.
11. WHITE, E. Making Embedded Systems: Design Patterns for Great Software. [S. l.]: O'Reilly Media, 2014.
APROVAÇÃO
Aprovado em reunião do Colegiado realizada em: ____/____/______
Coordenação do Curso de Graduação: _________________________
| Documento assinado eletronicamente por Eder Alves de Moura, Professor(a) do Magistério Superior, em 04/06/2024, às 22:14, conforme horário oficial de Brasília, com fundamento no art. 6º, § 1º, do Decreto nº 8.539, de 8 de outubro de 2015. |
| A autenticidade deste documento pode ser conferida no site https://www.sei.ufu.br/sei/controlador_externo.php?acao=documento_conferir&id_orgao_acesso_externo=0, informando o código verificador 5451185 e o código CRC 311ED58E. |
Referência: Processo nº 23117.034406/2024-60 | SEI nº 5451185 |