Chip-Select e Controle de Interrupção Sistemas Embarcados.

Slides:



Advertisements
Apresentações semelhantes
Microcontroladores Uma visão geral.
Advertisements

Sistemas Operacionais
Mapeamento de Entrada / Saída em Sistemas Digitais
Sistemas Operacionais
Sistemas Operacionais
Capitulo 6: Entrada e Saída
A Interface entre Processadores e Periféricos
Barramentos Introdução.
Entrada e Saída Introdução.
Técnicas para operações E/S
Chip-Select e Controle de Interrupção
Unidade de Controle do 8086/8088
Arquitetura dos Microprocessadores 8086 e 8088
Unidades de Execução e de Controle Sistemas Digitais.
Arquitetura dos Microprocessadores 8086 e 8088 Sistemas Embarcados.
Arquitetura dos Microprocessadores 8086 e 8088
Processos no Unix e Linux
Configuração de Periféricos
Arquitetura de Sistemas Operacionais
Sistemas Operacionais
Problemas com Entrada e Saída
MEMORIAS RAUL DIAZ ROSAS.
Conhecendo Hardware Parte 1
Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC541 - SISTEMAS OPERACIONAIS I Aula.
Bruno Souza de Oliveira e Rodrigo Nardi
Sensor de Temperatura Digital TMP75
O MICROPROCESSADOR INTEL 8080
Introdução (3) Aula 3.
DSP – TMS320LF2407A.
Interrupções do DSP Desvios do programa principal para um endereço definido com o objetivo de atender a um evento; As interrupções podem ser de hardware.
Arquitectura de Computadores II
Processadores – Aula 3 Professor: André Luis Meneses Silva
Sistemas Operacionais Adriana Vettorazzo
Processadores – Aula 3 Professor: André Luis Meneses Silva
Sistemas Operacionais I
Módulo MSSP Jadsonlee da Silva Sá
Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A - Parte III Jadsonlee da Silva Sá
PIC16F877A - Parte II Jadsonlee da Silva Sá
EEL Microprocessadores
Aula prática 6 Vetores e Matrizes
Linguagem de Montagem.
Sistemas Operacionais
Sistemas Operacionais
Organização e Arquitetura de Computadores
Conteúdo Processos e threads Partes do processo
Entrada e Saída (E/S ou I/O)
Prof. Remy Eskinazi - Microcontroladores
SISTEMAS OPERACIONAIS I
SISTEMAS OPERACIONAIS I Memória Virtual e Paginação
Computação L1: Infra-Estrutura Básica
Sistemas Operacionais
Sistemas Operacionais
Unidade Central De Processamento: Processador
Capítulo 5 Entrada/Saída 5.1 Princípios do hardware de E/S
Arquitetura de Computadores
Disciplina: Microcontroladores Prof. Remy Eskinazi, MSc UPE - POLI
Entrada e Saída (E/S).
Microprocesadores x Microcontroladores
8088 Assembly Software Básico Mitsuo Takaki.
Parte 3 Seção de Dados e Unidade de Controle
SISTEMAS OPERACIONAIS
Engenharia de Sistemas Embarcados Aula 5: Técnicas Especiais de Software.
Arquitetura de Computadores
Afonso Ferreira Miguel
Arquitetura de ComputadoresProf a Luiza Mourelle Entrada e Saída O processo de fornecer informações ou obtê-las dos computadores é chamado entrada/saída.
Arquitetura de computadores
ARQUITETURA DE COMPUTADORES Nível do Conjunto de Instruções
FLIP-FLOPs.
Faculdade Pernambucana - FAPE Sistemas Operacionais Prof. Flávio Gonçalves da Rocha.
EA869 Interrupção Faculdade de Engenharia Elétrica e de Computação (FEEC) Universidade Estadual de Campinas (UNICAMP) Prof. Levy Boccato 1.
Transcrição da apresentação:

Chip-Select e Controle de Interrupção Sistemas Embarcados

Introdução Todos os periféricos integrados ao microprocessador são controlados por um conjunto de registradores com um PCB (Peripheral Control Block) Os registradores de controle periférico são fisicamente localizados nos dispositivos periféricos que eles controlam, mas são endereçados como um bloco simples de registradores O PCB engloba 256 bytes adjacentes, localizados na memória ou no espaço de entrada/saída O registrador de realocação de PCB é responsável por controlar a localização do PCB

