Що таке "прошивка" в термінології Linux?


15

Мене бентежить використання прошивки в контексті Linux.

Я розумію, що прошивка та драйвер полягає в тому, що прошивка - це код, який працює на голому металі такого пристрою, як Bluetooth IC, клавіатурний контролер, відеокарта або одноцільовий мікроконтролер. Прошивка відкриває інтерфейс для ОС для використання її послуг.

Драйвер, порівняно, - це програмне забезпечення, яке ядро ​​використовує для зв'язку з раніше згаданими інтерфейсами, що надаються прошивкою. Таким чином, відео-драйвер, драйвер клавіатури, драйвер bluetooth-радіо.

То чому я постійно читаю про файли програмного забезпечення Linux, які потрібно встановити (наприклад, тут ). Чи завантажуються вони в апаратне забезпечення? Чи використовуються ці файли ядром? Яке значення прошивки в цьому контексті?


1
Взагалі кажучи: Програмне забезпечення - це програма. Апаратне забезпечення - це фізичний пристрій. Прошивка - це програма, інтегрована в апаратне забезпечення; як правило, для налаштування того, як апаратне забезпечення працює (таким чином, це щось на зразок між програмним і апаратним забезпеченням, так само як "фірма" знаходиться між "м'яким" і "жорстким" за шкалою без тупості). Як правило, мікропрограмне забезпечення є оперативно-операційним (наприклад, конфігурація RAID на контролері SCSI RAID).
DopeGhoti

На додаток до коментаря DopeGhoti, багато пристроїв тепер дозволяють завантажувати прошивку в реальному часі, роблячи їх більш гнучкими / еволюційними, ніж фіксовані реалізації.
Джулі Пелтьє,

1
@DopeGhoti не просто налаштовує апаратне забезпечення, а працює на апаратному забезпеченні. Деякі прошивки дійсно дуже складні і в основному працюють з mini-OS.
Стівен Кітт

Я погоджуюся, хоча я б запевнив, що "програмне забезпечення, інтегроване в апаратне забезпечення", означає, що апаратне забезпечення - це те, на якому працює зазначене програмне забезпечення. (:
DopeGhoti

Відповіді:


23

У контексті ядра Linux прошивка - це програмне забезпечення, яке працює на іншому процесорі в системі, наприклад, бездротовий контролер, GPU, контролер SCSI ... Це програмне забезпечення, яке зберігалося в ПЗУ (різних типів), приєднане до відповідного контролера , але щоб зменшити витрати та зробити оновлення простішими, контролери тепер схильні покладатися на хост-операційну систему для завантаження для них прошивки.

Тому файли прошивки не використовуються ядром, вони завантажуються ядром на інші частини обладнання. Це також робить нечітко прийнятним наявність програмного забезпечення без вихідного коду в системах FLOSS: аргумент говорить, що він працює не в основному процесорі, а на іншому пристрої.


1
Ви дуже доброзичливі, коли використовуєте "неясно прийнятні".
Rui F Ribeiro

2
Не всі можуть бути RMS.
DopeGhoti

Це не лише в контексті ядра Linux, це досить загальне визначення поняття «прошивка» в контексті багатопроцесорної системи.
Жил "ТАК - перестань бути злим"

Так чи / etc / lib / firmwares насправді містять прошивки, а не драйвери, завантажені ядром під час завантаження? Але бездротовий контролер та графічні картки мають власний ПЗУ із прошивкою, записаною виробником.
дефальт

3
@defalt так, /lib/firmware(однина, ні /etc) містить вбудовану програму, яку використовують інші пристрої. Багато пристроїв (включаючи бездротові контролери та графічні процесори) потребують вбудованого програмного забезпечення, що надається хост-системою, навіть якщо вони можуть мати власний ПЗУ (або флеш), що містить мікропрограмне забезпечення.
Стівен Кітт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.