Controladores do IBM-PC. Gustavo G. Parma

Documentos relacionados
Interrupções e DMA. Mecanismos de I/O

Interrupções. Capítulo 6

Controlador de DMA. Gustavo G. Parma

ENTRADA E SAÍDA DE DADOS

Organização de Computadores 1

Organização e Arquitetura de Computadores I

Prof. Adilson Gonzaga

Entrada/Saída. Capítulo 5. Sistemas Operacionais João Bosco Junior -

Interrupção. Prof. Adilson Gonzaga

SEL 0415 INTROD. À ORGANIZAÇÃO DE COMPUTADORES

Sistemas de Entrada e Saída

Organização de Computadores

Sistemas Operacionais

Sistemas de Entrada e Saída

ESTRUTURA E FUNCIONAMENTO DO COMPUTADOR

Interrupções. As interrupções são casos especiais de chamadas de procedimentos.

4.3 - DMA & Chipset. CEFET-RS Curso de Eletrônica. Profs. Roberta Nobre & Sandro Silva. e

PCS-2529 Introdução aos Processadores. Prof. Dr. Paulo Sérgio Cugnasca

Periféricos possuem características diferentes. Periféricos são mais lentos que UCP e Memória Necessita-se de módulos de Entrada/Saída

Organização de Memórias

Problemas com Entrada e Saída

Arquitetura de Computadores. Revisão Volnys Bernal. Agenda. Revisão: Arquitetura de Computadores. Sobre esta apresentação

INTRODUÇÃO: MICROCONTROLADORES

Dispositivos de Entrada e Saída

Sistemas de Entrada e Saída

Mapeamento de Memória e I/O

Temporização Interrupções. Prof: Evandro L. L. Rodrigues. Rotinas de Atraso

Notas da Aula 14 - Fundamentos de Sistemas Operacionais

Universidade Federal de Campina Grande Unidade Acadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação.

Organização de Computadores 1

UFRJ IM - DCC. Sistemas Operacionais I. Unidade IV Gerência de Recursos Entrada e Saída. 02/12/2014 Prof. Valeria M. Bastos

Organização e Arquitetura de Computadores I

Microcontrolador 8051

07/06/2015. Outras características importantes em Microprocessadores/Microcontroladores SEL-433 APLICAÇÕES DE MICROPROCESSADORES I

Arquitetura e organização de computadores

Prof. Adilson Gonzaga

Estrutura Básica de um Computador

Sistemas Operacionais. Entrada/Saída

Microcontrolador 8051:

Laboratório de Microprocessadores e Microcontroladores

EXPERIÊNCIA 5: IMPLEMENTAÇÃO DE UM CRONÔMETRO COM INTERRUPÇÃO

SSC510 Arquitetura de Computadores 1ª AULA

Gerência de Entrada e Saída

Sistema de entrada e saída (E/S)- Módulos de E/S; tipos de operações de E/S

UCP 8051 (parte 02) Professor Adão de Melo Neto

Barramento. Prof. Leonardo Barreto Campos 1

Entrada e Saída e Dispositivos

SSC0611 Arquitetura de Computadores

No. de bits. O primeiro IBM PC foi construído com o 8088 (versão de 8 bits do 8086).

Entrada e saída Introdução hardware de E/S

Arquitetura de Computadores Unidade 2 Organização Funcional dos Sistemas de Computação tópico 2.3 Subsistemas de E/S

BARRAMENTO DO SISTEMA. Adão de Melo Neto

Lista de Exercícios 2

Temporização da CPU SEL-433 APLICAÇÕES DE MICROPROCESSADORES I. Ciclos de Máquina. Ciclos de Máquina. Temporização Interrupções Rotinas de Atraso

William Stallings Arquitetura e Organização de Computadores 8 a Edição

Módulo 3 - Estrutura e configuração de Sistemas Operativos monoposto

Aula 03 - Concorrência. por Sediane Carmem Lunardi Hernandes

Microprocessadores I. Aula 6 Arquitetura do Microprocessador Pinagem e Diagrama de Temporização

Laboratório de Microprocessadores e Microcontroladores

William Stallings Arquitetura e Organização de Computadores 8 a Edição. Capítulo 12 Estrutura e função do processador

Interrupções 8051 Porta Serial

William Stallings Computer Organization and Architecture

Arquitetura e Organização de Computadores

Introdução. Pedro Cruz. EEL770 Sistemas Operacionais

8/27/2012. Prof. Demétrios Coutinho

Dispositivos de Entrada e Saída


18/10/2010. Unidade de Controle Controle. UC Microprogramada

Introdução ao Uso do LCD Inteligente (Versão Preliminar) Por Gilson Yukio Sato. Introdução

Curso de Microcontroladores PIC 16F84A

