La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Arquitectura de PCs El BIOS. Introducción Un PC tiene parámetros específicos para el acceso a dispositivos periféricos: por ejemplo, acceso a disco duro.

Presentaciones similares


Presentación del tema: "Arquitectura de PCs El BIOS. Introducción Un PC tiene parámetros específicos para el acceso a dispositivos periféricos: por ejemplo, acceso a disco duro."— Transcripción de la presentación:

1 Arquitectura de PCs El BIOS

2 Introducción Un PC tiene parámetros específicos para el acceso a dispositivos periféricos: por ejemplo, acceso a disco duro depende si es AT o XT El BIOS (Basic Input Output System) es un conjunto de rutinas en ROM, con 2 funciones: permitir acceso a dispositivos periféricos por una interfaz estándar: servicios de BIOS tomar control del PC tras el inicio: POST (Power On Self Test) Direcciones ROM de BIOS: F0000H – FFFFFH en el espacio de memoria principal Servicios BIOS se acceden por interrupciones de software

3 Interrupción del 8088: evento de hardware o software que provoca la ejecución de una rutina de atención a la interrupción Cada interrupción se refiere por un número El 8088 permite 256 interrupciones, 0..255 Cada interrupción tiene un vector de interrupción que define segmento y offset de la rutina de atención a la interrupción Interrupciones 8088

4 Dirección física del vector de interrupción N: 4xN en espacio de memoria Por tanto, 256 vectores de interrupción ocupan direcciones físicas 0..1023 en memoria: tabla de interrupciones Tabla de interrupciones reside en RAM: cada vector de interrupción debe ser iniciado y se puede modificar Interrupciones 8088 00000H VECTOR INT 0 00004H VECTOR INT 1 VECTOR INT 255 FFFFFH 00400H 003FCH Memoria principal Tabla de interrupciones

5 Interrupciones 8088 Interrupciones de hardware: provocadas por cambios en patas INTR (IRQ) o NMI Interrupciones del microprocesador o “abortos”: ejecutadas automáticamente por la CPU; por ejemplo división por 0 Interrupciones de software o “trampas”: se invocan directamente desde programa, por instrucción ASM “INT N” que ejecuta la rutina de atención a la interrupción N INT N Existen tres tipos de interrupciones: 16 interrupciones de hardware: - 15 enmascarables (IRQ) - 1 no enmascarable Asignación de las 256 interrupciones de 8088: 4 abortos 246 interrupciones de software

6 Ejemplo interrupción de hardware enmascarable: disco D15.. D0 INTR INTA Controlador de interrupciones programable IRQ15 IRQ14 IRQ0 IRQ1 Controlador de disco Vector de interrupción = 76H CPU BIOS inicia controlador de interrupciones programable de modo que: IRQ 0.. 7 generan interrupciones 08H.. 0FH IRQ 8.. 15 generan interrupciones 70H.. 77H Interrupciones 8088 00000H FFFFFH F0000H FB000H 001D8H 001D9H 001DAH 001DBH 00H B0H 00H F0H ROM BIOS 003FFH TABLA INT VECT 76H

7 Generalidades servicios BIOS Todos los servicios del BIOS se acceden por interrupciones de software: “interrupciones de BIOS” Los vectores de interrupción asociados apuntan a las rutinas de los servicios en ROM Este diseño permite: Acceder servicio BIOS sin necesidad de conocer la dirección de rutina del servicio Modificar rutinas de los servicios sin afectar programas que utilizan servicios

8 Generalidades servicios BIOS Por ejemplo, el BIOS de teclado se accede por la interrupción 16H, y tiene tres servicios 0, 1 y 2, especificados en el registro AH El servicio 0, devuelve en AX siguiente carácter ingresado en el teclado y lo consume del buffer de teclado Por ej. programa que lee siguiente carácter ingresado en teclado: mov ah,0;servicio 0 int 16h;bloquea programa hasta que ;el ingreso del siguiente ;carácter en el teclado pushax;salva carácter ingresado en la ;pila

9 Generalidades servicios BIOS INT 16H subservicio 0: CONTROLADOR DE TECLADO CPU IRQ1 00000H FFFFFH F0000H F6000H 00024H 00025H 00026H 00027H 00H 50H 00H F0H ROM BIOS 003FFH TABLA INT VECT 9H 00058H 00059H 00060H 00061H 00H 60H 00H F0H VECT 16H F5000H Atención IRQ1 Servicio 16h WRITE READ Programa principal: MOV AH,0 INT 16H PUSH AX Bucle hasta que (WRITE != READ) ES 60H 19H 19H – ‘p’ IRET Sube o baja? ¿SHIFT? BUFFER CIRCULAR... IRET WRITE READ...AX=19H’p’...

