Você está na página 1de 26

Sistemas Embarcados

Material Teórico
Introdução aos Sistemas Embarcados e Microcontrolados

Responsável pelo Conteúdo:


Prof. Me. Tales Gouveia Fernandes

Revisão Textual:
Prof.ª Esp. Kelciane da Rocha Campos
Introdução aos Sistemas
Embarcados e Microcontrolados

• Definição de Sistemas Embarcados;


• Componentes eletrônicos;
• Arquitetura de Sistemas Embarcados;
• Definição de Firmware;
• Tendências e Aplicações de Sistemas Embarcados.

OBJETIVOS DE APRENDIZADO
• Compreender a origem e a evolução dos sistemas embarcados;
• Aprender sobre a ciência e a tecnologia de um microcontrolador;
• Fundamentar a composição e aplicação de um sistema embarcado microcontrolado;
• Estudar definições e conceitos que regem os sistemas embarcados;
• Perceber o macro e micro que compõem os sistemas embarcados.
Orientações de estudo
Para que o conteúdo desta Disciplina seja bem
aproveitado e haja maior aplicabilidade na sua
formação acadêmica e atuação profissional, siga
algumas recomendações básicas:
Conserve seu
material e local de
estudos sempre
organizados.
Aproveite as
Procure manter indicações
contato com seus de Material
colegas e tutores Complementar.
para trocar ideias!
Determine um Isso amplia a
horário fixo aprendizagem.
para estudar.

Mantenha o foco!
Evite se distrair com
as redes sociais.

Seja original!
Nunca plagie
trabalhos.

Não se esqueça
de se alimentar
Assim: e de se manter
Organize seus estudos de maneira que passem a fazer parte hidratado.
da sua rotina. Por exemplo, você poderá determinar um dia e
horário fixos como seu “momento do estudo”;

Procure se alimentar e se hidratar quando for estudar; lembre-se de que uma


alimentação saudável pode proporcionar melhor aproveitamento do estudo;

No material de cada Unidade, há leituras indicadas e, entre elas, artigos científicos, livros, vídeos
e sites para aprofundar os conhecimentos adquiridos ao longo da Unidade. Além disso, você tam-
bém encontrará sugestões de conteúdo extra no item Material Complementar, que ampliarão sua
interpretação e auxiliarão no pleno entendimento dos temas abordados;

Após o contato com o conteúdo proposto, participe dos debates mediados em fóruns de discus-
são, pois irão auxiliar a verificar o quanto você absorveu de conhecimento, além de propiciar o
contato com seus colegas e tutores, o que se apresenta como rico espaço de troca de ideias e de
aprendizagem.
Unidade Introdução aos Sistemas Embarcados e Microcontrolados

Introdução
Nesta unidade, serão apresentados conceitos e definições gerais sobre sistemas
embarcados, apresentando-se elementos básicos da eletrônica, os quais integra-
dos fundamentam a arquitetura de hardware do sistema.
A definição de firmware complementa e conecta cada componente eletrônico
do hardware, concluindo a visão geral e composição dos sistemas embarcados.

Serão também expostas aplicações e soluções que empregam os sistemas em-


barcados, as quais ilustram e nos fazem compreender a importância e utilidade
desta tecnologia em nosso cotidiano.

Definição de Sistemas Embarcados


Um sistema embarcado ou sistema embutido é um sistema microcontrolado,
no qual suas instruções estão completamente encapsuladas e são dedicadas ao
dispositivo ou sistema que controla. Sua composição eletrônica correlaciona-se aos
computadores pessoais convencionais, porém seu projeto é dimensionado e limi-
tado às exigências da demanda à qual irá atender, ou seja, não há necessidade de
um esboço subdimensionado nem superdimensionado para o fim a que se destina.

Ao que tudo indica, não é fácil definir características exclusivas para sistemas
embarcados, porém é possível listar importantes definições.
• Um subsistema de um aparelho ou máquina: tais sistemas são incorpora-
dos em dispositivos ou máquinas mais sofisticadas, como em um sistema de
gestão do motor de um carro ou um microprocessador de um equipamento.
Dada essa definição, pode-se considerar um computador pessoal comum sen-
do composto por vários sistemas embarcados. Além do que a unidade central
de processamento (do inglês CPU - central processing unit), memória princi-
pal, controladores de barramento, controladores de disco, interfaces de rede e
controlador de vídeo são módulos definitivamente embarcados de um compu-
tador pessoal.
• Uma aplicação dedicada: em sua maioria, sistemas embarcados são proje-
tados para uma tarefa específica, tal como monitorar a temperatura de um
sensor ou controlar uma válvula. Porém, há casos de dispositivos eletrônicos
serem multitarefas, tal qual um smart phone, cuja utilização não é apenas
de fazer ou receber ligações, mas também acessar a internet, tirar fotos etc.
Tendo o crescimento e a sofisticação dos dispositivos embarcados, fica difícil
distinguir o que é exclusivamente embarcado do que é o sistema geral.
• Baixo consumo de energia: muitos sistemas embarcados são alimentados
por uma bateria, assim precisam ter controle e equilíbrio no consumo de ener-

