• Nenhum resultado encontrado

3.2 Definições

3.2.1 Componentes de um sistema embarcado

Por conta da sua natureza restrita em vários aspectos, um sistema embarcado costuma ser composto pelo mínimo número possível de componentes. Mais do que isso, a capacidade de armazenamento/processamento e complexidade de tais componentes geralmente é a mínima necessária para satisfazer as especificações do sistema. Na seqüência são discutidos os principais elementos de um sistema embarcado citados por Heath (2003).

3.2.1.1Processador

Assim como num sistema convencional, o microprocessador é o elemento principal de um sistema embarcado. É justamente pelo emprego deste elemento que se torna possível a agregação de novas funcionalidades num produto, de uma forma rápida e de baixo custo financeiro, considerando a implementação de tais funções em software.

O principal critério utilizado na seleção de um processador é a capacidade de processamento do mesmo. Entretanto, um dos aspectos que contribui para um desempenho final insatisfatório do sistema é o fato das tarefas executadas pelo processador selecionado serem freqüentemente sub-estimadas em relação ao seu tamanho e complexidade. A seleção do processador a partir de resultados obtidos pelo mesmo em benchmarks é outro fator que pode contribuir negativamente neste sentido, pois tais resultados podem não ser representativos em relação ao tipo de processamento exigido pelo sistema embarcado. Outros critérios utilizados na seleção do processador, os quais podem ser mais relevantes que o próprio poder de processamento, dependendo das restrições de projeto, são o custo financeiro, o consumo de potência, as ferramentas de software disponíveis para o mesmo, bem como a sua disponibilidade.

Dentre os tipos mais comuns de processadores, pode-se citar os seguintes:

• Microprocessador: processadores de propósito geral, cujo tamanho da palavra de dados pode variar de 8 a 64 bits e o conjunto de instruções ser complexo (CISC) ou reduzido (RISC). Podem ser compostos por um ou mais núcleos e apresentar versões próprias para implementação em dispositivos re- configuráveis (soft processors);

• Microcontrolador: são na verdade sistemas autocontidos, compostos não apenas por um microprocessador, mas também por módulos Random Access

Memory (RAM) e Read-Only Memory (ROM), gerador de clock, periféricos

(timer, watchdog, conversor Analógico para Digital (A/D) e Digital para Analógico (D/A)) e dispositivos de entrada/saída (E/S) (geralmente interfaces de comunicação serial);

Digital Signal Processors (DSPs): processadores otimizados para o

processamento digital de sinais. Empregam recursos que maximizam o poder de processamento em aplicações deste tipo, como blocos multiplicador- acumulador (próprios para implementação de filtros digitais), deslocadores de barril e geralmente a arquitetura Harvard (que, em contraste com a

VonNeumann, possui memórias e caminhos distintos para programa e dados, o que permite acelerar a execução das instruções).

3.2.1.2Memória

Os critérios de seleção do tipo e quantidade de memória são fortemente influenciados pelo projeto de software. Em contrapartida, a configuração de memória selecionada implica na forma como o software é projetado, escrito e desenvolvido.

Geralmente um sistema embarcado é composto tanto por módulos ROM, quanto por módulos RAM. Os módulos ROM, por serem não-voláteis, armazenam o código do programa executado pelo sistema. Quando não é possível o armazenamento do código completo, apenas uma rotina de inicialização (bootstrap) é armazenada no bloco ROM. Tal rotina é encarregada da carga do código completo, a partir de uma fonte externa, no momento da inicialização do sistema. Já os módulos RAM, os quais são do tipo volátil, possibilitam a execução do

software disponibilizando armazenamento temporário para variáveis e estruturas utilizadas na

execução das tarefas. Em função do maior custo financeiro de um módulo RAM em relação ao ROM, geralmente a disponibilidade do primeiro é reduzida, o que implica na escrita de um

software que minimize a utilização deste recurso.

3.2.1.3Periféricos

