2014-01-09 19 views
8

Was ist der Unterschied zwischen Device Tree und ATAGs? Sind ATAGs ein Muss und erwartet der Kernel sie an einer festen Adresse oder erwartet er sie in r0-r3?ARM Linux Atags und Device Tree

Antwort

12

Ein Gerätebaum beschreibt alles über die Hardware, mit der der Kernel auswählt, welche Treiber geladen werden sollen, wo alle MMIO-Schnittstellen sind, usw. zur Laufzeit. ATAGs beschreiben nur Dinge wie einen initrd und Kernel-Parameter, Speicher, etc ... - 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, dass beim Hinzufügen einer neuen Plattform nicht immer neuer Code zum Kernel hinzugefügt werden muss.

Ihre zweite Frage zu beantworten, wenn Sie in der Dokumentation zu booting Linux on the ARM platform gelesen hatte, würden Sie feststellen, dass der Kernel in den Registern gesetzt, die folgenden werden erwartet, bevor die Steuerung an den Kernel übergeben:

r0 = 0, 
r1 = machine type number discovered in (3) above. 
r2 = physical address of tagged list in system RAM, or 
    physical address of device tree block (dtb) in system RAM 

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

3

Im Wesentlichen wurden ATAGs verwendet, um Informationen über die maschinenspezifischen Informationen der Karte wie Speicher, Konsoleninformationen usw. an den Linux-Kernel zu senden. Diese ATAGs wurden vom Linux-Kernel zur Initialisierung der MMU und anderer Subsysteme verwendet.

Aber mit dem Aufkommen des Gerätebaumes (mehr davon mit dem Arm verwenden, da es bereits in PowerPC-Architektur Gewöhnung.) Jetzt die ganze Maschine bezogenen Informationen FDT weitergegeben werden können unter Verwendung von (Gerätebaum blob).

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 separate Methoden zu verwenden Ding. Nun erwartet der Kernel einen Bootloader, der folgende Informationen liefert.

Es verwendet dieselbe Struktur, die vom Bootloader verwendet wurde, um atag Informationen zu senden, so dass es backwordfähig sein könnte.

Ich hoffe, es hilft.

Verwandte Themen