10 Generalidades servicios BIOS BIOS reserva interrupciones PC original especifica 12 interrupciones de BIOS en 5 grupos, entre ellos: 6 acceden a dispositivos periféricos 1 accede a RTC (real time clock) y a temporizador primario del sistema 2 modifican estado de la computadora Las variables de rutinas del BIOS residen en zona de memoria reservada desde dirección lineal 40:00h 5, 16 a 28, 72

11 Generalidades servicios BIOS Cada servicio BIOS tiene una interfaz estándar: parámetros en registros de propósito general, registros índice y ES organización jerárquica: Primer nivel: AH especifica el servicio Segundo nivel: otros registros especifican parámetros Resultados simples se devuelven en AX Banderas CY y/o ZF indican éxito o error de la operación

12 Convenciones servicios BIOS Convenciones para llamar a servicios BIOS: CS:IP se maneja como en toda interrupción DS y ES se preservan, excepto si aparecen de forma explícita en el resultado SS:SP se preserva el BIOS quita todo lo que añade a la pila el programa debe proveer de la pila de la rutina BIOS; no se especifican requerimientos de tamaño (en general no hay problema) No se garantiza preservación de AX, BX, CX, DX, SI, DI, FLAGS

13 Servicio BIOS de teclado Servicios del teclado: INT 16H, AH = servicio (0, 1, 2) Rutina de atención a la interrupción: - bajada de tecla: carga código ASCII y scan en buffer de teclado - bajada y subida: actualiza estado SHIFT (00417h) y ALT (00418h) Consume siguiente carácter del buffer y lo devuelve en AX, esperando en bucle infinito si no existe carácter disponible Servicios de teclado leen caracteres del buffer de teclado Operación Servicio 0 AL = código ASCII o 0 para F1, F2, etc., AH = código scan del sistema Indica si existe disponible carácter en bufferServicio 1 ZF=0 si existe, devolviendo carácter AX sin consumir; ZF=1 si no Devuelve estado de teclas SHIFT (00417H) en ALServicio 2 AL = insert, caps lock, num lock, etc.; bit = 1 indica activo

14 Servicio BIOS de video Servicios de video: INT 10H, AH = servicio (0, 1,.. 15). Curso: sólo modo texto Selecciona modo de video. Modos de texto: 0,1,2,3 (cga), 7 (ma). Combinan (color, blanco y negro) con resolución (40x25, 80x25) Servicio 0 AL = modo de video Una pantalla requiere: 2kB si resolución 40x25 4kB si resolución 80x25 00000H FFFFFH B8000H Página 0 4kB B9000H Página 1 4kB BA000H BB000H BC000H Página 2 Página 3 4kB 00000H FFFFFH B8000H Página 0 2kB B9000H BA000H BB000H BC000H Página 1 Página 2 Página 3 Página 4 Página 5 Página 6 Página 7 2kB B8800H B9800H BA800H BB800H Modos de 40x25 Modos de 80x25 RAM de video de cga de 16kB se divide en imágenes de pantalla: “páginas” “Página activa” es la página desplegada en pantalla Páginas Modos, páginas

15 Servicio BIOS de video Activa la página especificada (0..7 para 40x25, 0..3 para 80x25)Servicio 5 Modos, páginas AL = página Devuelve datos del modo de videoServicio 15 AL = modo de video, AH = nro. caracteres por línea, BH = página activa

16 Servicio BIOS de video Define tamaño del cursor. Línea 0 más abajo, 7 más arribaServicio 1 CH = comienzo, CL = fin. Línea 0 abajo, 7 arriba Cambia posición de cursor en página; (0,0) arriba a la izquierdaServicio 2 DH = fila, DL = columna, BH = página Lee posición y tamaño de cursor de páginaServicio 3 BH = página CH = comienzo, CL = fin, DH = fila, DL = columna Cursor

17 Servicio BIOS de video Devuelve carácter debajo de cursor en una páginaServicio 8 BH = página Lectura - Escritura AH = atributo, AL = carácter ASCII Escribe carácter y atributo debajo de cursor en un páginaServicio 9 AL = carácter, BL = atributo, CX = nro. de copias, BH = página Escribe carácter debajo de cursor y avanza la posición de cursor desplazando si es necesario Servicio 14 AL = carácter, BH =página

