Меня смущает использование прошивки в контексте Linux.
Я понимаю, что прошивка и драйвер - это то, что прошивка - это код, который работает на голом железе устройства, такого как микросхема Bluetooth, или контроллер клавиатуры, или видеокарта, или универсальный микроконтроллер. Прошивка предоставляет интерфейс для ОС, чтобы использовать ее сервисы.
Для сравнения, драйвер - это программное обеспечение, которое ядро использует для связи с ранее упомянутыми интерфейсами, предоставляемыми микропрограммой. Таким образом, видеодрайвер, драйвер клавиатуры, драйвер Bluetooth-радио.
Так почему же я продолжаю читать о файлах прошивки Linux, которые необходимо установить (например, здесь ). Они загружаются в аппаратное обеспечение? Эти файлы используются ядром? В чем смысл прошивки в этом контексте?
Ответы:
В контексте ядра Linux микропрограмма - это программное обеспечение, которое работает на другом процессоре в системе, например, на беспроводном контроллере, графическом процессоре, контроллере SCSI ... Это программное обеспечение раньше сохранялось в ПЗУ (различных типов), подключенном к соответствующему контроллеру. Однако, чтобы сократить расходы и упростить обновление, контроллеры теперь, как правило, полагаются на операционную систему хоста для загрузки своих микропрограмм для них.
Таким образом, файлы прошивки не используются ядром, они загружаются ядром на другие части оборудования. Это также делает смутно приемлемым иметь программное обеспечение без исходного кода в системах FLOSS: утверждается, что оно работает не на главном процессоре, а на другом устройстве.
источник
/lib/firmware
(в единственном числе, нет/etc
) содержит прошивки, используемые другими устройствами. Многим устройствам (включая беспроводные контроллеры и графические процессоры) требуется встроенное ПО, предоставляемое хост-системой, даже если они могут иметь свое собственное ПЗУ (или флэш-память), содержащее встроенное ПО.