You are on page 1of 10

Sistemas operacionais

embarcados
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:

„ Definir a aplicação dos sistemas operacionais embarcados.


„ Relacionar os ambientes de uso dos sistemas operacionais embarcados.
„ Descrever as arquiteturas dos sistemas operacionais embarcados.

Introdução
Os sistemas operacionais (SOs) embarcados melhoram continuamente
a vida das pessoas. A ideia central desses sistemas é otimizar o software
para tirar proveito de um ambiente que contém algumas limitações,
se comparado com ambientes convencionais, como desktops e notebooks,
aos quais somos mais acostumados.
Neste capítulo, você vai estudar o conceito de SOs embarcados e
compreender seus ambientes. Você também vai verificar a grande va-
riedade de aplicações e as características desses sistemas.

1 Sistemas operacionais embarcados


Atualmente, vários produtos, como geladeiras e fogões, possuem recursos de
computação eficientes e contam com um sistema eficaz que pode garantir aos
usuários maior conforto e praticidade. No micro-ondas, por exemplo, várias
funções predefinidas podem ser executadas pelo usuário. Esses ambientes são
conhecidos como sistemas embarcados. Um sistema embarcado, também
conhecido como sistema embutido ou incorporado, é um sistema micropro-
cessador no qual um software está conectado ao hardware que o controla.
14 Sistemas operacionais embarcados

Os sistemas incorporados podem executar um conjunto de tarefas predefini-


das. Geralmente, esse tipo de sistema é usado para tarefas específicas. Por ser
muito limitado, esse tipo de sistema geralmente não possui flexibilidade, o que
o impede de executar outras tarefas, além das preexistentes, independentemente
de seus objetivos de design e desenvolvimento. A única flexibilidade permitida
é atualizá-lo para uma nova versão, para que o sistema possa ser reprogramado,
geralmente exigindo correções ou inserção de recursos aprimorados, que,
em sua maioria, são realizadas pelo fabricante, e não pelo usuário final.
Quando estamos trabalhando com uma aplicação simples, que não requer
muito suporte em tempo de execução, é possível desenvolver a solução sem a
utilização de um SO. Todas as inicializações de hardware, o gerenciamento do
dispositivo utilizado e as configurações do software devem ser desenvolvidos
no código-fonte que deve ser embarcado, aplicando-se também camadas de
segurança, se necessário.

Algumas empresas que desenvolvem SOs para ambientes desktop também possuem
versões de seus sistemas para ambientes embarcados.

De modo geral, quando utilizamos essa abordagem, temos dois trechos


de código bem definidos: inicialização e loop. No trecho da inicialização,
deve ficar tudo o que será executado ao ligar o dispositivo. Já o trecho do loop
deve apresentar toda a lógica que será monitorada durante o uso do aparelho.
O firmware consiste em um pedaço de código armazenado na memória
não volátil. Ele contém instruções a serem executadas quando o dispositivo
é inicializado após um desligamento ou uma reinicialização. Por outro lado,
existem equipamentos que possuem um SO embarcado em vez do firmware.
Ele é muito parecido com os sistemas operacionais que encontramos em com-
putadores e notebooks, mas é otimizado para trabalhar em algum hardware
específico. Isso ocorre por causa da limitação de recursos que esse hardware
apresenta, fazendo-se necessário obter o máximo de performance do sistema
como um todo.
Sistemas operacionais embarcados 15

A utilização do SO embarcado é recomendada quando é preciso mais


