Disponible la nueva versión "donationware" 7.3 de OrganiZATOR
Descubre un nuevo concepto en el manejo de la información.
La mejor ayuda para sobrevivir en la moderna jungla de datos la tienes aquí.

Tecnología del PC

[Home]  [Inicio]  [Índice]


4.2  El BIOS:  Chequeo y diagnóstico

§1  Inventario de recursos y comprobación del hardware

Una vez iniciado el programa contenido en la BIOS, su primera tarea consiste en un proceso de comprobación del hardware, denominado POST (Power-On Self Test).  El desarrollo exacto depende del fabricante, pero la secuencia de comprobaciones puede resumirse como sigue:

  • Chequeo de registros del procesador
  • Setear el temporizador 8253/8254 ( H2) para refresco de RAM.
  • Setear el acceso directo a memoria, DMA, para refresco de la RAM en el canal 0.
  • Verificar que el refresco es operativo (los primeros PC's usaban RAM dinámica).
  • Verificar la memoria RAM baja (0/16-64 KB).
  • Cargar los vectores de interrupción y asignarles espacio en la zona de memoria baja ( 4.3).
  • Inicializar los dispositivos de video y teclado.
  • Determinar el tamaño de la RAM adicional y comprobar su funcionamiento (el recuento que se ve en pantalla).  Si llegado a este punto existiera algún error en la memoria se mostraría un mensaje de error (el dispositivo de video ya está operativo).
  • Inicializar los puertos COM (comunicaciones serie), LPT (comunicaciones paralelo) y de juegos
  • Inicializar, en su caso, el sistema de disquete.
  • Inicializar el sistema de disco.
  • Explorar el área de usuario de la ROM.
  • Llamar el interruptor de bootstrap.

En caso de existir errores graves, la secuencia se detiene emitiendo una serie de pitidos (eventualmente algún mensaje en pantalla) que codifican el tipo de error encontrado.  Se adoptó el sistema de aviso mediante pitidos ("Beeps") cortos y largos, porque en estos tempranos momentos, inicio del sistema, no existe ningún dispositivo de salida utilizable.  Por ejemplo, pantalla.  La cantidad y calidad de los test de diagnóstico varía según el fabricante y versión del BIOS, sin que exista un estándar claro al respecto.  A título de ejemplo, los "Beep-codes" del BIOS IBM son los siguientes (c=corto, l=largo):

1c        Inicio del test [7]

2c        Error de inicialización

1l - 1c  Error de placa-base

1l - 2c  Error del adaptador de video

1l - 3c  Error del adaptador EGA/VGA    

3l         Error de la interfaz de teclado

999c    Error de fuente de alimentación

La comprobación del dispositivo de video incluye cargar y ejecuta la parte de BIOS incluida en el adaptador de video.  En esta fase, la mayoría de las adaptadoras modernas muestran en pantalla información sobre sí mismas.  Es por esta razón por la que, a veces, lo primero que se ve en pantalla es información sobre la propia controladora de video antes que ningún mensaje de la BIOS del sistema.

Nota:  Si se trata de un reinicio en caliente ("Hot boot"), que puede conseguirse con la combinación [Ctrl]+[Alt]+[Sup], la fase de comprobación POST se omite, y el proceso de carga sigue desde el siguiente punto.

§2  Carga de BIOSes específicas

Como veremos en el apartado correspondiente ( 4.4), una de las funciones de la BIOS consiste en proporcionar soporte para los dispositivos de E/S conectados, entre los que se encontraban la controladora de video, el teclado, el disquete, los puertos de comunicaciones serie y paralelo. Etc.  Por supuesto, las BIOS primitivas incluían soporte para los dispositivos que podían conectarse en aquellos sistemas.  Sin embargo, los diseñadores de IBM previeron que pudieran instalarse nuevos dispositivos que requiriesen rutinas específicas de E/S, por lo que dispusieron un mecanismo por el que, durante el reconocimiento inicial del sistema, la BIOS principal (instalada en la placa-base) pudiese identificar la existencia de otras BIOSes específicas en los dispositivos [8].  El sistema permite que, en caso de encontrarlas, puede cederles el control para que realicen sus propia tarea de diagnóstico, y a continuación carguen sus propios módulos de servicio junto con los de la BIOS principal.

Nota:  Además de cargar sus propias extensiones, el proceso incluye añadir y/o modificar los punteros cargados en la tabla de vectores de interrupción ( H2.4) para que señalen a las nuevas rutinas.

En realidad, el sistema, conocido como extensiones de la BIOS, permite que existan dos clases de extensiones:  unas, denominadas fijas, corresponderían a dispositivos especiales de E/S instalados en el sistema.  Otras, denominadas removibles, permitirían la instalación de cartuchos de software específico (algo que estuvo muy de moda en la época pre-PC).  Por ejemplo, se podía cargar un cartucho que contenía un intérprete de BASIC.  Se previno incluso la posibilidad de que un cartucho sustituyera completamente la BIOS principal tomando control completo sobre el sistema.

Así como la BIOS principal dispone de su propia zona de memoria, el segmento F de 64 KB, situado en la parte superior de la memoria ( 4.1), las extensiones disponen también de una zona de memoria estándar donde cargarse;  son los segmentos C, D y E (ver figura 1).  Cualquier dispositivo que necesite de espacio para sus propios servicios se sitúa en algún punto de esta zona procurando no entrar en conflicto con algún otro.  En concreto, los 128 KB de los segmentos D y E se reservaron para las extensiones removibles (cartuchos de software).

Entre los dispositivos que disponen de sus propias extensiones BIOS se encuentran los controladores de disco duro IDE/ATA, cuyas BIOS se encuentran en la zona C8000-CBFFFh;  los adaptadores gráficos EGA y sucesores, que utilizan un bloque de 32 KB en la zona C0000-C7FFFh.  Otros elementos que suelen contar con sus propias BIOSes son las tarjetas de red y las controladoras SCSI [1].  Estos módulos, y cualquier otro que sea encontrado, es cargado y ejecutado.

Para identificar si algún dispositivo conectado dispone de su propia BIOS, el POST realiza una exploración de la memoria utilizando dos convenciones:

  1. Si existe alguna memoria en los segmentos C, D y F.

  2. En caso afirmativo, si en las direcciones múltiplos de 2 KB. de dichos segmentos se encuentra la marca 55h y AAh  (01010101 - 10101010) en los dos primeros octetos [3].

En caso afirmativo el POST cede el control al módulo encontrado, que se ejecuta, carga los vectores de interrupción correspondientes a sus propias rutinas y finalmente devuelve el control al BIOS principal que sigue su verificación.

Generalmente la primera información en pantalla de la BIOS del sistema (después de los mensajes de la BIOS de la controladora de video), es una pantalla inicial con los créditos del fabricante; número de versión y fecha.  A continuación muestra un resumen de la configuración del sistema.

§3  Recapitulación

Como hemos visto, el BIOS realiza una especie de inventario del sistema y algunas pruebas para verificar que su funcionamiento es correcto.  En los PCs originales la especificación del hardware disponible se efectuaba mediante interruptores ("Jumpers") situados en la placa-base.  A partir de los ATs se dispone de una memoria permanente, accesible para el usuario (ROM del Sistema H2), donde está inventariado el hardware básico y su tipo [6].  La tendencia actual es el estándar PnP  ( 4);  si la BIOS lo soporta, es capaz por sí misma de detectar y configurar los dispositivos conectados, asignándoles los recursos necesarios y mostrando un mensaje en pantalla por cada uno instalado.

Las BIOS modernas, basándose en el tipo de memoria detectada, pueden establecer automáticamente su velocidad.  Algunas pueden detectar automáticamente los parámetros del tipo de disco duro y su forma de acceso.  También permitir la carga del sistema desde dispositivos distintos que los tradicionales disquete (unidad A:) o disco duro (unidad C:).  Por ejemplo, desde CD, dispositivo USB o incluso de la red local.

Una vez finalizado el inventario de recursos, comprobación del hardware, y mostrado el resumen de la configuración, se continúa con la carga del Sistema Operativo.  Aspecto éste que se detalla en el capítulo siguiente ( 4.3).

§4  Códigos POST

Además de los pitidos señalados en el párrafo anterior, en cada paso de verificación, el POST genera una serie de mensajes, denominados POST-codes, en forma de números colocados generalmente en un puerto E/S determinado ( 2.1). Suele ser el 80h, pero no hay acuerdo al respecto y depende del fabricante [4].  Para verlos es necesario disponer de un instrumento adecuado ("POST reader") en forma de una placa que se pincha en un zócalo libre del bus.  Tienen un par de LEDs de 7 segmentos, que indican el código hexadecimal del test que se inicia.  Además disponen de LEDs auxiliares que señalan si es correcto el estado de tensión en las líneas del bus de alimentación ( 2).  En la figura adjunta se muestra uno de estos dispositivos [5].  Para interpretar los códigos es necesario disponer de la referencia del fabricante para el modelo de BIOS que estemos comprobando.  El proceso de diagnóstico del POST se detiene en el momento de error, por lo que en el display aparece el número del test erróneo.

§5  Códigos de Diagnóstico

Pasadas las etapas iniciales, en las que quizás no existe ningún dispositivo disponible para mostrar mensajes de error, cuando se ha cargado y ejecutado la BIOS incluida en el adaptador de video, el POST está en condiciones de mostrar los posibles errores de diagnóstico mediante mensajes en la pantalla.  Estos mensajes son numéricos decimales conocidos como códigos de diagnóstico, que se componen de dos partes;  el código de test ("Test code") y el código de error ("Fault code").  El primero es un número indicativo del test en ejecución; el segundo es un número de dos dígitos que indica el tipo de error detectado por el test en cuestión.  El código 00 indica ausencia de error (el test correspondiente pasó Ok).  Por ejemplo, un código de diagnóstico 342 en un equipo IBM, indica error en el cable (código de error 42) durante la comprobación del teclado (código de test 03).

Cualquier código de error distinto de cero tiene que ser interpretado en función de la tabla de códigos de diagnóstico del fabricante de la placa o de la BIOS.  En estos casos, el proceso de inicio del sistema puede detenerse o continuar, dependiendo del tipo de error y de su localización.

A título de ejemplo se incluyen los códigos de test de IBM junto con el número de códigos de error posibles en cada uno de ellos.  Observe que muchos de ellos se refieren a dispositivos periféricos u opcionales, que con frecuencia disponen de sus propias BIOSes.


01xx    Placa-base ("System board").  57.

02xx    Memoria ("System memory").  19.

03xx    Teclado.  12.

04xx    Adaptador de pantalla monocromo.  5

05xx    Adaptador gráfico color.  10

06xx    Unida de disquete y adaptador.  47

07xx    Coprocesador matemático. 13.

09xx    Adaptador de puerto paralelo primario.  13.

10xx    Adaptador de puerto paralelo secundario. 13.

11xx    Dispositivo de comunicaciones (COM1).  54.

12xx    Dispositivo de comunicaciones (COM2).  54.

13xx    Puerto de juegos.  2.

14xx    Impresora matricial.  7.

15xx    Adaptador SDLD  36.

16xx    Adaptador DSEA.  43.

17xx    Adaptador de disco duro. 43.

18xx    Unidad de expansión de E/S.  13.

20xx    Adaptador de comunicaciones BSC.  43.

21xx    Adaptador BSC secundario. 43.

22xx    Adaptador cluster.  1.

23xx    Adaptador de monitor de plasma.  1.

24xx    Adaptador gráfico EGA. 12

25xx    Adaptador gráfico EGA secundario 12

26xx    Adaptador PC/370-M. 95

27xx    Adaptador emulador PC3277. 3

28xx    Adaptador emulador 3278/3279.  1

29xx    Impresora gráfica color. 1

30xx    Adaptador de red primario. 16

31xx    Adaptador de red secundario. 16

32xx    Pantalla 3270 PC/AT [2]. 1

33xx    Impresora (Compact printer). 1

35xx    Unidades Enhanced DESA. 6

36xx    GPIB IEEE 488.  58

37xx    Controlador SCSI.  1

38xx    Adaptador para adquisición de datos.  36

39xx    Adaptador gráfico PGA.  92

44xx    Pantalla 5279 y adaptador.  1

45xx    Adaptador GPIB IEEE 488.  1

46xx    Adaptador multiport ARTIC.  7

48xx    Modem interno primario. 1

49xx    Modem interno secundario. 1

50xx    PC convertible LCD.  12

51xx    PC convertible impresora portatil.  5

56xx    Sistema de comunicaciones financieras. 1

70xx    Códigos de error de la BIOS Phoenix.  3

71xx    VCA (Voice Communication Adapter).  11

73xx    Unidad de disquete. 16

74xx    Adaptador de pantalla 8514/A.  2

76xx    Adaptador de impresora de páginas. 4

84xx    Speech adapter. 1

85xx    Adaptador de memoria XMA.  1

86xx    Ratón PS/2.  7

89xx    Interfaz MIDI.  1

91xx    Disco óptico WORM.  1

96xx    Adaptador SCSI (caché W/32).  1

100xx    Adaptador multiprotocolo.  53

101xx    Modem interno 300/1200 bps.  27

104xx    Adaptador para dispositivos ESDI o MAC IDE. 35

107xx    Adaptador de unidad de disco externo. 1

112xx    Adaptador SCSI (cache WO 16 bit).  1

113xx    Adaptador SCSI.  1

129xx    Procesador (UCP).  17

149xx    Adaptador de pantalla de plasma P70, P75.  4

152xx    Adaptador de pantalla XGA.  1.

164xx    Cinta magnética interna 120 MB. 1

165xx    Unidad de cinta 6157.  2.

166xx    Adaptador de red Token-Ring primario.  1

167xx    Adaptador de red Token-Ring secundario. 1

180xx    Adaptador Wizard PS/2. 15.

185xx    Adaptador para pantalla japonesa DBCS.  1

194xx    Módulo de expansión de memoria.  1

200xx    Adaptador de imagen.  1

208xx    Dispositivos SCSI desconocidos. 1

209xx    Disco removible SCSI.  1

210xx    Disco SCSI fijo. 1

  Inicio.


[1]  SCSI  ("Small Computer System Interface").   Un tipo de controladora que se inserta en una ranura de la placa base de la que sale un bus (cable plano), en el que se pueden conectar hasta 8 dispositivos (siempre que la longitud no supere 3 m).  La controladora envía órdenes a los dispositivos conectados al bus y recibe los datos.  Por su parte, los dispositivos SCSI que pueden conectarse en el bus, discos u otros, periféricos (escaners, Etc.), integran en ellos mismos la electrónica necesaria que los independiza de la controladora y la abstrae de las características del dispositivo.

Existen variantes: SCSI, SCSI-1, SCSI-2, SCSI-3, Fast-SCSI, Wide-SCSI, Ultra-2 SCSI, Fiber Channel SCSI ...  Este interfaz es el que se considera mas profesional y de mayor rendimiento, por lo que se utiliza en equipos de altas prestaciones, puede alcanzar velocidades de 100 MB/s.  Actualmente (2005) empieza a perder protagonismo en favor de la interfaz Serial ATA (más detalles en 6.3).

[2]  El 3270 fue un modelo de PC AT de IBM bastante exótico.

[3]  A continuación de la "marca de incio" constituida por los caracteres 55h y AAh, existe un tercer byte que indica la longitud ocupada por la ROM del dispositivo utilizando unidades de 512 bytes.  Por ejemplo, 10h (16) representa 16 x 512 = 8192 bytes; una ROM de 8 KB.  A continuación existen otros tres bytes que sirven de inicio de la nueva BIOS.  Juegan el mismo papel que la dirección FFFF0h de inicio de la BIOS principal, contienen una instrucción de salto (JMP) al punto de inicio de la secuencia de carga.

[4]  Algunas BIOSes muy antiguas no emiten POST-codes, pero algunas placas-base y BIOSes permiten incluso setear unos puentes o parámetros de configuración para definir este puerto.

[5]  El "DIP-switch" de 4 bits en la esquina superior izquierda sirve para ajustar el tipo de placa. AT; XT; ISA; EISA; PS2-ISA; Compaq; PCI; Etc.

[6]  La propia BIOS dispone de un programa para mantener este "Inventario" denominado "Setup".  Generalmente puede accederse a él pulsando las teclas [Del] o [Esc] en los momentos iniciales de arranque.

[7]  Durante mucho tiempo fue muy común que la primera sensación de que el ordenador estaba "vivo", era un pitido corto.

[8]  Si algún dispositivo dispone de su propia BIOS, esta aparece como una memoria ROM instalada en su interior.  Generalmente montada en la tarjeta que se pincha en alguno de los zócalos libres de la placa-base.