POST

El POST: es el acrónimo inglés de Power On Self Test (Auto diagnóstico al encender). Es un proceso de verificación e inicialización de los componentes de entrada y salida en un sistema de cómputo que se encarga de configurar y diagnosticar el estado del Hardware.

Funcionamiento

En el mismo momento que encendemos nuestra PC el BIOS comienza a trabajar, lee de la RAM del CMOS la configuración del sistema y chequea que todo está en orden, este proceso es el que se denomina Power-On Self Test.

Finalizado el mismo el BIOS busca o solicita un Sistema operativo en alguno de los sistemas de almacenamiento (disco rígido, disquetera) para luego entregar el control del sistema. (POST)

Códigos de error

El conocimiento de los POST es muy importante cuando vamos a comprobar una Tarjeta madre nueva o agregamos algún hardware.
El código POST le envía al usuario una serie de sonidos que le indican el resultado del chequeo automático del sistema. Se emite usando un dispositivo que rara vez puede estar afectado, la bocina del sistema. Los códigos más importantes son:

Código o cantidad de pitidos                                   Significado
1 tono corto                                             El chequeo ha terminado satisfactoriamente.
Ningún tono                                             No hay electricidad, las bocinas están desconectadas o BIOS corrupta
Tono ininterrumpido                                 Fallo en el suministro eléctrico
Tonos cortos y seguidos                          Placa base estropeada
1 tono largo                                             La memoria RAMno funciona o no hay instalada

1 tono largo y 1 corto                               Fallo en la placa base o en ROM

1 tono largo y 2 cortos                              Fallo en la Tarjeta de vídeo o no hay instalada
1 tono largo y 3 cortos                              Fallo en la tarjeta EGA

2 tonos largos y 1 corto                             Fallo en la sincronización de imagen.
2 tonos cortos                                           Error en la paridad de la memoria
3 tonos cortos                                           Fallo en los primeros 64 Kb de la memoria RAM
4 tonos cortos                                           Temporizador o contador defectuoso
5 tonos cortos                                           El procesador o la tarjeta de vídeo no pasan el test
6 tonos cortos                                           Fallo en el controlador del teclado
7 tonos cortos                                           Modo virtual de procesador AT activo, Error de excepción/identificador del procesador.
8 tonos cortos                                           Fallo en la escritura de la RAM de video.
9 tonos cortos                                           Error de checksum de la ROM en la BIOS
10 tonos cortos                                         Error de CMOS.

Chequeo del procesador en sí mismo.

Las principales actividades que se realizan en esta rutina se enumeran a continuación (aunque debe tenerse especialmente en cuenta que cada fabricante tiene su propio código de inicialización, razón por la cual puede variar inclusive el orden en que se realizan los pasos que se describirán).

 1. Antes de iniciar su operación el sistema verificará el correcto funcionamiento de su corazón: la CPU. Para ello se ejecuta un código verificador compuesto de operaciones que afecten los flags y se comprueban las condiciones de salto condicionado, de modo que ante cualquier mal funcionamiento se salte a una rutina error en donde lo que se ejecuta es un HLT, deteniéndose el sistema.

