La rutina POST: Lo que debes saber

Escrito por: Roberto C. González

Si quieres opinar, sugerir o corregir algo de éste documento escríbenos a soporte@ehack.mx

Qué es el POST.

Para describir qué es el POST utilizaré una de las mejores descripciones que lo resume de forma clara y precisa[1]:

(Power On Self Test – Auto Prueba de Encendido). Es la serie de comprobaciones que una computadora hace con sus dispositivos al iniciar el sistema. La encargada de hacer el POST es el BIOS.

El procedimiento POST comprueba que los dispositivos como unidades de disco, las memorias y otros componentes, funcionen correctamente. En general, estas son las tareas que se desarrollan durante el POST:

  1. Verificar la integridad del BIOS.
  2. Encontrar, medir y verificar la memoria principal del sistema.
  3. Descubrir, inicializar y catalogar todos los buses y dispositivos del sistema.
  4. Pasar el control a otras BIOS especializadas (si son requeridas).
  5. Proveer un interfaz de usuario para la configuración del sistema.
  6. Pasar el cotrol al Sistema Operativo (si está disponible).
  7. Los códigos POST.

La rutina POST es secuencial y siempre va del 0 al 255, cada valor (hexadecimal) tiene asignada una prueba específica, si la prueba ejecutada es correcta, se realiza la siguiente de forma sucesiva hasta terminar la lista de tareas asignadas.

Qué es un código POST.

Un código POST no es más que un código numérico asociado a una prueba específica de la rutina POST, de esta forma podemos tomar como ejemplo (En este ejemplo no es relevante a qué BIOS corresponden éstos códigos):

Código Descripción
06h Descomprimiendo el siguiente código POST
07h A continuación, inicialización del CPU y del área de datos del CPU

Si durante una prueba existe algún problema, y dependiendo de la gravedad de la excepción. El sistema puede detenerse hasta que el origen de dicha excepción sea corregida. Si la excepción no es grave, el sistema puede continuar la rutina de arranque. Esto dependerá de la configuración del BIOS y otras características de la computadora.

Los “Códigos de Error POST”

En términos estrictos, el término “Código de error” o “Error Code” es incorrecto. Desde el punto de vista de que son códigos de error hasta el momento que, efectivamente, causan un error en el arranque de un equipo.

En cualquier caso resulta más adecuado llamarlos simplemente Códigos POST o en todo caso Códigos de Estado, pues el código siempre indicará un estado, haya un error o no, durante el arranque.

Sin embargo la idea de que son códigos de error, está tan arraigada que resulta prácticamente inútil tratar de cambiar esta concepción.

De hecho si buscamos en internet “Código de error POST” encontraremos cientos de páginas, si buscamos por “Código de estado POST” encontraremos todo, menos códigos POST del BIOS.

Códigos de Estado POST y el BIOS

Los códigos de estado son específicos para cada versión y marca de BIOS, por ejemplo, consideremos el BIOS de AMI:

Código AMIT BIOS (Anteriores a 1990): AMI 2.2 BIOS AMI Win BIOS
01h NMI is disabled and the i286 register test is about to start Flag test; Testing of the CPU Control to Int 19 boot loader
0Fh 8254 timer tested Write KB command byte

Podemos observar que hay una total diferencia para un mismo código, aunque se trate del mismo fabricante del BIOS

Por esta razón resulta fundamental contar con la tabla de códigos POST específica de nuestro BIOS, sino corremos el riesgo de realizar interpretaciones erróneas de un código POST.

Puertos de Salida de los códigos POST

Durante el diagnóstico POST, un código hexadecimal de 2 bytes se escribe en el puerto 80h. Sin embargo algunas computadoras pueden enviar esos códigos a otros puertos.

Compaq envía esos códigos al puerto 84h, los modelos de IBM PS/2 25 y 30 los mandan al puerto 90h, los modelos 20-286 los envían al puerto 190h. Algunas máquinas de arquitectura EISA con BIOS de Award los mandan al puerto 300h y los equipos con arquitectura micro canal (MCA) los mandan al puerto 680h.

Algunos modelos iniciales de AT&T, Olivetti, NCR y otros clones AT los mandan al puerto de impresión en la direcciones 3BC, 278h y 378h.

Acerca del punto de paro

Cuando se interrumpe la secuencia de arranque, ahora sí, tenemos un código de error, el cual nos puede indicar cuál es el problema del fallo.

Dependiendo de la naturaleza puede ser muy fácil determinar la causa de la falla, pero en ocasiones requerirá de conocimientos especializados, o contar con otros dispositivos de prueba adicionales para poder determinar la causa de una falla.

El código mostrado indica que se está verificado en un determinado momento. Típicamente, cuando el BIOS falla siempre en el mismo punto, el código indicará qué es lo que está fallando[2].

Tomemos algunos ejemplos.

Si durante el arranque del sistema el sistema se detiene en el código 07h (BIOS de Award), revisando las tablas de códigos POST tenemos:

Error code 07 – Next, initializing the CPU and the CPU data area, (A continuación, inicialización del CPU y del área de datos del CPU)

En este caso, el problema es “sencillo” de determinar, es un problema con el CPU. En este caso es tan simple de determinar utilizando otro CPU que sepamos que está en buen estado. Si sigue ocurriendo una falla similar, deberemos descartar, además que no haya daño en pines del socket, pistas e incluso circuitería asociada al CPU, concretamente del área de datos.

