Warum müssen Firmware und Treiber getrennt sein?

Warum müssen Firmware und Treiber getrennt sein?

Wenn ich mir die Unterschiede zwischen Gerätefirmware und Treibern anschaue, sehe ich nicht wirklich, warum wir diese Unterscheidung technisch brauchen. Mir ist klar, dass Firmware nicht einfach zu ändern ist und dass sie die Geräteoperationen auf niedriger Ebene übernimmt, während Treiber für die Kommunikation mit dem Host-Betriebssystem da sind.

Die Frage ist, warum wir diese beiden Schichten nicht einfach zu einer zusammenfassen können. Nur ein Treiber, der weiß, wie er mit dem Betriebssystem kommuniziert und alle Anfragen direkt in Geräteoperationen auf niedriger Ebene übersetzt. Ist das für eine einfachere Entwicklung (d. h. um das für die Entwicklung dieser Software erforderliche Entwicklerwissen zu reduzieren)? Ist es nicht möglich, mit dem Gerät über Software zu kommunizieren, die sich nicht in seinem Flash-Speicher befindet?

Antwort1

Nein, beide Arten von Software laufen normalerweise auf unterschiedlichen Maschinentypen.

Die Firmware läuft auf dem Prozessor/Controller des Peripheriegeräts, der Treiber läuft auf der CPU Ihres Rechners. Dabei handelt es sich in der Regel sogar um unterschiedliche Typen.

Theoretisch einkönnteBeauftragen Sie die CPU Ihres Computers damit, das gesamte Bit-Banging im Peripheriegerät durchzuführen. Dies wurde in frühen Computern bereits gemacht. Dies hat jedoch einen hohen Preis.

Externe Protokolle beinhalten häufig harte Zeitbeschränkungen (z. B. Netzwerkkarten oder CRT-Bildschirme). Ihre CPU musseine Mengevon Interrupts, um die Arbeit im richtigen Moment zu erledigen. Aus diesem Grund ging beim berühmten Sinclair ZX-81 das Display aus, wenn die CPU hart arbeitete - keine Zeit für eine Bildschirmaktualisierung :)

Daher versuchen wir heutzutage, die Arbeit von Peripheriegeräten zu entkoppeln. Die CPU wird benachrichtigt, wenn ein volles NetzwerkPaketangekommen und muss kein Kabel abfragen, um Bits zu ändern.

Antwort2

Die Firmware läuft auf dem Gerät und verwendet direkt die Hardware des Geräts. Man kann es so sehen: Die Firmware ist eine API für das Betriebssystem. Es spielt keine Rolle, welches Betriebssystem auf dem Computer läuft. Wenn es eine Anweisung x empfängt, führt die Firmware y aus und gibt möglicherweise einen Wert z zurück. Das Gerät hat eine eigene Uhr, die die Geschwindigkeit steuert, mit der Anweisungen ausgeführt werden, einen eigenen Speicher und der Prozessor des Geräts kann ein anderer sein als der des Computers. Der Computer kann beispielsweise ein amd64 sein, aber das Gerät hat einen arm64-Prozessor. Die Firmware kommuniziert nicht direkt mit der CPU oder dem RAM, sondern nimmt Anweisungen vom Bus entgegen und überträgt Daten zurück auf den Bus.

Treiber werden auf dem Computer entweder auf der Ebene des Betriebssystemkernels oder der Benutzerebene des Betriebssystems ausgeführt. Ein Treiber ist betriebssystemabhängig und muss die Anforderungen des Betriebssystems erfüllen, um funktionieren zu können. Ein Treiber erledigt im Allgemeinen alle Aufgaben, die die CPU und/oder den RAM des Computers erfordern. Sobald die Vorverarbeitung der Anweisung abgeschlossen ist, wird die Anweisung über die Firmware an das Gerät weitergegeben.

Antwort3

Tatsächlich müssen sie nicht getrennt werden.

In vielen Fällen kann man das gesamte Spektrum abdecken, von der Steuerung der Hardware direkt von der zentralen CPU aus bis hin zur Implementierung möglichst vieler Aspekte in der Firmware.

Hier ist eine unvollständige Liste von Designüberlegungen zum Firmware-/Treibergleichgewicht:

  1. Möchten Sie einen Standardtreiber oder eine Standardschnittstelle verwenden?

Natürlich kann man einen USB-Flash-Speicherstick erstellen, der dem Treiber die NAND-Semantik zugänglich macht und den Controller-Chip speichert. Und verteilen Sie Ihren exotischen Treiber irgendwie (für Windows, Linux, MAC, Konica-Drucker usw. usw.). Andererseits erwarten Benutzer und Betriebssystementwickler gleichermaßen, dass der USB-Stick mit dem Standardblockgerätetreiber funktioniert. Optische Maus mit Nicht-HID-Schnittstelle? Auch keine wirklich gute Idee.

  1. Sind einige Ihrer Funktionspatente/NDAs/Geschäftsgeheimnisse belastet?

Der Treiber (selbst wenn kompiliert) ist für einfaches Reverse Engineering und Ändern verfügbar, die Firmware dagegen viel weniger. Dies ist bei Videochips recht häufig der Fall.

  1. Einhaltung der Vorschriften?

Viele funkbezogene Firmwares (WLAN, Mobilfunk, Bluetooth) erzwingen die Einhaltung der Frequenzspektrumbestimmungen.

  1. Kosten? Es gibt normalerweise einen optimalen Punkt in Bezug auf die Konstruktions- und Herstellungskosten.

usw., usw....

Hinzu kommt, dass es viele Geräte gibt, die über keinen ROM-Speicher verfügen, sodass die Firmware eigentlich Teil des Treibers ist und bei jedem Einschalten auf das Gerät hochgeladen wird.

verwandte Informationen