PERR TO MOBF INH A2 SYS IBF OBF. Tabla 1: Flags de estado del status register (0x64) en modo PS/2

Documentos relacionados
Arquitectura de computadoras

Microprocesadores, Tema 8:

Tema 9 Periféricos de Entrada

Laboratorio 5: Tarjeta de Desarrollo Spartan-3

MICROPROCESADORES I ELECTRONICA DIGITAL III INTERFASE PROGRAMABLE A PERIFERICOS PPI 8255

Introducción a la Entrada/Salida

VOCABULARIO DEL HARDWARE. Docente Yeni Ávila

Controlador de Interrupciones (Versión programable) Manual de Usuario

Guía rápida para gestionar el puerto paralelo del PC

Controlador Programable de Interrupciones i8259

Matías Zabaljáuregui

UNIDAD 3 ARQUITECTURA DEL Z80. Microprocesadores Otoño 2011

TEMA 1: Concepto de ordenador

REPORTE DE LECTURA SECUENCIA DE ARRANQUE DEL ROUTER

Mapas de Memoria y E/S

MODBus RTU en los registradores CAMRegis

ESTRUCTURA DE COMPUTADORES I (Capítulo 16:El Teclado) 1/5 16-EL TECLADO

APUNTE DEL 8155 ELECTRÓNICA DIGITAL III

Informática Industrial (II)

MIPS: Modelo de programación. (I Parte)

Ensamblador. Interrupciones. Dentro de una computadora existen dos clases de interrupciones:

6. Entrada y Salida Explicación de la interfaz entre el computador y el mundo exterior.

Contenido TEMA 2 ENTRADA / SALIDA. Interfaz HW: buses del sistema. Interfaz HW de E/S

Modulo LCD MODULO LCD

INSTRUMENTACIÓN AVANZADA Departamento de Ingeniería Eléctrica y Electromecánica Facultad de Ingeniería Universidad Nacional de Mar del Plata

CICLOS DEL PROCESADOR

CONTROLADORA PARA PIXELS CONPIX

NT 3 PROGRAMACION ON-LINE DE TODA LA FAMILIA APPCON

Práctica 5MODBUS: Bus Modbus

FlexCage. User Manual MB975SP-B. 5 HDD Slots in 3 Device Bay. Tray-Less SATA Backplane Module

ITT-327-T Microprocesadores

LCDsalfanuméricos. La mayoría están basados en el controlador Hitachi HD44780

MODBUS CONTENIDO. Protocolo de Comunicaciones MODBUS. Introducción Estructura de la Red MODBUS Características del Protocolo Aplicaciones Referencias

Arquitectura de Computadores II Clase #3

RC702. Guía de Configuración Rápida

Contenido. Sistemas de Entrada/Salida. Categorias de los Dispositivos de Entrada/Salida. Categorias de los Dispositivos de Entrada/Salida

Procedimientos para el Montaje de Equipos Microinformáticos.

SISTEMAS ELECTRÓNICOS DIGITALES

Centre: Escola Politècnica Superior. Estudis: Enginyeria Tècnica en Informàtica de Gestió. Assignatura: Administració i Utilització de Xarxes

El temporizador /contador Intel 8254

TEMA 7: Ficheros. TEMA 7: Ficheros Concepto de fichero

SelectRAM+memory Bloques de memoria RAM En las FPGAs Spartan IIE

Electrónica Digital II

SISTEMAS BASADOS EN MICROPROCESADORES

PRÁCTICA 1: INTRODUCCIÓN AL ROUTER

Introducción a BMP085 Versión 1.0

Entradas y Salidas. Componentes básicos de una PC

0-31 : caracteres de control : carac. Comunes : especiales (flechas, símbolos) y particulares (ñ)

GUÍA RÁPIDA CONFIGURACIÓN PLUGIN Y DRIVER KRONOS NET

Periféricos Interfaces y Buses

Figura 2. Formato de un dato serie síncrono.

Manejo de Entrada-Salida. Arquitectura de Computadoras

tema 6: pulsadores, teclados, ratones

V.- V.-El El manejo de de las las Interrupciones

PicController. Manual de usuario. Raquel Sánchez Díaz