8
gia. Tais sistemas podem ser estáticos ou móveis, no entanto ambos não es-
tão ao alcance de uma fonte de energia ilimitada. Porém, há casos em que a
performance no processamento de informação do sistema deve prevalecer,
consequentemente o consumo de energia será alto.
• Baixo processamento e memória: esta definição está na contramão do exem-
plo anterior, cujo nível de processamento é prioridade. Contudo, há hardwares
comerciais que reduziram seu desempenho de processamento para tornar-se
uma alternativa viável financeiramente de solução.
• Sistemas em tempo real: são sistemas embarcados cujo objetivo é responder
a eventos dentro de um intervalo específico de tempo ou o menor possível.
Sistemas em tempo real em sua grande maioria são sempre dedicados apenas
a uma aplicação, mantendo a característica de um sistema embarcado. No en-
tanto, nem todo sistema embarcado suporta aplicações em tempo real.
• Sistema operacional exclusivo: esta característica era uma verdade absoluta
no passado, quando os sistemas embarcados tinham limite de processamento
e memória. Ainda é considerada uma verdade parcial, pois com o desenvol-
vimento de tecnologias de processamento e armazenamento sistemas opera-
cionais utilizados em plataformas usuais passaram a poder ser utilizados em
sistemas embarcados. O kernel Linux para sistemas embarcados necessitará
ser customizado dependendo da plataforma alvo de utilização (isso já é comum
para qualquer sistema computacional). Para dispositivos que não possuem uni-
dades de gerência de memória, existe uma ramificação do kernel Linux cha-
mada uClinux. Sistemas que precisam suportar aplicações em tempo real irão
precisar de um kernel com suporte a tempo real. A distribuição do kernel
Linux chamada vanilla não suporta sistemas em tempo real. Porém, há uma
distribuição chamada RTLinux, a qual possui um microkernel com suporte a
sistemas em tempo real.
• Interação com o mundo físico: há um ramo da computação embarcada que
se dedica à integração da parte digital com a parte analógica, expandindo,
assim, o domínio em que se utilizam sistemas embarcados.
• Hardware com modulo único: um sistema computacional completo pode
ser construído em uma única placa de circuito impresso (PCB - printed circuit
board). As PCBs podem incluir e integrar em um único módulo CPU, memó-
rias e periféricos. Tais sistemas são chamados de computadores de placa única
(SBCs - single board computers) e são bem adaptáveis às plataformas de sis-
temas embarcados. É possível ir além da tecnologia de módulo único quando
é possível redimensionar e direcionar todo esse sistema computacional em um
único chip (SoC - system on a chip). Esse formato também se refere, por si só,
aos sistemas embarcados.

Como se pode perceber, a distinção entre um sistema embarcado e um sistema


computacional usual não é uma das tarefas mais fáceis e claras. O sistema chamado
Raspberry Pi é um exemplo, o qual possui várias das características citadas ante-

9
9
Unidade Introdução aos Sistemas Embarcados e Microcontrolados

riormente e também suporta muitas aplicações embarcadas, porém ainda é muito


utilizado como um computador convencional (HOLT e HUANG, 2018).

Tendo como premissa algumas das características principais que definem siste-
mas embarcados, as quais foram citadas anteriormente, abaixo seguem a catego-
rização e classificação dos sistemas embarcados levando-se em conta os critérios
funcionais e requisitos de performance.
• Sistemas embarcados autônomos: um sistema embarcado autônomo fun-
ciona por si mesmo, ou seja, é um sistema independente. Também utiliza
suas portas de entrada tanto analógicas como digitais para calibrar, conver-
ter, processar os dados recebidos, e o resultado é enviado para suas portas de
saída, as quais controlam ou direcionam os dados a outros dispositivos pluga-
dos. Dispositivos de entretenimento, tais como video games, reprodutores de
MP3, câmeras digitais e micro-ondas são sistemas típicos que se encaixam
nessa categoria.
• Sistemas embarcados em rede: os sistemas embarcados se conectam entre
si através de interfaces de rede, além do compartilhamento de acesso a recur-
sos e dados. A conexão de rede pode ser local (LAN - local area network),
expandida (WAN - wide area network) ou através da internet. Essa conexão
pode ser via cabo ou até mesmo sem fio, sendo que os sistemas embarcados
também podem utilizar ambos os meios de conexão. Um sistema residencial de
segurança é um exemplo que utiliza uma rede local para se conectar aos diver-
sos sensores, como detectores de movimento, sensores de presença, sensores
para iluminação ou detectores de fumaça, além de utilizarem o mesmo proto-
colo de comunicação TCP/IP. Neste exemplo, há a possibilidade de se integrar
todo o sistema de controle de sensores em uma base web rodando o protocolo
HTTP, o qual terá acesso às câmeras e aos status dos sensores via browser
de internet. Esta área dos sistemas embarcados está em grande expansão e
desenvolvimento, pois a mobilidade e a rápida disponibilidade são esperadas
por usuários, e soluções estão sendo um dos principais desafios para a área de
sistemas embarcados (QIAN, HARING e CAO, 2009).

