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
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.
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.
- 1. Device Tree und manuelle Registrierung
- 2. Was ist Device Tree - Vorteile und Nachteile?
- 3. Hallo Word Device Tree Based Gerätetreiber
- 4. arm-linux-gnueabi toolchain vs arm-linux-androidabi toolchain.
- 5. ARM-Entwicklung unter Linux
- 6. Hibernate Linux auf ARM
- 7. Was ist/wie bekomme ich den Device Tree Compiler?
- 8. Linux Block Device Simulation & Fuse
- 9. Ausführen von ARM-Binärdateien für Android unter Linux ARM
- 10. Warum arm-linux-gnueabi-gcc und nicht arm-none-eabi-gcc beim kompilieren von Linux kernel und uBoot?
- 11. gcc-arm-linux-gnueabi Befehl nicht gefunden
- 12. arm-linux-gnueabi-g ++: Befehl nicht gefunden
- 13. Vektoren Seitenzuordnung in Linux für ARM
- 14. android.mk arm-linux-androidabi-g ++ Ausnahmen und __cxa_allocate_exception
- 15. ARM Linux ausführbare Datei läuft auf x86_64
- 16. Arm-linux-androideabi-gcc keine solche Datei
- 17. Wie zu verwenden Arm-Linux-Androideabi Compiler
- 18. qemu-arm kann nicht laufen Arm kompiliert binär
- 19. Übersicht/Referenzhandbuch für Open Firmware Device Trees
- 20. eine Out-of-tree Linux-Kernel-Module Der Aufbau, die
- 21. Cross-compile python arm
- 22. Wie wird Linux auf einem QEMU ARM Versatile-Computer ausgeführt?
- 23. R-Tree und Quadtree Vergleich
- 24. Kreuz kompilieren Linux-Kernel-Modul für ARM auf x86 Ubuntu
- 25. Unterschied zwischen arm-eabi arm-gnueabi und gnueabi-hf compilern
- 26. Unterstützte Java-Bit-Version auf RaspberryPi Linux 3.18.7-v7 + Arm
- 27. Speichert mprotect den Befehls-Cache auf ARM Linux?
- 28. warum gibt arm-linux-androideabi-gcc geben iostream fehler
- 29. Wie man auf Debian Linux für ARM Pry ausführen
- 30. Ausführen von MMU-weniger Linux auf ARM Cortex-R4