Um sistema embarcado utiliza periféricos para se comunicar com o mundo externo. Os periféricos de entrada geralmente consistem em sensores que medem algum aspecto do ambiente externo (como temperatura, pressão, altitude, etc.) e assim determinam de forma efetiva as saídas disponibilizadas pelo sistema embarcado. Dentre os principais tipos de periféricos, se pode citar os seguintes:

• Binários: pinos externos simples, cujo estado lógico pode ser 1 ou 0. Podem ser utilizados individualmente ou agrupados, formando interfaces paralelas; • Seriais: interface composta de um ou dois pinos, que emprega o modo serial de

comunicação. Facilita a conexão ao passo que dificulta a programação;

• Analógicos: quando a interface é realizada diretamente com o mundo externo, faz-se necessário o uso de conversores A/D e D/A, já que o sistema em si opera apenas no domínio digital;

Displays: constituem uma forma de externalizar informações geradas pelo

sistema. Como exemplos se pode citar Ligth Emission Diodes (LEDs), displays de sete segmentos e painéis Liquid Crystal Display (LCD);

• Saídas derivadas de tempo: temporizadores e contadores são provavelmente as funções mais utilizadas num sistema embarcado.

3.2.1.4Software

Mais do que apenas o programa que é executado pelo sistema, o elemento software também abrange a tecnologia que agrega valor ao sistema e define o desempenho que o mesmo é capaz de obter. Neste contexto, outros componentes que se pode citar são:

• Inicialização e configuração;

• Sistema Operacional ou ambiente de execução; • Tratamento de exceções;

• Suporte a depuração de código e manutenção.

3.2.1.5Algoritmos

Os algoritmos se constituem no componente principal do elemento de software e definem as funcionalidades disponibilizadas por um sistema embarcado, bem como a forma que elas são implementadas. A escolha dos algoritmos constitui um ponto crítico, pois conforme já mencionado, a idéia de satisfazer os requisitos do sistema, empregando para isso o mínimo de recursos necessários, geralmente é premissa de um sistema embarcado. A utilização de algoritmos otimizados permite a execução de uma mesma tarefa numa plataforma mais enxuta, o que permite a redução não apenas do custo financeiro, mas também da área e consumo de potência do mesmo.

3.2.2Aplicações

Além das aplicações já citadas nas seções anteriores, sistemas embarcados também podem ser empregados em inúmeras outras áreas, como (EMBEDDED, 2007) (DE MICHELI, 1994) (CHIODO, 1994) (KUTTNER, 1996) (FONS, 2006):

• Telecomunicações: de centrais telefônicas a telefones móveis, incluindo também equipamentos de rede computacional, como roteadores e bridges; Eletrônica de consumo: Personal Digital Assistants (PDAs), aparelhos de

MPEG-1 Audio Layer 3 (MP3), Compact Disc (CD) e Digital Vídeo Disc

(DVD), consoles de vídeo-game, receptores de Global Positioning System (GPS), etc.;

• Eletrodomésticos: fornos de microondas, lavadoras de louça e de roupas, refrigeradores, televisores, condicionadores de ar, etc.;

• Transportes: desde sistemas terrestres (controle de estabilidade, tração, combustão, etc.) até aéreos (sistema de direção inercial, comunicação, navegação, metereológico, etc.);

• Medicina: monitoramento de sinais vitais, estetoscópios eletrônicos, diagnóstico por imagens (tomografia, ressonância magnética), etc.;

• Militar: radar, sonar, reconhecimento automático de alvo, guerra eletrônica (manipulação do espectro eletromagnético, impossibilitando o uso do mesmo pelos inimigos e otimizando para os aliados), inteligência de sinais (interceptação e decodificação de mensagens), etc.;

• Outros usos: reconhecimento de impressões digitais, inspeção de colheita, monitoramento marinho (rastreamento de cardumes e mamíferos marinhos, identificação de derramamento de óleo), etc..