Apresentar aos alunos os conceitos profissionais e formas de trabalhar com software embarcado. Apresentar conhecimentos teóricos e práticos de implementações de sistemas embarcados que compõe produtos aeronáuticos e também produtos não aeronáuticas, levando em consideração as principais diferenças. Relacionar sistemas embarcados com aplicações típicas do universo aeronáutico, com processos soft, firm e hard realtime.
Exercitar procedimentos de programação de sistemas embarcados. Familiarizar-se com a forma, as ferramentas de trabalho profissional e os recursos utilizados para a programação de sistemas embarcados. Estudar as particularidades com o uso de sistemas operacionais de tempo real. Trabalhar ferramentas de software profissionais voltadas ao acionamento de motores, leitura de sensores, implementação de controladores e a comunicação em rede.
1. Arquiteturas de sistemas embarcados. 1.1. Definições e conceitos - Sistemas Embarcados, Sistemas Críticos e Sistema de Tempo Real. 2. Revisão do Sistema Operacional Linux e Programação de Threads em Linux . 3. Apresentação de hardware embarcado de diferentes capacidades e propósitos: a. Toolchain b. Booticaders c. Kernel d. Root Filesystem e. Build Systems (Yocto Project) f. Storage Strategies g. Devices Drivers e Board Support Packages (BSP) Habilidades: Programação em sistemas embarcados: Ter habilidades de programação em linguagens capazes de operar mais próximo do hardware computacional, como C ou C++, e também em linguagens de mais alto nível como Python para operações de tratamento de dados e manipulação de grandes arquivos de imagens provenientes de comeras. Ou seja, desenvolver software que seja executado em sistemas embarcados. 1 - Compreensão dos princípios do fírmware: Demonstrar um entendimento sólido dos princípios fundamentais relacionados ao desenvolvimento de firmware, incluindo conceitos como arquitetura do sistema embarcado, ciclo de vida do firmware, gerenciamento de memória, interrupções e temporização. 2 - Conhecimento de microcontroladores e processadores embarcados: Familiaridade com microcontroladores e processadores usados em sistemas embarcados, incluindo sua arquitetura, periféricos e recursos específicos. 3 - Comunicação com periféricos: Ter a capacidade de interagir com periféricos externos, como sensores, atuadores e interfaces de comunicação, utilizando protocolos de comunicação adequados, como 12C, SPI ou UART. 4 - Depuração e teste de sistemas embarcados: Ser capaz de usar ferramentas e técnicas de depuração para identificar e corrigir problemas em sistemas embarcados, bem como realizar testes para verificar o funcionamento adequado. 5 - Desenvolvimento de aplicativos embarcados: Possuir habilidades práticas no desenvolvimento de aplicativos a serem embarcados em sistemas embarcados. Isso envolve a capacidade de criar software que será executado em dispositivos embarcados, como microcontroladores ou microprocessadores. Essa habilidade inclui o conhecimento e a experiência na programação de aplicativos embarcados, utilizando linguagens de programação adequadas, frameworks ou ambientes de desenvolvimento integrado (IDEs) para criar aplicativos que executem diretamente no hardware do sistema embarcado. Competências Principais: Projeto de sistemas embarcados: Ser capaz de projetar sistemas embarcados, considerando requisitos funcionais e não funcionais, selecionando componentes apropriados, projetando a arquitetura do sistema e gerenciando recursos limitados. 1 - Otimização de recursos: Ser capaz de otimizar o uso de recursos limitados em sistemas embarcados, como memória, processamento e consumo de energia, a fim de garantir o desempenho adequado e a eficiência do sistema. 2 - Integração de componentes: Ter habilidades para integrar diferentes componentes de hardware e software em um sistema embarcado, garantindo a compatibilidade e a comunicação adequada entre eles. 3 - Solução de problemas: Ser capaz de identificar e solucionar problemas complexos em sistemas embarcados, aplicando conhecimentos teóricos, técnicas de depuração e habilidades de resolução de problemas. 4 - Capacitar o aluno a atuar no desenvolvimento, projeto e implementação de sistemas embarcados em diversas áreas, como automação industrial, dispositivos médicos, automóveis, Internet das Coisas (loT) e muito mais, E importante ressaltar que essas competências podem ser aprimoradas ainda mais por meio da prática, experiência profissional e continuidade nos estudos na área de sistemas embarcados.e considerar as restrições de recursos, a eficiência de código, a integração com periféricos e a interação com o sistema operacional ou firmware subjacente, se aplicável. 5 - Trabalho em equipe: Demonstrar habilidades de trabalho em equipe, colaborando com outros membros do projeto para desenvolver e implementar sistemas embarcados de forma eficiente e eficaz. Essas competências permitem que um aluno possa atuar no desenvolvimento, projeto e implementação de sistemas embarcados em diversas áreas, como sistemas aviônicos, controle de drones, automação industrial, dispositivos médicos, automóveis, Internet das Coisas (loT). h. Processos e Threads i. Gerenciamento de Memória. 4. Programação de dispositivos para conexão a redes de computadores industriais. 5. Sistemas Operacionais de Tempo Real e programação de aplicativos em tempo real. 6. Conceitos de Escalonamento. 7. Conceitos de comunicação entre tarefas e sincronização: a. Buffering Data b. Time-Relative Buffering c. Ring Ruffers d. Mailboxes d. Queues e. Regiões críticas f. Semáforos g. Outros mecanismos de sincronização h. Deadlock i. Inversão de Prioridades. 8. Exemplos de aplicações: a. Escrita de comandos temporizados para atuadores b. Leitura temporizada de sensores c. Implementação de Sistema de Controle em malha fechada. 9. Segurança e Análise de Qualidade no desenvolvimento de software.
Chris Seimmonds, Mastering Embedded Linus Programming, Packt PublishingLtd. Birmingham, UK, ISBN 978-1-78439-253-6, 2015. Laplante, P.A., Real Time Systems Design and Analysis, IEEE Press, 3rd. Edition, 2004. Tanenbaum, A.; Modern Operating Systems, 3rd Edition, 2007. Agrawala, A. K., Real-Time System Design, 1990. Alan Burms, Andy Wellings, Real-Time Systems and Programming Languages. MISRA-C 2012 - http://www.misra.org.uk/ Rico, F.M. (2022). A Concise Introduction to Robot Programming with ROS2 (1 st ed.). Chapman and Hall/CRC. httDS://doi.orq/10.1201,9781003289623 Frank Vasquez , Chris Simmonds Mastering Embedded Linux Programming: Create fast and reliable embedded solutions with Linux 5.4 and the Yocto Project 3.1 (Dunfell), 3rd Edition 3rd ed. Edition, Publisher : Packt Publishing; 3rd ed. edition (May 14, 2021), ISBN-10 : 1789530385, ISBN-13 : 978-1789530384 John Madieu , Mastering Linux Device Driver Development: Write custom device drivers to support computer peripherals in Linux operating systems, Publisher : Packt Publishing (January 8, 2021) , ISBN-10 : 178934204X, ISBN-13 : 978-1789342048 Kaiwan N Billimoria Linux Kernel Programming: A comprehensive guide to kernel internais, writing kernel modules, and kernel synchronization, Publisher : Packt Publishing (March 19, 2021), ISBN-10 : 178995343X, ISBN-13 : 978-1789953435 Jean-Aime Maxa, Mohamed Slim Ben Mahmoud, Nicolas Larrieu, Model Driven Development for Embedded Software Application to Communications for Drone Swarm, Elsevier, Hardcover ISBN: 9781785482632, BookISBN: 9780081023891 Lozano, R. (Rogelio). (2010). Unmanned aerial vehicles: embedded control. 332. httDS://www.wilev.com/en-fr/Unmanned+Aerial+Vehicles%3A+Embedded+Control-p-9781848211278, ISBN: 978-1-848-21127-8