|
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), a ser ministrada em formato remoto. Serão adotadas aulas em duas modalidades distintas de comunicação: síncrona (todos os alunos simultaneamente conectados à internet sob a regência do professor) e assíncrona (contemplando atividades remotas off-line). Essas modalidades estão previstas e concordantes com a Resolução nº 20/2020 do Conselho de Graduação. Para tal efeito, serão consideradas as seguintes mídias:
O atendimento ao aluno será realizado de forma remota, seja durante as aulas na modalidade síncrona, através do chat da Plataforma Microsoft Teams, ou através do e-mail: edermoura@ufu.br.
**Caso a plataforma fique indisponível por algum motivo externo, será proposto uma nova ferramenta que atenda às necessidades dos discentes e docentes.
Serão propostas atividades extras, num total de 12 ha (sendo 6 ha no modo síncrono e 6 ha no modo assíncrono), para completar a carga horária total. Em resumo, as atividades estão distribuídas em 45 ha (atividades síncronas) + 15 ha (atividades assíncronas) + 12 ha (atividades extras) = 72 ha (60 horas).
Tabela 1 – Atividades síncronas (3 ha/semana).
Semana |
Data |
Conteúdo |
01 |
01/03 |
Linux: Configuração e Uso |
02 |
08/03 |
Linguagens de Programação: Python |
03 |
15/03 |
Linguagens de Programação: C++ |
04 |
22/03 |
Multiprocessamento |
05 |
29/03 |
Comunicação interprocesso |
06 |
05/04 |
Linux embarcado como servidor de recursos (FTP/SSH/WEB) + HTML/CSS/Javascript |
07 |
12/04 |
Desenvolvimento de aplicações WEB |
08 |
19/04 |
Compilação cruzada |
09 |
26/04 |
Desenvolvimento de interface gráfica com QT: C++ |
10 |
03/05 |
Desenvolvimento de interface gráfica com QT: Python |
11 |
10/05 |
Customização de distribuições Linux para sistemas embarcados |
12 |
24/05 |
Programação de módulos para o Kernel do Linux |
13 |
31/05 |
Configuração de aplicações e atualização OTA |
14 |
07/06 |
Segurança em aplicações de sistemas embarcados |
15 |
14/06 |
Apresentação do trabalho final |
A Tabela 2 apresenta o cronograma das atividades assíncronas programadas.
Tabela 2 – Atividades assíncronas (1 ha/semana).
Semana |
Data |
Data |
Práticas |
01 |
01/03 |
04/03 |
Linux: Configuração e Uso |
02 |
08/03 |
11/03 |
Linguagens de Programação: Python |
03 |
15/03 |
18/03 |
Linguagens de Programação: C++ |
04 |
22/03 |
25/03 |
Multiprocessamento |
05 |
29/03 |
01/04 |
Comunicação interprocesso |
06 |
05/04 |
08/04 |
Linux embarcado como servidor de recursos (FTP/SSH/WEB) + HTML/CSS/Javascript |
07 |
12/04 |
15/04 |
Desenvolvimento de aplicações WEB |
08 |
19/04 |
22/04 |
Compilação cruzada |
09 |
26/04 |
29/04 |
Desenvolvimento de interface gráfica com QT: C++ |
10 |
03/05 |
06/05 |
Desenvolvimento de interface gráfica com QT: Python |
11 |
10/05 |
13/05 |
Customização de distribuições Linux para sistemas embarcados |
12 |
24/05 |
27/05 |
Programação de módulos para o Kernel do Linux |
13 |
31/05 |
03/06 |
Configuração de aplicações e atualização OTA |
14 |
07/06 |
10/06 |
Segurança em aplicações de sistemas embarcados |
15 |
10/06 |
17/06 |
Tira dúvidas sobre do trabalho final |
As atividades teóricas serão apresentadas em apresentações online e complementadas por vídeos e textos extras, indicados pelo professor. As atividades de implementação serão desenvolvidas em ambiente Linux (podendo ser virtualizado), requisitando do discente o acesso a um computador com possibilidade de instalação de software e espaço de armazenamento suficiente para comportar todas as aplicações necessárias.
AVALIAÇÃO
As atividades serão distribuídas em atividades semanais e um trabalho final. As atividades semanais somarão 50 pontos e dois trabalhos de implementação somarão 50 pontos, totalizando 100 pontos. As atividades semanais poderão compreender uma ou combinação das seguintes atividades: questionários; relatórios; programação; configurações. O trabalho final consistirá de uma simulação ou implementação de uma aplicação, utilizando das técnicas apresentadas durante a disciplina, cujos critérios serão definidos pelo professor.
Atendimento Especial:
Em complemento ao atendimento regular, todos os alunos que estiverem cursando esta disciplina pelo terceiro semestre, ou seja, tenha sido reprovado por dois semestres por nota (não incluídas as reprovações por frequência) terão um atendimento especial, com atendimento personalizado. Para tanto, aqueles que desejarem tal atendimento deverão procurar o professor para que o horário de atendimento seja definido e o plano de recuperação elaborado. Neste caso, o aluno especialmente atendido também deverá ter frequência superior a 75% nas seções.
BIBLIOGRAFIA
Básica
Complementar
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 10/02/2021, às 15:54, 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 2559778 e o código CRC 17B18248. |
Referência: Processo nº 23117.005413/2021-10 | SEI nº 2559778 |