Buscar

261878026 dsadsad

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

\section{Sistemas Embarcados}
Os sistemas embarcados, também conhecidos como sistemas embutidos
ou sistemas dedicados, são a combinação de hardware e software com a
finalidade de controlar um ambiente ou um dispositivo físico
\cite{ossada12010estudo}. Os sistemas embarcados são diferentes de
outros tipos de sistemas computacionais, como computadores pessoais
(PCs) ou supercomputadores. No entanto, é complicado definir o que
realmente é um sistema embarcado, pois o conceito está em constante
evolução devido aos avanços tecnológicos e a redução de custos de
hardware \cite{noergaard2012embedded}.
Alguns autores como Anthony and Barr (2006) relatam que um sistema
embarcado é projetado para executar uma função específica diferindo-se
de um PC, no qual realiza tarefas distintas, como um servidor de arquivos,
console para jogos ou para edição de textos e planilhas. No entanto,
atualmente existem telefones celulares que executam uma variedade de
funções primárias, como mensagem de texto, voz e vídeo, além disso as
últimas TVs digitais incluem aplicações de interação como e-mail,
navegação web e jogos \cite{noergaard2012embedded}.
Outros autores classificam sistemas embarcados como mais limitados em
hardware e software quando comparados com um PC. Isso significa que os
sistemas embarcados tem limitações de desempenho no processamento,
consumo de energia e quantidade de memória, além de limitações no
sistema operacional e suas aplicações. Contudo, essa definição não é
totalmente verdadeira, pois tanto hardwares quanto softwares de PCs do
passado estão sendo remodelados para projetos de sistemas embarcados
mais complexos \cite{noergaard2012embedded}. 
De acordo com Tammy Noergaard (2012) há uma constante discussão do
que realmente é um sistema embarcado:
\begin{quote}
Alguns dispositivos que são chamados de sistemas embarcados, tais como
PDAs, não são realmente sistemas embarcados. Há uma discussão quanto
à existência ou não de sistemas computacionais que atendam algumas,
mas não todas, as definições de sistemas embarcados tradicionais. Alguns
acham que a designação de sistemas embarcados para projetos mais
complexos é conduzida por profissionais não técnicos, ao invés de
engenheiros. Na realidade, até mesmo os engenheiros de embarcados
estão divididos se estes projetos são ou não sistemas embarcados, mesmo
que atualmente estes sistemas são frequentemente discutidos, como tal.
Quer ou não as definições sobre embarcados tradicionais devem continuar
a evoluir, ou um novo campo de sistemas computacionais deve ser
determinado para incluir estes sistemas mais complexos. Por enquanto, já
que não há novo campo suportado pela indústria de sistemas
computacionais para projetos que se enquadram entre os sistemas
embarcados tradicionais e os sistemas de PC de uso geral.
\end{quote}
\subsection{Microcontroladores}
O principal componente dos sistemas embarcados é denominado de
microcontrolador, que é responsável por gerenciar todos os componentes
físicos de um barramento e manipular a interface com o usuário
\cite{tanenbaum2009organizaccao}. Os microcontroladores de sistemas
embarcados tem uma unidade de processamento denominada de
processador integrado diferente dos computadores, que fica em um
componente separado denominado de Unidade de Processamento Central
(\textit{Central Processing Unit} - CPU) \cite{ossada12010estudo}.
Os microcontroladores começaram a serem populares no início da década
de 70. A \textit{Intel}, na época uma empresa pequena, foi uma das
precursoras na fabricação de microcontroladores, pois havia a
necessidade de melhorar e integrar os seus microprocessadores, utilizados
até então somente em computadores, com os demais componentes
\cite{intelcorporation2015}. A necessidade de integração dos
componentes ocorreu devido a empresa \textit{Nippon Calculating
Machine Corporation} solicitar o desenvolvimento de chips personalizados
para a sua nova calculadora de impressão \textit{Busicom}. No ano
seguinte a \textit{Intel} adquiriu os direitos da \textit{Nippon Calculating}
e lançou o seu primeiro microprocessador chamado de \textit{Intel
4004} \cite{intelcorporation2015}. 
O \textit{Intel 4004} proporcionou aos engenheiros personalização dos
softwares utilizados em equipamentos eletrônicos, o que ajudou na
disseminação dos sistemas embarcados. Além disso, contavam com a
capacidade de 4 bits interno no chip, o que elevou o processamento
simultâneo de dados e instruções do microprocessador
\cite{intelcorporation2015}. Os microcontroladores tornaram-se mais
tarde uma das melhores relações custo/benefício do mercado, quando se
demandava processamento, baixo custo de hardware e pequena
necessidade de espaço em disco \cite{martins2005sistemas}. 
Atualmente o mercado de sistemas embarcados é o grande responsável
pela absorção dos chips produzidos pelos fabricantes de
microprocessadores \cite{ossada12010estudo}. Menos de 3\% (100
milhões por ano) dos microprocessadores fabricados no mundo são de alto
desempenho destinados aos computadores de propósito geral, os 98\%
restantes (6 bilhões por ano) são processadores e microcontroladores,
destinados ao mercado de sistemas embarcados
\cite{massa2006programming}. 
O aumento de desempenho dos processadores resultante do avanço
tecnológico dos últimos 45 anos somado com a alta produção dos
microcontroladores, que impactou no baixo custo de hardware, fizeram
dos sistemas embarcados parte integral no cotidiano das pessoas. Hoje os
sistemas embarcados estão em telefones celulares, em carros
inteligentes, fornos microondas e até mesmo em maquinas de lavar
\cite{carro2003sistemas}.
\subsection{Arquitetura}
A arquitetura dos sistemas embarcados pode ser definida utilizando o
modelo de arquitetura de \textit{von Neumann}. Este modelo foi
publicado por John von Neumann em 1945, no qual definia os principais
requisitos para um computador eletrônico de uso geral. Como os sistemas
embarcados são um tipo de sistema computacional, este modelo pode ser
aplicado de forma natural na arquitetura dos sistemas embarcados
\cite{noergaard2012embedded}.
O modelo de \textit{von Neumann} é uma representação da arquitetura
de sistemas embarcados em camadas, onde todos compartilham uma
similaridade na sua estrutura, ou seja, todos tem pelo menos a camada de
hardware ou todas as camadas (hardware, software e aplicação) em que
os componentes da arquitetura se enquadram. A camada de hardware
contêm todos os componentes físicos de uma placa embarcada, enquanto
que nas camadas de software e aplicação contêm todo o software
processado pelo sistema embarcado \cite{noergaard2012embedded}. A
Figura 1 demonstra como é a representação do modelo de \textit{von
Neumann}.
\begin{figure}[!htb]
 \caption{Modelo em Camadas de \textit{Von Neumann}.}
