ARM Linux Atags vs Device Tree

8

Was ist der Unterschied zwischen Gerätebaum und ATAGs? Sind ATAGs ein Muss und erwartet der Kernel sie an einer festen Adresse oder erwartet er sie in r0-r3?

    
mSO 09.01.2014, 08:17
quelle

2 Antworten

12

Ein Gerätebaum beschreibt alles über die Hardware, mit der der Kernel auswählt, welche Treiber geladen werden sollen, wo sich alle MMIO-Schnittstellen befinden, etc ... zur Laufzeit. ATAGs beschreiben nur Dinge wie, wo man einen initrd und Kernel-Parameter, Speicher usw. finden kann - alles andere über die Maschine ist hart in den Kernel codiert.

Die bevorzugte Methode besteht nun darin, Gerätebäume anstelle von ATAGs zu verwenden. Einer der Vorteile ist die Tatsache, dass das Hinzufügen einer neuen Plattform nicht immer neuen Code zum Kernel hinzufügen muss.

Um Ihre zweite Frage zu beantworten, wenn Sie die Dokumentation für das Booten von Linux auf der ARM-Plattform gelesen haben , Sie würden feststellen, dass der Kernel erwartet, dass das Folgende in den Registern platziert wird, bevor die Kontrolle an den Kernel übergeben wird:

%Vor%

Ich glaube, es gibt (oder war zumindest) eine Option, um ATAGs von einem festen Standort anstatt der in r2 gefundenen Adresse zu laden. Die Verwendung von ATAGs wird jedoch veraltet und veraltet, und neue Plattformen sollten es nicht mehr verwenden.

    
tangrs 09.01.2014, 14:12
quelle
3

Im Grunde wurden ATAGs verwendet, um Informationen über die maschinenspezifischen Informationen des Boards wie Speicher, Konsoleninformationen usw. an den Linux-Kernel zu senden. Diese ATAGs wurden vom Linux-Kernel zur Initialisierung der MMU und eines anderen Subsystems verwendet.

Aber mit dem Aufkommen des Gerätebaums (mehr davon, es mit dem Arm zu verwenden, weil es bereits in der PowerPC-Architektur verwendet wurde), können nun alle maschinenbezogenen Informationen unter Verwendung von FDT (Gerätebaum-Blob) weitergegeben werden.

Es gab einige Ideen zum Senden von Gerätebauminformationen an den Kernel unter Verwendung eines neuen atag "atag_dtd", aber später gab es Diskussionen darüber, ATAG überhaupt nicht zu verwenden, da es nicht nötig war, zwei getrennte Methoden zu verwenden . Nun erwartet der Kernel, dass ein Bootloader folgende Informationen liefert:

%Vor%

Es verwendet dieselbe Struktur, die vom Bootloader verwendet wurde, um Atag-Informationen zu senden, so dass es backwordkompatibel sein kann.

Ich hoffe, es hilft.

    
Tripathi Anurag 21.03.2016 08:34
quelle