| Artículos | 01 NOV 1995

Identificar dispositivos Plug and Play

Tags: Histórico
La BIOS Plug and Play (2ª parte)
Susana Galán.

Continuando la serie de artículos dedicada al estándar Plug and Play, vamos a explorar los diversos servicios disponibles para el programador que, sin duda alguna, le ayudarán a identificar el hardware instalado en el ordenador.

Desde que existen los ordenadores compatibles PC, uno de los más importantes quebraderos de cabeza a que los programadores han tenido que hacer frente ha sido la diversidad de hardware existente para dichos sistemas. Si bien es posible mediante software la detección de casi todo tipo de hardware, dicho método hacía imprescindible que el desarrollador dispusiera de la información técnica necesaria para saber cómo detectar cada tipo de dispositivo existente en el mercado.

Se hace imprescindible, por lo tanto, un estándar que ayude al programador a detectar los periféricos instalados en el sistema. Este vacío, hasta ahora existente en el mundo de los compatibles PC, es el que viene a llenar la BIOS Plug and Play.

Nodos Plug and Play

La especificación Plug and Play realiza una clara división entre aquellos dispositivos integrados en la placa base y los que, por otro lado, se encuentran conectados al sistema mediante ranuras de expansión, ya correspondan éstas a un bus ISA, PCI, VESA o cualquier otra arquitectura de bus que se encuentre actualmente disponible o que lo vaya estar en el futuro. Esto último es así ya que, al menos en teoría, la arquitectura Plug and Play es independiente del tipo de bus de que disponga la máquina.

Los dispositivos integrados en la placa base son representados, desde el punto de vista de la BIOS, mediante nodos. Por lo tanto, cada dispositivo tiene asignado un nodo cuyos datos se representan mediante la estructura que se muestra en la figura 1.

Para el control de estos dispositivos disponemos de tres funciones cuyos prototipos, en lenguaje C, son los indicados en la figura 2. Para realizar llamadas a estas tres funciones es necesario acceder a una rutina específica de la BIOS, para lo cual se utiliza la estructura de datos mediante la cual se detecta la presencia de la BIOS Plug and Play (consultar el ejemplar de PC World correspondiente al mes de Septiembre).

La primera de estas funciones, o función cero, devuelve al programa desde donde es llamada el número de nodos presentes en el sistema en la variable apuntada por NumeroNodos. Además de retornar el número de nodos esta función devuelve otra información importante: el tamaño máximo de un nodo (Tamaño). Como parámetro adicional se pasa a la función un selector mediante el cual la BIOS es capaz de realizar las modificaciones que sean necesarias, si es que lo son, en la zona de variables de la BIOS.

La función número uno es la encargada de retornar la información correspondiente a uno de los nodos identificados por la BIOS Plug and Play. Si solicitamos información del nodo número cero, la BIOS asume que nos referimos al primer nodo del sistema. Al retornar de esta función la variable Nodo contendrá el código del siguiente nodo o, si no hay más nodos, tendrá el valor 0xFF. La información acerca del nodo se deposita en una estructura, apuntada por Buffer, y cuya definición se puede observar en la figura número 1.

De los campos presentes en esta estructura uno de los más interesantes es el que contiene la información sobre el tipo de dispositivo. Este campo, con una longitud de tres bytes, indica en el primer byte un tipo de dispositivo base, en el segundo un sub-tipo de dispositivo y, en el tercero, se define la interfaz de programación del dispositivo.

La tercera de las funciones, o función 2, definidas en la BIOS Plug and Play se encarga de configurar los dispositivos instalados en la placa base. Mediante el parámetro que se pasa a la BIOS en el campo Ctrl se indica el método de configuración que se desea usar. En la tabla de la figura 3 se muestra la configuración de bits de dicho campo.

Mediante las tres funciones aquí enumeradas es posible hallar el número de dispositivos instalados en la placa base, obtener información sobre ellos y modificar su configuración si es que el hardware nos lo permite.

Notificación de sucesos

En el caso de ordenadores portátiles, y de sobremesa dotados de tarjetas PCMCIA, la especificación Plug and Play dispone de funciones mediante las cuales el sistema operativo es informado de los cambios que se producen en el sistema. Mediante esta funcionalidad es posible que el usuario desconecte del sistema una tarjeta PCMCIA, el sistema operativo tendrá notificación inmediata de este hecho y llevará a cabo las acciones precisas para reconfigurar el ordenador si esto fuera necesario.

Como ya se comentó en el anterior artículo de esta serie, existen dos métodos para la notificación de sucesos: mediante polling, o sondeo, y de forma asíncrona, usando una interrupción.

El sistema de notificación por sondeo se implementa mediante una palabra de control cuya dirección se específica en la estructura de datos que denota la presencia de la BIOS Plug and Play (consultar PC World de Septiembre). Cuando el bit cero de esta variable se pone a uno, se está indicando al sistema operativo que ha ocurrido un suceso que afecta a la configuración del sistema.

En el método asíncrono, es decir, por interrupción se define un nodo en el cual se indica al sistema operativo el nivel de la interrupción que se usa para la notificación y la dirección de un puerto de entrada/salida. Por lo tanto, el sistema operativo instalará una rutina de gestión de dicha interrupción en la cual se efectuará una lectura del puerto indicado por la BIOS Plug and Play. Si el bit cero de dicho puerto está a uno, la interrupción se generó debido a una modificación en la configuración de la máquina. En este caso, el sistema operativo debe poner este bit a cero mediante la correspondiente instrucción OUT y, a continuación, proceder a la reconfiguración del sistema.

El método asíncrono comentado anteriormente hace posible que la interrupción usada por la BIOS pueda ser compartida con un dispositivo hardware, ya que mediante el puerto que se indica es posible detectar si la interrupción se ha debido a una reconfiguración o, por el contrario, por el funcionamiento de algún dispositivo que usa dicha interrupción. En este último caso el sistema operativo tan sólo debe pasar el control del ordenador a la rutina correspondiente del controlador de dispositivo proporcionado por el fabricante del hardware. La implementación asíncrono anteriormente descrita es el método general descrito en el estándar Plug and Play. Se contempla también la posibilidad de realizar implementaciones que no cumplan esta norma, en cuyo caso el fabricante de hardware debe proporcionar el software necesario para ofrecer la funcionalidad descrita en los documentos que describen las funciones de la BIOS Plug and Play. En la tabla de la figura 4 se muestran los mensajes soportados por este sistema de notificación de sucesos.

Un ejemplo práctico

Si en el artículo anterior de esta breve serie se mostraba como detectar la BIOS Plug and Play desde DOS, en esta ocasión vamos a realizar dicha tarea desde una aplicación para Windows 3.1 y, además, vamos a mostrar la información suministrada por la BIOS acerca de los nodos presentes en la placa base.

El principal problema para acceder, desde Windows, a la BIOS Plug and Play es que es preciso efectuar lecturas y llamar a rutinas que están presentes en la ROM y que, por lo tanto, se encuentran presentes en una dirección de memoria física concreta. Para solventar este problema se hace uso de los servicios proporcionados por el host DPMI (Dos Protected Mode Interface) instalado en Windows.

El DPMI nos provee de funciones mediante las cuales podemos crear un selector, fijar la dirección base de dicho selector, su límite y sus derechos de acceso. Esto es todo lo que necesit

Contenidos recomendados...

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios
X

Uso de cookies

Esta web utiliza cookies técnicas, de personalización y análisis, propias y de terceros, para facilitarle la navegación de forma anónima y analizar estadísticas del uso de la web. Consideramos que si continúa navegando, acepta su uso. Obtener más información