Explorar E-books
Categorias
Explorar Audiolivros
Categorias
Explorar Revistas
Categorias
Explorar Documentos
Categorias
Gabriel S. Chiquetto, João Pedro M. Ortale, Leonardo C. A. Rocha e Paulo
Henrique M. Leite
Faculdade de Computação – Fundação Universidade Federal de Mato Grosso do Sul
(UFMS)
Cidade Universitária – Caixa Postal 549 79.070900 – Campo Grande – MS Brasil
{gabrielchiquetto, leonardocar.dm}@gmail.com, {jpmartinsortale,
paulo3385}@hotmail.com
Abstract.The research about Embedded Systems is responsible for a large part
of our technological development. The properties of Embedded Systems have
total synergy with the globalization, mainly because each one can be crafted
individually in a specialized industry for it own technology for then be
assembled on the final company. This allows different companies in different
countries to focus only in one specific part of the technology each one, causing
the final product to be more efficient and optimized. With that in
consideration, we’ll by this paper explain concepts about structure and
components, about origins and evolution, and about applications both in a
generic and in a specific way.
Resumo. O estudo dos Sistemas Embarcados é um dos grandes responsáveis
pelo elevado desenvolvimento tecnológico atual. As características dos SEs
tem total sinergia com a globalização , uma vez que cada um pode ser
fabricado individualmente em uma indústria especializada naquela tecnologia
para então serem reunidos e montados na empresa final. Isso permite que
diferentes empresas de diferentes países foquem em apenas uma parte da
tecnologia cada, gerando, portanto, um produto final mais eficiente e
otimizado. Dessa maneira, vamos por esse trabalho esclarecer conceitos
sobre a estrutura e componentes, sobre as origens e a evolução, e sobre
aplicações tanto de uma maneira genérica quanto específica.
1. Introdução
Os computadores surgiram para solucionar problemas militares e ao longo do
tempo se expandiram para o uso doméstico e empresarial, a história dos Sistemas
Embarcados(SEs) tem certa semelhança. O primeiro dispositivo embarcado construído
com transistores discretos e portas lógicas foi para utilização em tecnologia militar,
inicialmente para auxiliar no voo de aeronaves, realizando cálculos de altitude,
velocidade, temperatura do motor e entre outros. Atualmente os SEs são utilizados para
funções singulares podendo ser simples, complexas ou rotineiras. Por exemplo, em
marte o veículo que coleta dados por sensores(Mars Sojourner Rover-Intel 80C85), ou
também os telefone celulares, impressoras e muitos outros equipamentos funcionais.
Mas por que não usar um computador, que é multitarefas, ao invés de um
dispositivo de propósito único? Os Sistemas Embarcados como são feitos para cumprir
unicamente uma tarefa acabam respondendo mais rápido, tem maior segurança e baixo
consumo de energia.
2. Histórico
2.1. Conceito e visão geral
Historicamente falando, pode-se dizer que o conceito de SE precede o conceito
do computador de propósito geral.
Se observarmos as formas mais arcaicas de dispositivos computacionais
veremos que assemelhavam-se mais com SEs do que com um computador de propósito
geral propriamente dito. Por exemplo o Colossus Mark I. A reprogramação dessa
máquina eletromecânicas era inconveniente e quando bem programada funcionava com
mínima intervenção humana. Por comumente realizarem apenas uma função, eram, de
certa maneira, semelhantes com o que definimos hoje por SE, sendo utilizadas
exclusivamente para descriptografar as mensagens alemãs durante a Segunda Guerra
Mundial.
2.2. Formas primitivas: A história do AGC
Um dos primeiros dispositivos computacionais a ser atribuído o termo “sistema
embarcado”, com um conceito mais próximo ao atual, foi o Computador de Navegação
da Apollo(em inglês: “Apollo Guidance Computer” ou “AGC”). Desenvolvido no
Laboratório de Instrumentação do MIT(Instituto de Tecnologia de Massachusetts) por
um grupo de projetistas liderado por Charles Stark Draper no começo da década de
1960, o AGC foi parte do sistema de navegação utilizado pela NASA no programa
Apollo para várias espaçonaves.
O AGC tinha uma interface de usuário modular baseada em teclas e em visores
numéricos de sete segmentos; uma unidade de controle com fio baseada em 4.100
portas lógicas RTL NOR únicas de 3 entradas, 4 kB de memória RAM e 32 kB de
memória de corda ROM, uma alternativa mais viável que as formas de armazenamento
que existiam na época(basicamente uma espécie de corda que possuía anéis
magneticamente polarizados). A CPU executava com um clock de 2.048 MHz, tinha 4
registradores centrais de 16 bits e executava 11 instruções. Incluía um cronômetro, um
módulo de relógio em tempo real e ainda possuía um recurso que reduzia o consumo de
energia em mais de 85% enquanto mantinha funcionando todos os componentes
essenciais.
Todo o software do AGC foi escrito em Assembly e suportava um sistema
operacional não preemptivo que poderia executar até 8 tarefas priorizadas. A maioria
dos recursos do AGC são encontrados nos sistemas embarcados mais modernos,
tornando o AGC um sistema avançado para sua época. Embora tenha se mostrado
confiável e funcional, o supracitado era caro e volumoso, o que fez com que ele
acabasse sendo usado apenas para aplicações extremamente específicas. Por esse
motivo a evolução dos sistemas embarcados para aplicações comerciais esteve em um
hiato, e só foi retomada com o surgimento dos microprocessadores.
Figura 1. Interface de usuário do AGC.
2.3. O surgimento dos sistemas embarcados modernos
No início da década de 1970 foram desenvolvidos os primeiros projetos de
microprocessadores. Quase que simultaneamente, equipes de projetistas da Texas
Instruments, Intel e da Marinha dos Estados Unidos tinham desenvolvido
implementações dos primeiros microprocessadores.
Foi concedida a Gary Boone, da Texas Instruments, em 1973, a patente do
“primeiro microprocessador de arquitetura de chip único”, o TMS1000. Esse chip era
uma CPU de 4 bits que possuía 1 kB de memória ROM, 256 bits de RAM e clock de
100-400 kHz para oferecer a funcionalidade completa de um computador em um único
chip, tornando-o o primeiro microcontrolador e sendo usado em calculadoras,
videogames, fornos micro-ondas e outros milhares de produtos eletrônicos,
Embora o TMS1000 tenha sido o primeiro microprocessador de chip único, o
i4004 da Intel foi reconhecido como o primeiro microprocessador focado
comercialmente. Este possuía especificações semelhantes, porém era capaz de endereçar
4 kB de memória e clock de até 740 kHz.
O terceiro desses foi o Computador Central de Dados Aéreos(em inglês:
“Central Air Data Computer” ou “CADC”), desenvolvido pela Marinha dos Estados
Unidos, sendo parte do caça supersônico F-14 Tomcat. A existência do CADC só foi
revelada ao público em 1998, embora os documentos indiquem que ele tenha sido
concluído em 1970.
Depois de todo esse desenvolvimento, em pouco tempo os projetistas
perceberam o potencial dessa tecnologia e suas vantagens. Logo evoluíram de CPUs de
4 bits para CPUs de 8 bits e dominaram toda a área de projetos, fazendo com que o
mercado dos microprocessadores, para aplicações embarcadas, crescesse para casa das
centenas de milhões de dólares no final da década de 1970.
Não muito tempo depois, já haviam mais de 12 fabricantes de chips no mercado,
como a Motorola, a Zilog e a AMD. A evolução nos tamanhos das CPUs continuou nas
décadas de 1980 e 1990 para 16 bits, 32 bits e 64 bits e até 128 bits para CPUs
específicas de processamento de dados.
Figura 2. Intel 4004 Figura 3. Microfotografia do CADC
3. Estrutura dos Sistemas Embarcados
Independente da função que desempenha um sistema embarcado possui dois
conjuntos de componentes básicos: um conjunto de componentes de hardware que
inclui uma CPU, que geralmente é um microcontrolador; e um conjunto de softwares
relacionados compactados e denominados firmware, que dão funcionalidade ao
hardware.
3.1. Componentes de Hardware
De uma perspectiva geral os componentes de hardware são aqueles que
permitem que o sistema embarcado execute a sua função. Portanto possuem
características específicas para a função desempenhada pelo SE.
Entretanto três componentes são indispensáveis para o sistema: a CPU, a
memória do sistema, e um conjunto de portas de Entrada e Saída. A CPU executa as
instruções de software e controla o restante do sistema. A memória salva os programas e
as informações necessárias para o sistema. Na maioria dos sistemas os dados e os
programas são armazenados em endereços de memória diferentes. As portas de Entrada
e Saída são a conexão do sistema embarcado com o mundo externo. Geralmente
conectam-se à periféricos como ADCs(lentes de uma câmera, microfone, touch screen,
entre outros) e DACs(tela de led, caixa de som, projetor, entre outros). Além disso um
bom desenvolvimento das portas de Entrada e Saída permite que diferentes sistemas
embarcados se relacionem. Trabalhando em conjunto podem realizar tarefas muito mais
complexas com muito mais robustez e confiabilidade.
Figura 4. Podemos observar que a maior parte dos componentes do Hardware de um
Sistema Embarcado estão associados às portas de Entrada e Saída. O SE
frequentemente necessita do apoio de ADCs e DACs, que são os conversores de
analógico para digital e digital para analógico respectivamente. O hardware faz a
conexão entre a Interface de Usuário, CPU e Memória, elementos do próprio SE. Além
disso realiza a conexão através de portas com os periféricos, que por si só são outros
Sistemas Embarcados. No desenho temos periféricos com função de conversão de
sinais, Teste e diagnóstico do Sistema e Subsistemas dedicados, que variam muito de
acordo com a função do SE base.
3.2. Componentes de Software
O firmware é, por questões de segurança, armazenado em memória não volátil,
uma vez que ele não deveria ser modificado pelo usuário. Os programas do Sistema são
organizados em função de alguma plataforma operacional e das rotinas de aplicação. A
complexidade da plataforma operacional varia conforme a necessidade do SE, podendo
até necessitar de uma estrutura formal baseada em RTOS(Real-Time Operating System)
como observado na figura 5. Os principais Componentes do Software do SE são:
Tasks: O software de aplicação do SE é dividido em um conjunto de tarefas
chamadas Tasks. Cada tarefa requisita algum recurso do sistema para realizar uma ação
específica.
Kernel: É o distribuidor de recursos, que decide quais tarefas são prioritárias e
quais são secundárias. Ele gerencia recursos do Hardware como endereços de memória,
a CPU e as diversas portas de Entrada e Saída. Além disso o Kernel realiza a
comunicação entre as tarefas, possibilitando a troca de informação dinâmica e o
aumento de eficiência do SE.
Services: As tarefas são realizadas através de Services Routines (Rotinas de
Serviço). Uma rotina de serviço é um pedaço do código do SE que da funcionalidade a
um componente de hardware específico. Dessa forma, para todo recurso do Sistema
(componente de hardware), existe um pedaço do código - esse sendo a sua rotina de
serviço - associado a ele que o da funcionalidade e aplicabilidade.
Figura 5. A figura (Em Inglês) representa um firmware genérico de um sistema
embarcado. Na parte superior da imagem estão representadas as Tasks, as tarefas do
sistemas realizando um pedido de serviço ao Kernel do SE. O kernel realiza as funções
de comunicação entre tarefas, gerenciamento de recursos e gerenciamento de tarefas.
Por consequência são executadas as Service Routines específicas para cada tarefa, por
ordem determinada pelo Kernel.
4. Pré-requisitos
A área dos sistemas embarcados possui requerimentos básicos para que um
indivíduo seja um profissional competente. Deve-se possuir um conhecimento de ambas
estruturas: desenvolvimento de software, com ênfase e foco para sistemas embarcados;
e hardware. conhecimento de arquitetura em 8 bits. E tal como todas as áreas da
computação, é essencial manter-se atualizado com a evolução das tecnologias.
Os conhecimentos e experiências necessários também podem variar dependendo
do nível de complexidade e sofisticação do projeto a ser executado. Caso o projeto seja
de pequena escala, é necessário compreender as seguintes áreas: microcontroladores,
arquitetura de computadores, design eletrônico digital, engenharia de software,
comunicação de dados, engenharia de controle, motores e atuadores, sensores e
medição, design eletrônico análogo, design de circuito integrado e manufatura. Tais
conhecimentos serão utilizados em partes específicas do projeto, tal como a criação da
interface do sistema e da criação do sistema de controle.
Além das áreas citadas, é recomendado, principalmente para casos mais
complexos, o domínio sobre programação em C, C++ e Java, programação em RTOS
(Real Time Operating System) e modelagem de programas.
5. Aplicações
As aplicações para sistemas embarcados são muito variadas, indo de usos na
área de segurança(como leitores biométricos e reconhecimento facial) até
eletrodomésticos (muitas televisões e videogames possuem sistemas embarcados). As
áreas a seguir também apresentam uso direto ou indireto de sistemas embarcados.
5.1. Indústria automotiva
Nas últimas décadas as indústrias automobilísticas têm investido cada vez mais
em carros com maior interação da computação. Alguns exemplos da utilização de
sistemas embarcados na indústria automotiva são: controle de Airbag; ABS
(anti-braking system); GPS(Global Positioning System).
Figura 6: O GPS é um Sistema embarcado presente em todos os novos modelos
5.2. Aviação
Quando se fala em aviação, a computação representa grande parte no processo
de voo. Sistemas embarcados estão presentes em vários processos como, sistemas
informacionais de voo, sistemas de controle de voo, sistema anti colisões, entre outros.
5.3. Robótica
A área de robótica é uma das áreas cujo o uso de sistemas embarcados é
fundamental. Muitas vezes as partes mais vitais de um robô ou projeto de robótica são
dadas por sistemas embarcados, como sensores de distância, interface básica de
programação, e até os próprios sistemas de movimentação.
5.4. Setor militar
O setor militar foi o primeiro a fazer uso de sistemas embarcados, e até hoje
ainda faz uso em várias subdivisões diferentes, tal como na própria aviação, onde ainda
há um uso ainda mais extensivo que na comercial. Outros exemplos seriam o uso em
radares(também navais e terrestres, não apenas aviários) e em processamento de
informação.
Figura 7 - Radar norte americano 3DELRR
5.5. O veículo de marte
Um campo em que os SEs revolucionaram foi o aeroespacial, onde o
investimento é direcionado para a construção de máquinas que coletam dados
utilizando-se de sensores de movimento, calor, fumaça, entre outros. Como exemplo
tem-se a Mars Sojourner Rover(figura 8), que foi feita para suportar várias situações que
viriam a se tornar problemáticas para o homem, e sem a possibilidade de um acidente
envolvendo qualquer indivíduo. No entanto, ocorreu uma perda de comunicação com o
SE por razão desconhecida em 1997.
Figura 8. Mars Sojourner Rover em missão
6. Conclusão
Com base em todos os fatos descritos, é possível concluir que os sistemas
embarcados são amplamente utilizados em diversas aplicações. Seu surgimento está
profundamente ligado às pretensões da corrida armamentista e aeroespacial motivadas
pela guerra fria. Inicialmente, a construção dos sistemas embarcados demandava muitos
recursos e por sua natureza específica não tinha tanta aplicação mercadológica. Por
essas razões, seu desenvolvimento foi interrompido e só retomado com a invenção dos
microcontroladores. Tais dispositivos reduziram efetivamente o tamanho e os custos da
produção dos SEs, expandindo seu uso para múltiplas áreas.
Atualmente os sistemas embarcados são os principais responsáveis pelo alto
nível tecnológico dos produtos que utilizamos no cotidiano. Uma vez que sozinhos
conseguem desempenhar funções simples e também podem ser partes essenciais de
hardwares robustos, para funções complexas.
Portanto, o estudo dos sistemas embarcados é uma característica intrínseca à
globalização, sendo um importante vetor para o desenvolvimento da tecnologia e
consequentemente da civilização.
7. Referências
Manuel Jimenéz, Rogelio Palomera e Isidoro Couvertier (2014) “Introduction to
Embedded Systems: Using Microcontrollers and the MSP430”, Porto Rico, Springer
New York, 1ª edição, p. 1-11.
Raj Kamal (2008) “Embedded Systems – Architecture, Programming and Design”, 2ª
edição, p. 53-54.
Peter Marwedel (2011) "Embedded Systems Foundation of Cyber-Physical Systems",
em Embedded Systems Design, 2ª edição, p. 1-5.
Sergio Prado (2010) "Como se tornar um desenvolvedor de software embarcado",
https://sergioprado.org/como-se-tornar-um-desenvolvedor-de-software-embarcado/.