Embora os sistemas embarcados tratados até o momento tenham recebido ca-


racterísticas e classificação por áreas, esta divisão não é absoluta. Um subsistema
conectado à internet pode ser de tempo real ou não. Talvez um sistema em tempo
real possa ser autônomo ou depender de conectividade à internet. A questão mais
importante está entre a característica única que diferencia os vários tipos de siste-
mas, sendo esta levada em conta no momento do desenvolvimento e implementa-
ção do projeto do sistema embarcado.

Antes de ilustrar a arquitetura básica de um sistema embarcado, a qual com-


plementará a definição e caracterização do mesmo feita até o momento, serão
expostos alguns conceitos básicos de componentes eletrônicos que compõem a
célula central, no caso o microcontrolador.

10
Componentes eletrônicos
Um sistema embarcado nada mais é que a composição de componentes eletrôni-
cos cuja compreensão de alguns contribuirá e facilitará o desenvolvimento das apli-
cações, uma vez que são esses componentes que irão ser ordenados e configurados
para as funcionalidades do sistema embarcado como um todo.

Antes de abordar o componente fundamental do microcontrolador, o transistor,


será apresentado um breve resumo da física dos semicondutores.

Semicondutores são estruturas cristalinas, cujos átomos compartilham seus elé-


trons de valência com os átomos vizinhos. Uma estrutura cristalina bidimensional
simples está ilustrada na Figura 1, a qual mostra o compartilhamento dos quatro
elétrons de valência que todo átomo de silício faz com os átomos vizinhos. Este é
um semicondutor intrínseco, ou seja, que não possui nenhuma impureza.

Si Si Si

Elétron

Si Si Si

Si Si Si

Figura 1 – Estrutura cristalina bidimensional simples.


Fonte: BINDAL, 2017

No entanto, se um tipo diferente de átomo, tal como arsênio, com cinco elé-
trons na banda de valência, for adicionado à estrutura de silício intrínseca, a es-
trutura cristalina da Figura 1 irá mudar. Dessa forma, quatro elétrons de valência
serão compartilhados com os dos vizinhos de silício e o quinto será liberado da
camada de valência, como é ilustrado na Figura 2. Com a saída do elétron do
átomo de arsênio, a lacuna torna-se positiva devido ao próton que está sobrando.
Esta estrutura cristalina é chamada de semicondutor extrínseco tipo N, devido à
estrutura conter elétrons extras e carga negativa.

11
11
Unidade Introdução aos Sistemas Embarcados e Microcontrolados

Si Si Si
Região com Elétron livre
carga positiva

Si As Si

Si Si Si

Figura 2 – Semicondutor extrínseco tipo N


Fonte: BINDAL, 2017

Se um átomo com três elétrons, tal como o boro, for adicionado ao semicondu-
tor intrínseco em vez do arsênio, o átomo de boro irá compartilhar com os vizinhos
silício todos os três elétrons de valência. Assim, na estrutura final haverá um buraco
na lacuna do boro devido à ausência de elétrons, como mostrado na Figura 3. Esse
arranjo é chamado de semicondutor do tipo P, no qual a lacuna do boro é carregada
negativamente quando o buraco é ocupado pelo elétron livre.

Si Si Si
Elétron livre Região com
carga negativa

Si B Si

Si Si Si

Figura 3 – Semicondutor do tipo P


Fonte: BINDAL, 2017

12
A Figura 4 mostra o diagrama simplificado de banda de energia dos três tipos
de semicondutores. Um elétron da banda de valência, EV, precisa de energia su-
ficiente para transitar da banda de condução, EC, para se tornar um elétron livre
na estrutura cristalina. Esta diferença de energia entre EC e EV é chamada banda
de gap de energia, EG. Também existe um nível virtual de energia chamado nível
Fermi, EF, no qual há 50% de probabilidade de encontrar um elétron. No semi-
condutor de tipo N, a probabilidade de encontrar um elétron livre é maior. Porém,
EF é mais próximo de EC. No entanto, a probabilidade decresce se o semicondu-
tor for do tipo P, o qual não possui muitos elétrons livres, de maneira que EF se
aproxima de EV.

EC EC EC
EF
EF
EF
EV EV EV
Intrínsico Tipo N Tipo P
Figura 4 – Banda de energia de três tipos de semicondutores
Fonte: BINDAL, 2017

Quando semicondutores do tipo N e P estão unidos, inicia-se o fluxo de elétrons do semicon-


Explor

