Giter Club home page Giter Club logo

felipecosmes / sistemas_embarcados Goto Github PK

View Code? Open in Web Editor NEW

This project forked from diogocaetanogarcia/sistemas_embarcados

0.0 0.0 0.0 305.05 MB

Repositório da disciplina Sistemas Operacionais Embarcados, do curso de Engenharia Eletrônica da UnB, campus Gama. | Repository for the discipline Embedded Operational Systems, from the Electronic Engineering course at the University of Brasilia, Gama campus.

Shell 10.05% C++ 4.34% Python 10.75% C 67.79% Makefile 5.29% HTML 1.05% CMake 0.73%

sistemas_embarcados's Introduction

Sistemas Operacionais Embarcados - Plano de Ensino

  • Código: FGA0103
  • Créditos: 6
  • Turma: A
  • Locais e horários: Lab SS, 2as, 4as e 6as feiras, sempre das 14:00 às 15:50
  • Professor: Diogo Caetano Garcia
  • Email: diogogarcia(at)unb.br

Datas importantes

Calendário 2022/1

Objetivos

  • Conhecer os fundamentos básicos de sistemas embarcados;
  • Compreender o processo de desenvolvimento de software para um sistema embarcado;
  • Conhecer as técnicas de desenvolvimento de aplicações e drivers para sistemas embarcados.

Ementa

  • Introdução aos sistemas embarcados
  • Introdução ao OS Linux
  • Desenvolvimento para sistemas embarcados
  • Inicialização de sistemas embarcados
  • Subsistema de I/O
  • Recursos de sistemas
  • Introdução ao RTOS
  • Introdução ao LKM
  • Introdução aos device drivers

Método de Ensino

O curso consistirá em aulas presenciais no Laboratório SS nas segundas, quartas e sextas, sempre das 14:00 às 15:50. Todo o conteúdo, listas de exercícios, provas e entrega de trabalhos estarão disponíveis via página no Moodle Aprender 3.

O aluno pode tirar dúvidas via fórum de dúvidas no Moodle da disciplina, ou pode agendar por e-mail uma reunião via video-conferência.

A presença dos alunos será conferida via lista de participantes nas video-conferências pela plataforma Microsoft Teams. FAVOR CONFERIR SEU NOME NA PLATAFORMA, PARA EVITAR ERROS NAS LISTAS DE PRESENÇA. Alunos que não tiverem condições de acompanhar as aulas sincronamente deverão assistir às aulas gravadas e indicar que o fizeram pela plataforma Teams.

Será utilizada a placa Raspberry Pi em toda a disciplina. Caberá ao aluno decidir qual modelo de Raspberry Pi utilizar, de acordo com suas necessidades no projeto final.

Avaliação

  • Dois testes (40% da nota final);
  • Projeto de fim de curso (30% da nota final);
  • Pontos de controle (20% da nota final);
  • Respostas dos questionários das aulas no Moodle (10% da nota final).

Os alunos formarão duplas para montar um projeto final de maior dificuldade, cobrindo os tópicos vistos em sala de aula. Os projetos serão propostos pelos alunos, e será apresentado um protótipo em funcionamento e o relatório do mesmo, na forma de relatório científico com formatação IEEE, contendo os seguintes tópicos:

  1. Resumo (1 ponto): Apresentar o projeto de forma geral e em poucas palavras.
  2. Introdução (1 ponto): Descrição do problema a ser resolvido e revisão bibliográfica do assunto.
  3. Desenvolvimento (5 pontos): Solução, com justificativa baseada em fundamentos teóricos. O desenvolvimento deverá conter a descrição do hardware e do software: 1. Descrição do hardware (2 pontos) , incluindo a BOM (bill of materials) e a montagem (diagrama de blocos, esquemático, descrição textual etc.). 2. Descrição do software (3 pontos) , apresentando e justificando o algoritmo desenvolvido. Esta seção do relatório NÃO CONSISTE em simplesmente replicar o código, e sim em explicar como ele funciona, com base em fluxogramas, pseudo-códigos etc. O código deverá ser apresentado como um apêndice do relatório.
  4. Resultados (2 pontos): Explicar os experimentos definidos para validar o projeto proposto, seguido de análise crítica dos resultados esperados e obtidos. Em caso de divergências, apontar as possíveis causas.
  5. Conclusão (1 ponto): Retomar sucintamente os principais pontos do relatório: descrição do problema, solução utilizada e resultados obtidos.

