Установка и конфигурирование устройств в PC-совместимом компьютере — процесс довольно сложный. Пользователь должен назначить устройству прерывание, порты ввода-вывода и каналы DMA, т.е. ресурсы, не используемые в данный момент другими устройствами. В прошлом это выполнялось с помощью перемычек и переключателей на плате устанавливаемого устройства. При неверном выборе параметров возникал конфликт устройств, который чаще всего являлся причиной других ошибок (например, система отказывалась загружаться).
Технология Plug and Play значительно упростила процесс установки и конфигурирования новых устройств. Пользователю необходимо лишь вставить плату в свободный разъем, а система автоматически выделит ей необходимые ресурсы.
Технология Plug and Play состоит из следующих основных компонентов:
При загрузке компьютера, поддерживающего технологию Plug and Play, BIOS инициализирует конфигурирование устройств, соответствующих спецификации Plug and Play. Если адаптер в системе уже установлен, то BIOS считывает конфигурационную информацию из таблицы ESCD, инициализирует устройство и продолжает загрузку. Если же устройство впервые появилось в системе, BIOS запрашивает у ESCD свободные ресурсы. Получив их, она конфигурирует новое устройство. Если же с помощью свободных ресурсов новое устройство сконфигурировать невозможно, BIOS продолжает загрузку компьютера, после чего конфигурированием занимается операционная система. Параметры всех корректно сконфигурированных устройств записываются в таблицу ESCD.
ESCD — таблица распределения свободных ресурсов компьютера.
Память типа ROM (Read-Only Memory, или ПЗУ) может постоянно (или практически постоянно) хранить данные. Эти записанные данные хранятся в памяти даже при отключении питания. Таким образом, для хранения стартовых процедур (и BIOS) лучше всего подходит память ROM. Аналогичная память используется и в других устройствах с собственной BIOS, например в видеоадаптерах.
Особо отмечу, что ROM и оперативная память — не противоположные понятия. На самом деле ROM представляет собой часть оперативной памяти системы. Другими словами, часть адресного пространства оперативной памяти отводится для ROM. Это необходимо для хранения программного обеспечения, которое позволяет загрузить операционную систему; в противном случае процессор сразу после включения питания не найдет в памяти команды, которые ему следует выполнить.
Например, сразу при включении компьютера счетчик команд автоматически принимает значение (адрес) FFFF0h; команды, размещенные по этому адресу, должны обеспечить загрузку операционной системы. Этим командам отводится ровно 16 байт, от конца первого мегабайта оперативной памяти и от конца ROM. Если бы эти адреса указывали на ячейки обычной памяти, все хранимые в ней данные, в том числе и команды, исчезли бы при выключении питания и процессор при следующем включении не нашел бы там никаких команд. Но, если этот адрес указывает на ячейку ROM, программа запуска системы в неизменном виде выполняется каждый раз при включении компьютера.
Обычно первым адресом ROM системы является F0000h или E0000h, расположенный за 64 или 128 Кбайт от конца первого мегабайта. Поскольку емкость ROM обычно равна 128 Кбайт, программы ROM полностью занимают последние 128 Кбайт первого мегабайта, включая критический адрес FFFF0h первой команды запуска. Емкость современных микросхем ROM может достигать 256 или 512 Кбайт. Такой увеличенный объем позволяет хранить драйверы интегрированных на системной плате устройств. К примеру, ROM интегрированной на системной плате видеосистемы обычно находится в адресах C0000h–C7FFFh, а ROM прочих интегрированных устройств, таких как адаптеры сети и SCSI, — в адресах C8000h–DFFFFh.
На рисунке показана карта распределения первого мегабайта памяти. Замечу, что верхние адреса памяти, зарезервированные для ROM BIOS материнской платы и адаптеров, находятся в конце первого мегабайта.
Кажется странным, что при запуске компьютер начинает выполнять команду, расположенную за 16 байт от конца ROM, но в этом есть свой смысл. Просто по этому адресу помещается команда перехода JMP, после выполнения которой процессор переходит к фактическому началу программы; в большинстве случаев оно близко к адресу F0000h, который расположен примерно на 64 Кбайт ранее в карте памяти. Это все равно что начинать чтение книги с 16-й страницы от конца; причем на ней должен быть указан номер страницы, с которой фактически начинается изложение. Зато подобное соглашение позволяет свободно изменять объем ROM.
Основной код BIOS содержится в микросхеме ПЗУ на системной плате, но на плата адаптеров также есть аналогичные микросхемы. Они содержат вспомогательные подпрограммы BIOS и драйверы, необходимые для конкретной платы, особенно для тех плат, которые должны быть активизированы на раннем этапе начальной загрузки, например для видеоадаптера. Платы, не нуждающиеся в драйверах на раннем этапе начальной загрузки, обычно не имеют ПЗУ, поскольку их драйверы могут быть загружены с жесткого диска позже — в процессе начальной загрузки.
Программа, хранящаяся в ПЗУ системной платы, сканирует специальную область ROM оперативной памяти (адреса C0000–DFFFFh) в поисках пары байтов сигнатуры (55AAh), которая указывает на начало ПЗУ адаптеров.
Адреса ПЗУ всех адаптеров должны начинаться с 55Aah, иначе системная плата просто их не распознает. Третий байт указывает размер ПЗУ в единицах, кратных 512 байт, которые называются абзацами, а четвертый байт соответствует фактическому началу драйверов. Байт размера используется ПЗУ системной платы в целях тестирования. ПЗУ системной платы складывает все байты в ПЗУ, после чего делит полученную сумму на количество байтов. Остаток от деления должен быть равен 100h. Поэтому при написании программы для ПЗУ адаптера программист обычно использует байт “дополнения”, позволяющий получить необходимую контрольную сумму. Используя значение контрольной суммы, системная плата проверяет ПЗУ каждого адаптера во время выполнения процедуры POST и помечает те из них, которые были повреждены.
Базовая система ввода-вывода системной платы автоматически выполняет программы в ROM любого адаптера, который она находит в процессе сканирования. Процесс обнаружения и инициализации видеоадаптера можно наблюдать в большинстве компьютеров при включении питания и во время выполнения POST.
Многие производители компьютерных систем заключают контракты с AMI и Phoenix на программирование BIOS конкретных материнских плат и наборов микросхем системной логики. Однако некоторые из них создают и собственные, независимые системы BIOS. К числу таких компаний относятся Dell, HP/Compaq, AT&T и Acer. Чаще всего за основу берется приобретенная несколько лет назад система BIOS от AMI или Phoenix и в нее вносятся необходимые дополнения.
Несмотря на то что оригинальная версия системы BIOS была выпущена AMI или Phoenix, в данном случае ее обновления будут доступны только на сайте производителя компьютера или материнской платы, поскольку только он отвечает за внесенные в базовую систему изменения и дополнения.
Чаще всего обновленные версии BIOS можно загрузить с сайта производителя системной платы. Производители BIOS обновления не предлагают, так как в каждой модели материнской платы используются модифицированные версии BIOS. Поэтому не следует искать обновление на сайте Phoenix, AMI или Award. Обращаться за обновлением следует к производителю системной платы или всей системы. Обновления можно найти и на сайте eSupport.com, особенно если сайт производителя найти не удалось или если эта компания вообще прекратила свое существование.
Для запуска этой программы необходимо во время загрузки системы нажать определенную клавишу или комбинацию клавиш. Обычно название этой клавиши отображается на экране во время выполнения теста POST. Если этот тест проходит настолько быстро, что вы не успеваете прочитать сообщение, попробуйте воспользоваться клавишей <Pause> и немного “задержать” сообщение на экране. Если после этого нажать любую клавишу, система продолжит загрузку в обычном режиме.
Ниже представлены стандартные клавиши запуска этой программы для BIOS различных производителей, которые необходимо нажимать во время выполнения процедуры POST.
Если ни одна из этих клавиш не обеспечивает запуска программы настройки BIOS, почи тайте документацию к своей системной плате или обратитесь к ее производителю.
В некоторых оригинальных компьютерных системах для запуска программы настройки BIOS используются особые клавиши.
После запуска программы появится ее основной экран с меню и подменю. В следующих разделах мы рассмотрим всю систему меню, характерную для большинства материнских плат от Intel. Несмотря на то что не все материнские платы имеют подобные настройки, а некоторые производители используют иную терминологию, предлагаемое общее описание поможет вам разобраться в их смысловом значении.