Entrada e Saída Walter Fetter Lages w.fetter@ieee.org Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Engenharia Elétrica Programa de Pós-Graduação em Engenharia Elétrica ELE0002 Sistemas de Automação Copyright (c) Walter Fetter Lages p.1
Introdução Sistemas de tempo real usualmente tem como objetivo o controle de dispositivos de I/O Acessos a dispositivos de I/O usualmente possuem exigências de temporização Diferentes perspectivas do hardware Interface física Interface de programação Device drivers Dispositivos de caractere Dispositivos de bloco Copyright (c) Walter Fetter Lages p.2
Mecanismos de I/O Programmed I/O (PIO) Polling Arquitetura com barramentos de I/O e Memória Independentes Multiplexados Arquitetura com barramento único I/O mapeado em memória Instruções privilegiadas Interrupções Acesso direto à memória (DMA) Chanal de I/O Copyright (c) Walter Fetter Lages p.3
Polling Copyright (c) Walter Fetter Lages p.4
PIO Menor latência possível Alta carga para a CPU Pouco overhead Em sistemas multitarefa pode-se ter uma tarefa exclusivamente para fazer o polling Do ponto de vista das outras tarefas é semelhante a uma interrupção Hardware mais simples Boa previsibilidade temporal Copyright (c) Walter Fetter Lages p.5
Interrupções Copyright (c) Walter Fetter Lages p.6
Interrupções Mascaráveis Podem ser desabilitadas Não mascaráveis Não podem ser desabilitadas Ativas por borda Solicitação ativa quando ocorre transição (subida ou descida) do sinal Ativas por nível Solicitação ativa quando o sinal está em um determinado nível (alto ou baixo) Copyright (c) Walter Fetter Lages p.7
Interrupções Latência Tempo entre a solicitação de interrupção e o início da rotina de tratamento Aninhamento Se o sistema permite aninhamento de interrupções, rotinas de tratamenteo de interrupções podem ser interrompidas Prioridade Interrupções de maior prioridade interrompem as rotinas de tratamento das interrupções de menor prioridade Copyright (c) Walter Fetter Lages p.8
Tipos de Interrupções Interrupções (de hardware) Exceções Geradas internamente pelo processador Interrupções de software Concebidas para testar as rotinas de tratamento de interrupção Interface com o sistema operacional Copyright (c) Walter Fetter Lages p.9
Exceções Faltas Gerada antes da execução da instrução No retorno da rotina de tratamento, a instrução que causo a falta é re-executada Traps Gerada após a execução da instrução Abortos Não permitem o reinício da execução Erros de hardware Inconsistência nas tabelas de sistema Copyright (c) Walter Fetter Lages p.10
Interrupções Latência dependente da arquitetura da CPU e do software de tratamento de interrupção Baixa carga para a CPU Overhead considerável se o tratamento de I/O for simples Copyright (c) Walter Fetter Lages p.11
Tratamento de Interrupções Chaveamento de contexto Preserva o estado da tarefa que estava executando Básico Apenas o contador de programa é salvo/restaurado Parcial Contador de programa e alguns registradores são salvos Completo Vetor de interrupção Eventualmente utilizado para priorização Copyright (c) Walter Fetter Lages p.12
Tratamento de Interrupções Compartilhamento Encadeamento de rotinas de tratamento Identificação do dispositivo Escalonamento Interrupções rápidas Reescalonamento Botton-halves Interrupção faz um pré-tratamento imediato e marca um bottom-half para fazer o house-keeping Copyright (c) Walter Fetter Lages p.13
Acesso Direto à Memória O controlador de DMA assume o controle do barramento e faz a transferência Interrupções são frequentemente utilizadas juntamente com DMA, para sinalizar o fim da transferência de um bloco de dados Copyright (c) Walter Fetter Lages p.14
Modos de Transferência Transferência única Uma transferência a cada requisição Transferência em bloco Um bloco transferido por requisição Transferência por demanda Transferências enquanto a requisição estiver ativa Transferência memória-memória Copyright (c) Walter Fetter Lages p.15
Característica da Transferência Inicialização Inicialização única Reinicialização automática Prioridade Fixa Rotativa Copyright (c) Walter Fetter Lages p.16
DMA Baixa carga para a CPU Baixo overhead Não se presta para I/O interativo Frequentemente utilizado com interrupções para sinalizar o fim da transferência de um bloco de dados Uso de DMA pode comprometer a previsibilidade do sistema de tempo real Copyright (c) Walter Fetter Lages p.17
Canais de I/O Processador de I/O que faz a interface com os dispositivos Processador de I/O executa um programa carregado pela CPU principal Baixa carga para a CPU Baixo overhead Baixa latência Se a memória de código for compartilhada com a CPU causa imprevisibilidade Copyright (c) Walter Fetter Lages p.18
Drivers de Dispositivos Fornecem uma interface uniforme para os níveis superiores do software Definem um conjunto de operações que devem/podem ser suportadas Mapeamento das operações suportadas pelo driver nas operações suportadas pelo dispositivo Virtualização de dispositivos de I/O Através do driver Hardware Abstraction Layer Copyright (c) Walter Fetter Lages p.19
Relógio Manter hora Temporizar o chaveamento de tarefas Registrar o uso da CPU Profiling Time-stamping de mensagens Copyright (c) Walter Fetter Lages p.20
Temporizadores Usualmente em sistemas de tempo real tarefas precisam ser executadas em instantes específicos Hardware Simulados em software Lista ligada ordenada por instante de expiração Watchdog Copyright (c) Walter Fetter Lages p.21
Níveis de Privilégio no ix86 Copyright (c) Walter Fetter Lages p.22
Proteção de I/O no ix86 Existe um nível de privilégio de I/O Apenas processos com nível de privilégio menor ou igual podem executar instruções de I/O Associado a cada processo pode existir um bitmap de permissões de I/O Apenas as portas habilitadas podem ser acessadas Hardware Virtual Virtualização de dispositivos Copyright (c) Walter Fetter Lages p.23
Verificação de Privilégios Copyright (c) Walter Fetter Lages p.24
I/O Permission Bit Map Copyright (c) Walter Fetter Lages p.25
Entradas e Saídas em Automação Digitais Analógicas Em tensão Em corrente Copyright (c) Walter Fetter Lages p.26
Entradas e Saídas Digitais Em tensão TTL 0-5V Coletor Aberto Tensão variável (usualmente 0-30V) Útil para implementar wired-or Isolamento óptico Em corrente Usualmente 0-20mA A Relé Normalmente aberto Normalmente fechado Copyright (c) Walter Fetter Lages p.27
Entradas e Saídas Analógicas Em tensão Unipolar Bipolar Usualmente 5, 12, 24 ou 30V Geralmente a tensão máxima é superior à faixa de operação Entrada para termopar Em corrente Usualmente 0-20mA Single-end Diferencial Em largura de pulso (PWM) Copyright (c) Walter Fetter Lages p.28