Organização e Projeto de Computadores 3: Modo de Endereçamento, Sub-Rotina, Instruções de E/S, Interrupção

Lista de Exercícios 1

Organização Básica III

Organização e Arquitetura de Computadores INTRODUÇÃO

Transcrição:

Controladores do IBM-PC Gustavo G. Parma

IBM-PC baseado em ISA

Sistema de interrupção do x86 Duas entradas de solicitação de interrupção NMI: Non-maskable interruption Erro de paridade da RAM Channel Check (CHCHK#) Watchdog Timer Timeout INTR (maskable interruption) Controlador de Interrupção

Controlador de Interrupção Baseado no Barramento EISA Dois controladores em Cascata: Mestre e Escravo. Sistema de atendimento à interrupção do x86 Uma única linha de solicitação de interrupção na CPU Utiliza o 8259 Programmable Interrupt Controller (PIC).

Vetor de Interrupção o x86 utiliza um byte para identificar a interrupção. No modo Real, os primeiros 1024 bytes da memória são reservados para armazenar os vetores de interrupção. Cada vetor de interrupção utiliza 4 bytes dois bytes para IP (endereços mais baixos) dois bytes para CS (endereços mais altos) Cada vetor de interrupção representa uma ISR (interrupt service routine) que deve ser executada, associada com a interrupção.

Vetor de Interrupção

Sistema de Interrupção

Interrupção de Hardware Baseado no 8259

8259 Expande a porta de entrada de interrupções mascaráveis do processador para 8 entradas priorizadas (considerando um controlador). Requisições de interrupção capturadas em oito latches, chamado registrador de requisição de interrupção (IRR). IRR pode ser programado para ser sensível a: Transição Nível O registrador IMR (interrupt mask register) pode ser programado para habilitar ou desabilitar qualquer requisição de interrupção.

8259 - continuação A saída do IRR alimenta um bloco de definição de prioridade. O resultado da lógica de prioridade alimenta outro registrador de 8 bits, chamado ISR (InService register). Reflete a interrupção que está sendo atualmente atendida pelo x86 O 8259 permite, ainda: a configuração do tipo de lógica utilizada na definição de prioridade mascaramento e limpeza de solicitações de interrupção leitura do estado de vários registradores internos

Geração e atendimento de Interrupção Modo Real, interrupção no controlador Mestre 1.A interface ativa uma linha de requisição de interrupção 2.O controlador de interrupção recebe a solicitação e a prioriza com as outras requisições recebidas ou pendentes 3.Se a requisição for a única ou for a de mais alta ordem, o controlador envia uma solicitação de interrupção ao processador (INTR)

Geração e atendimento de Interrupção - continuação 4.A CPU detecta a interrupção (pino INTR) 5.CPU gera dois ciclos de Interrupção aceita (INTA) para solicitar o número da interrupção solicitada 5.1.O primeiro pára a lógica de prioridade e ativa o nível de mais alta prioridade no registrador ISR. 5.2.O segundo solicita um valor de 8 bits que identifica a interrupção 6.CPU lê o número na parte baixa do barramento de dados => vetor de interrupção

Atendimento à Interrupção 7.CPU indexa o vetor de interrupção, lendo o novo valor de CS:IP 8.Flags, CS e IP antigos salvos na pilha. 9.Carrega o novo valor de CS e IP 10.CPU desabilita o reconhecimento à interrupção 11.Executa a rotina de interrupção (ISR) 11.1.Executa o algoritmo 11.2.Escreve o comando EOI para o controlador de interrupção mestre, desligando a requisição 11.3.Executa o comando IRET 12.CPU retira o valor original de IP, CS e Flags da pilha 13.Continua a executar o programa interrompido

Geração e atendimento de Interrupção Modo Real, interrupção no controlador escravo O controlador escravo possui um registrador chamado de slave ID register. Este registrador é programado com o valor 02 e corresponde a entrada no controlador mestre no qual o escravo está conectado. E entrada IRQ2 do mestre é utilizada para fazer a cascata. A linha IRQ9 substitui a IRQ2, sendo que a IRQ9 está conectada na entrada IR1 do controlador escravo (enquanto que a IRQ2 estaria conectada na IR2 do controlador mestre).

Geração e atendimento de Interrupção - continuação 1.A interface ativa uma linha de requisição de interrupção ligada ao controlador escravo 2.O controlador escravo recebe a solicitação e envia uma solicitação ao controlador mestre. 3.Caso nenhuma interrupção de mais alta ordem esteja sendo atendida pelo mestre, o controlador mestre envia uma solicitação de interrupção ao processador (INTR). Caso haja alguma prioridade de mais alta ordem, o controlador mestre aguarda o término da interrupção.

Geração e atendimento de Interrupção - continuação 4.A CPU detecta a interrupção (pino INTR) 5.CPU gera dois ciclos de Interrupção aceita (INTA) para solicitar o número da interrupção solicitada 6.O controlador mestre detecta o ciclo de INTA e, caso a interrupção de mais alta ordem seja a IR2, o controlador mestre comanda o escravo para fornecer o tipo de interrupção ao processador (utilizando o número 02 no barramento de conexão em cascata).

Geração e atendimento de Interrupção - continuação 7.O controlador escravo percebe o número 02 no barramento de conexão em cascata e compara este valor com o slave ID register, disponibilizando o número que identifica a interrupção. 8.CPU lê o número na parte baixa do barramento de dados => vetor de interrupção 9.CPU indexa o vetor de interrupção, lendo o novo valor de CS:IP

Geração e atendimento de Interrupção - continuação 10.Flags, CS e IP antigos salvos na pilha. 11.Carrega o novo valor de CS e IP 12.CPU desabilita o reconhecimento à interrupção 13.Executa a rotina de interrupção (ISR) 13.1.Executa o algoritmo 13.2.Escreve o comando EOI para o controlador de interrupção mestre, desligando a requisição 13.3.Escreve o comando EOI para o controlador de interrupção escravo, desligando a requisição 13.4.Executa o comando IRET 14.CPU retira o valor original de IP, CS e Flags da pilha 15.Continua a executar o programa interrompido

Sequência de Interrupções

Programação do 8259 Cada 8259 pode ser programado acessando dois endereços de I/O Cada 8259 aceita dois tipos de comandos 0x20h e 0x21h para o controlador mestre 0xA0h e 0xA1h para o controlador escravo palavra de comando de inicialização (ICW) palavra de comando de operação (OCW) Antes da utilização do 8259, ele deve ser inicializado para um estado conhecido. escrita de uma séria de bytes de ICW e OCW

Programação do 8259 Grande parte da programação é feita durante a seqüencia de boot, não sendo necessária a ação do programador ICW1: valor 0x15h enviado para 0x20h, informa a existência do controlador escravo, configura para aceitar interrupções no modo de transição positiva. ICW2: valor 0x08h enviado para 0x21h. Os cinco bits superiores são os cinco bits da identificação da interrupção. Os três bits inferiores da identificação da interrução são o nível da interrupção atualmente atendida. Ou seja, associa aos vetores de interrupção de 08h a 0fh.

Configuração do 8259 ICW3: valor 0x04h enviado para 0x21h, indica qual entrada do mestre está conectada ao escravo. ICW4: valor 0x01h enviado para 0x21h. Informa que o sistema é baseado no x86 e que o programador deve enviar um sinal não específico de End-Of-Interrupt (EOI) para limpar o bit de mais alta ordem ativado no registrador ISR, ao final da rotina de interrupção. Após o envio de ICW4, qualquer escrita no endereço 0x21h acessa OCW1, o registrador de máscara de interrupção (IMR) do controlador mestre

Configuração do 8259 Para o controlador escravo: ICW1: valor 0x15h enviado para 0xA0h. Configura para aceitar interrupções no modo de transição positiva. ICW2: valor 0x70h enviado para 0xA1h. Semelhante a ICW2 do mestre, associando as interrupções com os vetores de interrupção de 70h a 77h ICW3: valor 02h enviado para 0xA1h. Escreve o ID do escravo, conectado a IRQ2 do mestre.

Programação do 8259 ICW4: valor 01 enviado para 0xA1h. Informa que o sistema é baseado no x86 e que o programador deve enviar um sinal não específico de End-Of-Interrupt (EOI) para limpar o bit de mais alta ordem ativado no registrador ISR, ao final da rotina de interrupção. Após o envio de ICW4, qualquer escrita no endereço 0xA1h acessa OCW1, o registrador de máscara de interrupção (IMR) do controlador escravo.

Programação do 8259 Após o envio de ICW1, ICW2, ICW3 e ICW4, o controlador de interrupção passa a operar no modo de controle de operação e a escrita nos endereços dos controladores passam a acessar os registradores de palavra de comando de operação (OCW): OCW1: endereço 0x21h ou 0xA1h OCW2: endereço 0x20h ou 0xA0h OCW3: endereço 0x20h ou 0xA0h

Programação do 8259 OCW1: acessa o IMR, habilitando ou desabilitando as solicitações de interrupção: bit 0 (IRQ0 ou IRQ8) bit 1 (IRQ1 ou IRQ9) bit 2 (Escravo ou IRQ10) bit 3 (IRQ3 ou IRQ11) bit 4 (IRQ4 ou IRQ12) bit 5 (IRQ5 ou IRQ13) bit 6 (IRQ6 ou IRQ14) bit 7 (IRQ7 ou IRQ15) Escrevendo '1' em qualquer dos bits, desabilita a interrupção.

Configuração do 8259 OCW2: Acessado quando b3=b4=0 Utilizado para rotacionar ou alterar a prioridade de requisição de interrupção e selecionar o modo de fim de interrupção. bit 0 a bit 2: Indica para o controlador o nível da interrupção (IR) específica que será utilizado pelos outros comandos especificados no OCW2 bit 3 e bit 4: Iguais a zero para acessar OCW2

Programação do 8259 bit 5 a bit 7: representam oito possíveis comandos. D5 é o bit EOI e indica que o comando é um comando de fim de interrupção D6 é o bit SL e indica que o comando utiliza os bits de especificação de nível (bit 0 a bit 2). D7 é o bit R e indica que a função de rotação no nível de prioridade será ativada.

Programação do 8259 Bit 7 R Bits 5 a 7 de OCW2 Bit 6 SL Bit 5 EOI 0 0 1 0 1 1 1 0 1 1 0 0 0 0 0 1 1 1 1 1 0 Descrição Define um comando de fim de interrupção não específico (EOI), resetando o bit de mais alta ordem em IS. define um comando de fim de interrupção específico. Neste caso, o nível especificado pelos bits b0 a b2 será resetado no registrador ISR. Causa um EOI não especificado, resetando a requisição de mais alta ordem em ISR para a mais baixa prioridade e movendo todos os outros níveis uma posição acima. Ativa uo modo re rotação automática de prioridade, tal que a cada comando de EOI, as prioridades serão rotacionadas. Geralmente o PC é inicializado em modo EOI não-automático e este comando não é utilizado. Limpa a rotação automática de prioridade no modo de EOI automático. Causa uma rotação na prioridade e um comando EOI específico, onde o nível especificado pelos bits b0 a b2 será resetado no registrador ISR. causa um comando de prioridade. O nível especificado pelos bits b0 a b2 terá a prioridade de mais baixa ordem, fixando todas as outras prioridades.

OCW3: Acessado quando b4 = 0 e b3 = 1 bit 0 (RIS) e bit 1 (RR): utilizados para selecionar um modo de leitura de estado Bit 1 RR 0 0 Bis 0 RIS 0 1 1 0 1 1 Descrição Sem ação Sem ação Permite uma leitura do valor do registrador IRR no próximo comando de leitura enviado ao controlador. O comando pode ser enviado para qualquer endereço. Permite uma leitura no conteúdo do registrador ISR no próximo comando de leitura enviado ao controlador.

Programação do 8259 bit 2 (P): dispara um comando especial similar em função ao primeiro pulso de INTA (ativando o bit de mais alta prioridade em ISR). No próximo comando de leitura no controlador, o dado lido possui o valor codificado em D0-D2 da requisição de interrupção. Este modo não é utilizado pela BIOS do PC. bit 3: não utilizado, devendo ser mantido em '1' bit 4: não utilizado, devendo ser mantido em '0'

Prgramação do 8259 bit 5 (SMM) e bit 6 (ESMM): Permitem que o registrador de máscara seja utilizado de forma especial. Quando a interrupção estiver ativada em ISR e não for desativada por um comando EOI, todos os níveis de mais alta e baixa prioridades que não estiverem mascarados podem ainda ser atendidos enquanto a interrupção do nível original estará inibido. Este modo é selecionado com D5=D6='1' e desativado com D5='0' e D6='1'. Este modo não é utilizado pela BIOS do PC.

Vetor de Interrupção para IRQs Vetor Endereço Hardware Descrição 20-23 IRQ0 Relógio do PC (XT) e serviços de hardware (Contador 0 do 8255) 9 24-27 IRQ1 Teclado A 28-2B IRQ2 Cascata com o controlador escravo B 2C-2F IRQ3 Com 2 - Serial C 30-33 IRQ4 Com 1 - Serial D 34-37 IRQ5 LPT2 ou Hard Disk no XT E 38-3B IRQ6 Adaptador do Floppy F 3C-3F IRQ7 LPT1 70 1C0-1C3 IRQ8 Clock do relógio de tempo real no barramento ISA 71 1C4-1C7 IRQ9 Substitui a IRQ2 72 1C8-1CB IRQ10 Disponível 73 1CC-1CF IRQ11 Disponível 74 1D0-1D3 IRQ12 Disponível 75 1D4-1D7 IRQ13 Coprocessador matemático 76 1D8-1DB IRQ14 Controlador do HD do barramento ISA 77 1DC-1DF IRQ15 Disponível 8

IRQs no PCI Situação ideal No PCI: Interrupção ativa em nível baixo Interrupções compartilhadas

Interrupções no PCI

Interrupções no PCI