Sistemas Embarcados: a computação invisível
Introdução:
Existe uma computação oculta no mundo, ela quase nunca é notada, é sorrateira, muito furtiva, mas faz o mundo moderno girar. Através dela, celulares tocam, brinquedos alegram, automóveis andam, aviões voam e marcapassos seguem mantendo pessoas cardíacas vivas. Estamos falando dos sistemas embarcados, os computadores projetados para trabalhar nos bastidores.
Sistemas embarcados são de longe o maior uso da computação no mundo, superam em muito o número de PCs, notebooks, servidores e correlatos. Eles estão por toda parte, no seu telefone, carro, relógio, bicicleta, roteador Wi-Fi , e agora estarão até mesmo nos seus óculos (vide Google Glass)!
Creio que todos já ouviram falar em injeção eletrônica de combustível, mas poucos já realmente viram um módulo em funcionamento. Isso porque, ao contrário de computadores de propósito geral, a computação envolvida no controle de fluxo de combustível em um automóvel trabalha embarcada e com um mínimo de interação com os usuários do veículo (basicamente através dos pedais e do câmbio do carro). Eles praticamente nem notam o complexo processo por traz dessa tarefa, nem o computador responsável por ela. O mesmo pode-se dizer de quando entramos em um elevador moderno e pressionamos o botão do andar ao qual queremos chegar. O pressionar de um botão no painel do elevador gera um sinal de interrupção a ser tratada por um computador, ele então a analisa e elabora suas paradas levando os passageiros aos seus respectivos destinos. Eles nem ficam sabendo como isso foi feito ou que decisões foram tomadas pela máquina no processo.
Sistemas embarcados podem interagir ou não com usuários humanos, dependendo de seu objetivo. Ao meu ver, o bom sistema embarcado é aquele que funciona sem ser notado.
O Conceito
Sistemas embarcados estão relacionados ao uso de hardware (eletrônica) e software (instruções) incorporados em um dispositivo com um objetivo pré-definido. A diferença entre um sistema embarcado e um computador de propósito geral está justamente na objetividade. Computadores como PCs, notebooks e afins são máquinas multiobjetivo, ou seja, foram criadas e dimensionadas para atuar num domínio de funções muito grande. Já os sistemas embarcados ou SEs possuem dimensionamento de recursos direcionado a um domínio de objetivos bem menor, ou mesmo singular.
Destrinchando um projeto de SE, normalmente encontramos um subdivisão clara, que corresponde à unidade de processamento, memória e periféricos. Como visto no exemplo da ilustração abaixo:
A unidade de processamento executa as instruções (software/firmware) responsáveis por realizar cálculos, tomar decisões e tratar eventos (como aquele do botão do elevador). Possui normalmente a arquitetura elementar clássica de um processador de computador convencional, como a unidade lógica/Aritmética (ULA), unidade de controle (UC), registradores, etc.
A memória armazena dados e instruções relacionados às operações da unidade de processamento. As instruções e dados podem dividir a mesma memória, como nos PCs (arquitetura Von Neumann) ou separados em memórias distintas (arquitetura Harvard), sendo a segunda a mais comum em SEs.
Os periféricos são as interfaces da unidade de processamento com o mundo externo, trazendo ou enviando informações para ele. Um exemplo de um periférico seria um conversor analógico/digital acoplado a um sensor térmico que converte a temperatura de um ambiente em números binários para que a unidade de processamento consiga interpretar e processar a informação.
O objetivo de um sistema embarcado é o de controlar processos, em outras palavras, atuar sobre um problema. Um processo pode ir de um simples acender e apagar de lâmpadas automatizado, até gerenciamento autônomo de um avião (piloto automático). Isso é feito por intermédio dos periféricos, que são escalados e dimensionados com base no problema alvo. Observe abaixo:
Duas categorias de periféricos se destacam em um SE, os sensores e os atuadores.
Sensores são responsáveis em adquirir informação do processo a ser controlado. Essas informações são primordiais para a unidade de processamento, pois com base nelas decisões podem ser tomadas. Bons sensores devem fornecer informação confiável e não promover alterações no processo alvo. Isso significa que um sensor não pode mudar os valores da grandeza física do qual é responsável por medir, como por exemplo diminuir a velocidade de um motor em monitoramento. Isso na prática pode difícil de conseguir dependendo da tecnologia do sensor (contato mecânico por exemplo). Exemplos desses tipos de periféricos são sensores de temperatura (termistores), pressão (piezos), contato (chaves mecânicas), toque (touchscreen), distância (sonar/infravermelho), movimento (acelerômetros), óticos (câmeras), etc. Esses são periféricos que enviam informação do processo para o SE.
Atuadores proporcionam ao SE a habilidade de intervir no meio onde atua. Como o próprio nome diz, são dispositivos que realizam ações que interferem no processo em controle, como motores, ventiladores, luzes, aquecedores, resfriadores, chaveadores, etc. Esses são periféricos que enviam informação do SE para o processo.
Normalmente a unidade de processamento toma a decisão de acionar os atuadores com base nas informações recebidas dos sensores, isso é conhecido como sistema em malha fechada ou sistema realimentado. Outra forma também usada para acionar os atuadores é com base no tempo, em um sistema conhecido como malha aberta, onde não há informações advindas do processo (não há sensores nele). Vou tentar exemplificar esse conceito com um pequeno projeto didático.
Chips, periféricos e memória num só lugar
Há algumas décadas atrás, com as novas necessidades do mercado, somadas à evolução galopante da microeletrônica, grandes fabricantes como a Intel, Motorola, Texas Instruments, entre outras, começaram a perceber que o mercado para dispositivos embarcados era promissor, e apostar na criação de chips otimizados para trabalhar nesse segmento poderia uma ótima ideia.
Foi então que começaram a surgir os microcontroladores, que são na verdade processadores mais simples com alguns periféricos embutidos no próprio chip (como contadores, conversores Analógico/Digitais, portas seriais, etc). Há também microcontroladores que possuem memória de programa/dados embutida no próprio chip. Uma nova era surgiu, trazendo o que estava fora para dentro através da eletrônica de escala microscópica. Isso trouxe uma grande melhoria, facilitando e barateando o projeto de SEs. Microcontroladores são direcionados a atuar em áreas mais específicas, por isso não possuem a necessidade de ter todo o poder de processamento de um microprocessador como um Core i3, i7, etc. Dessa forma são bem mais baratos, custando de centavos até algumas dezenas de dólares dependendo de sua configuração.
Outra alternativa muito usada hoje em dia nos SEs mais complexos são os PLDs (Programable Logic Devices - "Dispositivos Lógicos Programáveis"). Essa categoria de chip consiste basicamente em hardware de baixo nível multiprogramável, ou seja, é possível programar os chips PLDs para que desempenhem uma certa função desejada em hardware e não somente em software, como é o caso dos microcontroladores/processadores.
Nos dias atuais, também temos presenciado cada vez mais sistemas embarcados utilizando SOCs (System-On-a-Chip - "Sistema em um chip"), que possuem uma arquitetura semelhante aos microcontroladores, porém com um maior poder computacional e periféricos mais poderosos, sendo capazes de executar softwares mais complexos, como sistemas operacionais (Windows, Linux, etc).
A aplicação dessas tecnologias depende do processo a ser controlado. Processos mais simples podem ter um melhor custo-benefício ao se basear o SE em um microcontrolador. Em outros casos pode ser necessário um maior poder computacional para lidar com processos contendo variáveis mais complexas e em maior número. Nesses casos a utilização de SOCs ou até mesmo PLDs pode ser uma alternativa mais interessante.
Conclusão
É praticamente impossível imaginar o mundo moderno sem os sistemas embarcados. A maioria das pessoas simplesmente usufrui das facilidades cotidianas proporcionadas por esses sistemas sem nem mesmo se dar conta disso. A computação na prática vai muito além das máquinas que podemos reconhecer efetivamente como computadores, ela tornou-se parte da vida moderna e não dá sinais de que nos deixará tão cedo. Nota-se que esses sistemas agora começam a fazer parte de nosso vestuário e acredito que no futuro não tão distante os incorporemos em nossos próprios corpos, atribuindo a eles funcionalidades nunca antes vistas.
Sistemas embarcados são um segmento da eletrônica/computação extremamente interessante de se estudar. Atualmente existem no mercado kits de microcontroladores para iniciantes que permitem ao estudante avançar da teoria à prática em poucos minutos, como é o caso da famosa plataforma Arduino.
Créditos:
Autor: Andre Luiz Delai
Link: Post Original
0 comentários:
Postar um comentário