controle na execução das tarefas, exigindo um SO para gerir essas atividades.
Diversas são as vantagens de se utilizar um sistema operacional em um sistema
embarcado. A utilização de tarefas concorrentes, a interface de comunicação
de alta complexidade e o compartilhamento de recursos são algumas dessas
vantagens (MOROZ, 2011). Entretanto, a desvantagem desse procedimento
é a grande utilização de recursos, se comparado com o uso de firmware.
O SO embarcado utiliza mais memória e mais processamento e executa tarefas
gerenciais, dificultando o atendimento de requisitos temporais rígidos.
Uma alternativa é a utilização de SO embarcado para tempo real (real
time operation system). Esse software é desenvolvido com o intuito de gerir
todo o sistema, para atender a rígidas condições temporais. Existe também a
possibilidade de uma empresa desenvolver toda a codificação necessária para
controlar um grande projeto, implementando a gerência e o controle de todos
os níveis necessários. Contudo, essa tarefa é bastante complexa, o que gera
custos elevados para o projeto. Seria necessário uma equipe multidisciplinar,
com desenvolvedores de hardware e de interface, programadores back-end,
testadores de software, entre outros (CARRO; WAGNER, 2003).

2 Ambientes embarcados
Os sistemas embarcados possuem grandes limitações, se comparados com
computadores que utilizamos no cotidiano. Isso nos faz perceber que não
podemos utilizar os mesmo SOs que comumente empregamos em nosso co-
tidiano. A arquitetura de hardware de um System on Chip (SoC) pode conter
um ou mais processadores, memória, interfaces para periféricos e outros
componentes (CARRO; WAGNER, 2003). Cada fabricante desenvolve seu
hardware conforme suas especificações e necessidades. Assim, os software
embarcados necessitam ser adaptados a cada ambiente em que vão trabalhar.
O ambiente embarcado deve possuir uma combinação precisa entre software
e hardware, para que seu desempenho seja maximizado. Quando pensamos na
parte física do projeto, devemos entender que ela envolve tanto os sensores e
atuadores utilizados na aplicação quanto a programação que vai controlá-los.
Vejamos a seguir alguns conceitos que são utilizados nessa área.
16 Sistemas operacionais embarcados

„ Sensores: elementos físicos que captam grandezas presentes no meio


ambiente e fornecem um sinal elétrico que deve ser interpretado pelo
hardware. Exemplos: sensores de umidade, temperatura, gás, entre
outros.
„ Atuador: elemento físico que provoca mudança ao meio de acordo com
o que foi programado. Exemplos: lâmpadas, motores, braços robóticos,
entre outros.
„ SoC: microcomputador. Apresenta todos os componentes básicos de
um computador. Exemplo: Arduino, Raspberry Pi, Esp32, entre outros.
Pode controlar os sensores e atuadores por meio dos módulos de entrada
e saída (Figura 1).

Figura 1. Combinação dos sensores e atuadores em um System on Chip.


Fonte: Adaptada de [Sensores...] ([201-?]).

Um sistema embarcado geralmente realiza um conjunto de requisitos


específicos, podendo, assim, usar uma quantidade de recursos estabelecidos
para aquela demanda. Dessa forma, o SO deve gerir confiavelmente os recursos
dispostos. Nos SOs embarcados, existem alguns conceitos interessantes que
devem ser mencionados, descritos a seguir.

„ User space: área do SO onde o usuário tem permissão de acesso. Este


também é o local no qual as aplicações vão funcionar.
„ Kernel space: espaço destinado ao núcleo do sistema. Apenas os admi-
nistradores do SO podem fazer quaisquer alterações nesse ambiente.
„ Drivers: software utilizados pelo kernel para comunicação com
hardware específicos.
Sistemas operacionais embarcados 17

Dessa forma, os desenvolvedores vão utilizar o user space para adicionar


