Prévia do material em texto
Sistemas Embarcados Material Teórico 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. • 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 defi nições e conceitos que regem os sistemas embarcados; • Perceber o macro e micro que compõem os sistemas embarcados. OBJETIVOS DE APRENDIZADO Introdução aos Sistemas Embarcados e Microcontrolados 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: Assim: Organize seus estudos de maneira que passem a fazer parte 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. Organize seus estudos de maneira que passem a fazer parte Mantenha o foco! Evite se distrair com as redes sociais. Mantenha o foco! Evite se distrair com as redes sociais. Determine um horário fixo para estudar. Aproveite as indicações de Material Complementar. Procure se alimentar e se hidratar quando for estudar; lembre-se de que uma Não se esqueça de se alimentar e de se manter hidratado. Aproveite as Conserve seu material e local de estudos sempre organizados. Procure manter contato com seus colegas e tutores para trocar ideias! Isso amplia a aprendizagem. Seja original! Nunca plagie trabalhos. 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 9 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 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 11 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. S emicondutores são e struturas 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. Elétron Si Si Si 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 Unidade Introdução aos Sistemas Embarcados e Microcontrolados Região com carga positiva Elétron livre Si Si Si 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. Região com carga negativa Elétron livre Si Si Si Si B Si Si Si Si Figura 3 – Semicondutor do tipo P Fonte: BINDAL, 2017 12 13 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 V FE E VE VE 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- 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. Ex pl or 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ânicoscomo 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 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 15 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 Unidade Introdução aos Sistemas Embarcados e Microcontrolados 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. Ex pl or 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 17 Microcontrolador MemóriaPeriféricos Conversor D/A Sensor Conversor A/D Ambiente Firmware CPU 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 Unidade Introdução aos Sistemas Embarcados e Microcontrolados Definição de Firmware Ter um hardwaremuito 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 19 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 Unidade Introdução aos Sistemas Embarcados e Microcontrolados Para compreender os motivos da escolha do C para implementação de firmware dos siste- mas embarcados, é bom entender a evolução das linguagens de programação, a qual está bem detalhada no link: https://bit.ly/2vSotPa Ex pl or 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 queem 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 21 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- 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. Ex pl or 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 23 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 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