\label{fig:model_von_neumann}
\centering%
\begin{minipage}{.3\textwidth}
\includegraphics[width=\textwidth]
{Imagens/model_von_Neumann.jpg}
\fonte{\cite{noergaard2012embedded}}
\end{minipage}
\end{figure}
\subsubsection{Hardware Layer}
O modelo de \textit{von Neumann} denota que a camada de hardware
(\textit{hardware layer}) é composta por cinco categorias de
componentes, no qual existem em qualquer arquitetura de hardware de
dispositivos eletrônicos \cite{noergaard2012embedded}.
\begin{itemize}
\item \textbf{Processador}.
O processador é o principal componente da camada de hardware. Um
sistema embarcado tem pelo menos um processador definido como
\textit{master} e processadores opcionais definidos como \textit{slaves},que ficam sob controle do \textit{master}. Os processadores têm como
responsabilidade gerenciar as memórias, o barramento e os dispositivos
de entrada e saída (E/S). A complexidade do processador \textit{master}
determina se ele é classificado como um microprocessador ou um
microcontrolador (processador integrado). Normalmente os
microprocessadores tem um conjunto mínimo de memória integrada ao
processador (registradores) enquanto os microcontroladores têm a maior
parte da memória e componentes de I/O integrados no chip
\cite{noergaard2012embedded}.
A vantagem de um processador integrado é que a maioria dos
componentes ganha um aumento no seu desempenho de transmissão de
dados, pois não tem que lidar com latências envolvendo o barramento do
processador. Além disso, tem seu design simples e com menos
componentes, o que gera consequentemente requisitos de potência bem
menores do que um microprocessador. Com menos componentes e
requisitos de potência mais baixos, um processador integrado resulta em
uma placa menor e mais barata \cite{noergaard2012embedded}.
Atualmente existem diversos processadores integrados para cada solução
de sistema embarcado. Os processadores integrados são divididos em
categorias denominadas de arquiteturas. O que difere uma arquitetura
para outra é o conjunto de instruções de código de máquina que ela pode
executar. Processadores integrados da mesma arquitetura podem executar
o mesmo conjunto de instruções \cite{noergaard2012embedded}. A
Tabela 1 traz uma lista de processadores e suas arquiteturas.
\begin{table}[!htb]
 \caption{Processadores e arquiteturas.}