a aplicação construída para a manutenção do projeto. Além disso, podemos
utilizar software complementares para nos auxiliarem na execução do sistema
como um todo, como sistemas de segurança. Dessa forma, não é necessário
fazer esse tipo de implementação no código, já que o SO traz essa facilidade
para o ambiente.
O kernel tem como objetivo fazer toda a gerência do sistema, realizando
a sincronização e a comunicação entre tarefas. A sua atualização é feita pelo
mantenedor do software; em casos de se estar trabalhando com um software
livre, é possível fazer algumas alterações, apesar de não ser algo comumente
realizado. Por sua vez, em ambientes proprietários, os próprios fabricantes
são os responsáveis pelo desenvolvimento dos drivers de seus equipamentos.
Entretanto, alguns desses fabricantes não têm interesse em construir drivers
para ambientes de código aberto; logo, a comunidade que utiliza o SO é a
responsável por desenvolvê-los.
Agora, vamos conhecer um pouco mais sobre os SOs que podemos uti-
lizar. O mercado de SOs embarcados traz uma grande variedade de opções
que devem ser analisadas para suprir as necessidades do projeto. O TinyOS
é um sistema de código aberto, ou seja, um software que pode ser utilizado,
modificado e redistribuído, projetado para dispositivos que compõem uma
rede de sensores sem fio, também conhecida pela sigla RSSF. Ele é um sistema
orientado a componente — ou seja, o desenvolvedor pode combinar elementos
preexistentes e complementá-lo com o código necessário para atingir o objetivo
final do projeto. Dessa forma, construímos um novo TinyOS específico para
cada aplicação, evitando o uso de componentes desnecessários para a execução
da aplicação (LEMOS; LEAL, 2011).
O Windows Embedded é a versão do SO Windows para dispositivos
embarcados. Ele possui algumas categorias diferentes para atrair públicos-
-alvo distintos. Apesar de ser um software proprietário, em um certo período,
a Microsoft liberou o código-fonte de seu sistema para desenvolvedores reali-
zarem modificações, quando necessário. Contudo, a empresa está encerrando
suas atividades na área de sistemas operacionais embarcados e já anunciou as
datas de quando suspenderá o suporte aos seus sistemas (COMPEX, 2019).
O Contiki é um sistema que também possui código aberto. Esse SO é
multitarefas e foi desenvolvido para trabalhar com microcontroladores com
pouca memória. É amplamente utilizado para Internet das Coisas e foi o
primeiro SO a fornecer um endereço IP para um dispositivo presente em uma
rede de sensores (RIBEIRO et al., 2018). A sigla IP significa Internet Protocol,
ou simplesmente Protocolo de Internet. Ele é um número utilizado como um
18 Sistemas operacionais embarcados

identificador único para qualquer dispositivo que se conecte à internet. Dessa


forma, podemos identificar qualquer site, servidor ou computador por meio
dessa numeração.
O Raspberry Pi é uma plataforma que vem sendo utilizada com muita
frequência. Apesar de existirem diversas opções de SOs para utilizar, a co-
munidade sugere a utilização do Raspbian. Esse sistema é baseado no sistema
operacional Debian para desktops. Ele contém o ambiente Lightweight X11
Desktop Environment, ferramentas de desenvolvimento e exemplos de funções
multimídia, já que o Raspberry é muito utilizado para captura de imagens
(MENESES et al., 2016).

3 Arquitetura para sistemas operacionais


embarcados
Como vimos no tópico anterior, os dispositivos embarcados possuem uma
variedade de SOs para serem utilizados. Contudo, ao contrário do mercado
de SOs para computadores desktops, que têm seus hardware trabalhando
basicamente com a arquitetura x86, o mercado de embarcados possui ampla
variedade de arquiteturas, sendo Arm, PowerPC e PIC as principais.

Conheça mais sobre as arquiteturas de hardware Arm, IBM PowerPC e Microchip PIC
em suas páginas oficiais.

Vejamos, então, como seria a arquitetura dos SOs. Apesar da necessidade


de existir uma separação entre o núcleo e a área do usuário, os elementos
que compõem o sistema podem ser organizados de diversas formas, tendo as
funcionalidades separadas e compartimentando o projeto. Uma das formas
primárias de se organizar um SO é conhecida como sistema monolítico. Dessa
forma, o SO funciona como um grande bloco, operando na parte central do
sistema. Ele possui acesso a todos os recursos do sistema de forma direta.
Sistemas operacionais embarcados 19

A vantagem dessa abordagem está em seu desempenho. Qualquer compo-


