UNIVERSIDADE FEDERAL DE UBERLÂNDIA
  

Timbre

Ficha de Componente Curricular

 

CÓDIGO:

 

COMPONENTE CURRICULAR:

SISTEMAS EMBARCADOS I

UNIDADE ACADÊMICA OFERTANTE:

FACULDADE DE ENGENHARIA ELÉTRICA

SIGLA:

FEELT

CH TOTAL TEÓRICA:

45 horas

CH TOTAL PRÁTICA:

30 horas

CH TOTAL:

75 horas

 

OBJETIVOS

Objetivos Gerais

Esta disciplina tem como objetivo integrar os conceitos apresentados em diversas disciplinas da Engenharia Elétrica através do estudo e implementação de hardware e firmware de dispositivos industriais.

1. Visão sistêmica do processo de desenvolvimento de hardware e firmware;

2. Técnicas de codificação eficiente;

3. Estratégias de criação de firmware;

4. Estudo da plataforma ARM Cortex M;

5. Portabilidade.

Objetivos Específicos

1. Conhecimento detalhado dos principais protocolos de comunicação digital (UART, I2C, SPI);

2. Uso eficiente da linguagem C no desenvolvimento de firmware;

3. Uso e desenvolvimento de hardware e firmware com o emprego de microcontroladores Cortex M;

4. Apresentação de paradigmas diversos de construção de firmwares (voltado a interrupções, super loop, co-rotinas e RTOS);

5. Estratégias para criação de código portável (encapsulamento, ponteiros opacos, abstração de hardware);

6. Projeto de hardware microprocessados.

 

Ementa

Estudo e desenvolvimento de sistemas embarcados microcontrolados. Visão sistêmica do processo de desenvolvimento de hardware e firmware; Técnicas de codificação eficiente; Estudo da arquitetura de um microcontrolador; Estratégias de criação de firmware; Portabilidade.

 

PROGRAMA

1. Introdução ao mercado de sistemas embarcados. Possibilidades de inovação e emprego da tecnologia embarcada

2. Arquitetura de computadores

2.1. Paradigmas RISC e CISC

2.2. Stack pointer, program counter e registros de status

2.3. Modos de endereçamento

2.4. Vetores e tratamento de interrupções

2.5. Dispositivos de memória

2.5.1. Terminologia de memória

2.5.2. Princípios de operação da memória

2.5.3. Memória utilizadas em sistemas embarcados (DRAM, SRAM, ROM, Flash, EEPROM, FRAM)

3. Ferramentas de desenvolvimento (toolchains)

3.1. Ferramentas do toolchain GNU (ar, as, gcc, ld, strip, nm, strings)

3.2. Arquivos de linker e de partida

3.3. Uso de IDEs para desenvolvimento e uso de linha de comando

3.4. Bibliotecas C e código de partida para sistemas embarcados

4. Ferramentas de desenvolvimento ST Microelectronics

4.1. Configuração de pinos/funções no CubeMX. Geração de código

4.2. Compilação e depuração no System Workbench

5. Arquitetura ARM Cortex M

5.1. Família Cortex M. Conjunto de instruções Cortex M

5.2. Arquitetura Cortex M. Registradores comuns do Cortex M. Estados e modos de operação do processador. Inicialização do processador

5.3. Registros especiais (Control Register, Program Status Register, System Control Block)

5.4. Exceções e interrupções no Cortex M. Controle de interrupções. Prioridades. Entrada e saída de modo interrompido. Contextos de interrupção. Contexto de interrupção com ponto flutuante. Latência de interrupções

5.5. Mapa de memória

5.6. Barramentos e DMA

5.7. Acessos alinhados e não alinhados. Operações atômicas de acesso a bits (bit-band)

5.8. Modos de baixo consumo

5.9. Proteção de memória

6. Microcontroladores ARM Cortex STM32

6.1. Visão geral dos controladores STM32

6.2. GPIO no STM32, conceitos de portas e pinos

6.3. Uso por pooling para entrada e saı́da

6.4. Interrupções no STM32

6.5. Teoria geral sobre UART. UART no STM32. Registros relacionados à UART no STM32. Uso com interrupções. UART com buffer circular

6.6. Conceitos gerais de timers e PWM. Timers e PWM no STM32

6.7. RS485 no STM32. Uso de transceiver RS485

6.8. Conceitos gerais de conversores analógicos digitais (caracterı́sticas, tipos de ADC e seus princípios de funcionamento, circuitos sampling and holding e multiplexação)

6.9. ADC no STM32 (pooling, interrupção e cı́clico via DMA)

