Смекни!
smekni.com

Далее следует проверка таймера, нулевой канал которого связан с процессором через программируемый контроллер прерываний, генерирующего прерывания примерно через каждые 18,2 с. Первый канал таймера используется для запуска контроллера DMA - прямого доступа в память, передающего запрос для регенерации системной динамической памяти. Второй канал таймера служит обычно для генерации звука через динамик компьютера или измерения временных интервалов. Первым делом POST тестирует первый канал таймера и инициализирует его на требуемую частоту регенерации, и только затем инициализирует нулевой канал.

Именно после этого шага становится доступной звуковая диагностика (Приложение 1).

Непосредственно после инициализации таймера POST начинает выполнять тесты записи-чтения регистров контроллера DMA и, если не возникает ошибок, начинает периодическую регенерацию системной памяти. В той же фазе тестируется и контроллер клавиатуры, также расположенный на системной плате. Только после инициализации контроллера DMA начинается тестирование первых 64Кб системной памяти, которая впоследствии также интенсивно используется в процессах тестирования в качестве рабочей области.

Еще два важнейших узла должны быть протестированы на системной плате - это контроллер прерываний и кэш-контроллер (если он есть). Только когда все эти микросхемы работают нормально, компьютер может выполнять любые внутренние операции. Поскольку видеосистема компьютера в это время еще не инициализирована, то все сообщения об ошибках выдаются в виде гудков динамика.

Услышав при загрузке «мелодию» из динамика компьютера, не надо сразу отчаиваться. Попробуйте выключить компьютер и, подождав 15-20 с., снова включить его. Вполне возможно, что ошибка окажется временной и компьютер во второй раз успешно загрузится. Можно также поискать микросхемы с плохим контактом (эта операция уже описана ранее).

Кстати, некоторые IBMPC-совместимые компьютеры имеют для питания CMOSRAM литиевые элементы, другие щелочные. Прежде чем приступить к замене таких элементов необходимо, как правило, выполнить некоторую предварительную работу. При отсутствии напряжения питания вся информация о конфигурации вашей системы, хранимая в CMOS, естественно пропадает, поэтому если вы не хотите вызывать специалистов для настройки компьютера, поработайте сначала несколько минут с программой установки (Setup), чтобы тем или иным образом сохранить необходимую информацию о системе (проще и надежнее всего переписать на бумагу). Кстати, при замене самих элементов постарайтесь не перепутать «плюс» с «минусом».

Следует помнить также, что литиевые элементы обычно нельзя перезаряжать.

После тестирования и инициализации видеоконтроллера становится возможным вывод сообщений на экран монитора.

На завершающей стадии POST осуществляется проверка и инициализация устройств, выполняющих связь компьютера с внешним миром, - клавиатуры, дисков, последовательных и параллельных портов и т. п.

На компьютерах класса AT последняя фаза POST начинается, как правило, с проверки данных, сохраняемых в CMOSRAM. Полученные данные о конфигурации системы помогают POST выполнить оставшуюся работу. Неисправность CMOSRAM вполне может быть связана с разрядом (истощением) батареек, обеспечивающих энергонезависимость этого типа памяти. Важнейшей операцией POST на текущем этапе является инициализация видеосистемы компьютера. После выполнения этой работы POST уже может выдавать на экран различные сообщения. С этого же момента на экран могут выдаваться и диагностические сообщения об исправности периферии (Приложение 2).

Процедура POST вначале сканирует память в поиске видеоRОМ BIOS в диапазоне С000: 0 до С780: 0. Прежде всего происходит подсчет контрольной суммы, найденной ROMBIOS, затем ей передается управление. Происходит инициализация видеоадаптера, и на экране появляется курсор. Если ROMBIOS на плате адаптера не найден, инициализация видеоадаптера происходит с использованием драйвера из системной ROMBIOS.

Кроме видеоадаптера, в компьютере могут быть установлены и другие устройства, имеющие собственные ROMBIOS. Это, например, некоторые контроллеры жестких дисков (XT, ESDI, SCSI), сетевые адаптеры и т. п. Их поиск выполняется в диапазоне адресов С800: 0 - DF80: 0 с инкрементом в 2 Кб. После подсчета контрольной суммы ROMBIOS ей на время передается управление. В противном случае высвечивается ошибка

хххх ROMError,

где хххх - адрес начального сегмента соответствующей ROMBIOS. При возникновении проблем с этими адаптерами рекомендации остаются прежними. Выключите компьютер, осмотрите саму плату и подключенные к ней кабели, проверьте надежность контакта микросхем в панельках, после чего снова включите компьютер.

После инициализации видеосистемы POST тестирует оставшуюся оперативную память компьютера. Обычно эта работа сопровождается «щелчками» из динамика и визуализацией работоспособности количества проверенных килобайт. Если переключатели на системной плате (для ХТ- компьютеров) установлены неправильно или обнаружена неисправная микросхема, POST выдает на экран соответствующее сообщение. В зависимости от типа BIOS в этом сообщении тем или иным образом указывается адрес, где именно произошла ошибка (parityerror).