2. Una vez establecido el correcto funcionamiento del procesador el paso siguiente es chequear si el contenido de la ROM es el correcto. Para ello se realiza un checksum módulo 100h del contenido de la ROM completa que en fábrica se ajusta de modo que el resultado del check sea cero. El checksum no es otra cosa que una XOR del contenido de la memoria descartando cualquier flag que se produzca como resultado de la operación.
Si el resultado obtenido es diferente de cero se asume que existen problemas, o bien en el contenido de la memoria o bien en la lógica de acceso a la memoria. En cualquier caso se ejecuta un halt, y el sistema se detiene.
3. Detecta el tipo de adaptador de video que está instalado en el sistema. Lo inicializa en modo texto 80x25. Escribe en la BIOS DATA AREA los principales datos de interés para el sistema que proporciona este controlador.
4. En las XT comprobaba el correcto funcionamiento del 8255 y lo inicializa. En las AT comprueba la correcta interacción con el 8042 y setea el modo de trabajo con los diferentes ports de E/S que proporciona este chip.
5. Comprueba Si el Timer 1 del 8253 u 8254 funciona correctamente. Una forma posible es programarle un modo de trabajo una cuenta y dispararlo. Luego de varios ciclos de clock en los que la rutina loopea dándole tiempo al timer de decrementar su cuenta se accede al registro de cuenta para comprobar que realmente la misma sufrió variaciones. Si permaneció sin cambios, significa que el timer no está contando. Si el Timer 1 funciona correctamente se lo programa para generar un pulso al final de la cuenta, cuenta cíclica, y duración de la misma 15 seg.
6. Comprueba el correcto funcionamiento para el canal de DMA 0. Una forma es programarlo en el modo en el que se lo va a utilizar y leer su estado en el registro correspondiente del 8237A.
7. Si los test descriptos en 5 y 6 indican que el Timer 1 y el canal 0 de DMA funcionan correctamente, entonces se dispara el refresco de memoria.
8. Una vez disparado el refresco de memoria está en condiciones de iniciar el check de memoria. Este consiste en comprobar si las celdas de memoria se pueden acceder correctamente, y al mismo tiempo determinar la cantidad de memoria presente en el sistema. Esta cantidad será comparada con la programada en el setup. Para comprobar el correcto acceso a la memoria se escriben patrones en cada celda, o cada 2 K celdas por muestreo y se lee para comprobar la escritura. Si en algún momento la comparación arroja diferencias se toma como no válida a. dicha celda. Normalmente se escribe AAh se comprueba lectura, luego se escribe 55h (de modo de invertir todos los bits de la celda, considerada esta la situación mas desfavorable), se comprueba por lectura, y finalmente se escribe 00h y se comprueba por lectura. Mientras realiza esta actividad va contando la cantidad de memoria y presentando la cuenta en pantalla.
9. Una vez finalizada la cuenta de memoria, chequea los restantes timers y canales de DMA. Si funcionan correctamente los inicializa de acuerdo a la forma en la que van a trabajar cada uno de ellos.
10. Comprueba el 8259 y lo inicializa.
11. Inicializa los valores default de los vectores de Interrupción. A los que usa, los apunta a las rutinas de la ROM correspondientes. A los que no usa los incializa apuntando a un iret residente en alguna posición de la ROM.
12. Estando ya inicializado el sistema de interrupciones, dispara Timer Tick.
13. Comprueba el correcto funcionamiento del teclado. En la XT lo que hacía era verificar la presencia de una señal pulsante en la línea de clock. En la AT por tener comunicación full duplex con el teclado lo comprueba a través del juego de comandos establecido para la interacción entre el sistema y el teclado.
14. Funcionando correctamente el teclado y el timer tick, habilita sus interrupciones en el 8259
15. Testea el funcionamiento de las unidades de disco flexible y rígido. Una vez comprobado las inicializa, y escribe los resultados y principales parámetros en la BIOS DATA AREA.
16. Chequea si existen ports serie. Inicializa a los que encuentra y guarda resultados en BIOS DATA AREA.
17. Chequea si existen ports paralelo. Inicializa a los que encuentra y guarda resultados en BIOS DATA AREA.
18. Establece si existen extensiones BIOS. Esto es: La ROM BIOS de las PC provee un camino para integrar adaptadores de E/S con su propia ROM on-board. Para que esto sea posible, durante el POST, una vez que los vectores de interrupción han sido inicializados, y con la interrupciones habilitadas, se realiza una búsqueda de módulos ROM adicionales. Si se encuentra alguna ROM adicional, esta ganará el control interceptando las interrupciones que necesite, enganchándose de este modo a sí misma en el sistema.
El rango de direcciones de memoria en las que se puede mapear estas ROMs comprende desde la C0000h hasta la E0000h. Luego el sistema busca dentro de este rango cada 2K una firma fija e igual a 55AAh Si la encuentra significa que en esa página de 2k comienzo una extensión de BIOS. La estructura inicial de la ROM tendrá que tener entonces el siguiente formato.
Byte 0 55h
Byte 1 AAh
Byte 2 Longitud de la extensión en bloques de 512 bytes
Byte 3-6 Punto de entrada a través de un call far
Además el POST realizará del mismo modo que para la ROM del sistema un checksum en módulo 100h, cuyo resultado debe ser 0 para que la ROM se considere de contenido válido.
19. Llama a la rutina [[Bootstr loader para la carga del Sistema operativo

BIOS POST card para el bus PCI

Existen también dispositivos especiales que provistos de una pantalla LCD y conectado vía puerto serie (COM) o vía ranuras ISA o PCI pinchadas en la placa base, permiten visualizar un número hexadecimal el cual luego de ser buscado en otra tabla especial realiza la misma función, pero por supuesto, de una manera mucho más cómoda.

Actualmente las placas madres suelen tener integrado un par de visualizadores de siete segmentos que muestra los estados del POST y en su manual de fábrica la correspondiente descripción detallada de los códigos que muestra.

Fuente

  • Power-on_self-test

Enlaces Externos