DEPARTAMENTO: Fundamentos da Computação CURSO: Bacharelado em Ciência da Computação DISCIPLINA: Sistemas Embarcados CÓDIGO: 4613R CRÉDITOS: 04 CARGA HORÁRIA: 60 horas-aula VALIDADE: a partir de 2008/2 REQUISITOS: Pré-requisito: Sistemas Operacionais (CC) OBJETIVOS: O cumprimento da disciplina busca dar ao aluno, ao final do semestre, condições de: 1. Introduzir conceitos básicos relacionados a sistemas embarcados. 2. Entender problemas relacionados ao projeto de sistemas embarcados. 3. Estudar estratégias de especificação, projeto, desenvolvimento e validação de sistemas embarcados. 4. Dominar as técnicas básicas de projeto de sistemas embarcados a partir de níveis de abstração superiores. 5. Reconhecer as relações fundamentais existentes entre o hardware e o software em sistemas embarcados. 6. Estudar a relação entre especificação do sistema, modelos de computação, linguagens de programação, linguagens de descrição de hardware e as estruturas de hardware/software em arquiteturas de sistemas embarcados. EMENTA: Metodologias de Projeto. Modelos de Computação. Linguagens de Programação. Software e Hardware Embarcados. Arquitetura do Hardware. Arquitetura do Software (middleware). Arquiteturas Paralelas. Sistemas Operacionais Embarcados. Infraestrutura e Protocolos de Comunicação para Sistemas Embarcados. Sistemas Móveis. Aplicações. Projeto e Desenvolvimento de Aplicações Embarcadas. Nº DA UNIDADE: 01 Nº DE HORAS EM PERCENTUAL: 15% CONTEÚDO: SOFTWARE E HARDWARE EMBARCADO Página 1 de 7
1.1 Introdução 1.1.1 Definição de sistemas embarcados, SoCs e MPSoCs 1.1.2 Características de aplicações embarcadas 1.1.3 Desafios no projeto de sistemas embarcados 1.2 Projeto de sistemas embarcados 1.2.1 Requisitos 1.2.2 Especificação 1.2.3 Projeto da arquitetura software-hardware 1.2.4 Projeto dos componentes de hardware e software 1.2.5 Integração do Sistema 1.3 Formalismos para o projeto de sistemas embarcados 1.4 Exemplos de projetos reais de sistemas embarcados Esta Unidade é explorada no Capítulo 1 de Wolf [1], no Capítulo 1 de Jantasch [2] e no Capítulo 1 de Jerraya [3], estes devem servir de base para o estudo. A idéia é prover aos alunos os conceitos básicos e os desafios que estão envolvidos na especificação e projeto de sistemas embarcados. Requisitos, Especificação e Projeto da arquitetura para o projeto de sistemas embarcados devem ser salientados. Exemplos práticos de projeto de sistemas embarcados devem ser apresentados, visando analisar o compromisso custo x benefício das decisões de projeto adotadas. Exercícios devem ser realizados pelos alunos, visando fixar os principais conceitos envolvidos no projeto de sistemas embarcados assim como analisar o impacto destes nas decisões de projeto e conseqüentemente no produto final. Os exercícios constantes nas bibliografias supracitadas formam bons conjuntos de material de apoio. Recomenda-se, além destes, a discussão de artigos científicos de congressos e revistas especializadas. Nº DA UNIDADE: 02 Nº DE HORAS EM PERCENTUAL: 20% CONTEÚDO: TÉCNICAS DE PROJETO DE SISTEMAS EMBARCADOS 2.1 Metodologias de projeto 2.1.1 Métricas: Time-to-market, Custo de projeto, Qualidade 2.1.2 Fluxo de projeto de sistemas embarcados 2.2 Análise de requisitos Página 2 de 7
2.2.1Diferenças entre requisitos e especificação 2.2.2 Requisitos funcionais e não funcionais 2.3 Análise do sistema e projeto da arquitetura software-hardware 2.4 Qualidade no projeto de sistemas embarcados 2.4.1Técnicas de garantia de qualidade no projeto de sistemas embarcados 2.4.2 Revisões de projeto 2.5 Exemplos de projetos reais Nesta Unidade, estudam-se as técnicas de projeto de sistemas embarcados, com especial ênfase nas metodologias de projeto associadas. A abordagem aqui deve ser eminentemente baseada em estudos de caso reais tais como o projeto de PBX, impressoras, PDAs e set-top boxes, descritos no Capítulo 9 do livro de Wolf [1]. As vantagens e inconvenientes das diferentes técnicas de projeto de sistemas embarcados devem ser salientadas. Aconselha-se fortemente a utilização de artigos científicos publicados em congressos e revistas especializadas para ilustrar e enriquecer a discussão dos temas apresentados nesta unidade. Nº DA UNIDADE: 03 Nº DE HORAS EM PERCENTUAL: 20% CONTEÚDO: MODELOS DE COMPUTAÇÃO 3.1 Diferenciação entre modelos de computação (MOC) e sistemas 3.1.1 Separação entre computação e comunicação 3.1.2 Separação entre função e arquitetura 3.2 Classificação de MOCs 3.2.1 MOCs para sistemas embarcados 3.2.2 Modelos Síncronos e Assíncronos 3.2.3 Modelos Temporizados e não temporizados 3.2.4 Meta modelos 3.2.5 Interfaces entre MOCs pertencentes ao mesmo domínio e a domínios diferentes 3.2.6 Integração de diferentes MOCs em um sistema embarcado 3.3 Relação entre modelos de computação e programação em linguagens de alto nível 3.4 Exemplos práticos de projeto Página 3 de 7
Esta Unidade dedica-se a discutir os modelos de computação e a relação destes com a especificação, em linguagens de alto nível, de sistemas embarcados. Devem ser mostrados os aspectos da separação entre a computação e a comunicação, e entre função (o que o sistema deve fazer) e arquitetura (como será feito). Deverá ser enfatizado os aspectos referentes a integração e as interfaces entre os diferentes modelos de computação, ressaltando os aspectos de homogeneidade e heterogeneidade. Devem ser utilizados diversos exemplos práticos de projetos de sistemas embarcados enfatizando os modelos de computação adotados. Sugere-se a utilização de uma ferramenta de projeto que possibilite aos alunos uma vivência prática dos conceitos abordados até o momento. Aconselha-se a utilização de artigos científicos publicados em congressos e revistas que contenham exemplos práticos de projetos de sistemas embarcados. O capítulo 5 (itens 5.2 e 5.3) de Wolf [1], os capítulos de 2 a 7 de Jantasch [2] e o capítulo 15 de Jerraya [3] devem ser utilizados como referência. Nº DA UNIDADE: 04 Nº DE HORAS EM PERCENTUAL: 25% CONTEÚDO: SISTEMAS OPERACIONAIS EMBARCADOS 4.1 Características de sistemas operacionais embarcados 4.2 Sistemas Operacionais Embarcados 4.2.1 Escalonamento e Estados de um Processo 4.2.2 Estrutura de um Sistema Operacional Embarcado 4.2.3 Restrições Temporais em Processos 4.2.4 Comunicação Inter-processos 4.2.5 Outras Funções do Sistema Operacional 4.3 Políticas de Escalonamento em Sistemas Operacionais Embarcados 4.3.1 Escalonamento RM 4.3.2 Escalonamento EDF 4.3.3 Comparação entre RM e EDF 4.4 Mecanismos de Comunicação Inter-processos para sistemas embarcados 4.5 Customização de sistemas operacionais embarcados 4.6 Avaliação de desempenho para sistemas operacionais embarcados 4.7 Exemplos práticos de projetos de sistemas embarcados que utilizam um sistema operacional Esta Unidade tem por objetivo discutir os principais conceitos envolvidos em sistemas operacionais embarcados. Deve-se realizar uma breve revisão sobre sistemas operacionais, com especial atenção aos aspectos relacionados a múltiplos Página 4 de 7
processos, múltiplas tarefas, multitarefas cooperativas e multitarefas preemptivas. Além disso, deve-se enfatizar sistemas operacionais embarcados de tempo real (RTOS), tanto hard real-time como soft real-time. A ênfase deve ser maior no estudo e na utilização de sistemas operacionais embarcados reais. Deve-se, também, enfatizar o aspecto de customização de um sistema operacional para uma aplicação embarcada. Aconselha-se que os alunos realizem exercícios práticos utilizando um sistema operacional embarcado. O capítulo 6 de Wolf [1] deve ser utilizado como referência. Sugere-se, ainda, a utilização de artigos científicos publicados em congressos e revistas que contenham exemplos práticos de projetos de sistemas embarcados que utilizam um sistema operacional. Nº DA UNIDADE: 05 Nº DE HORAS EM PERCENTUAL: 20% CONTEÚDO: INFRA-ESTRUTURA DE COMUNICAÇÃO 5.1 Introdução 5.2 Arquitetura de Sistemas Embarcados Distribuídos 5.3 Infra-estrutura de Comunicação para Sistemas Embarcados 5.4 Protocolos de comunicação para sistemas embarcados 5.5 Projeto de Infra-estrutura de Comunicação 5.5.1 Análise da Comunicação 5.5.2 Avaliação de Desempenho do Sistema 5.4 Exemplos práticos de projetos Esta Unidade tem por objetivo apresentar os principais conceitos relacionados a infra-estrutura e protocolos de comunicação utilizados em sistemas embarcados (sistemas embarcados móveis e computação ubíqua). Devem ser mostrados diversos exemplos de infra-estruturas e protocolos de comunicação utilizados tanto em sistemas móveis como em computação ubiqüa. Deve-se também realizar exercícios práticos de utilização de diferentes infra-estruturas e protocolos de comunicação, tais como bluetooth e 802.11x para que os alunos possam fixar os conceitos apresentados. O capítulo 8 de Wolf [1] serve como referência. AVALIAÇÃO: G1 = P1 +TP1 + 2TP2 4 Página 5 de 7
Onde: P1 Prova compreendendo os conteúdos das unidades 01, 02, 03, 04 e 05; TP1 Trabalho prático 1, abrange os conceitos das Unidades 01, 02 e 03; TP2 Trabalho prático 2, abrange os conceitos das Unidades 04 e 05; BIBLIOGRAFIA: BÁSICA: 1. Wolf, Wayne. Computers as components: principles of embedded computing system design. San Francisco, CA : Morgan Kaufmann, c2001. 662 p. 2. Jantsch, Axel. Modeling embedded systems and socs: concurrency and time in models of computation. San Francisco, CA : Morgan Kaufmann, c2004. 351 p. 3. Jerraya, Ahmed Amine Multiprocessor systems-onchips. Amsterdam : Elsevier, c2005. 581 p. COMPLEMENTAR: 1. Jantsch, Axel. Modeling embedded systems and socs: concurrency and time in models of computation. San Francisco, CA : Morgan Kaufmann, c2004. 351 p. 2. Jerraya, Ahmed Amine Multiprocessor systems-onchips. Amsterdam : Elsevier, c2005. 581 p. 3. Li, Qing. Real-time concepts for embedded systems. San Francisco, CA : CMP, c2003. 294 p. 4. Marwedel, Peter. Embedded system design. Boston : Kluwer, c2003. 241 p. 5. Kopetz, Hermann. Real time systems : design principles for distributed embeddede applications. Boston : Kluwer Academic, 2004. 338 p. OUTRAS FONTES DE ESTUDO: 1. Berger, Arnold. Embedded systems desing: an introduction to processes, tools, and techniques. Lawrence, Kan : CMP, c2002. 237 p. Página 6 de 7
2. Lavagno, Luciano. UML for real : design of embedded real-time systems. Boston : Kluwer Academic, c2003. 370 p. 3. Edwards, Stephen A.. Languages for digital embedded systems. Boston : Kluwer Academic, c2000. 306 p. 4. Ganssle, Jack G.. The art of designing embedded systems. Boston : Newnes, 2000. 243 p. 5. Labrosse, Jean J.. Embedded systems building blocks: complete and ready-touse modules in C. 2. ed. Lawrence : CMP, c2000. 611 p. Página 7 de 7