Baixe o app para aproveitar ainda mais
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}
Compartilhar