18 Servicio BIOS de video Desplazamientos Desplazamiento de ventana hacia arriba un número de líneas, agregando líneas en blanco (según atributo) en parte inferior Servicio 6 AL = nro. de líneas (0 blanquea ventana), CH = fila superior, DH = fila inferior, CL = columna izquierda, DL = columna derecha, BH = atributo de líneas agregadas Desplazamiento de ventana hacia abajo un número de líneas, agregando líneas en blanco (según atributo) en parte superior Servicio 7 AL = nro. de líneas (0 blanquea ventana), CH = fila superior, DH = fila inferior, CL = columna izquierda, DL = columna derecha, BH = atributo de líneas agregadas

19 Servicio BIOS de video Desplazamiento hacia arriba de pantalla: 1 2 3 4 5 6 7 8 9 10 11 12 14 15 16 17 18 19 20 21 22 23 24 25 2 3 4 5 6 7 8 9 10 11 12 14 15 16 17 18 19 20 21 22 23 24 25 3 4 5 6 7 8 9 10 11 12 14 15 16 17 18 19 20 21 22 23 24 25 4 5 6 7 8 9 10 11 12 14 15 16 17 18 19 20 21 22 23 24 25 Desplazamientos

20 Servicio BIOS de disco Servicios de disco: INT 13H, AH = servicio (0.. 5). Permiten acceso a todos los discos del sistema, independientemente del tipo Características interfaz BIOS de disco: - Datos organizados en bloques de 512B denominados sectores, referidos por coordenadas CHS - DL especifica dispositivos: MSB = 1 disco (>=80h), MSB = 0 disquete Coordenadas CHS BIOS análogas a CHS de controlador de disco, salvo que difieren tamaños de campos -Interfaz a BIOS : CHS lógica -Interfaz a controlador: CHS física CHS CHS lógica102425664 CHS física6553616256 Tamaño máximo de disco por CHS lógica = 2 24 x 512B = 8GB Tamaño máximo de disco accesible: 1024 x 16 x 64 x 512B = 512MB !!! Para apalear problema, BIOS incluyen traducción CHS lógica a física

21 Servicio BIOS de disco Reset y Recalibrate (cabezal lector a cilindro 0) de todos los controladores Servicio 0 Devuelve estado de última operación de disco (40:74H) o disquete (40:41H) Servicio 1 DL = dispositivo AH = estado de última operación Generales Verifica contenido de sectores de disco o disquete, comparando CRC calculado contra CRC de sector y verificando ID del sector Servicio 4 AL = nro. de sectores CF = 1 error (AH = código error), CF = 0 sectores correctos (AH = 0, AL = nro. de sectores verificados) CH = C.7...C.0CL = C.9,C.8,S.5..S.0 DL = dispositivoDH = H

22 Servicio BIOS de disco Lectura - Escritura Lee sectores de una pista de disco o disquete a memoriaServicio 2 AL = nro. de sectores CF = 1 error (AH = código error), CF = 0 sectores correctos (AH = 0, AL = nro. de sectores leídos) CH = C.7...C.0CL = C.9,C.8,S.5..S.0 DL = dispositivoDH = HES:BX = buffer Escribe sectores a una pista de disco o disquete de memoriaServicio 3 AL = nro. de sectores CF = 1 error (AH = código error), CF = 0 sectores correctos (AH = 0, AL = nro. de sectores escritos) CH = C.7...C.0CL = C.9,C.8,S.5..S.0 DL = dispositivoDH = HES:BX = buffer Los servicios 2 y 3 verifican los bytes de ID de cada sector leído o escrito

23 Servicio BIOS de disco Formato Formatea pista de disco duro o disqueteServicio 5 Servicio 5 para disquete Escribe arreglo de datos de ID de cada sector (C, H, R, N) desde comienzo de pista AL = nro. de sectoresCH = C.7...C.0 DL = dispositivo DH = H ES:BX = arreglo de IDs (largo 4xAL) CF = 1 error (AH = código error), CF = 0 sectores correctos (AH = 0, AL = nro. de sectores escritos) CHRNCHRNCHRN 0 112 0 122 0 192 Ej. pista de 9 sectores de 512B (N=2) sin interleaving

24 Servicio BIOS de disco Formato Servicio 5 para disco duro Escribe arreglo de datos a ID de cada sector del disco. Datos del arreglo: T = tipo (0 = bien, 80H mal); R = nro. AL = si PC<AT, paso de interleaving DL = dispositivo DH = H ES:BX = arreglo de IDs (largo 2xCL) CF = 1 error (AH = código error), CF = 0 sectores correctos (AH = 0, AL = nro. de sectores formateados) Ej. pista de 17 sectores, interleaving = 2 CL = nro. de sectores

