В режиме исполнения программы начального самотестирования выполняется проверка процессора, памяти и системных средств ввода/вывода, а также конфигурирование всех программно-управляемых аппаратных средств системной платы. После успешного завершения тестирования и конфигурирования (включающего настройку устройств РnР), POST выдает на экран монитора состав оборудования компьютера и передает управление программе начальной загрузки операционной системы.
В случае если обнаружена ошибка конфигурации системной памяти, в порт 80h выводится последовательно в бесконечном цикле код DEh, код DFh, код ошибки конфигурации, который может принимать, например, следующие значения:
00 Оперативная память не обнаружена;
01 Установлены модули DIMM различных типов;
02 Чтение содержимого SPD закончилась неудачей;
03 Модуль не соответствует требованиям для работы на заданной частоте;
04 Модуль не может быть использован в данной системе;
05 Информация в SPD не позволяет использовать установленные модули;
06 Обнаружена ошибка в младшей странице памяти.
При обнаружении ошибок POST выдает диагностические сообщения в виде последовательности коротких и длинных звуковых сигналов, а после успешной инициализации графического адаптера - в виде коротких текстовых сообщений об ошибках на экран монитора.
Возможны четыре варианта реакции POST на наличие дефекта в системной плате:
- программа "зависает", не определяет дефект платы и не выдает сообщений. В этом случае для получения следующей порции диагностической информации необходимо использование осциллографа;
- программа определяет наличие дефекта и циклически выдает звуковой код диагностического сообщения в виде последовательности коротких и длинных звуковых сигналов. Например, 1 короткий звуковой сигнал означает: "Нормальное завершение процедуры POST - система функционирует нормально", а если вырабатывается 1 длинный и 1 короткий сигнал, то: "Ошибка системной платы" (кодировка звуковых сигналов зависит от версии POST и фирмы - изготовителя). В этом случае для получения следующей порции диагностической информации необходимо использование осциллографа или специальной диагностической платы;
- при использовании специальной диагностической платы, программа POST определяет наличие дефекта и, при прохождении каждой секции POST, записывает код секции (ее номер) в диагностический регистр (обычно порт 80h). Например, код секции POST с номером 0Eh означает: "Тест видеопамяти, подготовка экрана монитора для вывода POST-сообщений". Регистр с адресом 80h физически располагается на специальной диагностической плате, устанавливаемой в слот системной шины. Плата содержит 8-битный регистр со световой (двоичной или шестнадцатиричной) индикацией состояния бит. В пространстве ввода/вывода регистр занимает один адрес, зависящий от архитектуры PC (точнее, версии BIOS). По индикаторам платы можно определить, на какой секции остановился POST, и определить причину неисправности. Однако для использования такой диагностики необходима, во-первых, сама плата-индикатор, и, во-вторых, «словарь» неисправностей - таблица, специфическая для данной версии BIOS и системной платы;
- программа определяет наличие дефекта, выдает текстовое сообщение об ошибке и рекомендует выполнить конкретные действия для осуществления выхода из данного устойчивого состояния. Например, после успешной инициализации графического адаптера краткие текстовые сообщения выводятся на экран монитора: CMOS RAM ERROR, CHECK BATTERY/RUN SETUP (Ошибка CMOS, проверить батарею или выполнить SETUP).
По POST-сообщению можно предпринять следующие простые действия:
а) войти в Setup. Все современные компьютеры имеют утилиту Setup, встроенную в ROM BIOS. Утилита BIOS Setup имеет интерфейс в виде меню, иногда даже оконный с поддержкой мыши. Для входа в Setup во время выполнения POST появляется предложение нажать клавишу del. Иногда для этого используется комбинация ctrl+alt+esc, esc, ctrl+esc, бывают и экзотические варианты (нажать клавишу F12 в те секунды, когда в правом верхнем углу экрана виден прямоугольник). Некоторые версии BIOS позволяют войти в Setup по комбинации ctrl+alt+esc в любой момент работы компьютера. Предложение (и способ - нажатие F1 или F2) входа в Setup появляется, если POST обнаружит ошибку оборудования, которая может быть устранена посредством Setup. Удержание клавиши INS во время POST в ряде версий BIOS позволяют установить настройки по умолчанию. Меню утилиты Setup, способы перемещения по пунктам и выбора параметров зависят от наклонностей производителя и версии BIOS. Нажатие F1 или alt+h вызывает краткую контекстную справку, обычно связанную с навигацией. Смысловых пояснений значений параметров она не дает. Состав управляемых параметров, детальность и гибкость управления варьируется от предельно подробных, в которых может запутаться и опытный пользователь, до предельно кратких. Записать новые установки в CMOS-память для исправления контрольной суммы и выйти из Setup;
б) выключить блок электропитания компьютера, с помощью измерительной аппаратуры проверить исправность батареи CMOS-памяти и при необходимости произвести ее замену. Включить компьютер и т.д.;
в) программа определяет наличие дефекта, выдает звуковые или текстовые сообщения об ошибке, например: 6 сигналов, что означает "Ошибка на линии А20. Возможной причиной может быть неисправность клавиатуры" и переходит к загрузке операционной системы. Для получения диагностической информации по окончании загрузки операционной системы появляется возможность использования пакетов диагностических программ.
Пример кодов распакованного системного BIOS, выполняемые в ShadowRAM.
03 Запрет немаскируемого прерывания NMI. Определение типа сброса
05 Инициализация стека. Запрет кэширования памяти и контроллера USB
06 Выполнение в оперативной памяти служебных программ. Инициализация ESCD
07 Распознавание процессора, определение рабочей частоты, инициализация APIC
(см. «Контрольные точки инициализации MPS-систем»)
08 Проверка контрольной суммы CMOS
09 Проверка отработки клавиш [End]/[Ins]
0A Проверка сбоя батарейного питания
0B Очистка буферных регистров контроллера клавиатуры
0C Контроллеру клавиатуры передается команда тестирования
0E Поиск дополнительных устройств, обслуживаемых контроллером клавиатуры
0F Инициализация клавиатуры
10 Клавиатуре передается команда сброса
11 Если нажата клавиша [End] или [Ins], выполняется сброс CMOS
12 Перевод в пассивное состояние контроллеров DMA
13 Инициализация чип сета и кэш L2
14 Проверка системного таймера
19 Выполняется тест формирования запросов на регенерацию DRAM
1A Проверка длительности цикла регенерации
20 Инициализация устройств вывода
23 Считывается порт ввода контроллера клавиатуры. Опрашивается Keylock Switch
и Manufacture Test Switch
24 Подготовка к инициализации таблицы векторов прерываний
25 Инициализация векторов прерываний завершена
26 Опрос состояния перемычки Turbo Switch через порты контроллера клавиатуры
27 Первичная инициализация контроллера USB. Обновление микрокода процессора.
Инициализация ESCD. Опрос состояния порта PS/2
28 Подготовка к установке видеорежима
29 Инициализация LCD панели
2A Инициализация видеоконтроллера (см. «Особенности выполнения Device Initiali-
zation Manager»)
2B Инициализации VGA BIOS, проверка его контрольной суммы
2C Выполнение VGA BIOS
2D Инициализация указателя «мышь», подключенного к порту PS/2
2E Поиск видеоадаптеров CGA
2F Тест видеопамяти адаптера CGA
30 Тест схем формирования разверток адаптера CGA
31 Ошибка видеопамяти или схем формирования разверток. Поиск альтернативного
видеоадаптера CGA
32 Тест видеопамяти альтернативного видеоадаптера CGA и схем разверток
33 Опрос состояния перемычки Mono/Color
34 Установка текстового режима 80х25
37 Видеорежим установлен. Экран очищен
38 Инициализация бортовых устройств (см. «Особенности выполнения Device Ini-
tialization Manager»)
39 Вывод сообщений об ошибках на предыдущем шаге (см. «Особенности выполне-
ния Device Initialization Manager»)
3A Вывод сообщения «Hit DEL» для входа в CMOS Setup
3B Начало подготовки к тесту памяти в защищенном режиме
40 Подготовка дескрипторных таблиц GDT и IDT
42 Переход в защищенный режим
43 Процессор в защищенном режиме. Прерывания разрешены
44 Подготовка к проверке линии A20
45 Тест линии A20
46 Определение размера ОЗУ выполнено
47 Тестовые данные записаны в Conventional Memory
48 Повторная проверка Conventional Memory
49 Тест Extended Memory
4B Обнуление памяти
4C Индикация процесса обнуления
4D Запись в CMOS полученных размеров Conventional и Extended memory
4E Индикация реального объема системной памяти
4F Выполняется расширенный тест Conventional Memory
50 Коррекция размера Conventional Memory
51 Расширенный тест Extended Memory
52 Объемы Conventional Memory и Extended Memory сохранены
53 Обработка отложенных ошибок четности
54 Запрет контроля четности и обработки немаскируемых прерываний
57 Инициализация региона памяти для POST Memory Manager
58 Выводится приглашение для входа в CMOS Setup
59 Возврат процессора в реальный режим
60 Проверка страничных регистров DMA
62 Тест регистров адреса и длины пересылки контроллера DMA#1
63 Тест регистров адреса и длины пересылки контроллера DMA#2
65 Программирование контроллеров DMA
66 Очистка регистров Write Request и Mask Set POST
67 Программирование контроллеров прерываний
7F Разрешение запроса NMI от дополнительных источников
80 Устанавливается режим обслуживания прерываний от порта PS/2
81 Тест интерфейса клавиатуры при ошибках сброса
82 Установка режима работы контроллера клавиатуры
83 Проверка статуса Keylock
84 Верификация объема памяти
85 Вывод на экран сообщений об ошибках
86 Настройка системы для работы Setup
87 Распаковка программы CMOS Setup в Conventional Memory.
88 Работа программы Setup завершена пользователем
89 Завершено восстановление состояния после работы Setup
8B Резервирование памяти дополнительному блоку переменных BIOS
8C Программирование конфигурационных регистров
8D Первичная инициализация контроллеров HDD и FDD
8F Повторная инициализация контроллера FDD
91 Конфигурирование контроллера жестких дисков
95 Выполняется ROM Scan для поиска дополнительных BIOS (см. «Особенности вы-
полнения Device Initialization Manager»)
96 Дополнительная настройка системных ресурсов
97 Проверка сигнатуры и контрольной суммы дополнительного BIOS
98 Настройка System Management RAM
99 Установка счетчика таймера и переменных параллельных портов
9A Формирование списка последовательных портов
9B Подготовка области в памяти для теста сопроцессора
9C Инициализация сопроцессора
9D Информация о сопроцессоре сохраняется в CMOS RAM
9E Идентификация типа клавиатуры
9F Поиск дополнительных устройств ввода. Финальная фаза подготовки многопро-
цессорной платформы к работе в среде ОС (см. «Контрольные точки инициали-
зации MPS-систем»)
A0 Формирование регистров MTRR (Memory Type Range Registers)
A2 Сообщений об ошибках на предыдущих этапах инициализации
A3 Установка временных характеристик автоповтора клавиатуры
A4 Дефрагментирование неиспользованных регионов RAM
A5 Установка видео режима
A6 Очистка экрана
A7 Перенос исполняемого кода BIOS область Shadow RAM
A8 Инициализация дополнительного BIOS в сегменте E000h
A9 Возврат управления системному BIOS
AA Инициализация USB шины
AB Подготовка модуля INT13 для обслуживания дисковых сервисов
AC Построение таблиц AIOPIC для поддержки мультипроцессорных систем
AD Подготовка модуля INT10 для обслуживания видео сервисов
AE Инициализация DMI
B0 Таблица конфигурации системы выведена
B1 Инициализация ACPI BIOS
00 Программное прерывание INT19h – загрузка Boot Sector