Warum ist die Handhabung von ARM-SoCs mit dem Kernel scheinbar so schwierig?

Warum ist die Handhabung von ARM-SoCs mit dem Kernel scheinbar so schwierig?

Wenn ich beispielsweise eine Linux-Distribution auf einem x64-System installiert habe, kann ich einfach mein Speicherlaufwerk ausstecken, es in eine andere x64-Maschine stecken, ein paar HL-Treiber installieren, etwa den Grafiktreiber, und es wird höchstwahrscheinlich ohne Probleme laufen.

Bei ARM-Systemen, insbesondere ARM-SoCs, wie bei Smartphones aller Art, ergibt sich ein völlig anderes Bild. Für jedes einzelne Smartphone gibt es einen anderen Build desselben Betriebssystems (zum Beispiel eine OEM-Android-Distribution).

Meine Frage ist: Warum ist das so?

Mir ist klar, dass es im Gegensatz zu PCs mit ihrer standardisierten Architektur jede Menge SoC-Chips und -Architekturen gibt. Aber angesichts des Gerätebaums frage ich mich, warum es keine Möglichkeit gibt, den Gerätebaum als Hardwarebeschreibung zusammen mit dem Bootloader auf einem ROM-Chip zu platzieren und das Linux-Betriebssystem unabhängig von den Hardwarespezifikationen zu erstellen, zumindest innerhalb bestimmter definierter Grenzen.

Antwort1

Ich frage mich, warum es keine Möglichkeit gibt, den Gerätebaum als Hardwarebeschreibung zusammen mit dem Bootloader auf einem ROM-Chip zu platzieren und das Linux-Betriebssystem unabhängig von jeglichen Hardwarespezifikationen zu erstellen, zumindest innerhalb bestimmter definierter Grenzen.

Antwort: Billig. Niemand möchte für den ROM-Chip bezahlen. Der SoC hat ein Boot-ROM, aber der Gerätebaum variiert je nach Schaltkreis, in dem sich der SoC befindet, also ist das nicht gut. Sie benötigen einen separaten „BIOS-Chip“, wie ihn x86-Boards haben, damit das funktioniert.

Sie können es irgendwie zum Laufen bringen, indem Sie die SD-Karte, von der die meisten ARM-Boards booten, als BIOS-Chip behandeln; legen Sie einfach U-Boot und den Gerätebaum darauf und lassen Sie U-Boot den Kernel von einem USB-Laufwerk laden. Dann wäre das USB-Laufwerk (ziemlich) von ARM-Board zu ARM-Board portierbar.

Im Hinblick auf die Optimierung lohnt es sich zwar, allgemein für ARM zu kompilieren, aber die Ausrichtung auf einen bestimmten Prozessor lohnt sich wirklich (viel mehr als bei x86_64).

verwandte Informationen