dutor tipo N para o tipo P até que o nível de energia de Fermi se iguale em ambos os lados e
a estrutura se torne estável. Assim, ao aplicar uma tensão direta na junção PN, estabelece-se
um fluxo contínuo de corrente. Porém, ao aplicar uma tensão reversa, o fluxo de elétrons é
cessado. Este processo define o funcionamento básico do diodo, um componente similar ao
transistor, o qual é construído por dois cristais em vez de três dos transistores.

Tendo como base a física dos semicondutores e por consequência a física dos
componentes eletrônicos presentes em sistemas embarcados, será apresentado o
componente importante na evolução dos sistemas embarcados e dos sistemas com-
putacionais de modo geral, o transistor.

Considerado uma das maiores invenções do século passado, o transistor foi


idealizado pelos pesquisadores da Bell Lab’s em dezembro de 1947. Esse dispo-
sitivo tem uma função muito semelhante à das válvulas, a de controlar o fluxo de
corrente, sendo amplamente utilizado na telefonia e no rádio.

Entre as vantagens, percebe-se o tamanho reduzido em relação às válvulas.


Não é necessário vácuo, nem invólucro de vidro. Sendo de ação instantânea, não
gera ruídos nem atraso por aquecimento (quando comparado às válvulas). Os tran-
sistores também funcionam como comutadores (chaves), sem atrasos mecânicos
como ocorrem nos relés. Essa invenção representou mais um salto tecnológico
na história. Substituiu definitivamente as válvulas e com isso se tornou possível
reduzir consideravelmente o tamanho dos produtos eletrônicos.

13
13
Unidade Introdução aos Sistemas Embarcados e Microcontrolados

A Figura 5 ilustra bem a evolução da válvula para o transistor, sendo o tama-


nho e espaço em área a principal diferença, tornando possível o desenvolvimento
da microeletrônica.

Figura 5 – Esquerda - Válvula precursora do transistor. Direita -Transistor


Fonte: OLIVEIRA e ANDRADE, 2010

Após a invenção dos transistores, as implementações de circuitos digitais torna-


ram-se cada vez mais complexas. Com isso, simples calculadoras passaram a ter
inúmeros transistores. Desta forma, surgiu a necessidade de reduzir a eletrônica
envolvida, surgindo, assim, o circuito integrado (CI), o qual é exibido na Figura 6.

Figura 6 – Exemplo de Circuito Integrado (CI), encapsulamento de silício e terminais de metal


Fonte: WIKIMEDIA COMMONS

A cada novo CI lançado, a complexidade das aplicações aumentava exponencial-


mente, provocando a rápida evolução de setores industriais e tecnológicos. Logo
vieram os primeiros microprocessadores, capazes de executar milhões de instru-
ções por segundo.

Os circuitos integrados possuem diversos formatos na indústria eletrônica, de-


nominados de encapsulamentos, devido aos diversos processos de fabricação. Às
vezes eles são projetados para otimizar o espaço, para facilitar a montagem ou
até mesmo em razão dos custos.
Com isso, diversos formatos da pastilha de silício e dos terminais (pernas ou pi-
nos) são utilizados, Figura 7. Dentre os mais comuns, existe o formato PDIP, muito
utilizado para prototipagem rápida e até caseira.

14
Figura 7 – Tipos de encapsulamentos de CI. Esquerda - DIP e direita - PLCC,
encapsulamento de silício e terminais de metal
Fonte: OLIVEIRA e ANDRADE, 2010

Os circuitos impressos foram criados para unir de forma permanente e eficiente


os circuitos integrados aos diversos outros componentes de um circuito eletrônico,
tais como capacitores, resistores, indutores. Isso proporcionou a minimização e em
muitos casos até a substituição do uso de fios para ligar terminais.

As placas de circuito impresso podem ser fabricadas com diversos materiais


(fibra de vidro, fenolite etc.) e possuem uma ou mais superfícies (faces ou layers) co-
bertas por uma fina película de metal em que são desenhadas as trilhas condutoras,
as quais representam o circuito. Nas trilhas são fixados os componentes eletrônicos
pelo processo de soldagem manual ou automatizada. A Figura 8 mostra um exem-
plo de placa com circuito impresso.

Circuito Integrado Capacitor

Diodo

Transistor

Resistor

Figura 8 – Exemplo de placa com circuito impresso


Fonte: OLIVEIRA e ANDRADE, 2010

Para facilitar e automatizar projetos de circuito impresso, utilizam-se softwares


específicos para o desenho de layouts. É um processo simples, por meio do qual se
desenha, sem levar em consideração a placa e a disposição dos componentes. Esse
tipo de circuito é denominado de esquemático (schematic), e a partir dele é gerado
o layout para a confecção do circuito. Nessa etapa, os softwares usam algoritmos
de minimização de rotas sem cruzamento de linhas, porém há momentos em que
ajustes manuais são necessários.

15
15
Unidade Introdução aos Sistemas Embarcados e Microcontrolados

