Baixe o app para aproveitar ainda mais
Prévia do material em texto
Sistemas de Tempo Real (RTOS – Real Time Operating System) Os sistemas computacionais estão presentes em diversas áreas do nosso cotidiano e têm evoluído de forma exponencial nos últimos anos. Novos microprocessadores com novos recursos computacionais, operando a frequências maiores, maior capacidade de memória e várias interfaces de comunicação de I/O embutidas num único chip, tudo isso a um custo baixo e acessível. Essa evolução tem contribuído com o aumento da complexidade dos projetos de sistemas embarcados, que por consequência tem exigido novos níveis de abstração em soluções de software que possam interagir com o hardware da forma mais eficiente possível. Sistemas de Tempo Real (RTOS – Real Time Operating System) Dentro deste contexto, destaca-se um grupo de sistemas que trabalham com restrições de tempo, chamados Sistemas de Tempo Real. Estes sistemas, além de executarem as tarefas de processamento e controle de informações, possuem a característica de que suas respostas ao ambiente devem ser dadas em um tempo hábil o suficiente para que o sistema não entre em um estado inconsistente ou inválido. Um Sistema de Tempo Real é, portanto, o software que gerencia os recursos de um sistema computacional, com o objetivo de garantir com que todos os eventos sejam atendidos dentro de suas restrições de tempo, e gerenciados da forma mais eficiente possível. O software responsável pelo gerenciamento dos recursos computacionais também é chamado de Kernel (ou núcleo) do Sistema de Tempo Real, e conhecido no mercado como RTOS (Real-Time Operating System) ou Sistema Operacional de Tempo Real. Sistemas de Tempo Real (RTOS – Real Time Operating System) Para entendermos a importância de um Sistema de Tempo Real, precisamos entender o conceito de restrição de tempo para eventos ou tarefas computacionais. Restrições de Tempo Toda tarefa computacional recebe um estímulo (ou evento), que pode ser interno ou externo, realiza o processamento e produz uma saída. Um evento com restrição de tempo possui um tempo limite (máximo) de processamento para que sua saída seja gerada. Sistemas de Tempo Real (RTOS – Real Time Operating System) Podemos citar alguns exemplos de eventos com restrições de tempo: Sistemas de Tempo Real (RTOS – Real Time Operating System) Podemos ver através dos exemplos que, se eventos com restrições de tempo não forem tratados de forma correta, teremos consequências tão diversas quanto a percepção de baixa qualidade de um produto, a possibilidade de queima de um equipamento ou até risco de morte! Um Sistema de Tempo Real simplifica o projeto do produto e minimiza o risco de problemas com restrições temporais através da divisão do sistema em pequenos elementos independentes chamados tarefas. Sistemas de Tempo Real (RTOS – Real Time Operating System) Tarefas Tarefas são pequenos trechos de programa com responsabilidades específicas e bem definidas. Cada tarefa possui um conjunto de atributos, dentre eles a prioridade, que deve ser atribuída de acordo com sua importância. É a partir desta prioridade que tentamos garantir com que eventos com restrições de tempo possam ser executados de forma eficiente. Como exemplos de tarefas, podemos citar a leitura de sensores, tratamento de protocolos de comunicação, leitura de teclado, acionamento de leds indicativos, escrita em displays, comunicações seriais, log de informações, etc. Portanto, um Sistema de Tempo Real é modelado através da divisão da aplicação em um conjunto de pequenas tarefas, com funções específicas, e que interagem entre si. Sistemas de Tempo Real (RTOS – Real Time Operating System) Interação entre as tarefas Cada tarefa é executada de forma independente, mas elas precisam interagir entre si para que o sistema atinja seus objetivos. Para exemplificar, vamos supor um simples sistema de alarmes: A tarefa 1 é responsável pela leitura constante dos sensores de presença e movimento. A tarefa 2 é responsável pelo acionamento da sirene. A tarefa 3 é responsável pelo acionamento da discagem telefônica. A tarefa 4 é responsável pela lógica de detecção de intrusos do sistema de alarme. Sistemas de Tempo Real (RTOS – Real Time Operating System) Interação entre as tarefas Vamos supor que um sensor de movimento tenha sido acionado, a tarefa 1 irá detectar esse acionamento, e precisa notificar a tarefa 4. Esta notificação é feita através do envio de uma mensagem para a tarefa 4. A tarefa 4 irá então receber esta mensagem, e de acordo com sua lógica, irá enviar uma mensagem de acionamento para a tarefa 2, 3 ou para ambas. Este exemplo utiliza a troca de mensagens, também chamada de Message Queues, como forma de comunicação entre as tarefas. Podemos ainda citar como meios de controle da comunicação entre as tarefas os semáforos e mutexes, que são mecanismos para o controle de acesso ao compartilhamento de recursos entre as tarefas. Sistemas de Tempo Real (RTOS – Real Time Operating System) Interação entre as tarefas Para atender todas as tarefas solicitadas, dentro de suas respectivas restrições de tempo, o Kernel necessita de algum mecanismo de gerenciamento de tarefas, classificando-as e ordenando de acordo com sua prioridade. Isso é feito através do escalonamento de tarefas. Sistemas de Tempo Real (RTOS – Real Time Operating System) Para exemplificar o escalonamento de tarefas, vamos analisar o seguinte caso de escalonamento: Uma tarefa de prioridade menor está sendo executada. Um evento esperado por uma tarefa de prioridade maior ocorre e causa uma interrupção no processador. O processador salva o contexto da tarefa em execução (registros da CPU) e executa a rotina de tratamento da interrupção (ISR – Interrupt Service Routine). A rotina de tratamento da interrupção completa e chama um serviço do Kernel. O Kernel prepara e executa a rotina de maior prioridade. Sistemas de Tempo Real (RTOS – Real Time Operating System) Para exemplificar o escalonamento de tarefas, vamos analisar o seguinte caso de escalonamento: A rotina de maior prioridade entra em execução. A rotina de maior prioridade chama uma função do Kernel para aguardar por outro evento. Isso faz com que o Kernel seja acionado, e prepare novamente a rotina de menor prioridade para execução. A rotina de menor prioridade entra em execução. Um RTOS provê toda esta arquitetura de software para o desenvolvimento de Sistemas de Tempo Real, incluindo funções para a criação de tarefas, troca de mensagens entre as tarefas, compartilhamento de recursos, ISR’s genéricas, etc. Sistemas de Tempo Real (RTOS – Real Time Operating System) Escolha de um RTOS Um RTOS deixará o produto mais confiável com relação ao tratamento de tarefas com restrição de tempo, além de possibilitar uma melhor modelagem da sua aplicação através da divisão da aplicação em pequenas tarefas. Porém, nem sempre é válida ou mesmo viável a escolha de um RTOS para determinados produtos. Essa decisão pode depender de vários fatores: Sistemas de Tempo Real (RTOS – Real Time Operating System) Escolha de um RTOS CPU: A CPU utilizada no projeto pode determinar se você pode ou não utilizar um RTOS no seu projeto. Por exemplo, uma CPU de 4 bits, sem os registradores necessários, ou de baixa frequência, é feita especificamente para sistemas bem simples e de baixo custo, tornando inviável a utilização de um RTOS. ROM: Quantidade de memória de programa disponível para o seu projeto. Precisa ser grande o suficiente para armazenar o código do Kernel mais o código da sua aplicação. Dependendo do Kernel, você pode precisar de memória entre 4K e 200Kb, apenas para o Kernel de RTOS’smais simples. Sistemas de Tempo Real (RTOS – Real Time Operating System) Escolha de um RTOS RAM: Quantidade de memória disponível para os dados do seu programa. O RTOS utiliza bastante memóriapara armazenamento das informações de contexto de execução das tarefas. O valor da memória RAM deve ser grande o suficiente para suprir as necessidades do Kernel e das tarefas da sua aplicação. Custo: Tanto o custo do RTOS quanto o custo extra do hardware necessário para suportar o RTOS devem ser levados em consideração. Sistemas de Tempo Real (RTOS – Real Time Operating System) Escolha de um RTOS Identificada a necessidade e a viabilidade da utilização de um RTOS no seu projeto, é necessário escolher o melhor para a sua aplicação. Cada RTOS disponível no mercado possui vantagens e desvantagens. A escolha do melhor sistema depende dos requisitos de hardware e software do produto. Os critérios de escolha podem variar bastante, desde a popularidade e reputação do RTOS, o custo e a disponibilidade do código-fonte, a portabilidade e escalabilidade, performance, ferramentas disponíveis e profissionais certificados no mercado. Sistemas de Tempo Real (RTOS – Real Time Operating System) Escolha de um RTOS Existem diversos RTOS’s no mercado, alguns pagos e outros de livre distribuição. Alguns dos principais disponíveis no mercado são eCos, QNX, MicroC/OS-II, VxWorks, Monta Vista, FreeRTOS, etc. Sistemas de Tempo Real (RTOS – Real Time Operating System) Exemplo de RTOS no ESP32. Como instalar: https://www.dobitaobyte.com.br/como-colocar-o-esp32-com-rtos-na-ide-do- arduino/ Dicas: https://www.dobitaobyte.com.br/freertos-com-esp32-filas-e-dicas-para-evitar- problemas/ Mutex: https://www.dobitaobyte.com.br/como-utilizar-mutex-no-freertos-do-esp32/ Sistemas de Tempo Real (RTOS – Real Time Operating System) RTOS em Arduino? https://lume.ufrgs.br/handle/10183/105073 const int ledPin = 13; int ledState = LOW; unsigned long previousMillis = 0; const long interval = 1000; void setup() { pinMode(ledPin, OUTPUT); } void loop() { unsigned long currentMillis = millis(); if (currentMillis - previousMillis >= interval) { previousMillis = currentMillis; if (ledState == LOW) { ledState = HIGH; } else { ledState = LOW; } digitalWrite(ledPin, ledState); } } Sistemas de Tempo Real (RTOS – Real Time Operating System) RTOS em Arduino? Fading Led. Sistemas Embarcados – Tarefa 2! 1) Escrever o código para que o Led faça a função “FADER (esmaecimento)” a partir do acionamento do Potenciômetro. Os valores de leitura do Potenciômetro devem ser exibidos no Monitor Serial. 2) Escrever o código para que o Led faça a função “STROBO” a partir do acionamento do Potenciômetro. Os valores de leitura do Potenciômetro devem ser exibidos no Monitor Serial e a alteração do tempo deve ser percebida imediatamente. 3) Montar arquivo em Word e exportar em PDF para entrega no Ambiente Conhecer. 4) Entrega permitida até 26/08/2018 23:00h. Referências. https://sergioprado.org/sistemas-de-tempo-real-part-1/ https://www.embarcados.com.br/elementos-de-rtos-no-arduino/ https://lume.ufrgs.br/handle/10183/105073 https://www.dobitaobyte.com.br/como-colocar-o-esp32-com-rtos-na-ide-do- arduino/ https://www.dobitaobyte.com.br/freertos-com-esp32-filas-e-dicas-para-evitar- problemas/ https://www.dobitaobyte.com.br/como-utilizar-mutex-no-freertos-do-esp32/
Compartilhar