Was ist „Firmware“ in der Linux-Terminologie?

14

Ich bin durch die Verwendung von Firmware im Kontext von Linux verwirrt .

Unter Firmware und Treibern verstehe ich, dass Firmware der Code ist, der auf einem Gerät wie einem Bluetooth-IC, einem Tastaturcontroller, einer Grafikkarte oder einem Mehrzweck-Mikrocontroller ausgeführt wird. Die Firmware stellt eine Schnittstelle zur Verfügung, über die das Betriebssystem seine Dienste nutzen kann.

Der Treiber ist im Vergleich dazu die Software, die der Kernel verwendet, um mit zuvor erwähnten Schnittstellen zu kommunizieren, die von der Firmware bereitgestellt werden. So ein Videotreiber, ein Tastaturtreiber, ein Bluetooth-Funktreiber.

Warum lese ich immer wieder, dass Linux-Firmware-Dateien installiert werden müssen (z . B. hier )? Werden diese in die Hardware hochgeladen? Werden diese Dateien vom Kernel verwendet? Was bedeutet Firmware in diesem Zusammenhang?

wopwop
quelle
1
Generell gilt: Software ist ein Programm. Hardware ist ein physisches Gerät. Firmware ist ein in die Hardware integriertes Programm . In der Regel zum Konfigurieren der Funktionsweise der Hardware (also zwischen Software und Hardware, genau wie bei "Unternehmen" zwischen "weich" und "hart" auf einer stumpfen Skala). Im Allgemeinen ist die Firmware betriebssystemunabhängig (z. B. die RAID-Konfiguration auf einem SCSI-RAID-Controller).
DopeGhoti
Um den Kommentar von DopeGhoti zu ergänzen, erlauben viele Geräte jetzt das Laden von Live-Firmware, was sie flexibler / entwickler macht als feste Implementierungen.
Julie Pelletier
1
@DopeGhoti konfiguriert nicht nur die Hardware, sondern läuft auch auf der Hardware. Manche Firmware ist in der Tat sehr komplex und läuft im Grunde genommen unter einem Mini-OS.
Stephen Kitt
Ich stimme zu, obwohl ich behaupten würde, dass "in Hardware integrierte Software" impliziert, dass die Hardware die ist, auf der die Software läuft. (:
DopeGhoti

Antworten:

21

Im Linux-Kernel-Kontext ist Firmware eine Software, die auf einem anderen Prozessor im System ausgeführt wird, z. B. einem drahtlosen Controller, einer GPU oder einem SCSI-Controller. Diese Software wurde in einem ROM (verschiedener Typen) gespeichert, das mit dem entsprechenden Controller verbunden war Um die Kosten zu senken und Upgrades zu vereinfachen, verlassen sich die Controller heute in der Regel darauf, dass das Host-Betriebssystem ihre Firmware für sie lädt.

Damit Firmware-Dateien vom Kernel nicht verwendet werden, werden sie vom Kernel auf andere Hardwareteile geladen. Dies ist auch der Grund, warum es vage akzeptabel ist, Software ohne Quellcode in FLOSS-Systemen zu haben: Es wird argumentiert, dass sie nicht auf der Haupt-CPU, sondern auf einem anderen Gerät ausgeführt wird.

Stephen Kitt
quelle
1
Sie sind sehr wohlwollend mit Ihrer Verwendung von "vage akzeptabel".
Rui F Ribeiro
2
Nicht jeder kann RMS sein.
DopeGhoti
Das ist nicht nur im Linux-Kernel-Kontext so, es ist eine ziemlich allgemeine Definition von „Firmware“ im Kontext eines Multiprozessorsystems.
Gilles 'SO - hör auf böse zu sein'
Enthält / etc / lib / firmwares eigentlich Firmwares und keine Treiber, die vom Kernel beim Booten geladen werden? Wireless-Controller und Grafikkarten verfügen jedoch über ein eigenes ROM mit einer vom Hersteller gebrannten Firmware.
27.
3
@defalt yes, /lib/firmware(singular, no /etc) enthält Firmware, die von anderen Geräten verwendet wird. Viele Geräte (einschließlich drahtloser Controller und GPUs) benötigen vom Host-System bereitgestellte Firmware, obwohl sie möglicherweise über ein eigenes ROM (oder Flash) mit Firmware verfügen.
Stephen Kitt