6.10. Conceitos gerais do protocolo SPI. Protocolo SPI no STM32

6.11. Conceitos gerais do protocolo I2C. Protocolo I2C no STM32

6.12. Conceitos gerais de conversores digitais analógicos (caracterı́sticas, tipos de DAC e seus princı́pios de funcionamento, filtros de reconstrução)

6.13. DAC no STM32

7. Estratégias de construção de firmware

7.1. Super loop

7.2. Voltado a interrupções

7.3. Máquinas de estados

7.4. Co-rotinas

7.5. Visão geral de um RTOS (Sistema operacional de tempo real)

7.6. MISRA C

8. Projeto com microcontroladores

8.1. Famı́lias lógicas TTL e CMOS

8.1.1. Tensões e correntes de entrada e saı́da

8.1.2. Fan-in, Fan-out

8.1.3. Atrasos de propagação e frequência máxima de operação

8.1.4. Caracterı́sticas e tipos de portas digitais (coletor/dreno aberto, tri-state e totem-pole)

8.1.5. Interfaceamento entre famı́lias lógicas

8.1.6. Cuidados adicionais no uso de pinos CMOS não utilizadas

8.2. Reguladores de tensão

8.3. Desacoplamento

8.4. CAD para projeto eletrônico

8.4.1. Visão geral do uso de ferramenta CAD

8.4.2. Esquemáticos

8.4.3. Biblioteca de componentes

8.4.4. Netlist e lista de materiais

8.4.5. Projeto da placa de circuito impresso

8.4.6. Criação de footprints

8.4.7. Geração de arquivos de fabricação

8.5. Projeto de hardware com controladores STM32

8.5.1. Escolha do controlador e mapeamento dos pinos

8.5.2. Alimentação (digital e analógica)

8.5.3. Desacoplamento

8.5.4. Relógios (clocks)

8.5.5. Roteamento de linhas especiais

8.5.6. Interligação com periféricos diversos

8.6. Montagem e depuração de placas eletrônicas

 

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. PRESSMAN, Roger S. Engenharia de software: uma abordagem profissional. 8. ed. Porto Alegre: McGraw-Hill, 2016.

3. TANENBAUM, Andrew S. Organização estruturada de computadores. São Paulo: Pearson, 2013.

4. TOCCI, Ronald J. Sistemas digitais: princípios e aplicações. 11. ed. São Paulo: Pearson Education do Brasil, 2011.

5. YIU, J. The definitive guide to ARM Cortex-M3 and Cortex-M4 processors. 3. ed. [S. l.]: Newnes/Elsevier, 2014.

 

BIBLIOGRAFIA 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. [S. l.]: O'Reilly Media, 2006.

3. GRENNING, James W. Test Driven Development for Embedded C. [S. l.]: Pragmatic Bookshelf, 2011.

4. HOOK, Brian. Write Portable Code: An Introduction to Developing Software for Multiple Platforms. [S. l.]: No Starch Press, 2005.

5. HYDE, Randall. Write great code: volume 1: Understanding the Machine. [S. l.]: No Starch Press, 2012.

6. KLEMENS, Ben. 21st Century C: C Tips from the New School. [S. l.]: O'Reilly Media, 2015.

7. MONTGOMERY, Stephen L. MISRA C: Guidelines for the Use of the C Language in critical systems 2012. [S. l.]: Misra, 2013.

8. SINK, E. Version control by example. [S. l.]: Pyrenean Gold Press, 2011.

9. WHITE, E. Making Embedded Systems: Design Patterns for Great Software. [S. l.]: O'Reilly Media, 2014.

 

aprovação

 

Prof. Dr. Josué Silva de Morais

Coordenador do Curso de Graduação em Engenharia de Controle e Automação

Prof. Dr. Sérgio Ferreira de Paula Silva

Diretor da Faculdade de Engenharia Elétrica

 


logotipo

Documento assinado eletronicamente por Josué Silva de Morais, Coordenador(a), em 03/04/2019, às 10:29, conforme horário oficial de Brasília, com fundamento no art. 6º, § 1º, do Decreto nº 8.539, de 8 de outubro de 2015.


logotipo

Documento assinado eletronicamente por Sergio Ferreira de Paula Silva, Diretor(a), em 03/04/2019, às 11:41, conforme horário oficial de Brasília, com fundamento no art. 6º, § 1º, do Decreto nº 8.539, de 8 de outubro de 2015.


QRCode Assinatura

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 1137109 e o código CRC F0963067.




Referência: Processo nº 23117.027358/2019-96 SEI nº 1137109