Explor
Para se compreender melhor o processo de elaboração e execução da construção de um
circuito impresso, OLIVEIRA e ANDRADE (2010), descrevem no apêndice A um método de
projeto do esquemático, no B demonstra o projeto do layout e no C apresenta um método
artesanal de corrosão caseira do circuito impresso.

Arquitetura de Sistemas Embarcados


Após ter uma compressão da definição de sistemas embarcados e um embasa-
mento teórico dos componentes eletrônicos principais que compõem um sistema
embarcado, iremos para a exposição da arquitetura de um sistema embarcado, ou
seja, a parte que integra todo o hardware e prepara para a aplicação do software
utilizar os recursos.

Basicamente, a composição de um sistema embarcado consiste em uma unida-


de de processamento, que é um circuito integrado, fixado a um circuito impresso.
Como já visto pelas definições, possui a capacidade de processamento de infor-
mações vinda de um software que está sendo processado internamente nessa
unidade. Ou seja, o software está embarcado na unidade de processamento (de-
nominada de firmware), a qual será detalhada no tópico seguinte.

Para entender como funcionam esses sistemas e a necessidade de utilizá-los,


é preciso conhecer a forma como trabalham os processadores onde os mesmos
são armazenados. Os processadores podem ser divididos em duas categorias: mi-
croprocessadores e microcontroladores. Os microprocessadores são circuitos inte-
grados capazes de executar instruções demandadas, agem sob o controle de um
programa armazenado na memória, executando operações aritméticas, lógica bo-
oleana, além de controlar a entrada e saída de dados, permitindo a comunicação
com outros dispositivos e periféricos. Os microprocessadores estão presentes em
sua quase totalidade em computadores pessoais, servidores e mainframes.

Para os microprocessadores, é imprescindível a utilização de outros dispositi-


vos para seu funcionamento, tais como memória e controladores de entrada e
saída de dados. Desta forma, para determinadas soluções criou-se um sistema de
processamento, que já incorporasse os dispositivos necessários para seu funcio-
namento, surgindo, assim, os microcontroladores.
O microcontrolador é uma espécie de “minicomputador” ou “computador ema-
penas um chip”, pois em um chip são integrados: processador, memória e funções
de entrada/saída.

A Figura 9 ilustra através do diagrama da arquitetura de um sistema embarcado


o encapsulamento dos principais componentes intrínsecos ao microcontrolador e
como é feita a interação de suas instruções com o ambiente externo.

16
Microcontrolador Firmware
Periféricos Memória

CPU

Conversor A/D Conversor D/A

Sensor Ambiente Atuador

Figura 9 – Exemplo de arquitetura de microcontrolador

O módulo Memória, ilustrado no canto direito superior da Figura 9, é utilizado


para armazenar as instruções do processador, ou seja, é nesta memória que está
embarcado o binário do código-fonte desenvolvido, denominado firmware do siste-
ma. Há também a memória utilizada para armazenar dados temporários vindos do
resultado de processamentos, os quais originam-se dos demais módulos.

Já o módulo periférico, esboçado no canto esquerdo superior da Figura 9, está


indicando a utilização de barramentos de comunicação para indicar entrada ou sa-
ída de dados. Há possibilidade de conectar neste módulo teclados e displays como
periféricos de entrada e saída respectivamente.

É na CPU que se concentra todo o controle e processamento dos dados do


sistema embarcado, assim a arquitetura e o desenvolvimento de um projeto ini-
ciam-se identificando qual o melhor custo benefício de CPU a ser utilizado para
a solução proposta.

Na parte inferior do diagrama da Figura 9, estão os módulos de conversão de


sinais analógicos e digitais. Estes são responsáveis por receber ou acionar dispositi-
vos externos, podendo ser ou não outro microssistema embarcado, os quais serão
tratados pelas instruções do firmware.

Pela ilustração do diagrama, percebe-se que sistemas embarcados não são fle-
xíveis quanto a hardware e software, se comparados a sistemas computacionais
pessoais. Porém, uma das únicas flexibilidades permitidas está relacionada à neces-
sidade de um upgrade de novas versões. Por sua vez, estas podem estar relaciona-
das à reprogramação do firmware ou até adicionar extensões de hardware, as quais
complementem as atuações ou recepções de sinais externos.

17
17
Unidade Introdução aos Sistemas Embarcados e Microcontrolados

Definição de Firmware
Ter um hardware muito bem projetado e montando não é suficiente para a cria-
ção de uma solução comercial, o software que irá controlá-lo é a essência de um
sistema embarcado. Desta forma, o firmware é extremamente relevante ao projeto,
pois a lógica de execução do algoritmo é que se tornará a funcionalidade exigida
pela demanda da solução.

Na área de sistemas eletrônicos e computação, firmware é uma classe ou cama-


