Вариант ПЗУ
Эта статья нуждается в дополнительных цитатах для проверки . ( ноябрь 2015 г. ) |
Дополнительное ПЗУ для платформы ПК (т. е. IBM PC и последующих компьютерных систем) — это часть встроенного ПО , которая находится в ПЗУ на плате расширения (или хранится вместе с основной системной BIOS ), которая запускается для инициализации устройства и (необязательно) добавьте поддержку устройства в биос. При обычном использовании это, по сути, драйвер , который взаимодействует между API BIOS и оборудованием. Технически дополнительное ПЗУ — это встроенное ПО, которое выполняется BIOS после POST (тестирование и инициализация основного системного оборудования) и перед процессом загрузки BIOS, обеспечивая полный контроль над системой и, как правило, неограниченное в своих возможностях. BIOS использует каждое дополнительное ПЗУ для возврата управления BIOS, чтобы он мог либо вызвать следующее дополнительное ПЗУ, либо начать процесс загрузки. По этой причине дополнительное ПЗУ может (но не обычно) сохранять контроль и вытеснять процесс загрузки BIOS. BIOS (по крайней мере, первоначально разработанный IBM) обычно сканирует и инициализирует (путем выполнения) дополнительные ПЗУ в порядке возрастания адресов с интервалами адресов 2 КБ в двух разных диапазонах адресов выше адреса C0000h в обычном (20-битном) адресном пространстве памяти. ; более поздние системы могут также сканировать дополнительные диапазоны адресов в 24-битном или 32-битном расширенном адресном пространстве.
Дополнительные ПЗУ необходимы для обеспечения загрузки периферийных устройств, не поддерживающих Plug and Play, и для расширения BIOS для обеспечения поддержки любого периферийного устройства, не поддерживающего Plug and Play, так же, как поддерживаются стандартные и встроенные в материнскую плату периферийные устройства. Дополнительные ПЗУ также используются для расширения BIOS или добавления в BIOS других встроенных служб. В принципе, дополнительное ПЗУ может предоставлять любое расширение встроенного ПО, такое как библиотека подпрограмм видеографики или набор служб обработки звука PCM, и вызывать его установку в ОЗУ системы и, при необходимости, в систему прерываний ЦП перед загрузкой. время.
Распространенным дополнительным ПЗУ является видеоBIOS , который загружается очень рано в процессе загрузки и перехватывает INT 10h , чтобы выходные данные самотестирования при включении питания можно было отобразить (POST). Видеобиос почти всегда располагается в сегменте памяти, начиная с C0000h
, начало области памяти, зарезервированной для дополнительных ПЗУ; это связано с тем, что, когда материнская плата имеет встроенный контроллер VGA, дополнительное ПЗУ будет находиться в BIOS — BIOS знает, где оно находится, и копирует его в ОЗУ в фиксированное время. Другие ПЗУ могут располагаться из сегментов C8000h
вплоть до F4000h
на ранних ПК. [1] Конечный адрес поиска был ограничен сегментом DFFFFh
[2] или EFFFFh
[3] в современных продуктах. Спецификация загрузки BIOS требует, чтобы дополнительные ПЗУ были выровнены по границам 2 КБ (например, сегменты C8000h, C8800h, C9000h, C9800h
, и т. д.). Первые два байта ПЗУ должны быть 55 AA
. [4] Третий байт указывает размер ПЗУ блоками по 512 байт (например, 20h
для ПЗУ 16кБ). А четвертый байт — это то, где BIOS начинает выполнение дополнительного ПЗУ для его инициализации перед загрузкой системы.
Часто эта инициализация выполняется с помощью 3-байтовой инструкции перехода , начинающейся с шестнадцатеричного значения. E9
.
[5]
Оригинальное использование дополнительных ПЗУ для загрузки через карты расширения.
[ редактировать ]До разработки и повсеместного внедрения стандарта Plug and Play BIOS обычно требовалось, чтобы дополнительное устройство, такое как контроллер жесткого диска или карта сетевого адаптера (NIC), включало дополнительное ПЗУ, чтобы оно могло быть загрузочным, поскольку BIOS материнской платы не включал никакой поддержки этого устройства и поэтому не мог включить его в протокол загрузки BIOS. Такое дополнительное ПЗУ будет подключать INT 19h, прерывание загрузки BIOS, чтобы вытеснить загрузчик BIOS и заменить собственный загрузчик. Загрузчик дополнительного ПЗУ попытается загрузиться с диска, сети или другого источника загрузочной программы, подключенного или установленного на карте адаптера; если эта попытка загрузки не удалась, она передаст управление предыдущему загрузчику (на который указывал INT 19h до того, как дополнительное ПЗУ подключило его), позволяя системе загружаться с другого устройства в качестве запасной стратегии. Некоторые карты адаптеров, такие как определенные адаптеры SCSI (например, некоторые производства Adaptec), были доступны в версиях, которые отличались только наличием или отсутствием дополнительного ПЗУ, позволяющего загрузку с подключенных устройств SCSI. В результате протокола сканирования дополнительного ПЗУ дополнительное ПЗУ с самым высоким адресом инициализируется последним и, следовательно, последним перехватывает любые прерывания, и первым в этих цепочках подпрограмм обслуживания прерываний (ISR); таким образом, адреса дополнительных ПЗУ полностью определяют приоритет загрузки между картами адаптеров, которым разрешена загрузка, а загрузочные устройства, поддерживаемые BIOS материнской платы, в совокупности имеют самый низкий приоритет, т. е. система попытается загрузиться с них только после попытки загрузки с них. все адаптеры с поддержкой загрузки.
Спецификация загрузки BIOS
[ редактировать ]Спецификация загрузки BIOS (BBS) была разработана консорциумом, включающим Compaq , Intel и Phoenix Technologies, для стандартизации последовательности инициализации Plug and Play (PnP) BIOS и дополнительных ПЗУ. [3] В стандарте представлено понятие таблицы векторов загрузочного соединения (BCV) и приоритета BCV. [3] Основные принципы стандарта делают поведение более определенным и допускающим отладку, а также дают производителям BIOS возможность для дальнейшей динамизации выбора загрузочного устройства для пользователя, помимо рекомендаций стандарта.
Начало заголовка PnP Expansion отмечено 4-байтовой ASCII . подписью $PnP
и
указатель на это сохраняется по смещению +1Ah как 2-байтовое значение с прямым порядком байтов. [6]
После завершения основных проверок POST BBS указывает, что BIOS обнаружит и затенит все дополнительные ПЗУ, находящиеся в BIOS, в вышеупомянутом регионе, а также будет проходить через конфигурационное пространство PCI , заполняя XROMBAR и копируя дополнительные ПЗУ карты расширения из MMIO пространство в регион. Затем BIOS сканирует регион, и если дополнительное ПЗУ имеет заголовок расширения PnP, он выполняет дальний вызов смещения +03h в заголовке дополнительного ПЗУ для его инициализации. Затем он повторно сканирует регион после инициализации всех дополнительных ПЗУ PnP (поскольку, как указано в приложении E, процедура инициализации дополнительного ПЗУ могла связать больше заголовков расширения PnP для отдельных дисков, которыми владеет устройство). Он добавляет указатель BCV (если присутствует) в заголовки расширения PnP и находит таблицу BCV или указатель BEV (если присутствует) в таблице приоритетов IPL. Записи BCV в таблице BCV затем вызываются в соответствии с приоритетом, установленным в NVRAM . Таблица BCV полна указателей на функции BCV, но имеет фиксированную запись, представляющую устаревшие дополнительные ПЗУ, которая является указателем на процедуру BIOS, которая вызывает +03h во всех оставшихся дополнительных ПЗУ, которые не имеют заголовка расширения PnP. Функция BCV инициализирует перехватчики INT 13h и INT 19h, которые, как предписывает BBS, не должны выполняться в процедуре инициализации в +03h. Если устройство не имеет заголовка PnP Expansion, оно может выполнить любую перехватку в процедуре в +03h, поскольку это устаревшая карта.
В процедуре начальной инициализации, поскольку дополнительное ПЗУ указывает на структуру данных PCI (отличную от пространства конфигурации), код дополнительного ПЗУ знает, что идентификатор устройства и поставщика находится с фиксированным смещением от RIP . Начало этой структуры отмечено 4-байтовой ASCII. подписью PCIR
и
указатель на него сохраняется по смещению +18h как 2-байтовое значение с прямым порядком байтов. [6] Это позволяет ему сканировать пространство конфигурации PCI, чтобы найти правильное устройство и BAR, которые ему необходимо использовать. Чтобы предотвратить такое сканирование, а также в случае наличия в системе двух одинаковых карт, BIOS передает PFA (шину/устройство/функцию) в процедуру инициализации в AX, а номер выбора карты (CSN) для дополнительных ПЗУ ISA передается в БХ. Затем он может взаимодействовать с устройством с помощью PMIO / MMIO, чтобы узнать, сколько у него дисков и какие из них являются загрузочными, прочитав MBR . BIOS уже прочесал конфигурационное пространство, выделил BAR и заполнил таблицу ACPI до вызова процедуры инициализации, поэтому дополнительное ПЗУ будет использовать адреса, выделенные для его BAR. Однако BCV перехватывает процедуры прерываний, которые взаимодействуют с устройством, которые настраиваются на основе местоположения базового адреса MMIO, информации о диске, определенной в процедуре инициализации дополнительного ПЗУ, и текущего номера диска в BDA.
Затем процедура BIOS INT 19h использует приоритет таблицы IPL в NVRAM, чтобы решить, следует ли вызывать запись, содержащую обработчик загрузки, который будет читать MBR 00h (BAID дискеты; первое устройство в таблице BCV, регистрирующее диск 00h), запись, содержащая обработчик загрузки, который будет читать MBR 80h (BAID жесткого диска; первое устройство в таблице BCV, зарегистрировавшее диск 80h) или одну из записей BEV в таблице. Устройство имеет BEV или BCV только в том случае, если оно является загрузочным.
SCSI
[ редактировать ]Карта контроллера SCSI может подключить INT 13h , который отвечает за предоставление услуг диска. Он сделает это в своем BCV, если это карта PnP. Как только это будет сделано, любые последующие вызовы INT 13h будут «перехвачены» дополнительным ПЗУ SCSI (или «SCSI BIOS»), что позволит ему реагировать на диски, которые могут существовать на шине SCSI. До того, как оно перехватило прерывание, в системе могло не быть дисков, но перехватив прерывание и изменив возвращаемые значения, SCSI BIOS может сделать все диски на шине SCSI видимыми для системы.
В этом конкретном случае BIOS сам может вызвать INT 13h, чтобы предоставить пользователю список возможных загрузочных устройств, и поскольку SCSI BIOS перехватил прерывание, пользователь сможет выбирать не только с каких стандартных системных устройств загружаться, а также какие SCSI-диски. Это связано с тем, что, как предложено в Приложении D спецификации Boot BIOS, BIOS может заполнять таблицу IPL информацией об устройстве и поставщике из вызовов INT 13h к различным дискам в сочетании с номером жесткого диска (80h, 81h...). , чтобы разрешить загрузку с любого устройства жесткого диска, а не только с первого диска первого контроллера, который перехватывает INT 13h (элемент с наивысшим приоритетом в таблице BCV), называемый в таблице BIOS Aware IPL Device (BAID). спецификация.
Несколько контроллеров могут одновременно подключить INT 13h. Например, после контроллера SCSI контроллер AHCI также может перехватить INT 13h, поместив вызов предыдущего обработчика, который был сохранен в IDT при записи 13h контроллером SCSI, в конце своего собственного обработчика, прежде чем он поместит адрес своего обработчика в IDT при записи 13h. Первый контроллер, перехвативший INT 13h, увидит, что установлено 0 дисков, проверив байт по адресу 0040:0075
, который находится в области данных BIOS (BDA), и если ему нужно перечислить 4 диска, он назначит диапазон номеров дисков 80h–83h и сохранит «4» в BDA. Если второй контроллер, перехватывающий INT 13h, имеет 2 диска, он прочитает «4» из BDA, назначит номера дисков 84h и 85h и сохранит «6» вместо «4». Теперь если INT 13h вызывается с DL=83h, то обработчик второго контроллера, которому не был присвоен номер диска 83h, передаст вызов предыдущему обработчику; тот обработчик, который назначил диску номер 83h, сам обработает вызов. При любом количестве ISR контроллеров, подключенных к INT 13h, каждый из ISR будет передавать управление следующему до тех пор, пока тот, кто назначил указанный номер диска, не распознает номер, не обработает вызов и не вернется из прерывания.
Сетевое загрузочное ПЗУ
[ редактировать ]Еще одним распространенным дополнительным ПЗУ является ПЗУ сетевой загрузки . Дополнительное ПЗУ содержит программу, необходимую для загрузки загрузочного кода. Исходные ПЗУ персонального компьютера IBM перехватывали INT 18H (первоначально для вызова Cassette BASIC ) и INT 19H, поскольку эти два прерывания использовались для процесса загрузки. INT 19h вызывается для инициации процесса загрузки, а INT 18h вызывается для запуска Cassette BASIC из ПЗУ, когда процесс загрузки обнаруживает, что ни одно из возможных загрузочных устройств не является загрузочным. Первоначально, перехватив INT 18h, ПЗУ сетевого адаптера попыталось загрузиться из сети, когда все другие загрузочные устройства (дискеты, жесткие диски и т. д.) вышли из строя. При подключении INT 19H ПЗУ сетевого адаптера попытается загрузиться из сети раньше других устройств. BBS указывает, что дополнительное ПЗУ сетевой карты не перехватывает INT 19h, а вместо этого обработчик BIOS 19h должен вызвать BEV, который затем загрузит загрузочный код.
Видео
[ редактировать ]Video BIOS предоставляет некоторые базовые службы отображения для BIOS и операционных систем , например INT 10H (Legacy BIOS), VBE (Legacy BIOS) и UEFI GOP . Исходный BIOS IBM PC включал интегрированную поддержку видеоадаптеров IBM CGA и MDA (и вообще не поддерживал дополнительные ПЗУ), поэтому эти видеокарты не имели дополнительных ПЗУ. Поддержка CGA и MDA в самом BIOS поддерживалась в линейках продуктов IBM PC XT и PC AT (которые поддерживали дополнительные ПЗУ), так что эти карты работали (с полной поддержкой BIOS) на этих машинах. Первой картой видеоадаптера для ПК с дополнительным ПЗУ была IBM EGA, представленная в 1984 году вместе с IBM PC AT. (Видеокарта Hercules не имела дополнительного ПЗУ и поддержки BIOS, за исключением MDA-совместимых функций, для которых она полагалась на поставляемую IBM поддержку MDA в основном BIOS.) Большинство последующих видеоадаптеров ПК поддерживались дополнительными ПЗУ, хотя VGA и MCGA, встроенные в материнские платы PS/2, возможно, использовали встроенную поддержку BIOS. После того, как интегрированные Super VGA (SVGA), встроенные в материнские платы клонов ПК, поставлялись отдельными компаниями, а не самими системами, стало обычным явлением, когда видеоBIOS, предоставляемый поставщиком SVGA, включался в качестве отдельного дополнительного модуля ПЗУ на том же чипе BIOS. в качестве основного системного BIOS (предоставляется третьей отдельной компанией).
Дополнительные ПЗУ UEFI
[ редактировать ]Этот раздел нуждается в расширении . Вы можете помочь, добавив к нему . ( ноябрь 2019 г. ) |
Спецификация PCI допускает использование нескольких образов дополнительных ПЗУ на одном устройстве. Этими дополнительными ПЗУ могут быть Legacy x86 и UEFI. Если в настройках UEFI для формата дополнительного ПЗУ установлено значение «Совместимость с UEFI», этап среды выполнения драйвера (DXE) загрузит более новое дополнительное ПЗУ UEFI, если оно присутствует, и устаревшее дополнительное ПЗУ, если оно отсутствует. UEFI может использовать устаревшие дополнительные ПЗУ, если модуль поддержки совместимости включен (CSM). Обратите внимание, что при включенной безопасной загрузке выполнение модуля поддержки совместимости и устаревших дополнительных ПЗУ запрещено, поскольку устаревшие драйверы встроенного ПО не поддерживают аутентификацию, что является дырой в безопасности. [7]
См. также
[ редактировать ]- БИОС
- УЕФИ
- Загрузка
- Устаревшая версия Plug and Play
- Конфигурационное пространство PCI
- Постоянное запоминающее устройство (ПЗУ)
- Среда выполнения предварительной загрузки (PXE)
Ссылки
[ редактировать ]- ^ Технический справочник IBM PC XT , стр. 2-10
- ^ Технический справочник по интерфейсу Personal System/2 и BIOS персонального компьютера , стр. 4-12
- ^ Перейти обратно: а б с Спецификация загрузки BIOS (PDF) (изд. версии 1.01). Compaq, Phoenix и Intel. 11 января 1996 г.
- ^ Среда выполнения Etherboot.
- ^ Салихун, Дармаван (9 января 2007 г.). Разборка BIOS: раскрытие ниндзюцу (PDF) .
- ^ Перейти обратно: а б «БИОС» . 06.04.2022 . Проверено 8 апреля 2022 г.
- ^ «Документация Майкрософт» .