25 Servicio BIOS de hora del día Servicios de fecha y hora: INT 1AH, AH = servicio (0, 1, 2, 3, 4, 5) Lee cuenta de reloj (mantenida por IRQ0 en dirección 40:6CH)Servicio 0 AL = transcurrieron más de 24h desde última lectura Inicializa cuenta de reloj (IRQ0)Servicio 1 Hora del día se mantiene de dos formas: - RTC del chip CMOS - Variable del BIOS mantenida por interrupción de temporizador primario del sistema (Timer 0 -> IRQ0) Operación CX = cuenta highDX = cuenta low CX = cuenta highDX = cuenta low Cuenta de reloj (IRQ0)

26 Servicio BIOS de hora del día Manejo RTC Devuelve hora actual del RTC, en código BCDServicio 2 CF = 0, lectura exitosa; CF = 1 error de lectura Escribe hora (en código BCD) a RTCServicio 3 CH = hora (0..23) CL = min (0..59)DH = seg (0..59) CL = hora (0..59)DH = hora (0..59) Lectura de la fecha del RTC, en código BCDServicio 4 CH = siglo (19, 20)CL = año (0..99) DL = día (1..31)DH = mes (1..12) Escritura de la fecha (en código BCD) a RTCServicio 5 CH = siglo (19, 20)CL = año (0..99) DL = día (1..31)DH = mes (1..12)

27 Inicio del PC al encendido Tras el encendido la primer instrucción ejecutada por el 8088 está en la dirección física FFFF0H del espacio de memoria Dirección FFFF0H pertenece al rango de ROM del BIOS Instrucción en FFFF0H es un salto incondicional a dirección de la ROM BIOS que comienza el POST (Power On Self Test)

28 El POST Operaciones principales (orden puede cambiar): Inicia vectores de interrupciones Inicia temporizador de sistema, PICs, DMA Inicia dispositivos y controladores del sistema (teclado, video, disquetera, disco duro, etc.) Verifica memoria y determina tamaño Ejecuta rutina que carga sector de inicio

29 El POST POST inicia los vectores de interrupción en dos etapas: Primera etapa: inicia los vectores de interrupción apuntando a instrucción RETI Segunda etapa: al inicio de cada dispositivo (teclado, video, ratón, disquetera, etc.), inicia vectores de interrupción asociados: Vector de rutina de atención de la interrupción del dispositivo Vector de rutina del BIOS para el acceso al dispositivo

30 El POST Cadenas de vectores de interrupción: existen servicios BIOS que acceden distintos dispositivos físicos Por ej. servicio de disco (INT 13H) accede a disco y disquete. Cada uno de los dispositivos tiene su rutina independiente, por lo que INT 13H apunta a una cadena de rutinas de BIOS La lista se construye en el POST: la rutina de inicio de cada dispositivo apunta el vector 13H a la rutina específica del dispositivo y salva el vector anterior en una variable de la rutina

31 El POST Ejemplo de cadenas de vectores de interrupción: secuencia de inicio en un sistema con disquete y disco duro 00000H FFFFFH F0000H 0004CH FCOO:0000H ROM BIOS 003FFH VECT 13H RETI FFFF0H JMP F000:0000 POST FE000H FD000H FC000H Servicio 13h disco Servicio 13h disquete Tabla de interrupciones INICIO DISQUETEINICIO VECTORES A RETIINICIO DISCO VECTOR PREVIO FCOO:0000H VECTOR PREVIO FDOO:0000H FDOO:0000HFEOO:0000H

32 El POST Previo al inicio del controlador de video, la detección de una falla resulta en la emisión de beeps según especificación del fabricante Iniciado el controlador de video, la detección de una falla resulta en la impresión de un mensaje de error en pantalla

33 El POST Ejecución de rutina que carga el sector de inicio: Determina dispositivo (disco) primario de arranque por la configuración del BIOS (en memoria permanente CMOS del RTC) Carga sector CHS 0,0,1 del dispositivo primario de arranque en dirección 0000:7C00H Verifica que el sector cargado contiene la firma de sector de inicio: AA55H en la palabra final del sector Ejecuta salto incondicional a 0000:7C00H, pasando el control al programa del sector de inicio

34 El POST Programa en CHS = 001 del dispositivo de arranque: Inicia carga de sistema operativo en memoria Utiliza servicios del BIOS para: Transferir datos desde disco Imprimir mensajes en pantalla Recibir comandos desde el teclado


Descargar ppt "Arquitectura de PCs El BIOS. Introducción Un PC tiene parámetros específicos para el acceso a dispositivos periféricos: por ejemplo, acceso a disco duro."

Presentaciones similares


Anuncios Google