da específica dos softwares, sendo um software semelhante ao de um computador
pessoal, podendo ter seu algoritmo escrito utilizando alguma das várias linguagens
de programação. O firmware pode ser responsável por controlar tarefas básicas ou
padrões de um hardware, desta forma deixando o maior controle ao software da
aplicação. Também é possível que o firmware tenha autonomia total de controle,
atuando como se fosse um sistema operacional do dispositivo, controlando, moni-
torando, processando dados e funcionalidades.

A utilização e o desenvolvimento são específicos para o dispositivo criado, não


tendo a flexibilidade de ser multiplataforma e em sua grande maioria não sofre
muitas alterações após sua fabricação. Uma das únicas razões para ocorrência de
upgrade de firmware é quando se encontram bugs, ou seja, erros de algoritmo
durante o uso em campo.

Escolher qual linguagem de programação utilizar na criação do firmware está


relacionado diretamente com a aplicação que utilizará esta camada para acesso
ao hardware. As linguagens de programação estão em constante evolução, com o
intuito de facilitar a reutilização de algoritmos, tornando o desenvolvimento rápido,
confiável e com manutenção menos complexa. Basicamente, as linguagens de pro-
gramação são divididas entre de baixo nível e de alto nível.

Uma linguagem de programação é considerada de baixo nível quando pertence


à camada mais baixa do conjunto de software, ou seja, é a linguagem efetiva do
hardware, a qual não precisa de conversão para ser interpretada pelo processador.

Este nível de programação fornece o suporte para operar diretamente os re-


gistradores do microcontrolador, os quais não são de fácil acesso pelas camadas
superiores, pois há uma blindagem do firmware ou do sistema operacional, quando
houver, para evitar alterações indevidas.

A linguagem de máquina é considerada a implementação mais baixa que se


pode alcançar, a qual consegue utilizar as instruções do microcontrolador e mani-
pular os dados em nível binário. Um conjunto de bits corresponde a uma sequência
de 8 dígitos de valores 0 ou 1, quando agrupados em 8 considera-se um byte.

O firmware está armazenado ou embarcado na memória não volátil do disposi-


tivo, tal qual a memória ROM, EPROM ou memória flash, as quais serão estudadas
na próxima unidade. O binário do código-fonte, ou conjunto de instruções, é a
única forma a que o microcontrolador acessa e a única forma cujas funcionalidades

18
o microcontrolador compreende. Para visualização e possível compreensão deste
arquivo binário, é necessário um editor de texto em hexadecimal, pois se converti-
do o binário em caracteres ASCII não será possível compreender a lógica contida
nele. Um exemplo de linguagem de baixo nível muito utilizada é o Assembly, que
é uma forma de implementação do processo através de instruções e não números.
Implementações em linguagem de máquina, ou seja, desenvolvendo o binário dire-
tamente, são impraticáveis.

Umas das primeiras linguagens de programação criadas foi o Assembly. Sua


criação surgiu da necessidade de utilizar um comando em vez do código de maqui-
na binário. A versatilidade agregada pelo Assembly foi o uso das variáveis, as quais
são espaços reservados de memória para alocação de dados. Em qualquer parte
do programa, quando haver necessidade de manipulação desse dado contido na
variável, basta referenciar o nome da variável. Devido ao compilador de Assembly
utilizar diretamente as instruções do processador, há necessidade de especificar
para qual processador está sendo desenvolvido o código.

Continuando com a evolução das linguagens de programação, as quais saíram


da linguagem de máquina e foram para instruções com o Assembly, houve o desen-
volvimento de linguagens de alto nível. Quando se fala em linguagem de alto nível,
pensa-se em abstração de diversas estruturas de controle comuns e rotineiramente
utilizadas, assim há uma biblioteca de algoritmos pronta para ser reutilizada. O có-
digo final desenvolvido continuará sendo em linguagem de máquina, porém o com-
pilador que realizará a conversão automática. No entanto, ganha-se na facilidade de
interpretação humana do código, mas perde-se em tamanho do binário convertido
pelo compilador, o qual ficará maior quando comparado com o tamanho do código
programado diretamente em linguagem de máquina.

A linguagem de programação que será estuda e terá um capítulo exclusivo será


a linguagem C, a qual faz parte das linguagens de alto nível, contudo proporciona
maior autonomia no controle dos espaços de memória, pois em um sistema embar-
cado é comum a memória ser um recurso escasso e sob medida.

A linguagem C é uma linguagem de programação estruturada, cuja forma de


programação é linear, ou seja, uma execução sequencial de instruções, priorizando
a utilização de estruturas simples em seus programas. O uso de sub-rotinas e fun-
ções, as quais são blocos de instruções chamados ao longo do algoritmo, é essen-
cial para manter o funcionamento e organização das funcionalidades desenvolvidas
e esperadas pelo projeto.

Evolutivamente, a programação estruturada vem sendo substituída pela progra-


mação orientada a objetos, mas para uso de aplicações e aplicativos que não inte-
ragem muito com o hardware.

