• Nenhum resultado encontrado

2 BASE TEÓRICA

2.4 Sistemas Embarcados Distribuídos e de Tempo Real

2.4.1 Sistemas Embarcados

Existem algumas definições para sistemas embarcados, também chamados de sistemas embutidos ou sistemas dedicados. De modo geral as definições destacam que são sistemas microprocessados com a finalidade de gerenciar funcionalidades pontuais com ou sem interação com o ambiente (WOLF, 2008). Diferente de computadores de propósito geral, um sistema embarcado realiza um conjunto de tarefas predefinidas e geralmente com requisitos de desempenho específicos.

Sistemas embarcados são sistemas com a finalidade de automatizar e controlar um ambiente ou dispositivo físico. Segundo (BROEKMAN; NOTENBOOM, 2003), um sis- tema embarcado pode ser definido como um sistema computacional especializado que faz parte de uma máquina ou sistema maior.

Estes conceitos são inerentes ao ambiente onde estes sistemas são aplicados, pois são importantes e responsáveis por diversas atividades humanas, e em muitos casos, fazendo parte de artefatos eletrônicos comuns e que passam despercebidos por grande parte das pessoas, como os celulares, equipamentos médicos, e uma lista extensa de produtos que moldam nosso mundo atual (RODRIGUEZ-SÁNCHEZ et al., 2016). Como exemplo para ilustrar de forma resumida a composição de projetos de sistemas embarcados, a Figura 9 ilustra um diagrama de blocos com as principais partes que compõem este tipo de sistema.

Figura 9 – Diagrama geral que exemplifica um sistema embarcado.

Fonte: Adaptado de (BROEKMAN; NOTENBOOM, 2003).

No exemplo ilustrado na Figura 9 observa-se que um sistema embarcado interage com sensores e atuadores para efetivar um controle específico no ambiente ou planta de atu- ação. Esse sistema embarcado pode ainda ser interconectado com outros formando um sistema maior, distribuído em um ambiente maior de atuação, onde estes sistemas coope-

ram entre si. Nos dias atuais é evidente a inserção dos sistemas computacionais embar- cados e distribuídos em diferentes áreas, destacando neste trabalho o uso no controle de diversas tecnologias e processos industriais, incluindo a grande quantidade de tecnologias aplicadas na área automotiva, por meio das unidades de controle eletrônicas - ECUs.

De acordo com (WOLF, 2008) na área automotiva um sistema embarcado pode ser responsável pelo controle de diferentes funcionalidades do veículo, ou auxiliar na reali- zação de alguma função, como por exemplo, controle do motor, de freios, transmissão e suspensão. Nas primeiras redes veiculares era atribuído um processador para cada dispo- sitivo físico. Atualmente, os projetistas e engenheiros tendem a combinar várias funções em uma unidade de processamento e realizar a comunicação com os demais dispositivos. Nos automóveis as ECUs são exemplos de sistemas embarcados servindo como fonte de uma parte da computação do sistema. Nos sistemas modernos são atribuídas múltiplas tarefas a uma ECU para reduzir o número elementos de processamento e seu hardware de suporte associado (TUOHY et al., 2015).

2.4.2 Sistemas de Tempo Real

Em muitas áreas os sistemas embarcados se caracterizam em relação ao impacto de suas restrições de funcionamento em função do seu tempo de processamento. Desta forma, sistemas de tempo real caracterizam-se por possuírem fortes requisitos no aten- dimento de restrições ou requisitos temporais, como por exemplo, tempo máximo de exe- cução, jitter e deadline, além de robustez e requisitos de segurança.

Estes sistemas normalmente podem ser divididos em Hard Real-Time ou Soft Real- Time, ou seja, dependendo da criticidade com relação ao tempo de resposta de suas saí- das, que normalmente resultam em ações de controle específicas. No sistema Hard há a necessidade de garantia que todas as restrições de tempo sejam satisfeitas. No sistema Softnão há exigências como garantia e ainda possui uma abordagem de menor esforço, pois o impacto de falhas nas restrições de tempo não é catastrófico (WOLF, 2008).

“Sistemas de tempo real são aqueles em que a corretude do mesmo não depende ape- nas dos resultados lógicos da computação, mas, também, no tempo em que esses resulta- dos são produzidos” (STANKOVIC, 1996).

Em sistemas embarcados críticos as restrições temporais devem ser satisfeitas de forma rígida, já outros tipos de sistemas embarcados provêm certa flexibilidade quanto aos intervalos de tempo suportados pelo sistema. Os sistemas embarcados de tempo real devem ser projetados de forma que todos os deadlines de comunicação sejam obedeci- dos, para tal torna-se necessário incluir escalonadores ou núcleo de sistemas operacionais que garantam a execução concorrente de tarefas de acordo com as restrições temporais. A criticidade e os efeitos colaterais de falhas nos sistemas embarcados caracterizam outra li- nha mais específica de pesquisa, os sistemas embarcados críticos e de tempo real (Critical Real-Time Embedded Systems).

