Sistemas de Tempo Real Curso: Engenharia de Controle e Automação Disciplina: Informática Aplicada II Prof. MSc. Christien Lana Rachid Sistemas cujas características dependem do cumprimento de requisitos temporais e lógicos. As consequências do não cumprimento desses mesmos requisitos podem causar prejuízos nefastos. O que são Sistemas de Tempo Real? Aplicações e exemplos de sistemas de tempo real são onipresentes e estão proliferando, aparecendo como parte de nossas infra estruturas comerciais, governamentais, militares, médicas, educacionais e culturas. Nesses, estão incluídos: Sistemas de controle de veículos para automóveis, metrôs, aeronaves, ferrovias e navios; Controle de tráfego para auto-estradas, espaço aéreo, Trilhos de ferrovias e corredores de navegação marítima; Controle de processo para usinas de energia, Indústrias químicas e para produtos de consumo, como refrigerantes e cervejas. Sistemas de tempo real Sistemas médicos para radioterapia, monitoramento de pacientes e desfibrilamento; Uso militares como controle de tiros, rastreamento e sistemas de comando e controle; Sistemas de manufaturas com robôs; Telefone, rádio e comunicações por satélites; Jogos por computador; Sistemas de multimídia que provêm interfaces textuais, gráficas, de áudio e de vídeo; Sistemas domésticos para monitoramento e controle de eletrodomésticos; Sistemas de tempo real Um sistema de computação de tempo real também pode ser um componente de um sistema maior no qual está embutido; com razão, tal componente é chamado de sistema embarcado. Sistemas de tempo real Um Sistema Embarcado (ou embutido) é a combinação de componentes de hardware e software, que usa interfaces de entrada e saída específicas e dedicadas, e diferentemente de computadores pessoais ele é dedicado a realizar uma tarefa específica. Sistema usa microprocessadores ou microcontroladores. Atualmente uma pessoa entra em contato diariamente com pelo menos 20 processadores, e estimativas apontam para 350 até o final desta década. Conceito de sistema embarcado Alguns exemplos de onde são usados sistemas embarcados Alguns exemplos de onde são usados sistemas embarcados Alguns exemplos de onde são usados sistemas embarcados Sistemas embarcados são desenvolvidos para uma tarefa específica. Alguns, inclusive, por questões como segurança e usabilidade, possuem restrições para computação em tempo real. O software escrito para sistemas embarcados é muitas vezes chamado firmware, e armazenado em uma memória ROM ou memória flash ao invés de um disco rígido. Características: Por vezes o sistema também é executado com recursos computacionais limitados: sem teclado, sem tela e com pouca memória. Uma grande vantagem dos sistemas embarcados é que podem trabalhar continuamente por anos sem erros, e que possam por vezes recuperarem-se sozinhos após erros, o que é fundamental para o mundo globalizado que busca evolução tecnológica e menor dependência da manutenção humana. Características: Ao contrário de programas desenvolvidos para computadores de uso geral, o software embutido não pode ser usado em outro sistema embutido sem que antes sejam feitas mudanças significativas. Isso porque cada hardware é projetado sob medida para uma dada aplicação. Características: Os primeiros computadores digitais na década de 40 em geral se dedicavam a uma única tarefa. Eram muito grandes para serem considerados embarcados. O conceito de controlador programável foi desenvolvido algum tempo depois. O primeiro sistema embarcado reconhecido foi o Apollo Guidance Computer, desenvolvido por Charles Stark Draper no MIT. Era um computador de guia, que operava em tempo real, sendo considerado o item mais arriscado do projeto Apollo. História O primeiro sistema embarcado de produção em massa foi o computador guia do míssil nuclear LGM-30 Míssil Minuteman, lançado em 1961. Ele possuía um disco rígido para a memória principal. Quando a segunda versão do míssil entrou em produção em 1966, o computador guia foi substituído por um novo, que constituiu o primeiro uso em grande volume de circuitos integrados. A tecnologia desse projeto reduziu o preço de circuitos integrados permitindo seu uso em sistemas comerciais. Desde suas primeiras aplicações na década de 60, os sistemas embarcados vêm reduzindo seu preço. Também tem havido um aumento no poder de processamento e funcionalidade. História • SIMPLES: CPUs de 8 bits (8085, Z-80 e 6.800). Existem também sistemas baseados em CPUs de 4 bits, mas são pouco conhecidas. Também empregam as CPUs de 16 bits (8086, 8088, 80186, 80188, 80286, 68000, 68010). Eles são empregados em controles pequenos como sinais de trânsito, alguns instrumentos médicos, controle de temperatura, etc.. • COMPLEXIDADE MÉDIA: CPUs compatíveis com a família 386 e 486. Sua arquitetura é muito semelhante ou até idêntica à de um PC AT. Ex: pontos de venda, instrumentos médicos, computadores de bordo, etc.. • SOFISTICADOS: CPUs compatíveis com a família Pentium e lembram um moderno computador, sem monitor, teclado e disco. Ex: sistemas dedicados multimídia, na automação de centrais telefônicas, no controle de grandes plantas fabris, etc.. CPUs para sistemas embutidos •Processamento; •Periféricos; •Disponibilidade. Interfaces do Utilizador Sistemas simples: utilizam botões, LEDs ou telas bastante limitadas, geralmente mostrando somente números ou uma fila pequena de caracteres. Sistemas mais complexos: utilizam uma tela gráfica completa, usando tecnologias como ecrã táctil e joystics. Interfaces do Utilizador Ecrã tãctil Joystics Interfaces do Utilizador - - Os sistemas embarcados comunicam-se com o meio externo através de periféricos, tais como: Interface serial; Universal serial bus (USB); TCP/IP; Phase-locked loop: é um sistema de realimentação em que o sinal é usado para sincronizar a frequência instantânea do sinal de saída com a frequência instantânea do sinal de entrada. GPIO (General Purpose Input/Output): são basicamente portas programáveis de entrada e saída de dados. São utilizadas para prover uma interface entre os periféricos e os microcontroladores/microprocessadores. Interfaces do Utilizador Sistemas embarcados geralmente residem em máquinas que, espera-se, possam trabalhar continuamente por anos sem erros, e que possam por vezes recuperarem-se sozinhas após erros. Portanto, o software é geralmente desenvolvido e testado mais cuidadosamente de que em computadores pessoais. A recuperação de erros pode ser atingida com técnicas como o watchdog timer, que reinicia o sistema a menos que o software notifique periodicamente um identificador. Interfaces do Utilizador Os STDrE são aqueles que possuem fortes requisitos no atendimento de compromissos temporais, tais como tempo máximo de execução, jitter e deadline, além de robustez e segurança. - Hard real-time - Soft real-time Sistemas em Tempo-Real Embarcados Distribuídos Os sistemas de tempo-real desempenham um papel crucial nas sociedades modernas, suportando áreas aplicacionais tais como controle de centrais nucleares, controle de indústrias químicas, sistemas aviónicos, sistemas de controle de tração, motor e travagem em automóveis, controle de tráfego aéreo, marítimo, ferroviário e rodoviário, sistemas de telecomunicações, automação industrial, robótica, sistemas de defesa militar, missões espaciais, etc.. Sistemas em Tempo-Real Embarcados Distribuídos VEÍCULOS INTELIGENTES A automação veicular, além de propiciar ao motorista maior segurança em condições críticas adversas, também pode auxiliá-lo na condução do veículo, onde uma ou mais tarefas podem ser automatizadas, tais como: seguir a pista, mantendo a faixa correta, manter uma distância segura entre veículos, regular automaticamente a velocidade do veículo conforme as condições de trânsito e características da rodovia, fazer ultrapassagens seguras e evitar obstáculos, achar o caminho mais curto e seguro para o destino bem como mover o veículo e estacioná-lo em ambiente urbano. Exemplos Práticos de Sistemas Embarcados - Sistema de injeção de combustível; - Sistema de freio; - Sistema de posicionamento angular da barra de direção. A tecnologia drive-by-wire Um bom exemplo de sistema embarcado é este MP4 player. Ele utiliza apenas três chips, sendo um o controlador principal, outro um chip de memória flash (usado para armazenamento) e o terceiro um sintonizador de rádio AM/FM, que poderia muito bem ser retirado do projeto sem prejuízo para as demais funções do aparelho. MP4 Sistemas como PDAs são geralmente considerados sistemas embarcados pela natureza de seu hardware, apesar de ser muito mais flexíveis em termos de software. Possuem uma interface completa. PDA As urnas eletrônicas brasileiras foram criadas com base no Windows CE embarcado utilizando essa tecnologia. Urnas Eletrônicas A Microsoft Corporation anunciou em 2001 a disponibilidade do Windows XP Embarcado, versão do sistema operacional Windows XP para terminais eletrônicos, que permite o rápido desenvolvimento de dispositivos conectados de forma mais segura e completa. Baseado nos mesmos recursos do Windows XP Professional, o Windows XP Embarcado permite que os desenvolvedores de sistemas embarcados usem configurações pré-construídas ou selecionem entre mais de 10 mil componentes de acordo com as necessidades de seus clientes. A ferramenta de configuração do XP Embarcado, é um grande facilitador do processo, trazendo grande produtividade e segurança aos fabricantes. Muitas empresas que já usavam o alguma versão do Windows convergiram para o XP embarcado, tais como automação comercial, industrial e bancária. Mais sobre o Windows embarcado... O que é o Linux? Sistema Operacional de código aberto, baseado em Unix. “ O sistema do pinguim”, como é conhecido. Por que usar Linux num projeto embarcado? - o código-fonte disponível e de boa qualidade; - muitas aplicações disponíveis; - portável e escalável; - redução de custos. Linux e Sistemas Embarcados... Exemplos de uso do Linux em sistemas embarcados: Linksys WRT54G (roteador), Sharp Zaurus(palmtop), Motorola A1200 (celular), GP2X ( videogame portátil) e outros... Linux e Sistemas Embarcados... Dispositivos Móveis Exemplos de sistemas operacionais embarcados: eCos, Windows CE, VxWorks, Free RTOS, VirtuOS(nacional), HardHat Linux, Zeroshell Linux, Angstrom Linux, Palm OS, Symbian e outros... Windows embarcado Diferenças entre Linux tradicional e Linux embarcado: Android é uma plataforma aberta voltada para dispositivos móveis; Desenvolvida pela Google e atualmente é mantida pela Open Handset Alliance (OHA). Todas as aplicações desenvolvidas para essa plataforma utilizam à linguagem Java. Android A plataforma Android é a primeira plataforma móvel completa, aberta e livre. Um dos SmartPhones que ofereceu suporte a esse sistema operacional foi o G1 da empresa T-Mobile. Android Application framework proporciona a reutilização e substituição de componentes; Gráficos Otimizados possui uma biblioteca 2D; e 3D baseada na especificação OpenGL ES 1.0 (aceleração de hardware é opcional); SQLite para guardar dados estruturados; Suporte multimídia para áudio, vídeo e formatos de imagem (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF) Telefonia GSM (dependente de hardware) Bluetooth, EDGE, 3G, e WiFi (dependente de hardware) Câmera, GPS, compasso, e acelerômetro (dependente de hardware) Rico ambiente de desenvolvimento , incluindo um emulador de dispositivo, ferramentas de depuração, memória, performance e um plugin para o Eclipse (ADT) A estrutura geral da plataforma Android A arquitetura do Android Junto com o Android vem um conjunto de aplicações fundamentais. São elas: um cliente de e-mail; programa de SMS; agenda; mapas; navegador; contatos entre outros. Aplicações System C library – uma implementação derivada da biblioteca C padrão sistema (libc) do BSD sintonizada para dispositivos rodando Linux. Media Libraries – baseado no PacketVideo’s OpenCORE; as bibliotecas suportam os mais populares formatos de áudio e vídeo, bem como imagens estáticas. Surface Manager – gere o acesso ao subsistema de exibição bem como as múltiplas camadas de aplicações 2D e 3D; LibWebCore – um web browser engine utilizado tanto no Android Browser quanto para exibições web. FreeType – renderização de fontes bitmap e vector SQLite – um poderoso e leve engine de banco de dados relacional disponível para todas as aplicações Bibliotecas Inclui um grupo de bibliotecas que fornece a maioria das funcionalidades disponíveis nas principais bibliotecas da linguagem Java. Roda em seu próprio processo, com sua própria instância da máquina virtual Dalvik. O Dalvik foi escrito de forma a executar várias VMs eficientemente. Ele executa arquivos .dex, que é otimizado para consumo mínimo de memória. Android Runtime Utiliza a versão 2,6 do kernel do Linux para os serviços centrais do sistema, tais como segurança, gestão de memória, gestão de processos, etc. O kernel também atua como uma camada de abstração entre o hardware e o resto do software. Linux Kernel VINÍCIUS, Ícaro; XAVIER, Wallace; COSTA, Davi da; MENDES, Leandro. Sistemas Embarcados. Disponível em: <http://knol.google.com/k/caro-vincius/sistemas-embarcados/3epfj4wxfx6qf/5#> Acesso em: mai. 2009. CARRO, Luigi; WAGNER, Flávio Rech. Sistemas Computacionais Embarcados. In: Juan Manuel Adan Coello; Sandra Fabbri. (Org.). XXII Jornadas de Atualização em Informática. Campinas: UNICAMP / SBC, 2003, v. 1, p. 45-94. JUNG, Cláudio Rosito; OSÓRIO, Fernando Santos; KELBER, Christian Roberto; HEINEN, Farlei José. Computação Embarcada: Projeto e Implementação de Veículos Autônomos Inteligentes. XXV Congresso da Sociedade Brasileira de Computação. UNISINOS –São Leopoldo/RS, 2005. HALL, Mike.“Eu nunca vou usar Windows XP Embedded!” Disponível em: <http://www.microsoft.com/brasil/msdn/WindowsEmbedded/artigos/mitos2.mspx> 8 de outubro de 2008. Acesso em: mai. 2009. Sistema embarcado. Disponível em: <http://pt.wikipedia.org/wiki/Sistema_embarcado> Acesso em: mai. 2009. Disponível em: <http://pt.wikipedia.org/wiki/Windows_CE> Acesso em: mai. 2009. Microsoft lança o Windows XP Embedded, 2001. Disponível em: <http://www.novomilenio.inf.br/ano01/0112a004.htm > Acesso em: mai. 2009. ALEMIDA, Luis; PEDREIRAS Paulo. Sistemas de Tempo-Real: uma abordagem prática. Revista do Detua, vol.4, no 2, janeiro 2004. ZELENOVSKY , Ricardo; MENDONÇA, Alexandre. Introdução aos Sistemas Embutidos. 5 de maio de 2008 Disponível em: <http://www2.eletronica.org/artigos/eletronica-digital/introducao-aos-sistemasembutidos/> Acesso em: mai. 2009. FREITAS, Edilson Pignaton de. Metodologia orientada a aspectos para a especificação de Sistemas Tempo-Real Embarcados Distribuídos –Dissertação (mestrado) Universidade Federal do Rio Grande do Sul. Porto Alegre: programa de pós-graduação em Computação, 2007. Referências Bibliográficas