arquitetura de sistemas embarcados
Transcrição
arquitetura de sistemas embarcados
ARQUITETURA DE SISTEMAS EMBARCADOS AULA 15 – Arquitetura de Computadores Gil Eduardo de Andrade O conteúdo deste documento é baseado no livro “Princípios Básicos de Arquitetura e Organização de Computadores” – Linda Null e Julia Labur INTRODUÇÃO Pesquisadores acreditam que processadores embarcados são a próxima grande tendência em hardware de computadores. Uma definição exata de sistemas embarcados é difícil de ser feita. Em todos os sentidos, eles são computadores reais, tendo uma UCP, memória e algum tipo de capacidade de E/S. Mas eles são diferentes dos computadores de propósito geral porque eles realizam um número limitado de tarefas dentro do domínio de um grande sistema. Sistemas embarcados podem ser encontrados em dispositivos simples, como uma máquina de café até sistemas mais complexos e críticos como aeronaves comerciais. Muitos dos automóveis atuais contêm dezenas de computadores, cada um dos quais controlando um subsistema específico. Estes subsistemas incluem injeção de combustível, controle de emissões, freios antibloqueantes e piloto automático. Além disso, processadores automotivos se comunicam entre si, de modo que seus esforços sejam coordenados e adequados em relação ao estado do automóvel. Sistemas embarcados também podem ser encontrados dentro de outros computadores, um controlador de unidade de disco é um exemplo de um computador dentro de outro computador. O controlador posiciona o braço do disco e codifica e decodifica dados à medida que estes são escritos e lidos na superfície do disco. O DESENVOLVIMENTO DE SISTEMAS EMBARCADOS O desenvolvimento de sistemas embarcados se difere da computação de propósito geral por exigir um profundo conhecimento do hardware subjacente. Uma pessoa que escreve programas de aplicação em linguagem de alto nível, tais como Java ou C++, pode nunca conhecer ou se preocupar com a ordem de representação dos bytes para armazenamento de dados no sistema, ou se uma interrupção ocorre em um determinado momento. Entretanto, estas considerações são muito importantes na mente de um programador de sistemas embarcados. Neste contexto ainda temos grandes restrições sob as quais muitos sistemas embarcados devem funcionar. Estas restrições incluem velocidade limitada da UCP, memória limitada, restrições de peso, consumo de energia limitado, espaço físico limitado, entre outros. A maior parte dos sistemas embarcados podem ser divididos em três categorias, baseadas em seus requisitos de energia: operados a bateria, consumo fixo e sistemas de alta densidade. Sistemas operados a bateria, tais como os encontrados em dispositivos portáteis de áudio, necessitam maximizar a vida da bateria e minimizar o seu tamanho. Sistemas de consumo fixo, tais com os encontrados em telefones públicos e dispositivos identificadores de chamadas, possuem suprimento de energia limitado (tal como por linhas telefônicas), e seu objetivo é oferecer o máximo desempenho dentro das restrições de energia limitada disponível. Sistemas de alta densidade (sistemas de alto desempenho e multiprocessado) estão mais preocupados com a eficiência energética, basicamente devido a questões de dissipação de calor. Por exemplo, sistemas de voz IP (VOIP) integram dados com sinais de voz e requerem um número significativo de componentes, e isto se traduz em uma geração significativa de calor. Estes sistemas frequentemente têm suprimento ilimitado de energia, mas devem limitar o consumo para evitar superaquecimento. De maneira geral os sistemas embarcados devem ser funcionais e flexíveis, embora pequenos e de baixo custo (de desenvolvimento e fabricação). O consumo de energia é sempre uma preocupação importante. UMA VISÃO GERAL DO HARDWARE EMBARCADO Os processadores embarcados que controlam a telemetria de aeronaves são radicalmente diferentes daqueles que controlam a qualidade de uma xícara de café produzida por uma cafeteira sofisticada. Estas aplicações diferem tanto na complexidade quanto em seus modelos de temporização. Do mesmo modo, eles requerem soluções de hardware totalmente divergentes. Para aplicações de controle mais simples, microcontroladores existentes no mercado são muitas vezes bem adequados. Aplicações de complexidade mais alta podem exceder a capacidade de componentes padronizados em termos de desempenho, consumo de energia ou custo. Possivelmente um circuito configurável manufaturado poderia ser adaptado à tarefa. Nos casos em que a aplicação é altamente especializada ou o tempo de resposta é crítico, um chip deve ser projetado desde o início. Portanto, colocamos processadores embarcados em três amplas classificações: processadores padronizados, processadores reconfiguráveis e processadores totalmente customizados. Sistemas padronizados de hardware embarcado Avanços na tecnologia VLSI são mais óbvios quando pensamos sobre a sempre crescente potência disponível para nós em sistemas de mesa, laptops e PDAs. A potência computacional dos mainframes refrigerados a água de ontem cabe hoje em um bolso de camisa e custa muito menos. → Microcontroladores Muitos processadores embarcados utilizados no nosso dia a dia são derivados dos processadores de propósito geral com tecnologia de ponta de ontem. Embora esses processadores antigos não sejam suficientemente potentes para executar o software atual comum em computadores de mesa (desktops), eles possuem potência mais do que suficiente para aplicações simples de controle. Além disso, estes processadores são agora vendidos por uma fração do seu preço original, porque seus fabricantes recuperam há muito tempo os custos de seu desenvolvimento quando eles eram largamente usados em computadores pessoais. Como exemplos podemos citar o 68HC12 da Motorola, o chip era coração dos primeiros computadores Apple. O 8051 da Intel é um derivado do 8086, o processador que era coração do primeiro IBM PC. Microcontroladores têm muito em comum com processadores de propósito geral – PPG. Como um PPG, um microcontrolador é programável e pode acessar uma grande variedade de periféricos. Ao contrário de um PPG, um microcontrolador processa a um velocidade de relógio menor, tem espaço endereçável de memória menor e seu software não pode ser alterado pelo consumidor. Um exemplo simplificado de um microcontrolador é mostrado na Figura 1. Ele consiste de um núcleo de UCP, memória para programas e dados, portas de E/S, controladores de E/S e do barramento do sistema, um relógio e um temporizador vigia (watchdog). O temporizador vigia fornece um mecanismo seguro contra falhas que se ativa quando um problema é detectado. Computadores de propósito geral não necessitam de temporizadores vigia porque eles interagem diretamente com seres humanos, já que se o sistema falha, um humano corrige a situação, geralmente reiniciando o computador. O temporizador vigia fornece essa funcionalidade de reiniciar ao detectar uma falha. Figura 1: Um microcontrolador simplificado Conceitualmente, o projeto e a operação de temporizadores vigia são bastante simples. O temporizador é inicializado com um valor inteiro do qual é subtraído 1 depois de decorrido um número determinado de milissegundos. O programa de aplicação que está em execução no microcontrolador periodicamente “reinicia” o temporizador, fazendo a contagem voltar para seu valor inicial. Se o temporizador alguma vez atingir o valor zero, o circuito vigia pode imitir um sinal de reiniciar ao sistema. A reversão do temporizador é de responsabilidade do programa de aplicação em execução no microcontrolador. Existem literalmente centenas de diferentes tipos de microcontroladores, alguns dos quais são construídos com aplicações específicas em mente. Alguns dos mais populares são o Intel 8051; o 16F84A da Microchip, um membro da família PIC (Programmable Intelligent Computer); e o Motorola 68HC12. Microcontroladores podem ter interfaces analógicas que são adequadas para aplicações de controle físico não discreto e buffers de E/S projetados para vazão contínua de alto volume. UCPs e microcontroladores podem ser tão pequenos como os de 4 bits e tão grandes como os de 64 bits, com memória variando de poucos kilobytes a muitos megabytes. A fim de fazer seus circuitos tão pequenos e rápidos quanto possível, arquiteturas em nível de instruções (ISAs) de microcontroladores são geralmente baseadas em pilhas e podem ser otimizadas para uma área particular de especialização. Apesar de sua “tecnologia antiga”, microcontroladores continuam a ser largamente usados em uma grande variedade de produtos para consumo e maquinário industrial. → Sistemas em um chip Observamos que microcontroladores são sistemas computacionais em miniatura. Eles consistem de uma UCP, memória e portas de E/S. Eles não são , contudo, chamados de sistemas em um chip. Essa designação geralmente é reservada para dispositivos que são muito mais complexos. Sistemas de um chip (SOCs) se distinguem de microcontroladores por sua complexidade e mais recursos no chip. Microcontroladores muitas vezes requerem circuitos de suporte, como processadores de sinal, decodificadores e conversores de sinal. Um sistema em um chip é uma peça única de silício que contém todos os circuitos para fornecer um conjunto de funções, podendo consistir em mais de um processador. Estes processadores acoplados não necessariamente compartilham o mesmo relógio ou espaço de memória. As funções dos processadores individuais podem ser especializadas até certo ponto, desde que eles disponham de ISAs projetadas especificamente para programação de um domínio particular de aplicação. Por exemplo, um roteador de internet pode ter vários processadores RISC que tratam do tráfego de comunicação e um processador CISC para configuração e gerenciamento do próprio roteador. SOCs possuem uma capacidade maior de memória passando da casa dos kilobytes para os megabytes. A grande vantagem dos SOCs é que são mais rápidos, menores, mais confiáveis e consomem menos energia do que os vários chips que eles substituem. Embora muitos SOCs estejam disponíveis no mercado, a customização é algumas vezes necessária para suportar uma determinada aplicação. Em vez de absorver o custo de projetar um sistema em um chip desde o início, um chip semicustomizado pode ser montado a partir de circuitos de propriedade intelectual (Ips) licenciados por empresas que se especializam na criação e teste de projeto de circuitos. → Hardware configurável Algumas aplicações são tão especializadas que nenhum controlador disponível no mercado pode realizar o trabalho. Quando projetistas se deparam com esta situação, eles podem escolher uma dentre duas alternativas: eles podem decidir criar um chip a partir do zero ou eles podem usar um dispositivo lógico programável (PLD – programmable logic device). Quando a velocidade e o tamanho do circuito não são as principais preocupações, um PLD pode ser uma boa escolha. → Hardware embarcado projetado sob encomenda Para dominar o maior mercado para seus produtos, fabricantes de processadores embarcados carregam seus chips com o máximo possível de recursos. A pior desvantagem de comprar estes processadores complexos prontos é que algumas das funcionalidades do chip podem não ser necessárias. Circuitos sem uso não apenas tornam o chip mais lento, mas também geram calor e desperdiçam energia preciosa. Em aplicações com fortes restrições, os dispositivos lógicos programáveis não são de muita ajuda porque tendem a ser lentos e famintos por energia. Em resumo, existem situações nas quais uma abordagem razoável é criar um circuito integrado específico para a aplicação (ASIC – application-specific integrated circuit) totalmente customizado. A complexidade destes chips escapa a compreensão humana, para lidar com ela uma linguagem de definição de hardware (HDL – hardware definition language) é usada. Estas linguagens permitem ao projetista especificar o comportamento do circuito em um nível algorítmico. Em vez de pensar sobre o circuito em termos de portas e fios, um projetista trabalha com variáveis e estruturas de controle de uma maneira a similar a trabalhar com uma linguagem de programação. A segunda HDL dominante é VHDL, que é uma abreviatura para linguagem de projeto de hardware para circuitos integrados de muito alta velocidade – Very (high speed integrated circuit) Hardware Design Language. A sintaxe da linguagem VHDL é similar a linguagem de programação Ada, a qual já foi a única linguagem autorizada para quaisquer projetos do Departamento de Defesa norte-americano. Organização de memória em sistemas embarcados Existem duas maneiras principais pelas quais a organização de memória de sistemas embarcados difere da organização de memória de computadores de uso geral. Primeiro, sistemas embarcados raramente empregam memória virtual. A principal razão para isto é que a maioria dos sistemas embarcados tem restrições de tempo. A operação adequada do sistema requer que todas as atividades ocorram dentro de espaços de tempo claramente definidos e tempos de acesso à memória virtual podem variar. Além disso, a manutenção da tabela de páginas de memória virtual consome memória e ciclos de máquina preciosos que poderiam ter um uso melhor. O segundo aspecto que distingue a memória de sistemas embarcados é a variabilidade e a diversidade de arquiteturas de memória. Diferentemente de programadores de sistemas de uso geral, os programadores de sistemas embarcados estão continuamente cientes dos tamanhos e tipos de memória disponíveis. Um único sistema embarcado pode conter memória de acesso randômico (RAM), ROM e memória flash. O espaço de memória nem sempre é contínuo, de modo que alguns endereços de memória podem ser inválidos. A memória somente de leitura contém constantes e literais usados pelo programa embarcado. Visto que pequenos sistemas embarcados geralmente executam somente um programa, constantes podem ser armazenadas em ROM, protegendo-as assim de alterações acidentais. Em muitos sistemas embarcado, o projetista determina a posição do código de programa e se o código erá residir em RAM, ROM ou memória flash. Figura 2: Um modelo de memória de sistema embarcado. Sistemas operacionais embarcados Microcontroladores simples geralmente executam uma única aplicação que tende a ser de baixa a média complexidade. Assim sendo, microcontroladores não requerem gerenciamento de recursos ou tarefas além do que é fornecido pelo seu programa. À medida que os recursos do hardware embarcado continuam a crescer, aplicações embarcadas se tornam mais diversas e complexas. Atualmente, os processadores embarcados mais sofisticados são capazes de suportar a execução concorrente de vários programas. Os sistemas operacionais embarcados diferem dos sistemas operacionais de propósito geral de duas maneiras importantes. Primeiro, eles permitem acesso direto ao hardware, diferentemente dos sistemas operacionais de propósito geral. Segundo, e mais importante, a reação a eventos de um sistema embarcado é claramente definida e compreendida. Vendedores de sistemas operacionais embarcados objetivam atingir um equilíbrio entre oferecer diversos recursos e pouca ocupação de memória tornando seus sistemas tão modulares quanto possível. O núcleo geralmente consiste de um pouco mais do que um escalonador, um gerenciador de comunicações entre processos, facilidades de E/S e uma coleção de mecanismos de proteção, como semáforos. Todas as outras características do sistema operacional, tais como gerenciamento de arquivos, suporte a redes e uma interface de usuário, são opcionais. Se elas não forem necessárias, não são instaladas. Existem literalmente dúzias de sistemas operacionais embarcados disponíveis. Entre os mais populares estão QNX, Windows CE, Embedded Windows XP, Embedded Linux e Google Android (Plataforma). O QNX é o mais antigo deste grupo, por mais de 20 anos tem sido executado em sistemas científicos e médicos em PowerPC, MIPS e arquitetura Intel. O Windows CE é largamente utilizado em PDAs e artefatos de mídia. O Windows XP Embedded é tão poderoso que pode ser usado como servidor de rede. Ambos os sistemas são repletos de recursos e podem ser executados em diversas famílias de processadores, como MIPS, ARM e a família Intel. Observamos que estes sistemas operacionais não são apenas versões de menor tamanho dos sistemas Windows para desktops. Eles foram escritos especificamente para suportar dispositivos eletrônicos portáteis.
Documentos relacionados
Sistemas de tempo real
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 continuame...
Leia maisbaixe um dos nossos 14 EBOOKs gratuitamente
quanto para o resto do curso. Em sua vida, como agente da área da tecnologia, terá que se adaptar a vários tipos e versões de sistemas operacionais. Já no âmbito do curso, será o momento de entende...
Leia mais