\label{fig:model_von_neumann}
\centering%
\begin{minipage}{.7\textwidth}
\includegraphics[width=\textwidth]
{Imagens/processors_int.jpg}
\fonte{\cite{noergaard2012embedded}}
\end{minipage}
\end{table}
\item \textbf{Memória}.
Na camada de hardware a memória é definida em uma hierarquia assim
como em qualquer outra arquitetura de sistemas computacionais
\cite{noergaard2012embedded}. No topo desta arquitetura está a
memória com maior velocidade de acesso denominada de registradores
de CPU, que é acessada conforme a velocidade do processador. Os
registradores armazenam instruções com a localização de um
determinado programa na memória principal a ser processado pelo
processador \cite{tanenbaum2009organizaccao}. 
Abaixo dos registradores está a memória cache, que fica entre o
processador e a memória principal, com objetivo de armazenar as
informações mais acessadas pelo processador. A memória cache tem
velocidade de leitura e escrita muita mais rápida que a memória principal,
o que aumenta o desempenho do processador no acesso a informação
\cite{tanenbaum2009organizaccao}. 
A principal memória da hierarquia é dividida em dois tipos. O primeiro é a
Memória Somente Leitura (\textit{Read-only Memory} - ROM), que é
utilizada para armazenar dados de forma permanente, normalmente é
onde fica o \textit{firmware} do sistema embarcado
\cite{noergaard2012embedded}. O segundo é a Memória de Acesso
Randômica (\textit{Random Access Memory} - RAM), que tem como
objetivo armazenar os programas que estão em execução, onde é
acessada de forma direta e aleatória. Além disso, ela pode ser alterada
várias vezes, dependendo do hardware
\cite{tanenbaum2009organizaccao}.
Na base da hierarquia está a memória secundária e terciária, também
conhecida como memória auxiliar ou de armazenamento. Esse tipo tem
como objetivo armazenar grande quantidade de dados ou fazer backup de
informações \cite{noergaard2012embedded}. Um exemplo é a fita de
backup ou um disco rígido externo. A Figura 2 ilustra o nível hierárquico
para memória.
\begin{figure}[!htb]
 \caption{Hierarquia de Memória}
\label{fig:memory_hierarchy}
\centering%
\begin{minipage}{.8\textwidth}
\includegraphics[width=\textwidth]
{Imagens/memory_hierarchy.jpg}
\fonte{Elaborado pelo autor}
\end{minipage}
\end{figure}
\item \textbf{Dispositivo de Entrada e Saída}.
Os dispositivos de entrada e saída (E/S) tem como responsabilidade
transportar as informações entre os componentes de uma placa
embarcada. Os dispositivos de entrada trazem as informações para o
processador integrado, estes podem ser teclados, mouses e controles
remoto. Os dispositivos de saída levam as informações para fora do
processador integrado, estes podem ser monitores, LEDs e impressoras.
Alguns dispositivos fazem as duas coisas, tal como um dispositivo de rede
que transmite e recebe dados \cite{noergaard2012embedded}.
Os E/S podem estar conectados diretamente no processador integrado
através dos pinos do processador, quando os mesmos estão na mesma
placa embarcada. Ainda podem estar conectados indiretamente através
de uma interface de comunicação (i.e, RJ-45), que utilizam o barramento
de dados para chegar até o processador \cite{noergaard2012embedded}.
Os processadores integrados tem uma maior taxa de transferência para
comunicação com outros componentes, pois há pouca ou nenhuma
utilização do barramento de dados. Contudo, os E/S não ganham este
beneficio, pois há a dependência de outros dispositivos externos, que
podem ter uma taxa de transferência maior ou menor que o
processador \cite{noergaard2012embedded}. Por exemplo, quando se
tem um trafego elevado em uma interface e o processador descarta
pacotes fazendo informações serem perdidas. 
\item \textbf{Barramento de Dados}.
Todos os componentes da camada de hardware são interligados por um ou
mais barramento de dados. Um barramento nada mais é que um conjunto
de "fios" que transportam sinais de dados e controles (i.e, sinal de clock)
entre todos os componentes da placa embarcada ou para outros
barramentos \cite{noergaard2012embedded}. 
\end{itemize}
A Figura 3 ilustra os componentes descritos em uma placa embarcada.
\begin{figure}[!htb]
 \caption{Placa de um Sistema Embarcado.}