Comunicación entre HMI y 2 Variadores de frecuencia VFD-EL (sin PLC intermedio) mediante el protocolo MODBUSS

ESTRUCTURA FÍSICA DEL µp 8086

Los bloques DLL (Figura A.1) externos permiten al usuario escribir su propio código y

1-Componentes Físicos y Lógicos de un Ordenador.

Tema: Manejo del Puerto Serie con LabView

El ordenador. Codificación binaria. Código ASCII

Manejo de Entrada-Salida. Arquitectura de Computadoras

Estructura de un Ordenador

Estructura del tema. Introducción Arranque de un PC. BIOS Procedimiento de arranque Configuración y actualización de la BIOS

BIOS (Basic I/O System) Ing. Víctor Valencia PNFSI - Arquitectura del Computador III

PIC MICRO ESTUDIO Reloj en tiempo real RTCU2 Clave: 719

Latches, flipflops y registros

28/09/2012. Interfaz con Dispositivos de Salida. Interfaz con Dispositivos de Entrada. Port Mapped. Memory mapped. Interfaz con Dispositivos I/O

Redes de Computadoras Septiembre de Teoría y problemas (75 %).

MICROCONTROLADORES PIC

Entrada/Salida. Nano Semelman Maximiliano Geier Maximiliano Sacco. Sistemas Operativos, 2c DC - FCEyN - UBA

(7) Unidad 7. Buses básicos de la arquitectura 80x86 SISTEMAS BASADOS EN MICROPROCESADORES. Grado en Ingeniería Informática EPS - UAM

Curso sobre Microcontroladores Familia HC9S08 de Freescale

ESTRUCTURA BÁSICA DE UN ORDENADOR

MIKROTIK ROUTER. Guía Nº2 Configuraciones Básicas

Bloque IV: El nivel de red. Tema 12: ICMP

INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE INGENIERIA MECANICA Y ELECTRICA INGENIERIA EN COMUNICACIONES Y ELECTRÓNICA ACADEMIA DE COMPUTACIÓN

Sist s em e a m s s O per e ativos o. s Unidad V Entrada Sali l d i a.

CONTROL DE UN VENTILADOR POR PUERTO PARALELO

(1) Unidad 1. Sistemas Digitales Basados en Microprocesador SISTEMAS BASADOS EN MICROPROCESADORES. Grado en Ingeniería Informática EPS - UAM

COMUNICACIÓN SERIAL FAMILIA DSP56800: Síncronas y Asíncronas CAPÍTULO VII

Comunicación MM4 - USS - S7-200

El módulo LCD Ejemplos de funcionamiento

IMPLEMENTACIÓN DE UN PUENTE SERIE USANDO CONVERTIDORES SERIE RED.

TEMA 6.- INTERFACES PARA DISCOS DUROS. nexo de conexión que facilita la comunicación entre dos dispositivos

LA NORMA IEEE Pin-out del bus GPIB

Motores Automatización Energía Transmisión & Distribución Pinturas. Modbus RTU SRW 01. Manual del Usuario

Tema: MAPAS DE MEMORIA: LÓGICA DE SELECCIÓN, GESTIÓN Y ORDENACIÓN DE LA MEMORIA. J. Luis Lázaro, J. Jesús García "MAPA DE MEMORIA" 0

SPI. Teoría y Aplicaciones. INGENIERIA EN MICROCONTROLADORES Protocolo SPI( Serial Peripherical Interface) Protocolo

El protocolo MODBUS-RTU es un formato de transmisión en serie de datos, utilizado extensamente en las

(SPI) Módulo Serial Sincrónico

Router Teldat. Agente SNMP

Lenguaje binario. Código ASCII. Medidas de la información

Teclado con protocolo de comunicación universal aplicado a máquina de CNC

4469 es / c. Ready. Run Start. Stop LCL RMT. Reset. usuario final MÓDULO USB. Solución comunicación. Guía del usuario

Pines de entrada/salida (I/O) de propósito general. Mediante ellos, el micro PIC puede monitorizar y controlar otros dispositivos.

Vocabulario: Realidades 2B

EDU_NA005 Mouse PS/2 Emulado por el EDUKIT08...

Curso sobre Microcontroladores Familia HC9S08 de Freescale

