Interfaz Software de PCI BIOS

Anuncio
Interfaz Software de PCI
PCI suministra una BIOS que permite manejar los recursos del bus con independencia
de la plataforma en la que esté integrado. Este conjunto de rutinas permiten:
- localizar dispositivos.
- generar ciclos especiales.
- acceder al espacio de configuración.
Con objeto de adaptarse a los PC manteniendo la compatibilidad, se suministra una
versión ejecutable en Real Mode (16 bits), que también puede ejecutarse en el Modo
Virtual (Modo Real en Modo Protegido) Y una versión ejecutable en Modo Protegido.
(32 bits)
La forma de acceder a las rutinas en el modo real es a través de la interrupción 1Ah.
Esta interrupción ya está siendo utilizada por la BIOS: permite asignar y obtener la
hora real y la fecha, así como generar un sonido utilizando varias fuentes. Como
servicio de BIOS del Sistema admite un número de funciones (0..0D, 80h) y para
acceder a los servicios de la BIOS de PCI es necesario utilizar una función distinta, en
concreto: B1h. La forma de invocar a los servicios de PCI sería entonces:
AH=B1h
AL= función a invocar
INT 1Ah
Tabla de servicios. pag 1185
Como exigencias a la invocación en el modo real es necesario preparar una pila de 1024
bytes como mínimo antes de la llamada.
Alternativamente, en el modo Virtual, se sugiere utilizar una invocación alternativa
consistente en simular la invocación a la interrupción software:
-
Guardar en la pila el registro de flags
Realizar una llamada a la rutina lejana situada en FFE6Eh
o CS=F000h, DS=F000h, IP=FE6Eh
En el modo protegido las cosas son un poco más complicadas porque una Bios de PC
estándar no soportaba habitualmente la ejecución en 32 bits. Posteriores extensiones de
la BIOS han incorporado software que proporciona los servicios de BIOS a una
aplicación ejecutándose en modo protegido. Antes de poder realizar una invocación a un
servicio de BIOS hay primero que comprobar si existe el software de 32 bits que la
suministre. Para ello la Bios dispone de una BIOS Service Directory routine, que se
encarga de mantener una tabla de Servicios de BIOS en 32 bits. Se llamará a esta rutina
preguntándole si existen los servicios PCI en 32 bits y si responde correctamente
devolverá el segmento y el desplazamiento correspondiente del punto de entrada a estos
servicios.
Descargar