Самотестирование при включении питания

      IBM PC выполняет процедуру самопроверки после каждого сброса

    системы, включая момент, когда появляется питание. Такая проверка

    преследует две цели: она выполняет быструю проверку основных

    элементов системы и инициализирует основные аппаратные компоненты.

 

      Как системный тест, процедура POST образует первую часть

    трехуровнего диагностического пакета фирмы IBM для ее персональной

    ЭВМ. Процедура POST выполняется всякий раз при включении системы.

    Эта быстрая проверка тестирует работу системы и обнаруживает ошибку

    до того, как она повлияет на выполнение программы. Программы,

    обеспечивающие второй уровень диагностики приходит вместе с каждой

    машиной в составе руководства по работе на IBM PC; эта дискета (или

    кассета) содержит программу диагностики, она проверяет оьдельно

    каждый компонент машины. Эта диагностическая программа определяет,

    какую часть машины покуптель должен вернуть для обслуживания, если

    найдена ошибка. Наконец, фирма IBM поставляет усовершенствованное

    диагностическое средство. Это средство, доступное за дополнительную

    плату, определяет, какой из сменных узлов не работает. Это

    диагностическое средство создано для обслуживающего персонала,

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

    усовершенствованные диагностические тесты.

 

      Начало процедуры POST, возможно, будет трудно найти из-за того,

    что оно находится в самом конце листинга. Когда микропроцессор 8088

    сбрасывается (или когда включается питание), он начинает работу с

    адреса 0FFFF:0000H. Эта ячейка находится всего в 16 байтах от

    самого конца адресного пространства микропроцессора 8088. Этого

    места хватает для команды перехода на настоящую программу POST. Как

    вы видите, команда FAR JMP передает управление на метку START,

    которая и есть начало процедуры POST. Фирма IBM использует

    оставшиеся байты в конце памяти под дату; эта дата - момент выпуска

    ПЗУ в серию.

      Способ запуска процедуры POST также объясняет, почему фирма IBM

    расположила ПЗУ в верхних адресах памяти. Именно здесь

    микропроцессор начинает выполнение программы после сброса.

    Системное ПЗУ, содержащее программу инициализации машины, должно

    иметь некоторую информацию по адресу 0FFFFH:0000H. Так что есть

    смысл помещать все ПЗУ в конце памяти. Также, есть смысл поместить

    ОЗУ в нижних адресах, оставив в нем векторы прерываний. Возможность

    модификации кодов в этих векторах в большой степени увеличивает

    универсальность программы BIOS.

      Вообще процедура POST состоит из неинтересных кодов. Многие

    последовательности команд не имеют никакого смысла. Если вы

    посмотрите на начальную последовательность команд, то увидите, что

    они не делают ничего - если с микропроцессором ничего не случилось.

    Если вас не интересует написание диагностических программ нет

    смысла изучать технику процедуры POST. Отметим некоторые действия

    процедуры POST, чтобы показать область проверки ошибок. Процедура

    POST проверяет все ПЗУ системной платы, считая контрольную сумму.

    Этот тест складывает все байты модулей ПЗУ. При сложении перенос из

    8-битового результата игнорируется. Если окончательный результат

    нулевой, ПЗУ прошло проверку. Конечно, перед тем, как запустить ПЗУ

    в серию, фирма IBM обеспечила, чтобы сумма каждого ПЗУ была равна

    нулю. Если ПЗУ плохое, этот тест находит ошибку.

      Процедура POST также проверяет всю оперативную память в

    системе. Переключатели не системной плате сообщают процедуре POST,

    сколько у системы есть памяти в наличии. Каждый бит памяти

    проверяется, может ли он быть установлен в единицу и сброшен в

    нуль. По окончании теста процедура POST записывает нули по всем

    адресам памяти. Это означает, что если вы написали программу,

    которая будет работать сразу же после процедуры POST, содержимое

    всей памяти окажется нулевым. Но надеяться, что некоторая другая

    программа инициализирует поля данных вашей программы - плохой стиль

    программирования. чтобы быть в этом уверенным, лучше делать это

    самому.

      Последнее, что можно сказать про процедуру POST - то, что она

            Аппаратные прерывания

      ---------------------------------------------------------

       Номер

       прерывания             Использование в ROM BIOS

      ---------------------------------------------------------

        2   02H         Ошибка четности в памяти

        5   05H         Печать экрана

        8   08H         Текущее время

        9   09H         Клавиатура

       14   OEH         Дискета

 

                 Драйверы BIOS

      ---------------------------------------------------------

       Номер

       прерывания             Использование в ROM BIOS

      ---------------------------------------------------------

       16   10H         Видео

       17   11H         Проверка оборудования

       18   12H         Размер памяти

       19   13H         Дискета

       20   14H         Асинхронные

       21   15H         Кассета стриммера

       22   16H         Клавиатура

       23   17H         Принтер

       24   18H         Точка входа Бэйсика для кассеты

       25   19H         Точка входа в процедуру первичной

                        загрузки

       26   1AH         Текущее время

      ---------------------------------------------------------

 

            Процедуры управляемые пользователем

      ---------------------------------------------------------

       Номер

       прерывания             Использование в ROM BIOS

      ---------------------------------------------------------

       27   1BH         Прерывание клавиатуры

       28   1CH         Квантование времени

 

            Блоки параметров BIOS

      ---------------------------------------------------------

       Номер

       прерывания             Использование в ROM BIOS

      ---------------------------------------------------------

       29   1DH         Параметры видеомонитора

       30   1EH         Параметры дисковода

       31   1FH         Графические символы видеомонитора

      ---------------------------------------------------------

 

            Фиг. 9.1 Векторы прерываний, используемые

                  ROM BIOS

    инициализирует векторы прерываний для BIOS. Программы получают

    доступ к BIOS с помощью векторов прерывания. Сами по себе эти

    подпрограммы находятся в модуле ПЗУ, в том же, что и процедура

    POST. Перед тем, как процедура POST передаст управление

    операционной системе, она делает так, чтобы каждая входная точка

    BIOS была записана в соответствующий вектор прерывания. BIOS

    использует векторы прерываний для прерываний от 2 до 01FH.

    Техническое описание содержит листинг векторов прерывания, в

    котором показаны номера прерываний и первоначальное содержимое

    векторов. На Фиг.9.1 изображена часть этой таблицы, которая будет

    использоваться в описании BIOS.

Hosted by uCoz