\label{fig:embedded_system_board}
\centering%
\begin{minipage}{.9\textwidth}
\includegraphics[width=\textwidth]
{Imagens/embedded_system_board.jpg}
\fonte{\cite{noergaard2012embedded}}
\end{minipage}
\end{figure}
\subsubsection{System Software Layer}
O modelo de \textit{von Neumann} determina que na camada de software
(\textit{system software layer}) é necessário um software denominado
de \textit{driver} de dispositivo. Este software tem como objetivo
inicializar ou parar componentes da camada de hardware ou ainda
permitir que outro \textit{driver} habilite, desabilite, instale, desinstale,
leia dados e escreva dados de um componente. Além disso, o
\textit{driver} gerencia o acesso ao hardware pelos componentes das
camadas de alto nível e faz o elo de comunicação entre hardware, sistema
operacional (SO) e camada de aplicação \cite{noergaard2012embedded}.
O SO da camada de software é um componente opcional, ou seja, nem
todos os sistemas embarcados tem um \cite{noergaard2012embedded}.
Segundo Tanenbaum (2009), SOs tem como objetivo fornecer aos
programas do usuário um modelo de computador melhor, mais simples e
mais limpo, além de lidar com gerenciamento de todos os recursos de
hardware. Essa definição é exatamente a mesma quando se fala em SOs
embarcados, pois também há a necessidade de torná-los mais eficientes e
confiáveis \cite{noergaard2012embedded}.
Os SOs variam na sua arquitetura conforme os componentes que
possuem, ou seja, um SO pode estar diretamente sobre a camada de
hardware, sobre o \textit{driver} de dispositivo ou sobre uma camada
adicional denominada de \textit{Board Support Package} (BSP).
Normalmenteo BSP é utilizado, pois ele é uma camada de abstração entre
o SO e o \textit{driver} de dispositivo, o que permite que um SO seja
portado para um novo hardware sem a alteração do código fonte
\cite{noergaard2012embedded}.
O único componente obrigatório em um SO embarcado é denominado
de \textit{Kernel}, no qual tem objetivo de gerenciar os processos do SO,
gerenciar a memória alocada para cada processo e o gerenciamento de
sistema para E/S tanto do sistema de arquivo quanto dos dispositivos
conectados \cite{noergaard2012embedded}.
A Figura 4 ilustra as possíveis arquiteturas da camada de software.
\begin{figure}[!htb]
 \caption{Arquiteturas da camada de software.}
\label{fig:so_models}
\centering%
\begin{minipage}{.8\textwidth}
\includegraphics[width=\textwidth]{Imagens/os_models.jpg}
\fonte{\cite{noergaard2012embedded}}
\end{minipage}
\end{figure}
\subsubsection{System Application Layer}
A ultima camada do modelo de \textit{von Neumann} denomina-se
camada de aplicação (\textit{system application layer}). Como o próprio
nome diz nesta camada é encontrado os aplicativos de um sistema
embarcado, no qual são controlados pela camada de software
\cite{noergaard2012embedded}. 
Os aplicativos definem de fato o objetivo de um sistema embarcado
\cite{noergaard2012embedded}. Por exemplo, se um sistema embarcado
for projetado com o objetivo de transferir arquivos, bem possível que seja
utilizado o Protocolo de Transferência de Arquivo (\textit{File Transfer
Protocol} - FTP). Se tiver o objetivo de enviar e receber e-mail utilizara o
Protocolo de Transferência de Correio Simples (\textit{Simple Mail Transfer
Protocol} - SMTP).
A camada de aplicação comunica-se com as outros softwares, como
\textit{driver} de dispositivo e o próprio \textit{Kernel}. Para isso ser
concretizado é utilizado um software denominado de \textit{Middleware}.
Este software cria uma camada de abstração em sistemas embarcados
com dois ou mais aplicativos \cite{noergaard2012embedded}.
A Figura 5 ilustra os aplicativos da camada de aplicação.
\begin{figure}[!htb]
 \caption{Aplicativos cmada de aplicação..}
\label{fig:app_models}
\centering%
\begin{minipage}{.5\textwidth}
\includegraphics[width=\textwidth]{Imagens/app_model.jpg}
\fonte{\cite{noergaard2012embedded}}
\end{minipage}
\end{figure}

Continue navegando