Tema 10: Transmisión de datos

Transcripción:

Manejo del 8042 El manejo del controlador de teclado 8042 puede consultarse en la bibliografía, referencias [5], [22], [23] y, especialmente, [27]. A continuación se resume toda la información que se considera relevante. Registro de Estado (Status Register) Los flags de estado del 8042 se leen del puerto 0x64. Contienen información de errores, información de estado e indican si hay o no hay datos en los buffers de salida o entrada. Los flags de estado se definen en la tabla 1 MSB LSB PERR TO MOBF INH A2 SYS IBF OBF Tabla 1: Flags de estado del status register (0x64) en modo PS/2 OBF (Output Buffer Flag). Indica cuándo se puede leer del Output Buffer. 0 : Output Buffer vacío: no hay entrada no leída en 0x60. 1 : Output Buffer lleno: se puede leer una nueva entrada de 0x60. IBF (Input Buffer Flag). Indica cuándo se puede escribir en el Input Buffer. 0 : Input Buffer vacío: se puede escribir en 0x60. 1 : Input Buffer lleno: no escribir aún en 0x60. SYS (System Flag): este flag es leído en el auto-test de encendido (POST (Power-On Self Test)). 0 : valor Power-up : el sistema está en reseteo de encendido (Power-On Reset). 1 : BAT (Basic Assurance Test) recibido: el sistema ha sido inicializado correctamente. A2 (Address Line A2) o Command/Data: usado internamente por el 8042. 0 : A2 = 0: el puerto 0x60 (Input Buffer) fue el último escrito. 1 : A2 = 1: el puerto 0x64 (Control Register) fue el último escrito. INH (Inhibit Flag): Indica si la comunicación con el teclado/ratón está o no inhibida (es como desconectar el dispositivo). 0 : teclado/ratón inhibido. 1 : teclado/ratón no inhibido. 1

