Buscar

aula 02

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 21 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 21 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 21 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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/

Outros materiais