nente do núcleo pode acessar as demais áreas, como memória ou periféricos.
Contudo, isso pode causar problemas no sistema. Considerando que todos os
componentes possuem acesso ao hardware, caso aconteça algum problema
(ponteiro inválido ou índice inexistente em um ponteiro), o erro será propagado
por todo o núcleo, ocasionando travamento ou reinicialização. Além disso,
o acoplamento do núcleo é elevado, o que torna a evolução e a manutenção
do sistema muito complexas (MAZIERO, 2019).
Uma alternativa para a abordagem monolítica é a retirada de toda a estrutura
de facilitação para uso de recursos. A ideia é tornar o núcleo do sistema o mais
básico possível. Essa estrutura é conhecida como micronúcleo ou microkernel.
Todo o código que foi retirado do kernel é transformado em serviços do SO.
Essa organização é mais flexível, por tornar o sistema mais modular. Cada
serviço pode ser desenvolvido separadamente, independentemente dos demais.
Assim, caso algum serviço seja interrompido devido a erros, o núcleo não será
afetado. Veja no Quadro 1 a seguir o que continua fazendo parte do kernel e
o que passa a ser oferecido como serviço.

Quadro 1. Mudanças de funcionalidade entre a arquitetura monolítica e a arquitetura de


microkernel

Mantido no núcleo Mantido do núcleo

Comunicação entre tarefas Sistemas de arquivos

Espaços de memória protegidos por Controle de acesso


aplicações

Operações de entrada e saída Políticas de uso do processador

Drivers
20 Sistemas operacionais embarcados

Ainda em relação às arquiteturas de SO, podemos mencionar a arquitetura


de sistemas em camadas. Como o próprio nome diz, a estrutura é dividida
em camadas, onde a camada mais baixa tem acesso direto ao hardware,
as camadas intermediárias definem uma abstração dos recursos, e a ca-
mada mais superior faz o intermédio do núcleo com as aplicações. Contudo,
alguns inconvenientes ocorrem com o uso dessa estrutura. O primeiro deles
é em relação ao desempenho. Quanto mais camadas existirem, menor será o
desempenho das ações, já que cada requisição realizada por uma aplicação
deva passar por todas as camadas até chegar ao periférico especificado. Além
disso, a divisão das responsabilidades pelas camadas nem sempre é óbvia,
pois ainda assim existem dependências entre elas.
Por fim, existe a arquitetura híbrida. Como em diversas áreas da compu-
tação, o termo “híbrido” se refere a uma nova estrutura criada a partir de duas
ou mais estruturas, que aproveita o que cada uma tem de melhor e potencializa
os resultados. A estrutura do microkernel, apesar de ser bem enxuta, não foi
bem adotada devido à sua falta de desempenho. Logo, idealizou-se a volta
dos elementos mais críticos para a parte interna do núcleo. Essa abordagem
intermediária entre a arquitetura monolítica e a arquitetura de micronúcleo
ficou conhecida por núcleo híbrido (MAZIERO, 2019).
A Figura 2 apresenta as diferentes arquiteturas de SOs embarcados. Essas
não são as únicas arquiteturas existentes — arquiteturas mais avançadas já
foram desenvolvidas, mas ainda não estão em ampla utilização. Do ponto
de vista do projetista de uma aplicação, a forma de organização do SO não
será um ponto que ele analisará diretamente. Um dos itens mais críticos será
o desempenho do SO, que, entre vários outros pontos que determinam a sua
performance, terá influência da arquitetura.
Sistemas operacionais embarcados 21

Kernel Kernel

Comunicação
entre processos

Software Servers Software

Monolítico
Microkernel

Servers Kernel

Kernel

Executivo Software
Supervisor
Híbrido
Usuário

Camadas

Figura 2. Arquiteturas de sistemas operacionais embarcados.

CARRO, L.; WAGNER, F. R. Sistemas computacionais embarcados. In: JORNADAS DE ATUA-