MOBF (Mouse Output Buffer Full): Indica si el último byte recibido provenía del teclado o del ratón. Este flag solo es relevante en dispositivos PS/2. 0 : si el dato proviene del teclado. 1 : si el dato proviene del ratón. TO (Timeout): Indica si ha ocurrido un timeout en el protocolo de comunicación host dispositivo. 0 : no ha ocurrido ningún timeout. 1 : ha habido un timeout. PERR (Parity Error): Indica si ha habido un error en la comunicación que haya generado un error de paridad (posiblemente por conexión ruidosa o loosy ); 0 : No ha habido error. Paridad impar recibida y respuesta a comando apropiada. 1 : Error de paridad. Paridad par recibida o 0xFE (comando Resend ) recibido como respuesta. Por ejemplo, si leemos de 0x64 el status register y obtenemos el valor 14h (00010100b) esto indicaría que la comunicación con el teclado/ratón no está inhibida (INH = 1) y que el 8042 ha completado con éxito su auto-test (BAT) al arrancar (SYS = 1). Comportamiento de los flags OBF e IBF Durante el desarrollo del driver ha sido necesario comprobar el funcionamiento de estos dos flags, fundamentales para gestionar adecuadamente todas las operaciones relacionadas con el ratón. Las conclusiones de su comportamiento han sido las siguientes: El flag IBF: Se pone a 1 cuando enviamos un comando al controlador escribiendo en 0x64. Se pone a 1 cuando escribimos un byte en 0x60. Se pone a 0 cuando se haya completado la transacción correspondiente (debemos esperar): El flag OBF: Comando enviado al controlador o bien al teclado/ratón; Command Byte actualizado. No se pone a 1 cuando enviamos un comando a 0x64. Se pone a 1 cuando el teclado/ratón envía un byte. Se pone a 0 inmediatamente después de leer el Output Buffer. No hay que realizar espera. Lectura de la entrada del ratón Cuando el 8042 recibe un byte del ratón (o del teclado) lo pone en el Output Buffer, el flag OBF del registro de estado se pone a 1 y se aserta la línea de interrupción IRQ 12 1 (o IRQ 1 en el caso del teclado). Dependiendo de quién haya enviado el dato el flag MOBF será 1 ó 0. Además, el 8042 inhibe posteriores envíos del ratón (poniendo la señal CLK de 1 Este es el número de interrupción más frecuentemente asociado al ratón PS/2. Para más seguridad, puede consultarse el BIOS del computador o el manual de la placa. 2

reloj en el bus a nivel bajo) de manera que ningún otro byte se recibirá hasta que se vacíe el Output Buffer. Si la línea de interrupción IRQ 12 está activa, entrará en juego la rutina de atención a la interrupción asociada (que forma parte del driver). Cuando se haya leído del puerto 0x60 el byte enviado, el 8042 des-aserta la IRQ 12 y resetea el flag OBF. El byte enviado por el ratón (o el scan code enviado por el teclado) es procesado después por el driver. Lectura por encuesta Aunque no es lo normal, si deseásemos prescindir de la rutina de atención a la interrupción y gestionar la entrada/salida por encuesta, tendríamos dos posibilidades. En la primera debería sondearse el controlador de teclado. Para ello, habría que desactivar el flag de interrupción correspondiente al teclado o ratón en el Command Byte (lo veremos en breve), y sondear periódicamente el flag OBF (leyendo el registro de estado en el puerto 0x64). Cuando el OBF se ponga a valor 1 entonces habrá que comprobar el flag MOBF para ver si el dato provenía del teclado o del ratón y posteriormente leer del puerto 0x60. Otra forma de realizar la encuesta sería utilizando uno de los comandos estándar del ratón PS/2 (el comando Read Data (0xEB)). Envío de datos al ratón Cuando escribimos en el buffer de entrada del 8042 (vía puerto 0x60) el controlador pone a valor 1 el flag IBF hasta que envía el dato al teclado/ratón. En ese momento el flag IBF vuelve a valer 0 y el 8042 esperará una respuesta del teclado/ratón. Si el teclado/ratón no envía un ACK o no genera una respuesta en un cierto intervalo de tiempo, el flag de timeout pasará a valer 1. Si se lee un bit de paridad incorrecto, el 8042 enviará el comando Resend (0xFE) al teclado/ratón. Si éste continúa enviando bytes erróneos, se pone a 1 el flag de error de paridad en el registro de estado. Si no hay errores, el byte de respuesta se pone en el buffer de salida, el flag OBF se pone a 1 y se activa la IRQ 1/ IRQ 12, llamando al driver del teclado/ratón como ya vimos. Comandos del controlador de teclado 8042 Los comandos se le envían al controlador de teclado escribiendo en el puerto 0x64. Los parámetros del comando (si es que los necesita) se escriben en el puerto 0x60 después de que el comando haya sido enviado. Los resultados se devuelven en el puerto 0x60, de donde han de leerse. Existen dos comandos especiales que se le pueden enviar al 8042: el comando 0x20 (Read Command Byte) y el 0x60 (Write Command Byte). El command byte es un byte interno al 8042 que tiene el significado que puede verse en la figura 1 y en la tabla 2: MSB LSB XLAT EN2 EN SYS INT2 INT Tabla 2: Command Byte en modo PS/2 compatible 3

INT (Keyboard Interrupt). Si está a 1 se genera la IRQ 1 si hay datos disponibles del teclado en el Output Buffer. 0 : Interrupión deshabilitada. 1 : Interrupción habilitada. INT2 (Mouse Interrupt). Si está a 1 se genera la IRQ 12 si hay datos disponibles del ratón en el Output Buffer. 0 : Interrupción deshabilitada. 1 : Interrupción habilitada. SYS (System Flag). Usado para poner a 1 o a 0 el flag SYS del status register. 0 : valor Power-on. Le dice a POST que realice el test/inicio de arranque. 1 : BAT (Basic Assurance Test) recibido. Le dice a POST que realice el test/inicio warm boot (arranque en caliente). EN (Disable Keyboard). Deshabilita/habilita la interfaz con el teclado. 0 : Habilita la interfaz de teclado. 1 : Deshabilita la interfaz de teclado. EN 2(Disable Mouse). Deshabilita/habilita la interfaz con el ratón. 0 : Habilita la interfaz de ratón. 1 : Deshabilita la interfaz de ratón. XLAT (Translate Scan Codes). Habilita/deshabilita la traducción a set 1 de los scan codes. 0 (traducción deshabilitada). Los datos aparecen en el buffer de salida exactamente como vienen del teclado. 1 (traducción habilitada). Los scan codes se traducen a set 1 antes de ponerlos en el buffer de salida. Keyboard interrupt (1 = enabled, 0= disabled) Mouse device interrupt (1 = enabled, 0 = disabled) System Flag (1 = self test passed, 0 = failed) PC/AT inhibit override (1 = enabled always) Must be zero on PS/2 systems Keyboard disable (1 = disable keyboard, 0 = no action) PC/AT keyboard enable (1 = enable keyboard, 0 = no action) PS/2 mouse disable (1 = disable, 0 = no action) PC Compatibility mode (1 = translate kbd codes to PC scan codes) Must be zero. Figura 1: Command Byte del 8042 (ver comandos 0x20 y 0x60) De esta forma el command byte puede ser leído y escrito directamente mediante los comandos Read Command Byte (0x20) y Write Command Byte (0x60), respectivamente. El conjunto de los comandos aceptados por el 8042 se detalla a continuación (ver [5]): 4

