Вообще говоря, большинство современных операционных систем (Windows и Linux) повторно сканируют обнаруженное оборудование как часть последовательности загрузки. Надеяться, что BIOS все обнаружит и правильно настроит, оказалось ненадежным.
В типичном ПК с архитектурой x86 существует комбинация методов, используемых для обнаружения подключенного оборудования.
Шины PCI и PCI Express имеют стандартный механизм под названием пространство конфигурации, которое можно просмотреть, чтобы получить список подключенные устройства. Сюда входят устройства, установленные в разъем PCI/PCIe, а также контроллер(ы) в наборе микросхем (видеоконтроллер, SATA и т. д.).
Если обнаружен контроллер IDE или SATA, ОС/BIOS должна обратиться к контроллеру, чтобы получить список подключенных дисков.
Если USB-контроллер обнаружен, ОС/BIOS загружает стек протоколов USB, а затем перечисляет подключенные концентраторы и устройства.
Для «устаревших» ISA-устройств все немного сложнее. Даже если на вашей материнской плате нет слота ISA, обычно в системе все еще есть несколько устройств «ISA» (последовательные порты, параллельные порты и т. д.). Этим устройствам обычно не хватает действительно стандартизированного метода автоматического обнаружения. Для обнаружения этих устройств есть 2 варианта:
Проверьте известные адреса. Последовательные порты обычно имеют адреса 0x3F8, 0x2F8, 0x3E8, 0x2E8, поэтому прочитайте эти адреса и посмотрите, есть ли там что-то похожее на последовательный порт UART. Это далеко не идеально. У вас может быть последовательный порт с нестандартным адресом, который не сканируется. У вас также может быть устройство с непоследовательным портом по одному из этих адресов, которое плохо реагирует на зондирование. Помните, как Windows 95 и 98 часто зависали при обнаружении оборудования во время установки?
ISA Plug-n-Play. Этот стандарт был популярен в течение горячей минуты, когда в пользу PCI. Вы, вероятно, не встретите много устройств, поддерживающих это. Я считаю, что ISA PnP отключен по умолчанию в Windows Vista и более поздних версиях, но я изо всех сил пытаюсь найти источник для этого прямо сейчас.
Перечисление ACPI — ОС может полагаться на BIOS для описания этих устройств в коде ASL. (Смотри ниже.)
Кроме того, в системе может быть несколько устройств, не поддерживающих PnP, с полуфиксированными адресами, такими как TPM. чип, HPET или "специальные" кнопки на клавиатуре ноутбука. Для объяснения этих устройств ОС стандартным методом является использование ACPI.
Таблицы BIOS ACPI должны предоставить ОС список устройств на материнской плате. Эти таблицы написаны на языке под названием ASL (или AML для скомпилированной формы). Во время загрузки ОС считывает таблицы ACPI и перечисляет все описанные устройства. Обратите внимание, что для того, чтобы это работало, производитель материнской платы должен правильно написать свой код ASL. Это не всегда так.
И, конечно же, если все методы автоопределения вас не устраивают, вам, возможно, придется установить драйвер вручную. Вы делаете это с помощью мастера добавления нового оборудования в Windows. (Точная процедура зависит от установленной версии Windows.)
person
myron-semack
schedule
18.03.2014
BIOS
, по крайней мере, как известно большинству людей, теперь скрипучий феномен x86, и даже тогда это далеко не единственная игра в городе. - person marko   schedule 18.09.2013