LIZAÇÃO EM INFORMÁTICA, 22., 2003. Campinas: UNICAMP / SBC, 2003. v. 1, p. 45–94.
COMPEX. Windows CE está com os dias contados. São Paulo: COMPEX, 2019. Disponível
em: https://www.compextec.com.br/blog/windows-ce-esta-com-os-dias-contados/.
Acesso em: 6 ago. 2020.
LEMOS, M. V. de S.; LEAL, L. B. Relatório sobre o Sistema Operacional TinyOS e a Linguagem
NesC. Fortaleza: [s. n.], 2011. Disponível em: https://silo.tips/download/relatorio-sobre-
-o-sistema-operacional-tinyos-e-a-linguagem-nesc. Acesso em: 14 set. 2020.
MAZIERO, C. A. Sistemas operacionais: conceitos e mecanismos. Curitiba: DINF - UFPR, 2019.
Disponível em: http://wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-
-livro.pdf. Acesso em: 14 set. 2020.
MENESES, R. A. et al. Raspbian vs Ubuntu Mate: um paralelo do desempenho na Ras-
pberry Pi. In: WSCAD-WIC, 2016. Anais... [S. l.: s. n.], 2016. p. 43.
22 Sistemas operacionais embarcados

MOROZ, M. R. Critérios para adoção e seleção de sistemas operacionais embarcados. 2011.


Dissertação (Mestrado em Ciências)- Universidade Tecnológica Federal do Paraná,
Curitiba, 2011. Disponível em: https://repositorio.utfpr.edu.br/jspui/bitstream/1/324/1/
CT_CPGEI_M_Moroz%2C%20Maiko%20Rossano_2011.pdf. Acesso em: 14 set. 2020.
RIBEIRO, R. M. O. et al. Segurança em IoT: simulação de ataque em uma rede RPL utili-
zando Contiki. 2018. Monografia (Graduação em Engenharia Eletrônica e de Teleco-
municações)- Universidade Federal de Uberlândia, Patos de Minas, 2018. Disponível
em: https://repositorio.ufu.br/bitstream/123456789/22021/1/Seguran%C3%A7aIoTSi
mula%C3%A7%C3%A3o.pdf. Acesso em: 14 set. 2020.
[SENSORES e atuadores]. [S. l.: s. n., 201-?]. Disponível em: https://www.tecniar.com.
br/wp-content/uploads/2018/05/TECNI-AR_Parker_Store_Brasil_CLP_PCLpng.png.
Acesso em: 14 set. 2020.

Leituras recomendadas
ALMEIDA, R. M. A.; MORAES, C. H. V.; SERAPHIM, T. de F. P. Programação de sistemas
embarcados: desenvolvendo software para microcontroladores em linguagem C. Rio
de Janeiro: Elsevier, 2017.
OLIVEIRA, A. S.; ANDRADE, F. S. Sistemas embarcados: hardware e firmware na prática.
São Paulo: Érica, 2006.
PUNTEL, F. E.; PEREZ, A. L. F. Avaliação de desempenho dos sistemas operacionais em-
barcados MQX Lite e FreeRTOS aplicados a robótica móvel. In: FÓRUM DE INICIAÇÃO
CIENTÍFICA, 17., 2017. Anais... [S. l.]: SBC, 2017. Disponível em: http://plutao.sid.inpe.br/col/
sid.inpe.br/plutao/2017/06.21.20.32/doc/puntel_avaliacao.pdf. Acesso em: 14 set. 2020.
TANENBAUM, A. S.; WOODHULL, A. S. Sistemas operacionais: projetos e implementação.
Porto Alegre: Bookman, 2009.

Os links para sites da web fornecidos neste capítulo foram todos testados, e seu fun-
cionamento foi comprovado no momento da publicação do material. No entanto, a
rede é extremamente dinâmica; suas páginas estão constantemente mudando de
local e conteúdo. Assim, os editores declaram não ter qualquer responsabilidade
sobre qualidade, precisão ou integralidade das informações referidas em tais links.

You might also like