0x20 Transmit keyboard controller s command byte to system as a scan code at port 60h. 0x60 The next byte written to port 60h will be stored in the keyboard controller s command byte. 0xA4 Test if a password is installed (PS/2 only). Result comes back in port 60h. 0FAh means a password is installed, 0F1h means no password. 0xA5 Transmit password (PS/2 only). Starts receipt of password. The next sequence of scan codes written to port 60h, ending with a zero byte, are the new password. 0xA6 Password match. Characters from the keyboard are compared to password until a match occurs. 0xA7 Disable mouse device (PS/2 only). Identical to setting bit five of the command byte. 0xA8 Enable mouse device (PS/2 only). Identical to clearing bit five of the command byte. 0xA9 Test mouse device. Returns 0 if okay, 1 or 2 if there is a stuck clock, 3 or 4 if there is a stuck data line. Results come back in port 60h. 0xAA Initiates self-test. Returns 55h in port 60h if successful. 0xAB Keyboard interface test. Tests the keyboard interface. Returns 0 if okay, 1 or 2 if there is a stuck clock, 3 or 4 if there is a stuck data line. Results come back in port 60h. 0xAC Diagnostic. Returns 16 bytes from the keyboard s microcontroller chip. Not available on PS/2 systems. 0xAD Disable keyboard. Same operation as setting bit four of the command register. 0xAE Enable keyboard. Same operation as clearing bit four of the command register. 0xC0 Read keyboard input port to port 60h. This input port contains the following values: bit 7: Keyboard inhibit keyswitch (0 = inhibit, 1 = enabled). bit 6: Display switch (0=color, 1=mono). bit 5: Manufacturing jumper. bit 4: System board RAM (always 1). bits 0-3: undefined. 0xC1 Copy input port (above) bits 0-3 to status bits 4-7. (PS/2 only) 0xC2 Copy input pot (above) bits 4-7 to status port bits 4-7. (PS/2 only). 0xD0 Copy microcontroller output port value to port 60h (see definition below). 0xD1 Write the next data byte written to port 60h to the microcontroller output port. This port has the following definition: bit 7: Keyboard data. bit 6: Keyboard clock. bit 5: Input Buffer empty flag. bit 4: Output Buffer full flag. bit 3: Undefined. bit 2: Undefined. bit 1: Gate A20 line. bit 0: System reset (if zero). Note: writing a zero to bit zero will reset the machine. Writing a one to bit one combines address lines 19 and 20 on the PC s address bus. 0xD2 Write keyboard buffer. The keyboard controller returns the next value sent to port 60h as though a keypress produced that value. (PS/2 only). 0xD3 Write mouse buffer. The keyboard controller returns the next value sent to port 60h as though a mouse operation produced that value. (PS/2 only). 0xD4 Writes the next data byte (60h) to the mouse (auxiliary) device. (PS/2 only). 0xE0 Read test inputs. Returns in port 60h the status of the keyboard serial lines. Bit zero contains the keyboard clock input, bit one contains the keyboard data input. 0xFx Pulse output port (see definition for D1). Bits 0-3 of the keyboard controller command byte are pulsed onto the output port. Resets the system if bit zero is a zero. 5