Para sistemas embarcados, utiliza-se muito C, devido à sua característica de


escrever softwares otimizados em termos de utilização de recursos de hardware e
também por proporcionar frameworks que facilitam e aceleram o desenvolvimento
do firmware final.

19
19
Unidade Introdução aos Sistemas Embarcados e Microcontrolados

Para compreender os motivos da escolha do C para implementação de firmware dos siste-


Explor

mas embarcados, é bom entender a evolução das linguagens de programação, a qual está
bem detalhada no link: https://bit.ly/2vSotPa

Tendências e Aplicações
de Sistemas Embarcados
Sistemas embarcados estão se tornando cada vez mais generalizados e pratica-
mente já não se imagina o dia a dia sem esta tecnologia. Por outro lado, essa depen-
dência levantou questões como a da segurança na utilização destes equipamentos e
a da vulnerabilidade, há falhas que poderiam ocasionar pequenos contratempos ou
poderiam causar danos a ativos materiais, financeiros ou até mesmo à vida.

A utilização desta tecnologia é tamanha, que mais de 98% dos processadores do


mundo estão hoje operando em sistemas embarcados, na imensa maioria das vezes
transparente aos olhos e conhecimento dos usuários (TAURION, 2005).

Integrado ao hardware, na maioria das vezes, há necessidade de softwares bas-


tante complexos, pois algumas indústrias demandam softwares altamente confiá-
veis, como a indústria automobilística, cujo software que controla a frenagem e a
aceleração de veículos deve ser altamente confiável e seguro.

Muitas indústrias levam em conta que a complexidade do software embarcado


atrelado à confiabilidade e segurança já implica que o custo de desenvolvimento
seja maior que o do próprio produto em si.

Para casos assim, o volume de código a ser escrito é imenso. A estimativa da


indústria automobilística é que em poucos anos os automóveis da categoria com
maior tecnologia embarcada terão cerca de 100 milhões de linhas de código.
Fazendo uma conta rápida para visualizar o esforço necessário para essa tarefa,
estima-se que a produtividade de código por dia, por programador, é de 20 li-
nhas, dessa forma equivaleria a 5.000.000 homens/dia ou 20.000 homens/ano
(TAURION, 2005).

Analisando as estimativas da indústria de software como um todo, pode-se con-


siderar que em média existem de cinco a vinte bugs por mil linhas de código e os
firmwares têm sido instalados com mais de um milhão de linhas de código. Assim,
falhas são inevitáveis, o que em termos de negócio representam prejuízos altos,
porém esses prejuízos tendem a ser amortizados conforme se investe em departa-
mentos de teste de software, como o SQA (software quality assurance).

Evolutivamente, pode-se fazer um comparativo de maneira aproximada entre a


Lei de Moore e os sistemas embarcados, o qual está dobrando de tamanho e com-

20
plexidade a cada dois anos. Recordando, a Lei de Moore surgiu quando em 1965,
Gordon Moore, que mais tarde fundou a Intel ao lado de Bob Noyce, previu que
a capacidade de um chip de computador dobraria anualmente. Moore fez a proje-
ção com base na relação preço/desempenho dos chips de computador do triênio
anterior. Na verdade, Moore não acreditava que esse índice de avanço fosse durar
muito tempo. Mas, dez anos depois, a previsão se mostrou verdadeira e ele voltou
a prever que a capacidade dobraria a cada dois anos. Até hoje as previsões para
os chips se mantiveram e a média, uma duplicação da capacidade a cada dezoito
meses, é chama de Lei de Moore.

Além da evolução do sistema embarcado seguindo a Lei de Moore, o desenvol-


vimento do firmware de alta qualidade, em tempo reduzido (pressões pelo time-
-to-market), ultrapassa a capacidade da maioria das empresas do seguimento de
produção de software. Na prática, uma indústria como a automobilística não tem
como core a produção de software, portanto a responsabilidade do desenvolvi-
mento do firmware acaba sendo terceirizada. Em comparação, a Microsoft tem
cerca de 20.000 desenvolvedores e é pouco provável que uma automobilística con-
trate tantos desenvolvedores (TAURION, 2005). Desta forma, o desenvolvimento
in-house de firmware não é sempre a melhor opção em termos de custo/benefício,
analisando-se a tendência do mercado de sistemas embarcados e observando-se
alguns dos setores de indústrias que mais consomem este tipo de tecnologia.

A Eletrônica de consumo, cuja demanda de sistemas embarcados se resume a


produtos como celulares, câmeras digitais, set top boxes da TV digital, dispositivos
MP3, aparelhos de Blue-Ray, console de games e assim por diante, é líder na apli-
cação dessa tecnologia. O sucesso dessa indústria está relacionado com a constante
inovação do produto e também ao lançamento do produto no momento oportuno
em que há carência de tecnologia no mercado, sendo o pioneirismo essencial para
superar a concorrência.

A indústria automotiva utiliza sistemas embarcados em dispositivos de controle


