Что такое «прошивка» в терминологии Linux?

15

Меня смущает использование прошивки в контексте Linux.

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

Для сравнения, драйвер - это программное обеспечение, которое ядро ​​использует для связи с ранее упомянутыми интерфейсами, предоставляемыми микропрограммой. Таким образом, видеодрайвер, драйвер клавиатуры, драйвер Bluetooth-радио.

Так почему же я продолжаю читать о файлах прошивки Linux, которые необходимо установить (например, здесь ). Они загружаются в аппаратное обеспечение? Эти файлы используются ядром? В чем смысл прошивки в этом контексте?

wopwop
источник
1
Вообще говоря: программное обеспечение - это программа. Аппаратное обеспечение - это физическое устройство. Прошивка - это программа, интегрированная в аппаратное обеспечение; как правило, для целей настройки работы аппаратного обеспечения (таким образом, это своего рода между программным и аппаратным обеспечением, так же как «фирма» находится между «мягким» и «жестким» в масштабе тупости). Обычно прошивка не зависит от ОС (например, конфигурация RAID на RAID-контроллере SCSI).
DopeGhoti
Просто чтобы добавить комментарий DopeGhoti, многие устройства теперь позволяют загружать встроенное ПО в реальном времени, делая их более гибкими / эволюционными, чем фиксированные реализации.
Джули Пеллетье
1
@ DopeGhoti - это не только настройка оборудования, но и работа на оборудовании. Некоторые прошивки действительно очень сложны и в основном работают под управлением мини-ОС.
Стивен Китт
Я согласен, хотя я бы утверждал, что «программное обеспечение, интегрированное в аппаратное обеспечение» подразумевает, что аппаратное обеспечение - это то, на котором работает указанное программное обеспечение. (:
DopeGhoti

Ответы:

22

В контексте ядра Linux микропрограмма - это программное обеспечение, которое работает на другом процессоре в системе, например, на беспроводном контроллере, графическом процессоре, контроллере SCSI ... Это программное обеспечение раньше сохранялось в ПЗУ (различных типов), подключенном к соответствующему контроллеру. Однако, чтобы сократить расходы и упростить обновление, контроллеры теперь, как правило, полагаются на операционную систему хоста для загрузки своих микропрограмм для них.

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

Стивен Китт
источник
1
Вы очень доброжелательны с использованием «неопределенно приемлемого».
Руи Ф Рибейро
2
Не каждый может быть RMS.
DopeGhoti
Это не только в контексте ядра Linux, это довольно общее определение «прошивки» в контексте многопроцессорной системы.
Жиль "ТАК - перестань быть злым"
Так есть ли в файле / etc / lib / firmwares прошивки, а не драйверы, загружаемые ядром при загрузке? Но у беспроводного контроллера и графических карт есть собственное ПЗУ с прошивкой, записанной производителем.
дефолт
3
@defalt yes, /lib/firmware(в единственном числе, нет /etc) содержит прошивки, используемые другими устройствами. Многим устройствам (включая беспроводные контроллеры и графические процессоры) требуется встроенное ПО, предоставляемое хост-системой, даже если они могут иметь свое собственное ПЗУ (или флэш-память), содержащее встроенное ПО.
Стивен Китт