Sin embargo si el código que obtenemos es algo como:

Error code 98 – The adaptor ROM had control and has now returned control to BIOS POST. Performing any required processing after the option ROM returned control, (El adaptador ROM tenía el control y ahora devuelve el control al BIOS POST. Efectuando cualquier proceso posterior a la devolución del control del ROM)

En este caso es claro que el problema está asociado a la memoria ROM. Sin embargo una Motherboard puede tener varias memorias ROM, para lo cual deberemos consultar la información técnica de nuestra Motherboard, la cual no necesariamente es de fácil adquisición y analizar la forma en que ocurren los procesos de arranque en ella.

Sin embargo, puede que el problema no sea del ROM, sino del BIOS, que es quien retoma el control del arranque, en este caso puede ser por alguna resistencia abierta, o un capacitor fuera de rango, etc, sin embargo no termina ahí el abanico de posibilidades…

Cómo leer los códigos POST

Hay dos formas generales para obtener los códigos POST que genera el BIOS:

  • Mediante códigos numéricos
  • Mediante sonidos

La forma más simple, pero no menos poderosa, es por sonidos que emite la bocina de la motherboard, dependiendo del tipo de BIOS será la interpretación de los sonidos emitidos.

Sin embargo la forma más precisa es tomando los códigos hexadecimales que genera el BIOS y los manda al puerto 80h (entrada/salida) de forma que se pueden recoger con dispositivos especializados denominados Tarjetas POST, o Tarjetas de diagnóstico POST.

De esta forma uno puede fácilmente conocer los códigos de paro (Códigos de error) en la secuencia de arranque.

Finalmente hay que considerar que aunque el puerto estándar de salida para los códigos POST es el 80h, no quedamos exentos de encontrar un equipo que no utilice este puerto para poder hacer el diagnóstico de un equipo, esto es particularmente cierto en los equipos portátiles y en muchos de los equipos modernos con BIOS UEFI

Leer un Códigos POST, antes o después.

Otro aspecto que es importante a considerar en la lectura de un código POST es el “momento de paro”.

  • Algunos BIOS se detienen al mandar el código actual.
  • Otros BIOS se detienen antes de mandar el código actual.

Esto nos plantea la siguiente situación.

Paro en el código Actual

En este caso no hay mayor problema, el código que muestre nuestra tarjeta POST es el que identifica la falla presentada.

Es decir. Si nuestra tarjeta indica:

Error code 30 – The display memory read/write test passed. Sigue -> Buscando para reconstruir la siguiente prueba. La prueba de lectura/escritura de la memoria de vídeo ha pasado.)

En este caso es simple la interpretación: hay un error ya sea en la tarjeta de vídeo externa o en la memoria de vídeo integrada en la Motherboard.

Paro antes de emitir en el código actual

En este caso, la forma más evidente de determinar este comportamiento del BIOS es interpretando el código y comparándolo con la falla real. Es decir podemos obtener el Código 0F:

Código Descripción Descripción
0E Initialize I/O component Inicializando el componente de E/S
0F Initialize the local bus IDE Inicializando el bus local IDE
10 Initialize Power Management Inicializando el administrador de energía

0Fh nos indica una falla en el disco duro, independientemente de la dificultad de resolver un problema con el bus IDE, supongamos que corregimos cualquier problema que pudiera tener el bus IDE, Y vemos que el sistema se sigue deteniendo en el código 0F, en este caso debemos descartar que la falla no esté asociada en este caso al código 0E, y en este caso deberíamos descartar problemas con nuestros chips que controlan la E/S del sistema.

La motherboard es básicamente hardware

Muchas veces olvidamos que aparte de software (el firmware del BIOS y ROM’s disponibles) la motherboard es en esencia un circuito electrónico de alta precisión. Y muchos de los problemas “extraños” que pueden ocurrir, son ocasionados por componentes pasivos dañados (capacitores, resistencias, diodos, pistas) así como de otros componentes activos. Mucha de las fallas ocasionadas por estos circuitos suelen ser los más difíciles de detectar e interpretar. Y requieren suficientes conocimientos de electrónica por parte del reparador para poder encararlos con éxito.

-Revisión 1.1

-08/09/19

© 2011-2021, Nala Diagnostics

Referencias

[1] Diccionario de Informática: http://www.alegsa.com.ar/Dic/post.php
[2] http://www.bioscentral.com/misc/biosbasics.htm

Creado Para Nala Diagnostics.

eHack

Compartir
Publicado por
eHack

Entradas recientes

dnsenum

El comando dnsenum es una herramienta de línea de comandos para realizar enumeración de DNS…

1 año hace

Las 24 listas negras de IPv4 más comunes.

En esta entrada te presento 24 de las listas negras más comunes que los servidores…

2 años hace

ZoomIt – SysInternals

ZoomIt es una herramienta de anotación y zoom de pantalla para presentaciones técnicas que incluyen…

2 años hace

WinObj – SysInternals

WinObj es el visor de espacios de nombres de Object Manager definitivo. Es la primera…

2 años hace

WhoIs – SysInternals

Whois realiza el registro de registro para el nombre de dominio o la dirección IP…

2 años hace

VolumeID – SysInternals

VolumeID – Esta utilidad, le permite cambiar los identificadores de los discos FAT y NTFS…

2 años hace