Чи має BIOS якісь загальні «драйвери»


22

Як BIOS управляє пристроями вводу / виводу без будь-яких форм драйверів?

Наприклад, як відображається зображення під час завантаження комп'ютера, якщо в BIOS немає драйверів для відеокарти.

Чи є якийсь загальний драйвер, який є стандартним для всіх BIOS та обладнання, що дозволяє BIOS виконувати основні функції незалежно від того, яке обладнання встановлено.

Будь-яка допомога буде вдячна.

Спасибі.


Чи є у вас конкретна проблема, яку ви намагаєтеся вирішити? Якщо ви запитуєте, чи є BIOS, використовується універсальний загальний накопичувач, це не так
Ramhound

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

5
@Ramhound Це не проблема, яку я намагаюся вирішити, це просто загальне питання. Яку б відеокарту ви не поставили у вашій системі, ви все ще можете бачити dispaly під час завантаження, тож чи є якийсь інтерфейс, який запрограмований у 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 - Danny Pflughoeft

@BlueRaja, можливо, під час завантаження (їм потрібен певний спосіб доступу до обладнання), але після запуску процедур виявлення вони використовують відповідні драйвери (які є лише програмами низького рівня) для прямого доступу до обладнання. Навіть до ядра знадобиться прямий доступ, щоб отримати максимум обладнання, наприклад, скориставшись розширеними функціями процесора або оптимізувавши використання контролера пам'яті та чіпсета.
Synetech

22

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

(CP / M "файлова система" знаходилася в завантаженому з диска компоненті під назвою BDOS - аналогічно, знання файлової системи FAT та її інтерфейсів у (принаймні одному з) двох прихованих файлах MSDOS.SYS або IO.SYS - не частина BIOS ROM.)

Однак ... PC BIOS, на відміну від CP / M, все ж підтримував поняття "Option ROMS", яке можна було б включити на карту розширення. Тож був принаймні мінімальний механізм розширення BIOS. Відеокарти, що починаються з CGA (MDA, попередник CGA, можливо, це теж зробили), мали б опцію ROM, яка розширила або додала функції вводу / виводу до інтерфейсу 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.