Registradores de Controle Periférico Registrador de Realocação de PCB

Acessando o PCB Toda comunicação entre periféricos integrados e CPU ocorre sobre um barramento especial, o F-BUS, de 16 bits de dados. Toda escrita no F-BUS transfere uma word. Exemplo: Out DX,AL (DX é par) faz com que AX seja escrito no registrador de PCB no endereço [DX] (AL em [DX] e AH em [DX+1]). Observe que se DX fosse ímpar, AL seria transferido para [DX] e AH para [DX-1]. A última forma de escrita provoca um desalinhamento de palavra, o que deve ser evitado. A leitura de uma palavra desalinhado deve ser feita como segue: In AX,DX (DX é impar) transferirá [DX] em AL e [DX-1] em AH. In AL,DX é usados para ler um byte, onde DX pode ser par ou ímpar

Recomendações para Operação no F-Bus Leitura de Words Palavras alinhadas do PCB funcionam normalmente Palavras alinhadas podem ser lidas usando IN AX,DX ou MOV registrador de word, endereço de PCB par Leitura de bytes IN AL, DX ou MOV registrador de byte, endereço de PCB Escrita de Words Sempre escreva words alinhadas (alinhamento par) no PCB OUT DX, AX, ou OUT DX, AL, ou MOV endereço de PCB par, registrador de word Para o 8088, OUT DX, AX realizará um ciclo de barramento desnecessário. Não recomendado! Use OUT DX, AL ou MOV endereço de PCB par, parte baixa registrador de byte Escrita de Bytes Sempre escreva bytes alinhados (alinhamento par) no PCB Escrita de bytes desalinhados modificam a palavra inteira

Escrevendo no Registrador de Realocação de PCB Sempre que ocorrer um remapeamento de PCB, o registrador de realocação deve ser atualizado com um byte (OUT DX,AL) Internamente o registrador de realocação recebe os 16 bits de AX Externamente a BIU executa um ciclo de barramento de 8 bits Se uma instrução OUT DX, AX é executada em um processador 8088, então a BIU vai escrever no registrador de realocação no primeiro ciclo, e um segundo ciclo será executado desnecessáriamente

Setando a Localização de Base do PCB Em reset, RELREG = 00FFh Isso faz com que o PCB seja alocado no topo do espaço de entrada /saída (0FF00h a 0FFFFh) Escrever em RELREG provoca uma realocação de PCB Por exemplo, para alocar PCB em 10000h-100FFh, então RELREG=1100

Considerações para a Interface de Coprocessador Matemático 8087 Sistemas utilizando o 8087 não devem ter o PCB realocado em 0000h, pois o 8087 usa as localizações de entrada/saída 0F8h-0FFh

Unidade de Chip-select Chip-Select (unidade de seleção de chip) é um mecanismo fundamental para permitir à CPU acessar memórias e/ou periféricos externos O chip-select pode ser um sinal extraído de um endereço No exemplo, qualquer endereço entre 10000h e 1FFFFh, ou iniciando em 30000h 50000h ou 70000h,... (A16=1) habilita a SRAM SRAM

Unidade de Chip-Select Utilizando um decodificador, pode-se selecionar um entre vários dispositivos (por exemplo, bancos de memória) Decodificador (MUX)

Unidade de Controle de Interrupção As interrupções podem ser mascaráveis ou não-mascaráveis As mascaráveis são controladas pela unidade de controle de interrupção Interrupções podem surgir de periféricos do chip e de 5 pinos de interrupção externa A unidade de controle de interrupção é responsável por sincronizar e priorizar as interrupções, e fornecer o vetor de tipo de interrupção à CPU Há duas formas de a CPU processar pedidos de periféricos: Sondagem (polling) e interrupção Sondagem exige que a CPU verifique constantemente as necessidades dos dispositivos periféricos Interrupção elimina tal necessidade, liberando a CPU para tratar de outros assuntos

Unidade de Controle de Interrupção Quando ocorre uma interrupção, a CPU para o processo principal, salva seu status e transfere a execução para a unidade periférica que a interrompeu. Finalizada a interrupção, a CPU restaura o status, continuando a execução do processo principal exatamente no ponto em que foi interrompido. Interrupções mascaráveis podem ser mascaradas individualmente ou globalmente O Interrupt Enable bit do PSW é usado para habilitar ou desabilitar globalmente interrupções mascaráveis Este controle é feito pelo programador através das instruções STI (Set Interrupt) ou CTI (Clear Interrupt) O mascaramento individual de interrupções é feito através do registrador Interrupt Mask

