Podcast
Questions and Answers
O que ocorre se o software não 'alimentar' o temporizador dentro de um intervalo de tempo especificado?
O que ocorre se o software não 'alimentar' o temporizador dentro de um intervalo de tempo especificado?
O temporizador aciona uma ação corretiva.
Qual é o objetivo do temporizador watchdog?
Qual é o objetivo do temporizador watchdog?
Detectar a falha (por não ser reiniciado) e realizar uma ação predeterminada para remediar a situação, como um reinício do sistema.
Qual é a função da modulação por largura de pulso (PWM)?
Qual é a função da modulação por largura de pulso (PWM)?
Inserir informações em um sinal mediante a modificação de suas características.
Como a implementação digital da modulação por largura de pulso (PWM) é realizada?
Como a implementação digital da modulação por largura de pulso (PWM) é realizada?
Signup and view all the answers
Qual é a razão entre a largura do pulso (tempo em nível alto) e período da onda?
Qual é a razão entre a largura do pulso (tempo em nível alto) e período da onda?
Signup and view all the answers
Quais são as duas desvantagens inerentes às formas de E/S controlada por interrupção e programada?
Quais são as duas desvantagens inerentes às formas de E/S controlada por interrupção e programada?
Signup and view all the answers
O que o módulo de DMA pode fazer para transferir dados de e para a memória?
O que o módulo de DMA pode fazer para transferir dados de e para a memória?
Signup and view all the answers
Quando o módulo de DMA precisa usar o barramento do sistema?
Quando o módulo de DMA precisa usar o barramento do sistema?
Signup and view all the answers
Qual é o objetivo do acesso direto à memória (DMA)?
Qual é o objetivo do acesso direto à memória (DMA)?
Signup and view all the answers
O que é o roubo de ciclo (cycle stealing)?
O que é o roubo de ciclo (cycle stealing)?
Signup and view all the answers
Qual é o objetivo das interrupções Inter-Processor Interrupts (IPIs) em sistemas multiprocessados ou multi-core?
Qual é o objetivo das interrupções Inter-Processor Interrupts (IPIs) em sistemas multiprocessados ou multi-core?
Signup and view all the answers
Quais são as funcionalidades do Nested Vector Interrupt Controller (NVIC) em ARM?
Quais são as funcionalidades do Nested Vector Interrupt Controller (NVIC) em ARM?
Signup and view all the answers
Qual é o objetivo das interrupções entre sistemas separados ou entre componentes de hardware?
Qual é o objetivo das interrupções entre sistemas separados ou entre componentes de hardware?
Signup and view all the answers
Como o NVIC gerencia as interrupções?
Como o NVIC gerencia as interrupções?
Signup and view all the answers
Qual é a função do NVIC em relação às interrupções?
Qual é a função do NVIC em relação às interrupções?
Signup and view all the answers
Quais são os exemplos de tasks do sistema criados quando o kernel é iniciado pela primeira vez?
Quais são os exemplos de tasks do sistema criados quando o kernel é iniciado pela primeira vez?
Signup and view all the answers
Por que é necessário que o processador execute a instrução para a qual o contador de programa aponta, mesmo quando nenhuma outra tarefa existe?
Por que é necessário que o processador execute a instrução para a qual o contador de programa aponta, mesmo quando nenhuma outra tarefa existe?
Signup and view all the answers
Em que estados pode uma tarefa variar?
Em que estados pode uma tarefa variar?
Signup and view all the answers
O que é o propósito da idle task?
O que é o propósito da idle task?
Signup and view all the answers
O que pode acontecer em alguns casos, em vez de executar a idle task?
O que pode acontecer em alguns casos, em vez de executar a idle task?
Signup and view all the answers
Que é uma message queue e qual é o seu propósito em um sistema multitarefa?
Que é uma message queue e qual é o seu propósito em um sistema multitarefa?
Signup and view all the answers
Como as tarefas interagem com uma message queue?
Como as tarefas interagem com uma message queue?
Signup and view all the answers
Quais são as componentes principais de uma message queue?
Quais são as componentes principais de uma message queue?
Signup and view all the answers
Qual é o propósito da fila de espera em uma message queue?
Qual é o propósito da fila de espera em uma message queue?
Signup and view all the answers
Como as message queues facilitam a coordenação e o intercâmbio de dados entre diferentes partes de um sistema multitarefa?
Como as message queues facilitam a coordenação e o intercâmbio de dados entre diferentes partes de um sistema multitarefa?
Signup and view all the answers
Study Notes
Temporizador/Contador
- Em circuitos digitais, vários flip-flops (FFs) são conectados para criar um contador.
- Conectando 3 FFs, criamos um contador de 3 bits capaz de contar até 7 (000 - 111).
- Todos os microcontroladores vêm com Timer/Counter em seu chip.
Temporizador
- Um circuito capaz de medir intervalos de tempo.
- Pode gerar eventos temporais, por exemplo, para manter o sinal verde em um semáforo por 10 segundos.
- Pode medir o tempo decorrido entre a ocorrência de eventos, por exemplo, para computar a velocidade de um carro.
Vantagens do Temporizador
- Precisão ajustável: possibilita a contagem de milissegundos, microssegundos e até mesmo ciclos de clock.
- Multitarefa: enquanto o delay pausa a execução do programa, os temporizadores continuam operando em segundo plano, permitindo que outras tarefas sejam realizadas enquanto o temporizador está contando ou aguardando um determinado intervalo de tempo.
- Interrupções: os temporizadores frequentemente têm a capacidade de gerar interrupções após um período definido, o que significa que o processador pode continuar sua operação normal até ser alertado pela interrupção do temporizador.
Medição de Tempo
- Contando os pulsos que aparecem em um sinal de clock de entrada que possui um período/frequência conhecido.
- Exemplo: Se a frequência de clock é igual a 1 MHz (período 1µs) e são contabilizados 2000 pulsos, o tempo decorrido é 2 milissegundos (ms).
Características do Temporizador
- Faixa: máximo intervalo de tempo que um temporizador de 16 bits consegue medir. 65535 x 10^-6 = 65,535 ms.
- Resolução: mínimo intervalo de tempo que o temporizador consegue medir (período do clock). 1 µs.
- O sinal top indica que a contagem máxima foi alcançada.
Contador
- Mesma estrutura interna de um temporizador, porém conta pulsos gerados por outro sinal de entrada no lugar do clock.
- Por exemplo, a contagem de carros que passam por um sensor.
- Com um seletor, controlado pelo modo de operação, é possível configurar um dispositivo como temporizador ou contador.
Estruturas Alternativas do Contador
- Diminuindo a faixa do contador: O valor final da contagem é determinado de acordo com o intervalo de tempo a ser analisado.
- Aumentando a faixa do contador: Contador em série (cascata) estende o valor máximo da contagem (amplia a faixa).
- Contador com divisor de frequência: Dependendo dos bits em mode, o sinal de saída do prescaler será semelhante ao relógio de entrada, mas com metade da frequência, ou um quarto da frequência, etc.
Implementação do Temporizador
- É possível utilizar um processador genérico para implementar um temporizador.
- Sabendo o número de ciclos que cada instrução consome, basta escrever um laço (loop) que executa uma determinada sequência de instruções.
- Quando o loop se encerra, sabe-se que um determinado período de tempo (ciclos) se passou.
Temporizador Watchdog
- É um contador que é regularmente reiniciado pelo software em operação normal do sistema.
- Se o software não "alimentar" o temporizador (ou seja, não reiniciá-lo) dentro de um intervalo de tempo especificado, o temporizador aciona uma ação corretiva.
Funcionamento do Temporizador Watchdog
- Se o sistema trava, falha ou entra em um estado inesperado que impeça a renovação do temporizador, o watchdog entra em ação.
- Ele detecta a falha (por não ser reiniciado) e realiza uma ação predeterminada para remediar a situação, como um reinício do sistema.
Modulação por Largura de Pulso (PWM)
- Modular: inserir informações em um sinal mediante a modificação de suas características.
- PWM ajusta o tempo que um sinal periódico com dois níveis (digital), alto e baixo, permanece em nível alto de acordo com a informação a ser inserida.
- Tempo de nível alto: largura do pulso.
- Duty cycle: razão entre a largura do pulso (tempo em nível alto) e período da onda.
Implementação Digital do PWM
- Um relógio é usado como base para estabelecer o período e a largura de pulso.
- Exemplo: período correspondente a 8 pulsos e tempo de nível alto a 6 pulsos de relógio.
Módulo de E/S
- O módulo de E/S é responsável pela comunicação entre o dispositivo periférico e o processador.
- A comunicação envolve comandos, informações de estado e dados.
Função do Módulo de E/S
- O módulo de E/S realiza armazenamento temporário (buffering) de dados.
- Isso é necessário devido à diferença de taxa de transferência entre a memória principal e os dispositivos periféricos.
- Os dados são enviados do processador para o módulo de E/S e, em seguida, para o dispositivo periférico.
Detecção de Erro
- O módulo de E/S é responsável por relatar erros ao processador.
- Exemplos de erros incluem erros mecânicos e elétricos, como papel atolado em uma impressora.
Estrutura do Módulo de E/S
- O módulo de E/S tem uma estrutura de blocos específicos para realizar suas funções.
Técnicas de Operações de E/S
- Existem três técnicas de operações de E/S: E/S programada, E/S controlada por interrupção e acesso direto à memória (DMA).
E/S Programada
- Na E/S programada, os dados são trocados entre o processador e o módulo de E/S.
- O processador precisa permanecer em um ciclo de verificação de estado até que determine que a palavra está disponível no registrador de dados do módulo de E/S.
E/S Controlada por Interrupção
- Na E/S controlada por interrupção, o módulo de E/S interrompe o processador para solicitar atendimento quando estiver pronto para trocar dados.
- O processador, então, executa a transferência de dados e retoma seu processamento anterior.
Acesso Direto à Memória (DMA)
- O DMA é uma técnica mais eficiente que E/S controlada por interrupção.
- No DMA, um módulo adicional no barramento do sistema assume o controle do sistema do processador e transfere dados de e para a memória pelo barramento do sistema.
Interrupção
- A rotina de serviço de interrupção (ISR) é comumente chamada de rotina de serviço de interrupção ou manipulador de interrupção.
- Quando um periférico ativa um sinal de interrupção, os seguintes passos são executados:
- Uma interrupção é acionada (Interrupt Requests, IRQ);
- A CPU empilha o registrador PC na pilha e carrega o registrador PC com o endereço do ISR;
- O processador suspende a execução do código;
- O processador executa a rotina de serviço de interrupção (ISR);
- O processador recarrega o valor de PC armazenado na pilha;
- O processador retoma a execução do código para o estado anterior da interrupção acontecer.
Tipos de Interrupção
- Interrupção de Software:
- Produzida por um software;
- Usada para solicitar ao SO que execute um determinado serviço ou atividade;
- Um programa normalmente cria uma interrupção de software utilizando uma instrução específica, como INT em assembly x86 ou uma chamada de sistema em uma linguagem de programação de alto nível.
- Interrupção de Hardware:
- Chamada de funções (eventos) realizados pelo uC para eventos detectados pelos periféricos;
- Existe para isso as interrupções de hardware, que são chamadas de funções (eventos) realizados pelo uC para eventos detectados pelos periféricos.
Contextualização
- Na computação, existe a necessidade de realizar ações com base em eventos, que podem ser classificados como:
- Internos ao uP/uC (por exemplo, término de um cálculo realizado por um dos núcleos de um processador multicore ou a detecção de um overflow de memória);
- Externos ao uP/uC (por exemplo, novo pacote oriundo da comunicação ethernet ou a leitura de um sensor conectado a um pino do uC).
- Vantagens de um programa orientado a eventos:
- Facilidade de implementação;
- Facilidade de manutenção;
- Definição de prioridades;
- Modularização.
Visão Geral
- É um mecanismo usado para sinalizar à CPU a ocorrência de eventos importantes relacionados a dispositivos periféricos e outros elementos do sistema.
- Considera que um microprocessador deve realizar, entre outras tarefas, a leitura e o processamento de dados de um periférico toda vez que este periférico tiver um novo dado.
- O instante de chegada de novos dados é absolutamente imprevisível da perspectiva do microprocessador / programa em execução.
Pooling vs. Interrupção
- A principal diferença entre pooling e interrupção é que a CPU verifica os periféricos em intervalos regulares no pooling para verificar se eles solicitam serviços de CPU.
- Por outro lado, na interrupção os periféricos interrompem a CPU para avisar da necessidade de serviços de CPU.
Rotina de Serviço de Interrupção (ISR)
- Para cada interrupção deve haver um programa associado a ela.
- Quando ocorre uma interrupção, este programa é executado para realizar determinado serviço para a interrupção.
Nested Vector Interrupt Controller (NVIC) em ARM
- O NVIC permite a conexão de diversos periféricos ao processador, cada um gerando interrupções em momentos específicos.
- Ele gerencia essas interrupções em níveis de prioridade, permitindo que as interrupções mais urgentes sejam atendidas antes das menos prioritárias.
- Além disso, o NVIC é "vetorizado", o que significa que ele pode lidar com várias interrupções simultâneas e direcioná-las para os respectivos tratadores de interrupção, conhecidos como ISRs (Interrupt Service Routines).
Escalonamento de Processos
- O escalonador mantém uma lista de processos executáveis.
- Quando um processo consome seu quantum, ele é colocado no fim da lista.
- A troca da CPU é feita no momento em que o processo é bloqueado ou finalizado antes de consumir seu quantum.
Escalonamento Round-Robin
- Cada tarefa executa por um intervalo definido em um ciclo contínuo.
- Um contador de tempo de execução (quantum) acompanha a fatia de tempo para cada tarefa.
- Quando o intervalo de tempo para uma tarefa é concluído, o contador é zerado e a tarefa é colocada no final do ciclo.
- Tarefas recém criadas com a mesma prioridade são colocadas no final do ciclo.
Context Switch (Troca de Contexto)
- Cada tarefa possui seu próprio contexto, que é o estado dos registradores da CPU necessários sempre que é escalonada para executar.
- Uma troca de contexto ocorre quando o escalonador muda de uma tarefa para outra.
- O kernel cria e mantém um bloco de controle de tarefa associado (TCB) para cada tarefa.
Dispatcher (Despachante)
- O dispatcher é a parte do escalonador que realiza a troca de contexto e altera o fluxo de execução.
- O dispatcher é responsável por passar o controle para uma das tarefas.
Algoritmos de Escalonamento
- O escalonador determina qual tarefa é executada seguindo um algoritmo de escalonamento.
- Dois algoritmos de escalonamento comuns são o escalonamento preemptivo baseado em prioridade e o escalonamento Round-Robin.
Tasks (Tarefas)
- Na programação sequencial, as instruções são executadas uma por vez, em uma cadeia predefinida de instruções.
- O kernel cria seu próprio conjunto de tasks do sistema e aloca a prioridade para cada uma a partir de um conjunto de níveis de prioridade reservados.
Idle Task
- A tarefa ociosa é criada na inicialização do kernel e configurada como menor prioridade.
- Ela é composta por um loop infinito e executada quando nenhuma outra tarefa pode ser executada ou quando nenhuma outra tarefa exista.
- O único propósito é utilizar os ciclos ociosos do processador.
Comunicação Inter-Task
- A comunicação entre tarefas ocorre por meio de primitivas inter-task, que são kernel objects que facilitam o processo.
- Exemplos de primitivas inter-task: semaphores, message queues, signals, pipes, mutex, etc.
Semaphores
- Em um sistema multitarefa, as tarefas competem por recursos e devem se sincronizar para compartilhar recursos do sistema.
- Semaphores são objetos kernel que fornecem serviços de gerenciamento para facilitar o sincronismo.
- Um semaphore é um kernel object onde uma ou mais threads de execução podem adquirir ou liberar para o propósito de sincronização.
- Operações básicas de semaphores: pegar (take) e liberar (give).
Tipos de Semaphores
- Binary (Binário): pode ter o valor “0” ou “1”, é considerado indisponível (empty) quando o valor é “0” e disponível (full) quando o valor é “1”.
- Counting (Contador): utiliza uma contagem para permitir que ele seja adquirido ou liberado múltiplas vezes.
- Mutual Exclusion (Mutex) Semaphores: oferece suporte a ownership e recursive locking.
Fila de Mensagens (Message Queues)
- Message queues são mecanismos de comunicação e sincronização entre tarefas.
- Permitem que tarefas enviem e recebam mensagens de maneira organizada e segura.
- Uma message queue é uma estrutura de dados que armazena mensagens em uma ordem específica, geralmente em uma fila FIFO (First In, First Out).
Modelando um Sistema
- Heurística para projetar um sistema: Identificar objetos ativos com comportamento reativo, atribuir responsabilidades e recursos, identificar eventos do sistema, utilizar diagramas de classe e de sequência, etc.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.
Related Documents
Description
Entenda como conectam-se flip-flops para criar contadores e como funcionam os Timer/Counter em microcontroladores.