Em sistemas de tempo real um importante aspecto a ser considerado é a previsibili- dade de execução das tarefas, pois essa característica determina que tais sistemas sejam determinísticos. Assim, o principal ponto a considerar em um sistema de tempo real não está relacionado ao seu desempenho mas sim à capacidade do sistema ser previsível (STANKOVIC, 1996) (KOPETZ, 2011). Neste contexto de criticidade e determinismo na execução das tarefas, os sistemas embarcados de tempo real são cada vez mais responsá- veis por funções de segurança (safety) crítica para os usuários. No cenário tecnológico atual os sistemas embarcados de tempo real podem ser tão complexos quanto necessários, devido a produção em massa e a fabricação de componentes a custos reduzidos.

Este cenário permitiu cada vez mais a inserção de sistemas de tempo real no controle de funções importantes na indústria e também nos produtos por elas gerados. Como por exemplo na indústria automotiva, onde aplicações computacionais só eram utilizadas em veículos em tarefas não críticas e de conforto dos veículos, e atualmente diversos fato- res impulsionaram a utilização de sistemas de tempo real em aplicações críticas como o controle de tração, suspensão e transmissão de veículos. Em (KOPETZ, 2002) o autor enfatizava que no futuro observaríamos a integração de muitas funções com o objetivo de aumentar a estabilidade do veículo em manobras críticas de condução. Não só chegou-se a este ponto, mas surgiram outros avanços com as pesquisas relacionadas a carros autô- nomos, onde cada vez mais os sistemas de tempo real são fundamentais para a execução das tarefas de controle, e por consequência, preocupa-se cada vez mais com os erros e a segurança na execução destas funções.

2.4.3 Sistemas distribuídos e o contexto automotivo

Sistemas distribuídos caracterizam-se pela distribuição espacial de unidades de pro- cessamento que em conjunto gerenciam um processo. Um sistema distribuído tem como objetivo dividir o trabalho de processamento proporcionando o resultado desejado sem que o usuário final do sistema perceba a descentralização (TANENBAUM; VAN STEEN, 2007). Além de propiciar a união das unidades de processamento para prover um maior poder computacional final, os sistemas distribuídos também são empregados em aplica- ções que se encontram descentralizadas, especialmente por necessidades específicas de projeto, como ocorre na amostragem de dados e na ação de atuadores em sistemas eletrô- nicos de direção de automóveis (SbW - steer-by-wire) (WANG et al., 2014).

Uma característica importante de sistemas distribuídos esta relacionada ao fato de que usar várias unidades de processamento (CPUs), onde uma parte do sistema pode ser usada para ajudar a diagnosticar problemas em outra parte. Se há a necessidade de depurar um protótipo, diagnosticar um problema, ou isolar o erro em uma parte do sistema, essas tarefas se tornam difíceis quando tudo é feito em uma única CPU. Ao usar várias CPUs no sistema, é possível dedicar uma para gerar entradas de monitoramento de comunicação e fazer verificações nas saídas (WOLF, 2008) (KOPETZ, 2011).

Em sistemas embarcados distribuídos essas unidades de processamento são conec- tadas via rede usando protocolos de comunicação específicos (exemplificados na Seção 2.1) que viabilizam tarefas de controle distribuídas. O conceito de nó de processamento responsável por executar tarefas individuais é introduzido e faz parte de um conjunto com- plexo de sistemas de controle. Esse tipo de organização ainda permite ao sistema o uso de mais de um tipo de rede de comunicação, com topologias distintas usando elementos de interconexão (gateways). A Figura 10 ilustra um exemplo de rede veicular usada para interconexão de sensores para situações de impacto.

Figura 10 – Sistema distribuído para monitoramento de sensores na rede veicular.

Fonte: (WOLF, 2008).

Redes automotivas são um exemplo claro e importante da adoção de sistemas dis- tribuídos, com diversos componentes interconectados e com restrições temporais rígidas para muitas funções. Carros e aviões modernos necessitam de confiabilidade de seus componentes eletrônicos para operar. Aproximadamente um terço do custo total de um avião e de um carro vem do uso de diversos dispositivos eletrônicos. Sistemas eletrôni- cos são usados em aplicações críticas em veículos, além de sistemas de monitoramento do conforto do passageiro. Estes dispositivos são conectados via sistema distribuído em rede e devem respeitar requisitos funcionais e temporais, garantindo ainda confiabilidade e desempenho (WOLF, 2008).