Unidade de Controle de Interrupção

Uma função crítica da unidade de controle de interrupção é priorizar os pedidos de interrupção A prioridade das fontes de interrupção pode variar de zero (maior prioridade) a sete (menor prioridade) As fontes podem ser programadas para compartilhar um prioridade

Unidade de Controle de Interrupção Prioridades de interrupções padrão após reset externo Timer 0 maior prioridade que Timer 1 que tem maior prioridade que Timer 2 Recepção serial tem maior prioridade que transmissão serial

Unidade de Controle de Interrupção Ao atender uma interrupção, a CPU coloca o registrador PSW na pilha e zera o bit IE (habilita temporariamente todas as interrupções mascaráveis) As interrupções mascaráveis são habilitadas pela instrução IRET ou explicitamente pelo programador Habilitar instruções mascaráveis permite o aninhamento (nesting) de instruções Regras para aninhamento de interrupções: Uma fonte de interrupção não pode antecipar uma interrupção de maior prioridade Uma fonte de interrupção não pode antecipar a si própria A forma mais simples de usar o controle de interrupção é não utilizando o aninhamento O problema é que interrupções de maior prioridade passam a ter que esperar até que uma interrupção em execução termine

Unidade de Controle de Interrupção Sequência de interrupção Quando a unidade de controle de interrupção (UCI) detectada uma interrupção, ela seta o bit correspondente no registrador de pedido de interrupção, indicando que a interrupção está pendente Depois a UCI checa todas as fontes de interrupção pendentes, verifica se a interrupção não está mascarada e sua prioridade, assegura o pedido de interrupção e espera o reconhecimento da interrupção Quando a UCI recebe o reconhecimento de interrupção, ela passa o tipo para a CPU, que dá início à sequência de processamento Ao receber o reconhecimento de interrupção, a UCI limpa o bit correspondente no registrador de pedido de interrupção e set o bit correspondente no registrador In-Service O programador é responsável por limpar o bit In-Service com a instrução EOI (End-Of-Interrupt)

Unidade de Controle de Interrupção Resolução de Prioridade - o processo de aninhamento de interrupções exige um controle mais complexo, onde tais condições devem ser satisfeitas: Seu bit correspondente na máscara de interrupção está limpo (não está mascarado) Sua prioridade é maior do que o valor no registrador da máscara de prioridade Seu bit In-Service está limpo Sua prioridade é igual o maior do que aquela de qualquer interrupção cujo bit In-Service está setado

Unidade de Controle de Interrupção Exemplo de Resolução de Prioridade Assume-se as seguintes condições iniciais: A UCI foi inicializada Nenhuma interrupção está pendente Nenhum bit In-Service está setado Todas as interrupções não estão mascaradas O esquema de prioridade padrão está sendo usado O registrador de máscara de prioridade está setado para prioridade mais baixa (prioridade sete)

Unidade de Controle de Interrupção

Exemplo de Resolução de Prioridade O exemplo usa as interrupções externas INT0 e INT3 para descrever o processo: 1)Uma transição low-to-high em INT0 seta seu bit de pedido de interrupção, de modo que a interrupção está agora pendente 2)A UCI assegura o pedido de interrupção à CPU e espera por um reconhecimento 3)A CPU assegura a interrupção 4)A UCI passa o tipo de interrupção para a CPU 5)A UCI limpa o bit INT0 no registrador de pedido de interrupção e seta o bit INT0 no registrador In-Service 6)A CPU executa a sequência de processamento, executando o apontador de interrupção INT0

Unidade de Controle de Interrupção Exemplo de Resolução de Prioridade O exemplo usa as interrupções externas INT0 e INT3 para descrever o processo: 7)Durante a execução de INT0, uma transição low-to-high em INT3 seta seu bit de pedido de interrupção 8)A UCI determina que INT3 tem prioridade menor do que INT0 (em execução, pois o bit In-Service de INT0 está setado). Logo o pedido de interrupção não é enviado para a CPU, de modo que INT3 permanece pendente no registro de pedido de interrupção 9)O apontador de interrupção INT0 completa e envia um comando EOI para limpar o bit INT0 no registrador In-Service 10)INT3, ainda pendente, agora possui prioridade de execução. A UCI assegura o pedido de interrupção e o processo segue como para o apontador INT0