Так, для BIOSIBMXT/A и AMI используется линейная адресация типа ххххх (шестнадцатиричный код), а, например, в сообщении BIOSPhoenix может применяться запись типа

сегмент: смещение (хххх; хххх)

Стоит отметить, что в процессе POST всегда проверяется содержимое ячейки памяти по адресу 0: 0472. Если в ней содержится шестнадцатеричное число 1234п, то выполняется «теплый» рестарт, т. е. процедура проверки всей оперативной памяти опускается. Это происходит обычно после нажатия трех клавиш: Ctrl-Alt-Del при включенном компьютере.

После тестирования памяти процедура POST проверяет работоспособность клавиатуры. Если на экране появляется сообщение «KeyboardError», то сначала выключите компьютер. Затем проверьте, правильно ли подключена клавиатура, не нарушен ли контакт, не запала ли

какая-либо клавиша, или, может быть, что-то лежит на клавиатуре. После этого снова включите компьютер. Если и в этом случае появляется вышеуказанное сообщение, то возможно поврежден кабель клавиатуры или нарушен контакт в одном из разъемов.

Проверка микросхем последовательных портов и контроллера жестких дисков происходит вслед за проверкой клавиатуры. Заметим, что если контроллер жесткого диска отсутствует или не подключен, никакого диагностического сообщения выдаваться не будет.

Нормальное завершение процедуры POST обычно сопровождается одним коротким гудком динамика. После этого начинает работать не менее важная процедура - системный ROMBIOS, которая обеспечивает подготовку к начальной загрузке модулей оперативной системы. Эту функцию осуществляет программа начальной загрузки (ROMBootstrapRoutine), хранящаяся в ROMBIOS. Иногда эту программу называют также просто «начальный загрузчик». Вышеназванная программа первым делом пытается считать сектор 1 (головка О, цилиндр 0) с устройства А: в определенную память компьютера по адресу 0: 7COOh. Если в накопитель вставлена несистемная дискета (или ее загрузочный сектор поврежден) для версий MS-DOS выше 4, 0, выдается сообщение:

Non-System disk or disk error Replace and press any key when ready

В такой ситуации можно либо заменить дискету на исправную (системную), либо, удалив дискету на приводе А:, нажать любую клавишу на клавиатуре и попытаться загрузиться с жесткого диска. В последнем случае программа начального загрузчика BIOS попробует прочитать тот же физический сектор по тому же адресу в память, но уже с первого винчестера (устройства С:). Тут следует, правда, оговориться, что такой порядок действий характерен для большинства настольных компьютеров, но он целиком зависит все-таки от BIOS. В частности, в некоторых BIOS предусматривается на выбор несколько вариантов загрузки, например, только с С:, сначала с А:, потом с С: или наоборот. Кстати, если операционной системы нет ни на одном из носителей, компьютер выдаст сообщение:

Operating system not found

Если в оперативную память успешно считан с винчестера MasterBoot-сектор, то управление передается программе IPL1. Эта программа сканирует содержание таблицы деления диска (PartitionTable) в поисках активного раздела. Как известно, активный (загружаемый) раздел в поле «Признак Загрузки» содержит код 80h, а остальные разделы помечены кодом 00h. Программа IPL1 считывает сектор, номер которого находится в поле «Начало раздела», а именно, в трех байтах, следующих за кодом 80h. В этих байтах находятся номера головки, сектора и цилиндра стартового сектора раздела. Выбранный таким образом сектор является Boot-сектором активного раздела винчестера, а его содержание аналогично содержанию Boot-сектора флоппи-диска,

Программа IPL1 может выдавать на экран три сообщения. Например, если PartitionTable содержит более одного загружаемого раздела, то выдается сообщение

Invalid Partition Table

Если Boot-сектop активного раздела не удается считать в память, то выдается сообщение

Error loading operation system

Ну, а если в Boot-секторе отсутствует сигнатура OAA55h, то на экране монитора может появиться надпись

Missing operating system

Это же сообщение может появиться, если винчестер в SETUP выставлен неверно.

Напомним, что начальная инструкция JMP в Boot-секторе выполняет переход на точку входа программы IPL2. Эта программа, в свою очередь, используя информацию из блока параметров BIOS (ВРВ), определяет, являются ли два первых файла в корневом оглавлении диска модулями DOS (MSDOS. SYS и 10. SYS). Затем IPL2 загружает эти файлы в младшие адреса памяти (70: 0000h) и передает управление на I0. SYS. Далее следует процесс инициализации, выполняемый средствами самой DOS.

Отметим, что POST достаточно поверхностно проверяет работоспособность ОЗУ. Это же можно сказать и о некоторых диагностических программах. Однако при загрузке драйвера расширенной памяти типа HIMEM. SYS происходит еще одна проверка памяти, причем по другим критериям. Если при этом выдается сообщение об ошибке, то скорей всего, проблемы с памятью все-таки есть. Они могут быть связаны с использованием различных модулей SIMM в одном банке, слишком большим временем доступа, а также с ошибками в cache-памяти. Для начала можно попробовать отключить в SETUP внешний и внутренний кэш. Если это не помогло, то необходимо заменять модули ОЗУ, так как такие ошибки будут приводить к зависанию программ.