Os pontos de controle serão prévias do projeto final. Cada dia de atraso na apresentação dos pontos de controle acarreta na perda de 0,5 pontos da nota do mesmo. Serão esperados os seguintes resultados para cada ponto de controle:

  • PC1: proposta do projeto (justificativa, objetivos, requisitos, benefícios, revisão bibliográfica).
  • PC2: protótipo funcional do projeto, utilizando as ferramentas mais básicas da placa de desenvolvimento, bibliotecas prontas etc.
  • PC3: refinamento do protótipo, acrescentando recursos básicos de sistema (múltiplos processos e threads, pipes, sinais, semáforos, MUTEX etc.).
  • PC4: refinamento do protótipo, acrescentando recursos de Linux em tempo real.

Todos os relatórios dos pontos de controle serão entregues via Moodle. Em caso de cópias (integrais ou parciais), os relatórios ficarão com nota ZERO. Os diferentes templates com formatação IEEE estão disponíveis em:

Programa

  1. Introdução aos sistemas embarcados
  2. Introdução ao OS Linux
  3. Obtendo informações do sistema
  4. Principais comandos
  5. Estrutura de diretórios
  6. Instalação padrão de programas
  7. Desenvolvimento para sistemas embarcados
  8. Conceito de cross-platform
  9. Componentes e suas funções (host, target, interface de comunicação, etc)
  10. Processo de geração de imagens
  11. Utilização de makefiles
  12. Inicialização em Sistemas Embarcados
  13. Ferramentas do target
  14. Transferência de imagens
  15. Ferramentas para o Target System
  16. Transferência de imagens
  17. Cenários de boot do target
  18. Seqüência de inicialização do target
  19. Subsistema de I/Os.
  20. Conceito básico de I/Os
  21. O subsistema de I/Os
  22. Modo de transferência serial e em blocos
  23. Funções de um subsistema de I/O
  24. Recursos do sistema I
  25. Processos, sinais e threads
  26. Comunicação e sincronismo entre processos
  27. Programação para redes (sockets)
  28. Introdução ao RTOS
  29. Características dos sistemas RT
  30. Conceitos de Hard Real-Time e Soft Real-Time
  31. Conceito de latência e Jitter
  32. Introdução ao framework Xenomai
  33. Recursos de sistema II
  34. Tarefas
  35. Alarmes
  36. Mutex
  37. Semáforos
  38. Variáveis condicionais
  39. Fila de mensagens
  40. Introdução ao LKM
  41. Introdução
  42. Módulos do kernel
  43. Desenvolvimento de um módulo
  44. Comandos do modutils
  45. Introdução aos device drivers
  46. Conceitos básicos sobre device driver
  47. Estrutura de um device driver
  48. Funções de um device driver
  49. Instalação e carregamento de um device driver

Bibliografia

Bibliografia básica:

  1. Doug Abbott, Embedded Technology: Linux for Embedded and Real-Time Applications, 2nd Ed., Newnes, USA, 2006.
  2. Mark Mitchell, Jeffrey Oldham e Alex Samuel, Advanced Linux Programming, New Riders, USA, 2001.
  3. Christopher Hallinan, Embedded Linux Primer: A Practical Real-World Approach, Prentice Hall, USA, 2006.
  4. Qing Li e Caroline Yao, Real-Time Concepts for Embedded Systems, CMP, USA, 2003.

Bibliografia complementar:

  1. Rajaram Regupathy, Bootstrap Yourself with Linux-USB Stack : Design, Develop, Debug, and Validate Embedded USB, Course Technology, USA, 2011.
  2. Daniel Bovet e Marco Cesati, Understanding the Linux Kernel, 3rd Ed., O'Reilly, USA, 2005.
  3. Jonathan Corbet, Alessandro Rubini e Greg Kroah-Hartman, Linux Device Drivers, 3rd Ed., O'Reilly, USA, 2005.
  4. Karim Yaghmour, Jon Masters e Gilad Ben-Yossef, Building Embedded Linux Systems, 3rd Ed., O'Reilly, USA, 2003.

sistemas_embarcados's People

Contributors

diogocaetanogarcia avatar srcaetano avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.