Unidade de Controle de Interrupção Interrupções que compartilham uma fonte simples Pedidos de interrupções múltiplas podem compartilhar uma entrada de interrupção simples (ex.: TIMER 0, TIMER 1 e TIMER 2 compartilham uma entrada simples) Embora compartilhem uma entrada, cada interrupção tem o seu próprio vetor de interrupção O registrador de status de interrupção atua como um registrador de pedido de segundo nível Ele contém um bit para cada interrupção Timer Quando uma interrupção Timer ocorre, ambos o bit do registrador de status de interrupção individual e o bit do registrador de pedido de interrupção compartilhada são setados Na sequência, a interrupção é processada como qualquer outra fonte de interrupção

Unidade de Controle de Interrupção Cascateando com o 8259 externo Os módulos 8259 permitem aumentar o número de pinos de interrupção externos O modo cascade da UCI suporta o uso do 8259 Os pinos e servem como entradas para interrupções externas fora do modo cascade No modo cascade eles servem como saídas de reconhecimento de interrupção Após reset, eles são configurados como entradas Resistores de pullup asseguram que os pinos não flutuem. Os valores dos resistores devem ser altos o suficiente para prevenir sobrecarga dos pinos

Unidade de Controle de Interrupção Usando o módulo 8259 externo no modo cascata

Unidade de Controle de Interrupção Mode aninhado completamente especial É uma característica opcional utilizada normalmente no modo cascata, aplicável somente a INT0 e INT1 Nesse modo de interrupção, um pedido de interrupção é atendido mesmo se seu bit In-Service está setado No modo cascata, um 8259 controla até oito interrupções externas que compartilham um pino de entrada de interrupção simples Modo aninhado completamente especial permite que a estrutura de prioridade do 8259 seja mantida. Deste modo, enquanto o apontador de interrupção está executando, o 8259 recebe uma interrupção de maior prioridade de uma de suas fontes, e é assegurado que tal interrupção seja executada

Unidade de Controle de Interrupção Sequência de reconhecimento de interrupção Durante a sequência de reconhecimento de interrupção, a UCI passa o tipo de interrupção à CPU, que o multiplica por quatro para obter o endereço do vetor de interrupção Os tipos de interrupções para todas as fontes são fixos e são passados pela UCI à CPU A primeira indicação externa da sequência de reconhecimento de interrupção é a busca de CPU da tabela de vetor de interrupção

Unidade de Controle de Interrupção Registrador de controle de interrupção Cada fonte de interrupção tem seu próprio registro de controle de interrupção, que permite definir o seu comportamento

Unidade de Controle de Interrupção Registrador de controle de interrupção INT4:2 – Registradores de interrupção para pinos externos não cascateáveis

Unidade de Controle de Interrupção Registrador de controle de interrupção INT1:0 – Registradores de interrupção para pinos cascateáveis

Unidade de Controle de Interrupção Registrador de pedido de interrupção

Unidade de Controle de Interrupção Registrador de máscara de interrupção

Unidade de Controle de Interrupção Registrador de máscara de prioridade

Unidade de Controle de Interrupção Registrador In-Service

Unidade de Controle de Interrupção Registrador de Sondagem

Unidade de Controle de Interrupção Registrador de Status de Sondagem

Unidade de Controle de Interrupção Registrador de EOI

Unidade de Controle de Interrupção Registrador de Status de Interrupção

Unidade de Controle de Interrupção Inicialização da UCI 1)Determine qual fonte de interrupção deseja-se utilizar 2)Determine se será utilizado o esquema de prioridade padrão ou um esquema próprio 3)Programe o registrador de controle de interrupção para cada fonte de interrupção a)Para pinos de interrupções externas, selecione gatilho de borda ou de nível b)Para INT0 ou INT1, habilite o modo cascata, modo de aninhamento completamente especial, ou ambos c)Se está usando um esquema de prioridade próprio, programe o nível de prioridade para cada fonte

Unidade de Controle de Interrupção Inicialização da UCI 4)Programe a máscara de prioridade com um nível de máscara de prioridade se deseja mascarar interrupções baseadas em prioridade (o nível padrão é sete) 5)Set o bit de máscara no registrador de máscara de interrupção para quaisquer interrupções que se deseje desabilitar

Unidade de Controle de Interrupção