Você está na página 1de 8

Sistemas Embarcados 

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/. 

Você também pode gostar