de motores, freios ABS, air bags, controle de temperatura ambiente, entre outros.
Esta indústria está caminhando para fazer com que os automóveis do futuro sejam
mais parecidos com computadores com rodas do que automóveis com chips. A
eletrônica e o software estão substituindo rapidamente a mecânica e a hidráulica,
similar ao que já acontece com a indústria aeronáutica, onde esses sistemas foram
substituídos pelos chamados fly-by-wire. Assim, o valor dos sistemas embarcados
está se tornando cada vez maior no custo total de produção dos veículos, sendo
estimado hoje em até 15%.

fly-by-wire: significa sistema de controle por cabo elétrico, ou seja, o controle não é feito ex-
Explor

clusivamente por um humano, mas sim por sistemas embarcados que processam o comando
manual e tomam a decisão de como será feita a execução prática.

21
21
Unidade Introdução aos Sistemas Embarcados e Microcontrolados

Sistemas médicos contêm sistemas embarcados em desfibriladores, marca-pas-


sos, sistemas de imagem ultrassônicos, raios X, lasers terapêuticos, entre outros.
A medicina atual está fortemente dependente de tecnologia, sistemas embarcados
estão presentes em todos os aspectos médicos, seja na prevenção, passando pelo
diagnóstico e chegando ao tratamento e reabilitação. O ciclo de lançamento de
produtos é reduzido, devido a demandar alto grau de inovação, confiabilidade e
disponibilidade, pois lidam diretamente com a vida humana. Um bug ou um sistema
fora do ar pode provocar uma morte. Nesta indústria, os sistemas embarcados se
destacam por processar gráficos tridimensionais de alta resolução e uso intenso de
processadores e operações em tempo real, além de demandar muita integração aos
hospitais através de um ou vários tipos de conexões.

Já a indústria de Telecomunicações contém sistemas embarcados nas estações


de rádio base para telefonia celular, roteadores, telefones digitais, PABX e voz sobre
IP (VoIP). Para os produtos deste seguimento industrial, é importantíssima a dis-
ponibilidade de acesso, pois as telecomunicações demandam serviços que não de-
vem ser interrompidos. A expectativa dos usuários é que as comunicações estejam
sempre operando, sem interrupções, assim não é demais esperar disponibilidade
na faixa dos 99% do tempo. O segmento da infraestrutura de telecomunicações
exige equipamentos robustos, que possam estar expostos a intempéries e não in-
fluenciar na arquitetura de funcionamento e processamento do sistema embarcado.
Por outro lado, o segmento de telefonia celular sofre com a extrema competição e
renovação dos lançamentos constantes. Isso é um complicador, pois as aplicações
móveis devem operar nos múltiplos equipamentos e plataformas cujo firmware não
é constate, ou seja, a flexibilidade para acessar vários firmwares e atuar em vários
hardwares aumenta e muito a complexidade do software de aplicação.

O segmento industrial geral sempre foi um berço da computação embarcada,


focando basicamente na automação de todos os segmentos que a compõem. Usar
computadores na gestão das linhas de produção foi uma das primeiras atividades
computacionais, com os chamados sistemas de controle de processos. A evolução
destes primeiros sistemas trouxe complexidade tanto de hardware como de softwa-
re e inclusive introduziu algoritmos de inteligência artificial aplicados à robótica nas
soluções deste seguimento. Além disso, os sistemas industriais estão cada vez mais
interconectados a sistemas de gestão na retaguarda, integrando em tempo real a
linha de produção aos sistemas de gerenciamento de estoque, alocação de recursos
e assim por diante.

22
Material Complementar
Indicações para saber mais sobre os assuntos abordados nesta Unidade:

Livros
Electronics for Embedded Systems
BINDAL, A. Electronics for Embedded Systems. Cham: Springer International
Publishing, 2017.
Embedded Operating Systems: a practical approach
HOLT, A.; HUANG, C. Y. Embedded Operating Systems: a practical approach. 2nd
edition. ed. Cham: Springer International Publishing AG, 2018.

Vídeos
Videoaula da UNIVESP sobre Eletrônica embarcada
https://youtu.be/ElIMxXcFkGQ
Introdução aos sistemas embarcados
https://youtu.be/1I3QKMzSXUM

23
23
Unidade Introdução aos Sistemas Embarcados e Microcontrolados

Referências
BINDAL, A. Electronics for Embedded Systems. Cham: Springer International
Publishing, 2017.

HOLT, A.; HUANG, C. Y. Embedded Operating Systems: a practical approach.


2nd edition. ed. Cham: Springer International Publishing AG, 2018.

OLIVEIRA, A. S.; ANDRADE, F. S. Sistemas embarcados: hardware e firmware


na prática. 2ª. ed. São Paulo: Érica, 2010.

QIAN, K.; HARING, D. D.; CAO, L. Embedded software development with C.


New York: Springer Science+Business Media, 2009.

24

Você também pode gostar