Aula 09 - Interrupção-3-21 PDF - Microcontroladores e Sistemas Embarcados
Document Details
Uploaded by SelfDeterminationOmaha
ITA
Prof. Dr. Harlei M. A. Leite
Tags
Summary
Aula 09 - Interrupção-3-21 apresenta conceitos de interrupções em microcontroladores e sistemas embarcados. A aula explora as vantagens de programas orientados a eventos e diferentes tipos de interrupções.
Full Transcript
Introdução 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 d...
Introdução 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. Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados Introdução Contextualização Vantagens de um programa orientado a eventos: ○ Facilidade de implementação ○ Facilidade de manutenção ○ Definição de prioridades ○ Modularização No paradigma orientado a eventos se define funções para cada tipo de evento, que são disparadas quando o evento é detectado. Cada função ou evento pode possuir um nível de prioridade diferente. O programador deve definir o que deve ser executado caso dois eventos ocorram simultaneamente. Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados Introdução Contextualização Em computadores pessoais (desktop, notebook, smartphone, etc), os eventos são tratados pelo sistema operacional, porém em sistemas embarcados nem sempre possuímos um SO. 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 (em computadores pessoais também tem, mas o SO toma conta de tudo). Podemos, por exemplo, configurar um uC para que toda vez que um botão for pressionado, uma função (handler) seja executada, evitando a necessidade de verificarmos pela mudança de estado do pino no loop do programa (pooling). Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados Interrupçã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. Considere 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 (e.g., teclado) tiver um novo dado. O instante de chegada de novos dados é absolutamente imprevisível da perspectiva do microprocessador / programa em execução. Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados Interrupção Visão geral Para verificar a existência de dados vindos do periférico, temos duas opções: ○ Varredura (pooling): durante a execução do programa, ocorrem chamadas para uma rotina que checa se o periférico tem novos dados. Fácil implementação. Desperdício de ciclos de execução do processador. ○ Interrupções externas: um pino especial indica para o processador quando uma solicitação de atendimento foi feita por um dispositivo externo. Neste caso, o processador suspende o programa em execução e desvia para a rotina de serviço de interrupção (Interrupt Service Routine, ISR) Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados Interrupção Visão geral Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados Interrupção Polling example MAIN PROGRAM: Visão geral Repeat the following forever { Pooling vs. Interrupção if UART received data Get the data and process it if time elapsed ○ A principal diferença entre pooling e Do the task interrupção é que a CPU verifica os } periféricos em intervalos regulares no pooling para verificar se eles solicitam Interrupt example serviços de CPU. MAIN PROGRAM: Do a task ○ Por outro lado, na interrupção os periféricos interrompem a CPU para avisar On UART receive interrupt Get the data and process it da necessidade de serviços de CPU. On timer interrupt Do the task Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados Interrupção Visão geral Pooling vs. Interrupção Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados Interrupção Rotina de serviço de interrupção (Interrupt Service Routine, 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. Este programa é comumente chamado de rotina de serviço de interrupção (ISR). ISR é também chamado de interrupt handler (manipulador de interrupção). Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados Interrupção Processo 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. Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados Interrupção Visão geral Como você implementaria o acionamento de um airbag? Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados Interrupção Visão geral Como você implementaria um sistema de irrigação? Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados Interrupção Tipos de interrupção Software Interrupt ○ Interrupção produzida por um software. ○ É usado 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. ○ Quando o processador encontrar esta instrução, ele salva o estado atual do programa e transfere o controle para um local específico da memória onde o SO pode tratar a solicitação. ○ Exemplos de serviços solicitados usando uma interrupção de software: alocar memória, ler ou escrever em um arquivo, iniciar ou parar um processo, enviar ou receber dados da rede, etc. Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados Interrupção Tipos de interrupção Hardware Interrupt ○ Um dispositivo externo, como um teclado ou mouse, sinaliza à CPU uma interrupção de hardware quando precisar da atenção do processador. ○ Um controlador de interrupção (interrupt controller) é uma peça de hardware especializada que produz essas interrupções recebendo sinais dos dispositivos e enviando-as para o processador. ○ Quando ocorre uma interrupção de hardware, o processador salva o estado atual do programa e move o controle para uma área de memória conhecida como vetor de interrupção (interrupt vector) para que o manipulador de interrupção (interrupt handler) possa ser executado. ○ Um pequeno trecho de código chamado manipulador de interrupção (interrupt handler) é criado para dar suporte ao dispositivo específico que causou a interrupção. Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados Interrupção Tipos de interrupção Maskable Interrupts ○ São interrupções que podem ser temporariamente desabilitadas ou "mascaradas" pelo processador. Isso significa que o processador pode ignorar ou não responder a essas interrupções se estiver executando uma tarefa crítica que não pode ser interrompida. Non-Maskable Interrupts (NMI) ○ São interrupções que não podem ser desabilitadas pelo processador. Elas são consideradas de alta prioridade e devem ser atendidas imediatamente, pois geralmente indicam eventos críticos que exigem atenção imediata do sistema. Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados Interrupção Tipos de interrupção Inter-Processor Interrupts ○ São interrupções que são usadas em sistemas multiprocessados ou multi-core, onde há mais de um processador ou núcleo de processamento. Os IPIs são usados para permitir a comunicação entre os processadores ou núcleos no mesmo sistema. Eles podem ser usados para coordenar tarefas, sincronizar ações entre processadores, enviar sinais de controle ou notificar outros processadores sobre eventos específicos. Inter-System Interrupts ○ Este termo pode se referir a interrupções que ocorrem entre sistemas separados ou entre componentes de hardware que estão em sistemas distintos, como interrupções que atravessam fronteiras de sistemas, redes ou dispositivos conectados em diferentes sistemas. Esse tipo de interrupção é usado em contextos onde diferentes sistemas precisam se comunicar, trocar informações ou coordenar ações através de interrupções. Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados 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). Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados Interrupção Nested Vector Interrupt Controller (NVIC) em ARM O NVIC e a interface do núcleo do processador estão intimamente acoplados, para permitir processamento de interrupção de baixa latência e eficiência. Na figura ao lado, NMI (Non-Maskable Interrupts) e IRQs (Interrupt requests) são pinos associados a interrupções de hardware. Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados Interrupção Processo de interrupção no ARM Cortex-M Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados