Sistemas Embarcados Alexandre Carissimi João Cesar Netto Luigi Carro (asc@inf.ufrgs.br, netto@inf.ufrgs.br, carro@inf.ufrgs.br) Introdução Sistemas embarcados são parte integrante de muitos dispositivos na vida moderna Sistema eletrônico computacional de propósito específico visando o controle de um produto Características importantes Baixo consumo de bateria Tamanho reduzido Baixo custo (hardware e software) Instituto de Informática UFRGS Aula 01 2 Software embarcado Características de sistemas embarcados Sistema projetado para executar em um sistema embarcado Exemplos: Eletrônica de consumo: celular, PDAs, Automação: CLPs Automóvel: ignição, freios,... Entretenimento: TV digital, games, Robótica Comunicação: telefonia, roteadores, switches, modems, Funcionalidade sofisticada algoritmos de controle sofisticados interfaces com usuário dedicadas Baixo custo de projeto e fabricação Pequena exigência de memória Interação com dispositivos físicos sensores, atuadores Dispositivos portáteis tamanho, peso, duração da bateria, etc. Propriedades não-funcionais críticas robustez, tempo-real, segurança, tolerância a falhas, etc. 3 4
Características do software embarcado Desenvolvimento de software embarcado Exigências impostas ao projeto são mais rígidas do que aquelas consideradas para o software tradicional (PCs) Restrições não-funcionais tamanho da memória consumo de energia desempenho tempo real Software tradicional: processo de projeto visa principalmente atendimento de restrições funcionais atendimento de restrições não-funcionais (desempenho, memória) são secundárias Complexidade crescente das aplicações Plataforma de hardware complexa (múltiplos processadores) dificulta desenvolvimento do software Janela de mercado cada vez mais estreita clientes desejam um produto cada vez mais sofisticado e por um preço cada vez mais baixo funcionalidades normalmente são adicionadas por software Aumentar a produtividade do desenvolvimento de software é imprescindível neste mercado Time to market Baixo custo 5 6 Métricas para sistemas embarcados Plataformas de hardware e de software Métricas tradicionalmente aplicadas desempenho ocupação de memória (dados/programa) consumo de energia dissipação de potência tamanho físico/peso Requisitos em geral desejam o melhor valor possível de cada métrica Não indicam a qualidade do produto de software Plataforma = infra-estrutura de recursos de hardware e ou software a partir dos quais se pode desenvolver um sistema processadores, outros componentes IP (propriedade intelectual) software básico (RTOS, drivers ) bibliotecas de software para domínio de aplicação ambiente de desenvolvimento Tendência definitiva no projeto de sistemas embarcados menor time-to-market pelo reuso da plataforma Aplicação = customização da plataforma configuração do hardware principalmente customização por software 7 8
Infra-estrutura de software disponíveis VxWorks (Wind River) ucos RTX QNX VxWorks ecos Symbian Linux Linux c/ patch RT (e variantes) Win-CE Núcleo com funções de tempo real Suporte interrupções, 256 níveis de prioridades memória compartilhada escalonamento preemptivo e round-robin Aplicações sistemas controladores de processos industriais câmeras digitais simuladores de vôo PDAs sistemas de navegação em automóveis. 9 10 Symbian WindowsCE Projetado para dispositivos portáteis Núcleo com suporte a multithread Capacidades de hard realt-time Suporte parcial ao POSIX (P.I.P.S) Roda exclusivamente em processadores ARM (ARMv5, v6 e v7) Embarcado em vários celulares Ericsson e Nokia e em PDAs Sony Ericsson P800 (2002), P1 (2007), W960 (2007) Motorola A920, A925, A1000, RIZR Z10 DoCoMo M1000 BenQ P30, P31 Sistema operacional multithreaded de tempo real Núcleo com baixa ocupação de memória (250 KB) Altamente componentizado (350+ componentes individuais) Arquiteturas suportadas ARM (ST, Intel, Samsung,Texas, Freescale, Altera...) MIPS (MIPS Technologies, AMD, Broadcom,... ) SH4 (Renesas, ST) X86 (AMD, Intel, ST,...) http://www.symbian.com/ 11 12
WindowsCE 6: inovações WindowsCE: desenvolvimento Não código aberto, MAS... licença shared source do Windows CE 6.0 100% do kernel do Windows CE tem seu código-fonte disponível para consulta algumas partes do código podem ser também alteradas, mas não o kernel! Tamanho mínimo (300KB) 600 componentes selecionáveis Maior espaço de endereçamento de memória para processos Ambientes de desenvolvimento Platform Builder 5.0: Device image building tool desenvolvimento de aplicações: código gerenciado (.Net Compact Framework) com Visual C# ou Visual Basic código nativo ou Win32: Embedded Visual C++ 13 14 Windows Mobile Windows XP Embedded Projetado para Smartphones e Pocket PCs Uso: Fiat Punto vários modelos de smartphones HP ipaq hw6940/hw6945, Motorola Q, Palm Treo 700wx, Samsung i321n Versão componentizada do Windows XP Dirigido a dispositivos embarcados que são construídos sobre hardware PC commodity Por possuir a mesma API (Application Programming Interface) do Windows XP, é capaz de rodar aplicativos existentes no mesmo Desenvolvimento com: Windows XP Embedded Studio 15 16
ITRON ITRON é um kernel japonês de tempo real para sistemas embarcados Usado em telefones celulares, câmeras digitais, tocadores de CD, etc. ecos RTOS de código aberto Compatibilidade com as APIs POSIX e os software GNU Configurável customizado para os requisitos da aplicação otimizado para os recursos de hardware Suporte a 10 diferentes arquiteturas-alvo ARM, Hitachi H8300, Intel x86, MIPS, Matsushita AM3x, Motorola 68k, PowerPC, SuperH, SPARC e NEC V8xx Segundo a revista Linux Insider, em 2003, o ITRON já rodava em mais de 3 bilhões de microprocessadores http://ecos.sourceware.org/ 17 18 ecos: características Adequação para utilização Hardware Abstraction Layer (HAL) Real-time kernel gerenciamento de interrupções e exceções escolha de escalonadores e alocadores de memória support a threads rico conjunto de primitivas de sincronização timers, contadores e alarmes suporte a depuração e instrumentação API compatível com µitron 3.0 API compatível com POSIX Bibliotecas ISO C e matemática Suporte a depuração GDB Custo de licença Treinamento de pessoal para suporte do sistema operacional Treinamento para desenvolvimento de aplicações (quando em API específica) Disponibilidade de porte para processador/placa utilizada Custo (pessoal e/ou financeiro) para porte para hardware específico da aplicação Custo do porte de um boot loader 19 20
Próxima aula Introdução ao Linux embarcado e aspectos de software livre