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

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 mais

baixe um dos nossos 14 EBOOKs gratuitamente

baixe 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