Устройство для ремонта и тестирования компьютеров - POST
Card
При каждом включении питания компьютера типа IBM PC (или
совместимого с ним) и до начала загрузки операционной системы
процессор компьютера выполняет процедуру BIOS под названием
"Самотест по включению питания" - POST (Power On Self Test). Эта же
процедура выполняется также при нажатии на кнопку RESET или
комбинацию клавиш Ctrl-Alt-Del. Основной целью процедуры POST
является проверка базовых функций и подсистем компьютера (таких как
память, процессор, материнская плата, видеоконтроллер, клавиатура,
гибкий и жесткий диски и т. д.) перед загрузкой операционной
системы. Это в некоторой степени застраховывает пользователя от
попытки работать на неисправной системе, что могло бы привести,
например, к разрушению пользовательских данных на HDD. Однако, в
настоящее время разрабатывается новая спецификация компьютеров PC
2001, предусматривающая уменьшение временного интервала от момента
включения ПК до запуска дискового загрузчика до 7 сек (при наличии
SCSI устройств - до 10 сек), в том числе и за счет сокращения
процедуры POST, что, в общем, не должно радовать
сборщиков/ремонтников компьютеров, да и вдумчивых пользователей, я
думаю, тоже: лучше 2 минуты потерять, чем потом восстанавливать
содержимое HDD или удивляться, почему компьютер стал так часто
зависать. Пока же компьютеры продолжают радовать профессиональных
сборщиков/ремонтников компьютеров своей встроенной процедурой POST,
поэтому рассмотрим предоставляемые ею возможности для ремонта
компьютеров.
Перед началом каждого из тестов процедура POST генерирует так
называемый POST код, который выводится по определенному адресу в
пространстве адресов устройств ввода/вывода компьютера. В случае
обнаружения неисправности в тестируемом устройстве процедура POST
просто "зависает", а предварительно выведенный POST код однозначно
определяет, на каком из тестов произошло "зависание". Таким образом,
глубина и точность диагностики при помощи POST кодов полностью
определяется глубиной и точностью тестов соответствующей процедуры
POST BIOS'а компьютера.
Адреса портов для вывода POST кодов зависят от типа компьютера:
ISA, EISA - 80h, ISA-Compaq - 84h, ISA-PS/2 - 90h, MCA-PS/2 - 680h,
некоторые EISA - 300h, однако в большинстве случаев (можно сказать,
стандартно) используется порт 80h. Так как процедура POST появилась
еще в IBM PC/XT с восьмиразрядной системной шиной ISA, то
исторически так сложилось, что POST коды представляют собой всего
один байт, который приводится в таблицах POST кодов в виде
одноразрядных шестнадцатиричных чисел в диапазоне 00h-FFh (0-255 в
десятичной системе счисления). Следует отметить, что таблицы POST
кодов различны для различных производителей BIOS и, в связи с
появлением новых тестируемых устройств и чипсетов, несколько
отличаются даже для различных версий одного и того же производителя
BIOS. Таблицы POST кодов можно найти на соответствующих сайтах
производителей BIOS: для AMI это http://www.ami.com, для AWARD -
http://www.award.com, иногда таблицы POST кодов приводятся в
руководствах к материнским платам (например, руководства к платам
P6SBA-P6DBS Supermicro).
Для отображения POST кодов в удобном для человека виде служат
устройства под названием POST Card. POST Card - это обычная плата
расширения компьютера, вставляемая (при выключенном питании!) в
любой свободный (соответствующий ее разъему - ISA или PCI) слот и
имеющая два семисегментных индикатора для отображения POST кодов.
Ранее, до появления спецификаций PC 99 и PC 99A наиболее
распространенными были POST Card для шины ISA. Сейчас, в связи с
угрозой полной ликвидации шины ISA начали появляться более дорогие
POST Card для шины PCI. Для нотебуков, вообще не имеющих шин ISA и
PCI, выпускаются POST Сard, предназначенные для установки в LPT
порт. Следует отметить, что для работы такой POST Сard требуется
соответствующая поддержка со стороны BIOS'a нотебука.
Рис 1. POST Card для шины ISA.
Авторская версия.
Самая простая POST Card для шины ISA от noname производителя
отображает POST коды по фиксированному адресу 80h и не имеет
переключателей для изменения этого адреса. Прохождение сигнала RESET
компьютера на такой POST Card фиксируется по миганию точек
семисегментного индикатора POST кодов либо отображается на нем
специальными символами. Более дорогие POST Card имеют переключатели
для выбора адреса порта POST кодов, а также дополнительные
светодиодные индикаторы сигналов RESET и CLK системной шины и
индикаторы наличия напряжений питания +5V(+3.3V), -5V, +12V, -12V.
Такие POST Card выпускает, например, Ultra-X, Inc
(http://www.uxd.com) для шин ISA - QuickPOST PC и PCI - QuickPOST
PCI соответственно. Эта же фирма предлагает и POST Card для
подключения к разъему LPT ноутбуков- MICRO POST. Очень интересна
оригинальная POST-Probe PCI фирмы Micro2000, Inc
(http://www.micro2000.com), на двух соседних сторонах которой под
углом 90 градусов расположены разъемы для шин PCI и ISA. В ее
комплект входит также дополнительный адаптер для подключения к
экзотической у нас шине MicroChannel. Еще одним производителем POST
Card является фирма DataDepot Inc (http://www.datadepo.com),
выпускающая как простейшие POST Card (MiniPOST), так и более сложные
- PocketPOST. Однако настоящим профессиональным инструментом можно
назвать PHD 16 для шины ISA (Professional Hardware Diagnostics)
фирмы Ultra-X, Inc. PHD 16 имеет два режима работы: диагностики и
POST кодов, которые выбираются путем установки соответствующих
перемычек. В режиме POST кодов генерируемые системой POST коды
просто отображаются на двухразрядном семисегментном индикаторе PHD
16. Режим диагностики подразделяется на режим тренировки -
длительного прогона тестов для обнаружения плавающих ошибок и режим
отыскания и устранения серьезных повреждений полностью "мертвых"
систем, при котором штатный BIOS материнской платы заменяется на ROM
BIOS Ultra-X со специальным набором углубленных тестов. По мере
выхода новых чипсетов материнских плат выходят и обновленные ROM
BIOS Ultra-X. Результаты тестов PHD 16 отображаются в специальном
коде на семисегментном индикаторе и дополнительных светодиодах, а
при исправном видеоадаптере - и на мониторе компьютера. Более
современная PHD PCI фирмы Ultra-X, Inc предназначена для шины PCI и
в отличие от PHD 16 не нуждается во внешнем видеоадаптере, так как
имеет встроенный стандартный видеовыход SVGA для отображения
результатов тестов на мониторе.
Для того чтобы лучше понять, как пользоваться POST Card,
рассмотрим типичную последовательность тестов, выполняемую
процедурой POST:
- Тестирование процессора.
- Проверка контрольной суммы ROM BIOS.
- Проверка и инициализация контроллеров DMA, IRQ и таймера 8254.
После этой стадии становится доступной звуковая диагностика.
- Проверка операций регенерации памяти.
- Тестирование первых 64 кБайт памяти.
- Загрузка векторов прерываний.
- Инициализация видеоконтроллера. После этого этапа
диагностические сообщения выводятся на экран.
- Тестирование полного объема ОЗУ.
- Тестирование клавиатуры.
- Тестирование CMOS памяти.
- Инициализация COM и LPT портов.
- Инициализация и тест контроллера FDD.
- Инициализация и тест контроллера HDD.
- Поиск дополнительных модулей ROM BIOS и их инициализация.
- Вызов загрузчика операционной системы (INT 19h, Bootstrap),
при невозможности загрузки операционной системы - попытка запуска
ROM BASIC (INT 18h); при неудаче - останов системы (HALT).
Перед тестированием компьютера при помощи POST Card необходимо
определить фирму-производителя BIOS'а материнской платы: это можно
сделать либо по наклейке на микросхеме BIOS, либо по надписям,
которые выводятся на экран аналогичной исправной материнской платой.
Затем следует найти соответствующую таблицу POST кодов для этого
BIOS: AMI - http://www.ami.com, AWARD - http://www.award.com.
Последовательность действий при ремонте компьютера с
использованием POST Card выглядит следующим образом:
- Выключаем питание неисправного компьютера.
- Устанавливаем POST Card в любой свободный слот материнской
платы.
- Включаем питание компьютера и считываем с индикатора POST Card
соответствующий POST код, на котором "зависает" загрузка
компьютера.
- По таблицам POST кодов определяем, на каком из тестов возникли
проблемы и осмысливаем вероятные причины.
- При выключенном питании производим перестановки джамперов,
шлейфов, модулей памяти и других компонентов с целью устранить
неисправности.
- Повторяем пункты 3,4,5, добиваясь устойчивого прохождения
процедуры POST и начала загрузки операционной системы.
- При помощи программных утилит производим окончательное
тестирование аппаратных компонентов, а в случае плавающих ошибок -
осуществляем длительный прогон соответствующих программных тестов.
При ремонте компьютера без использования POST Сard пункты 2-4
этой последовательности просто опускают и со стороны ремонт
компьютера выглядит просто как лихорадочная перестановка джамперов,
памяти, процессора, карт расширения, блока питания, и в довершение
всего- материнской платы. Если в крупных фирмах имеется большой
запас исправных комплектующих, то для мелких фирм и частных лиц
ремонт компьютера путем установки заведомо исправных компонентов
превращается в сложную проблему. Еще тяжелее приходится инженерам
сервисных служб, оперативно выезжающих к заказчику и вынужденных
брать с собой целый чемодан запасных деталей. Бывает, замена
компьютерных комплектующих под недоуменные вопросы клиента
растягивается на целые часы и не всегда приводит к желаемому
результату - приходится забирать системный блок или ехать за новой
порцией исправных деталей.
Как же на практике осуществляется ремонт компьютера с
использованием POST Card?
Прежде всего, при включении питания перед началом процедуры POST
должен произойти сброс системы сигналом RESET, что индицируется на
POST Card специальными символами или светодиодом. При неисправности
компьютера в самом сложном случае сброс либо совсем не проходит,
либо проходит, но никакие POST коды на индикаторе не отображаются. В
этом случае рекомендуется немедленно выключить компьютер и вытащить
все дополнительные платы и кабеля, а также память из материнской
платы, оставив подключенной к блоку питания только собственно
материнскую плату с установленными процессором и POST Card.
Если при последующем включении компьютера нормально проходит
сброс системы и появляются первые POST коды, то, очевидно, проблема
заключается во временно извлеченных компонентах компьютера; возможно
также, в неправильно подключенных шлейфах (особенно часто вставляют
"вверх ногами" шлейф IDE). Вставляя последовательно память,
видеоадаптер, а затем и другие карты, и наблюдая за POST кодами на
индикаторе, обнаруживают неисправный модуль. При неисправной памяти
для компьютеров с AMI BIOS последовательность POST кодов обычно
останавливается на коде d4 (для старых плат 386/486 - на коде 13); с
AWARD BIOS - на кодах C1 или С6. Бывает, что при этом неисправна не
сама память, а, например, материнская плата - причина заключается в
плохом контакте в разъемах SIMM/DIMM (согнуты/замкнуты между собой
контакты), либо плохо, не до конца вставлена сама память в разъеме.
При неисправном видеоадаптере для компьютеров с AMI BIOS
последовательность POST кодов останавливается на кодах 2C, 40 или 2A
в зависимости от модификации BIOS, либо проскакивает эти коды без
появления на мониторе соответствующих строк инициализации видеокарты
(с указанием типа, объема памяти и фирмы-производителя
видеоадаптера).
Аналогично, для компьютеров с AWARD BIOS при неисправности
видеоадаптера последовательность POST кодов либо останавливается на
коде 0d, либо проскакивает этот код (особенно часто это наблюдается
на новых Pentium I/Pentium II материнских платах).
Если инициализация памяти и видеоадаптера прошла нормально, то,
устанавливая по одной остальные карты и подключая шлейфы, на
основании показаний индикатора POST Card определяют, какой из
компонентов подсаживает системную шину и не дает загрузиться
компьютеру.
Вернемся теперь к случаю, когда даже не проходит начальный сброс
системы (на индикаторе POST Card в самом начале теста не появляются
специальные символы, свидетельствующие о прохождении сигнала RESET
или не загорается соответствующий светодиод). В этом случае либо
неисправен блок питания компьютера (например, не формируется сигнал
PWRGOOD), либо сама материнская плата (неисправны цепи формирования
сигнала RESET).
Точную причину можно установить, подсоединив к материнской плате
заведомо исправный блок питания.
Рассмотрим теперь случай, когда сигнал сброса проходит, но
никакие последующие POST коды на индикатор не выводятся; при этом,
как было описано ранее, тестируется система, состоящая только из
материнской платы, процессора, POST Card и блока питания. Если
материнская плата совершенно новая, то причина обычно заключена в
неправильно установленных джамперах выбора частоты/умножения/типа
процессора, иногда - неправильно установленном джампере Clear/Normal
CMOS. Очень часто причиной неработоспособности является недожатие до
упора процессора в Slot 1 либо перевернутое положение 486-го
процессора. При этом, если питание на материнскую плату с
неправильно вставленным процессором будет подано дольше, чем на 1-2
сек, возможен полный отказ как процессора, так и материнской платы.
Из практики можно утверждать, что использование POST Card вместе
с хорошей реакцией инженера и быстрым отключением питания уже спасла
жизнь не одному процессору и материнской плате.
Если все джамперы и процессор установлены правильно, а
материнская плата все же не запускается, следует заменить процессор
на заведомо исправный. Если же и это не помогает, то можно сделать
вывод о неисправности материнской платы либо ее компонентов
(например, причиной неисправности может являться повреждение
информации во FLASH BIOS).
В заключении хотелось бы отметить, что главным достоинством POST
Card является то, что она не требует для своей работы монитор, и
тестирование компьютера при помощи POST Card возможно на ранних
этапах процедуры POST, когда еще не доступна звуковая диагностика,
да и на стадии звуковой диагностики POST коды значительно удобнее
для восприятия, чем подсчет длительности и числа гудков компьютера.
Можно сказать, что POST Card - это глаза и уши инженера-ремонтника
компьютеров.
Кому же может пригодится POST Card? Прежде всего, сервисным
инженерам, сборщикам компьютеров, продавцам в компьютерном магазине,
системным администраторам, - всем, кому приходится решать
возникающие с компьютерами проблемы в сжатые сроки. Незаменима POST
Card и для профессиональных ремонтников материнских плат, полностью
использующих диагностические возможности процедуры POST BIOS. Даже
убежденные скептики после одно-двухкратного решения проблем при
помощи POST Card уже не могли с ней расстаться, хватаясь за нее в
сложных случаях, как утопающий хватается за соломинку. И, наконец,
известно нетрадиционное использование POST Сard программистами,
очень далекими от проблем hardware. Так как на индикаторе POST Card
отображается состояние порта POST кодов, то программисты при отладке
дополнительных модулей BIOS или программ промышленного автономного
управляющего компьютера без монитора получают возможность
отслеживать прохождение контрольных точек своей программы по
индикатору POST Card, просто занося условные коды в регистр POST
кодов. Например, при программировании на Turbo Pascal для того,
чтобы отобразить число 5Ah на индикаторе POST Card, работающей по
адресу 80h, можно использовать оператор:
port[$80]:=$5A;
И, наконец, предвосхищая вопросы о том, где же можно приобрести
POST Card ? Промышленные производители POST Card относят
оборудование для ремонта компьютеров в разряд профессиональных,
поэтому, если вы располагаете суммой в $100-150 (а для PHD PCI цена
доходит и до $1000), то можете заказать POST Card на сайтах
вышеприведенных производителей. Вторым выходом из положения является
самостоятельная сборка простейшей POST Card для шины ISA. Такая POST
Card с индикатором ошибок в двоичном коде на 8 светодиодах содержит
4 широкодоступных ИС K555 (74LS) серии и может быть изготовлена даже
начинающим радиолюбителем за 1-2 вечера, причем себестоимость
изготовления минимальна.
Шина ISA все еще достаточно популярна, особенно, если учесть то
обстоятельство, что предлагаемая для изготовления простейшая POST
Card послужит для ремонта большого количества уже существующих
компьютеров с шиной ISA. Стоит обратить внимание и на тот факт, что
многие новейшие материнские платы с чипсетом I820 имеют один ISA
слот. Поэтому, я думаю, простейшая POST Card для шины ISA найдет
применение еще как минимум, 2-3 года. Кроме того, реализация POST
Card для шины PCI достаточно сложна, так как требует специальных
высокоскоростных ПЛИС и специально изготовленной печатной платы, и
не доступна начинающему радиолюбителю.
Схема простейшей POST Card представлена на рисунке
2, там же для облегчения монтажа имеется рисунок платы
расширения с нумерацией контактов разъема ISA. На микросхемах DD2,
DD3, DD4 выполнен дешифратор адреса устройства вывода с
фиксированным адресом 080h, наиболее часто используемом для выдачи
POST кодов. Поступающие с шины данных SD0-SD7 значения POST кодов
фиксируются в восьмиразрядном регистре DD1 и отображаются в двоичном
виде светодиодами HL0-HL7.
Для изготовления POST Card подойдет любая монтажная плата,
имеющая хотя бы первую часть разъема ISA (контакты A1-A31, B1-B31).
В крайнем случае можно использовать отпиленную от старого
неисправного MIO или VGA адаптера нижнюю часть с разъемом ISA,
прикрепив к ней при помощи двух винтов M3 небольшой кусок монтажной
платы. Все соединения на монтажной плате выполняются тонким
многожильным проводом МГТФ после установки дискретных элементов. В
конструкции можно использовать микросхемы DD1 типа K555ИР23,
DD2-K555ЛА2, DD3,4 - К555ЛЕ1, а также их аналоги из серий K1533,
K1531, K531 (зарубежные 74LS, 74ALS, 74HC, 74F). Светодиоды HL0-HL7
необходимо расположить в один ряд в следующем порядке (слева
направо):
HL7 HL6 HL5 HL4 HL3 HL2 HL1 HL0
Эти светодиоды будут отображать POST код в двоичном виде:
зажженный светодиод соответствует логической 1, погашенный - 0. Для
перевода получившегося двоичного кода в двухразрядный
шестнадцатиричный вид, принятый в таблицах POST кодов, необходимо
мысленно разделить светодиоды HL7...HL0 на две половины: старшую
(HL7, HL6, HL5, HL4) и младшую (HL3, HL2, HL1, HL0), затем по
таблице 1 определить для каждой половины свой шестнадцатиричный
символ и мысленно объединить эти символы в правильном порядке:
старшая половина соответствует старшему символу, а младшая -
младшему. При некоторой тренировке всю эту процедуру можно
производить в уме.
Старшая половина HL7 HL6 HL5 HL4 |
Шестнадца- тиричный код старшей
половины |
Младшая половина HL3 HL2 HL1 HL0 |
Шестнадца- тиричный код младшей
половины |
Резуль- тирующий POST код |
0 0 0 0 |
0 |
0 0 0 0 |
0 |
00 |
0 0 0 0 |
0 |
0 0 0 1 |
1 |
01 |
0 0 0 0 |
0 |
0 0 1 0 |
2 |
02 |
0 0 0 0 |
0 |
0 0 1 1 |
3 |
03 |
0 0 0 0 |
0 |
0 1 0 0 |
4 |
04 |
0 0 0 0 |
0 |
0 1 0 1 |
5 |
05 |
0 0 0 0 |
0 |
0 1 1 0 |
6 |
06 |
0 0 0 0 |
0 |
0 1 1 1 |
7 |
07 |
0 0 0 0 |
0 |
1 0 0 0 |
8 |
08 |
0 0 0 0 |
0 |
1 0 0 1 |
9 |
09 |
0 0 0 0 |
0 |
1 0 1 0 |
A |
0A |
0 0 0 0 |
0 |
1 0 1 1 |
b |
0b |
0 0 0 0 |
0 |
1 1 0 0 |
C |
0C |
0 0 0 0 |
0 |
1 1 0 1 |
d |
0d |
0 0 0 0 |
0 |
1 1 1 0 |
E |
0E |
0 0 0 0 |
0 |
1 1 1 1 |
F |
0F |
. . . |
. . . |
. . . |
. . . |
. . . |
0 1 0 1 |
5 |
1 0 1 0 |
A |
5A |
. . . |
. . . |
. . . |
. . . |
. . . |
0 0 0 1 |
1 |
0 0 0 0 |
0 |
10 |
0 0 1 0 |
2 |
0 0 0 0 |
0 |
20 |
0 0 1 1 |
3 |
0 0 0 0 |
0 |
30 |
0 1 0 0 |
4 |
0 0 0 0 |
0 |
40 |
0 1 0 1 |
5 |
0 0 0 0 |
0 |
50 |
0 1 1 0 |
6 |
0 0 0 0 |
0 |
60 |
0 1 1 1 |
7 |
0 0 0 0 |
0 |
70 |
1 0 0 0 |
8 |
0 0 0 0 |
0 |
80 |
1 0 0 1 |
9 |
0 0 0 0 |
0 |
90 |
1 0 1 0 |
A |
0 0 0 0 |
0 |
A0 |
1 0 1 1 |
b |
0 0 0 0 |
0 |
b0 |
1 1 0 0 |
C |
0 0 0 0 |
0 |
C0 |
1 1 0 1 |
d |
0 0 0 0 |
0 |
d0 |
1 1 1 0 |
E |
0 0 0 0 |
0 |
E0 |
1 1 1 1 |
F |
0 0 0 0 |
0 |
F0 | Таблица 1. Перевод двоичных
POST кодов в шестнадцатиричные
После сборки POST Card необходимо протестировать. Для этого можно
использовать любую программу, позволяющую заносить в устройство
вывода по адресу 080h произвольные значения в диапазоне 00h-FFh, при
этом необходимо убедиться в соответствии показаний индикатора POST
Card выводимым в порт 080h данным. Такую программу можно получить
здесь: posttest.zip
(4 Кб), кроме того, ее можно использовать для обучения и тренировки
при переводе POST кодов из двоичного вида в шестнадцатиричный.
Какие же усовершенствования можно предложить для простейшей POST
Card? Прежде всего, желательно добавить регистр DD5 (K555TM2) со
светодиодом HL8 для фиксации прохождения сигнала RESET (схема на рисунке
3). Сигнал RESET вырабатывается блоком питания компьютера при
его включении, либо при нажатии на кнопку RESET. В случае полной
неисправности материнской платы с установленным процессором может
оказаться, что никакие POST коды этой системой не вырабатываются, а
простейшая POST Card (рисунок
2) в таком случае будет отображать случайный мусор, который
будет заноситься в регистр DD1 при каждом включении питания. Этот
мусор может быть неверно растолкован как какой-то POST код. Если
установить дополнительный регистр DD5 (рисунок
3), то при поступлении сигнала RESET и до записи первого POST
кода в ИС DD1 все светодиоды HL0-HL1 POST кодов будут погашены
высоким уровнем на выводе 1 DD1. Кроме того, по кратковременному
вспыхиванию светодиода HL8 можно будет судить о прохождении сигнала
RESET.
В качестве второго усовершенствования можно предложить введение
дешифратора - преобразователя двоичного кода в семисегментный для
отображения POST кодов на обычном двухразрядном семисегментном
индикаторе. К сожалению, мне неизвестны стандартные
одно-двухразрядные микросхемы для преобразования полного
четырехразрядного двоичного кода в семисегментный, однако их можно
заменить, например, программируемыми ИС. Схемы простейших
семисегментных дешифраторов вместе с прошивками на K155PE3
публиковались в журнале "Радио" (например, "Радио" N 12 за 1987 год,
стр 55). С некоторой избыточностью в качестве дешифратора можно
также применить более доступные ИС УФРПЗУ K573РФ2(6). Однако, даже
простейшая POST Card с отображением POST кодов в двоичном виде на 8
светодиодах существенно сократит время на диагностику неисправностей
и, я надеюсь, значительно облегчит жизнь многим
сборщикам/ремонтникам компьютеров!
Автор выражает благодарность
Кляшторному Андрею за сотрудничество и полезные
замечания при проектировании и тестировании авторской версии POST
Card. |