Есть ли в BIOS какие-то общие «драйверы»


22

Как BIOS управляет устройствами ввода-вывода без каких-либо драйверов?

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

Существует ли какой-то универсальный драйвер, который является стандартным для всех BIOS и аппаратного обеспечения, который позволяет BIOS выполнять основные функции независимо от того, какое оборудование установлено.

Любая помощь будет оценена.

Спасибо.


У вас есть конкретная проблема, которую вы пытаетесь решить? Если вы спрашиваете, есть ли в BIOS универсальный универсальный привод, то его нет
Ramhound

Я думаю, что есть минимальный стандартный формат вывода (vesa) и видеокарта имеет свой собственный BIOS. Кроме того, это не похоже на вашу прошивку bios / uefi, в реальном времени в 3d.
Подмастерье Компьютерщик

5
@Ramhound Это не проблема, которую я пытаюсь решить, это просто общий вопрос. Какую видеокарту вы вставите в свою систему, вы все равно сможете увидеть ее во время загрузки, так есть ли какой-то странный интерфейс, который запрограммирован в BIOS?
RJSmith92

4
Do you have a specific problem your trying to solve? Да, они пытаются решить проблему поиска ответа на заданный вопрос. ¬_¬
Synetech

Ответы:


13

Есть ли в BIOS какие-то общие «драйверы»

Как BIOS управляет устройствами ввода-вывода без каких-либо драйверов?

Стандарты. Все компоненты реализуют базовый интерфейс, и BIOS запрограммирован на его использование. Конечно, поскольку это базовый интерфейс (это то, что означает «B» в BIOS), он не может использовать все возможности аппаратного обеспечения; это остается за программным обеспечением для реализации через драйверы, которые могут напрямую обращаться к оборудованию.

Первоначально производители BIOS создали набор API-интерфейсов, которые устройства должны были использовать, если они хотели быть совместимыми. Они делали это с помощью « прерываний », что позволяет устройству прерывать программу, чтобы дать ей понять, что что-то произошло, и наоборот.

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

В случае отображения перед загрузкой в ​​прошивке видеоадаптера реализована VESA (Ассоциация стандартов видеоэлектроники), которая была создана для упрощения доступа к оборудованию дисплея. BIOS знает, как получить доступ к видео-оборудованию, используя стандартные функции. Это похоже на то, как DirectX был реализован как высокоуровневый API для аппаратного обеспечения, поэтому программистам не приходилось учитывать каждую аппаратную конфигурацию.

Существует ли какой-то универсальный драйвер, который используется во всех BIOS и аппаратном обеспечении, который позволяет BIOS выполнять основные функции независимо от того, какое оборудование установлено.

Вроде. Это не драйвер, а стандартный API ; набор функций программирования, которые можно использовать для выполнения основных задач, таких как инициализация устройства или ввод и вывод данных.

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


Спасибо, отличный ответ. Таким образом, вызовы прерывания BIOS (какие системы DOS использовались) по-прежнему используются до тех пор, пока ОС не будет загружена?
RJSmith92

1
Да, BIOS предоставляет множество различных прерываний, которые можно использовать (хотя не все BIOS обеспечивают все функции). Системы DOS действительно использовали их, но DOS также создала INT 21 и 2F для обеспечения высокоуровневых программных прерываний для выполнения каких-либо задач (я очень скучаю по программированию на DOS / аппаратном ассемблере). Дело в том, что для обеспечения совместимости всегда будут необходимы некоторые базовые низкоуровневые функциональные возможности, даже с EFI и всем остальным, что появится в будущем. Это может принимать разные формы, но без какого-либо общего языка система не сможет использовать аппаратные устройства.
Synetech

Насколько я понимаю, вызовы прерываний по-прежнему используются ядром и службами уровня ядра. Разве это не правда?
BlueRaja - Дэнни Пфлюгофт

@BlueRaja, может быть, во время загрузки (им нужен какой-то способ доступа к оборудованию), но после запуска процедур обнаружения они используют соответствующие драйверы (которые являются просто низкоуровневыми программами) для прямого доступа к оборудованию. Даже ядру понадобится прямой доступ, чтобы получить большую часть аппаратного обеспечения, например, используя расширенные функции ЦП или оптимизируя использование контроллера памяти и чипсета.
Synetech

22

BIOS в ПК должен был выполнять функцию, аналогичную BIOS в 8-битной системе CP / M, популярной до того, как ПК вступил во владение в середине 80-х годов. BIOS должен был содержать минимальный загрузчик и аппаратно-зависимые низкоуровневые подпрограммы для ввода и вывода нескольких устройств (экран, диск, лента, COM-порт). Знания для этого были встроены в ПЗУ - драйвера не нужны, и, разумеется, дополнительное ПЗУ не поддерживается. (Такие вещи, как управление питанием и ACPI появились намного позже, в 90-х, после того, как ПК зарекомендовал себя как повсеместная платформа.)

(«Файловая система» CP / M находилась в компоненте, загруженном с диска, называемого BDOS - аналогично, знание файловой системы FAT и ее интерфейсов находится (по крайней мере, в одном из) двух скрытых файлов MSDOS.SYS или IO.SYS - не является частью ПЗУ BIOS.)

Однако ... BIOS ПК, в отличие от CP / M, поддерживал понятие «Option ROMS», которое могло быть включено в карту расширения. Так что был как минимум минимальный механизм для расширения BIOS. Видеокарты, начинающиеся с CGA (MDA, предшественник CGA, возможно, сделал это тоже), имели бы дополнительное ПЗУ, которое расширяло или добавляло функции ввода / вывода к интерфейсу BIOS. (Вот почему вы видите сообщение NVidia до того, как загрузится ваш BIOS.) Как и жесткие контроллеры и карты SCSI. Все это до сих пор. Многие старые сетевые карты имеют разъем для загрузочного ПЗУ.

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

Таким образом, между дополнительными ПЗУ и этим консенсусом стандартного оборудования, которое формирует платформу ПК, а также тем фактом, что он поддерживается обратной совместимостью на протяжении всей эволюции ПК, что-то желающее использовать дисплей без драйвера может:

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

Все аппаратные средства отображения ПК все еще работают в «VGA-совместимом» режиме после загрузки. Оригинальный адаптер IBM VGA имел режимы, совместимые с более ранними картами EGA, CGA и MDA. Все это означает, что что-то, работающее из BIOS или из-за пределов ОС, может предполагать, что оно все еще может считывать и записывать ту же память, подключенную к дисплею, что и в 1985 году, в соответствии с соглашением.


Спасибо за ответ. Таким образом, BIOS на платах расширения должен соответствовать какому-то стандарту, чтобы любой биос материнской платы мог его использовать?
RJSmith92

1
Не уверен, что это скорее стандарт, чем давнишнее соглашение, но что-то в этом роде. Я предполагаю, что спецификация загрузки BIOS (BBS) здесь является формальным стандартом. en.wikipedia.org/wiki/Option_ROM
LawrenceC

Да, это то, что я искал.
Еще
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.