Verwirrt über memory-mapping
Ich habe seit kurzem immer in low level Kram und suchen in den Bootloader und den Betriebssystemen, etc...
Wie ich es verstehe, für ARM-Prozessoren zumindest, Peripheriegeräte initialisiert der bootloader, und dann sind Sie abgebildet in den physikalischen Speicher. Von hier aus kann code den Zugriff auf die Peripheriegeräte, die einfach durch schreiben von Werten in den Speicher zugeordnet, um die Peripherie-Register. Später, wenn der chip hat auch eine MMU, es kann verwendet werden, um weitere remap in den virtuellen Speicher Räume. Bin ich im Recht?
Was ich nicht verstehe sind (vorausgesetzt, das, was ich oben gesagt haben ist richtig):
- Wie funktioniert der bootloader initialisiert die Peripherie, wenn Sie noch nicht zugeordnet, wird der Adressraum noch?
- Mit virtual memory mapping, gibt es Tabellen, die sagen, die MMU, wo Sie anzeigen, was. Aber was bestimmt, wo Peripheriegeräten zugeordnet sind, die im physikalischen Speicher?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn ein Gerät bootet, die MMU deaktiviert, und Sie werden in der Regel ausgeführt in den supervisor-Modus. Dies bedeutet, dass sämtliche Adressen sind physische Adressen.
Jeden ARM-SOC (system on Chip) wird eine Speicher-Karte. Die correspondece-Adressen der Geräte wird bestimmt durch die physischen Daten und Adresse Linie verbinden, um die Teile des Prozessors. Alle diese Informationen finden Sie im Technischen Referenzhandbuch. Für OMAP4 chips, diese können gefunden werden hier.
Gibt es mehrere Möglichkeiten für die Verbindung von off-chip-Gerät. Die Gruppenrichtlinien-Verwaltungskonsole. Hier müssen Sie sepcify die Adresse in der GPMC, die Sie verwenden möchten, auf dem chip.
Wenn die MMU wandte sich dann an diese Adressen können sich ändern, je nachdem, wie die MMU programmiert. In der Regel direkten Zugriff auf die hardware wird auch nur im kernel-Modus.
Obwohl dies eine alte Frage, dachte der Beantwortung dieser, wie es könnte helfen, einige andere wie mich, die versuchen, um ausreichend Antworten von stackoverflow.
du Erklärung ist fast richtig, aber geben wollen, wenig Erklärung, auf dieses:
Peripheriegeräte initialisiert der bootloader, und dann sind Sie abgebildet in den physikalischen Speicher
Onchip-Peripherie bereits eine vordefinierte physikalische Adressraum. Für andere externe IO-mapped-Peripherie (wie PCIe), müssen wir die config eine physikalische addr Raum, aber Ihre physische Adressraum Angebot ist noch vordefinierte. Sie können nicht konfiguriert werden zufällig Adressraum.
Nun zu euren Fragen, hier meine Antworten..
Wie funktioniert der bootloader initialisiert die Peripherie, wenn Sie noch nicht zugeordnet, wird der Adressraum noch?
Wie ich oben erwähnt, alle (auf dem chip)Peripherie physikalischen Adressraum vorgegeben (in der Regel werden in-Memory map Kapitel der Prozessor-RM). So, Bootloader (vorausgesetzt, MMU) kann direkt auf Sie zugreifen.
Mit virtual memory mapping, gibt es Tabellen, die sagen, die MMU, wo Sie anzeigen, was. Aber was bestimmt, wo Peripheriegeräten zugeordnet sind, die im physikalischen Speicher?
Mit VMM Seite Tabellen (erstellt und gespeichert in physischen DRAM-kernel), der sagt, MMU zum anzeigen virtueller Adresse zu physikalischer Adresse. Im linux-kernel mit 1G kernel virt Raum (sprich kernel virtual addrs von 0xc0000000-0xffffffff), on-chip-Peripherie müssen eine VM space von innerhalb der oben angegebenen kernel VM-Raum (so, die kernel & nur kernel zugreifen kann); und Seite Tabellen-setup, um anzeigen, dass die peripheren virt-Adresse auf seinen tatsächlichen physikalischen Adressen (diejenigen definiert, die in RM)
Können Sie nicht zuordnen Peripherie-ARM-Prozessor, alle peripheren Geräte entsprechen festen Positionen im Speicher anzeigen. Selbst Registern zugeordnet sind, die internen RAM-Speicher der permanente festen Positionen. Die einzigen Dinge, die Sie zuordnen sind Speichermedien wie SRAM -, FLASH -, etc. über FSMC oder ähnliche core-feature. Sie können jedoch ein remap memory-mapped-add-on custom-Peripherie, die nicht Teil des Kern-selbst, sagen wir, dass ein Festplatten-controller, zum Beispiel, aber was drin ist ARM-core-fixed.
Einen guten start ist ein Blick auf die Prozessor-Datenblätter sind auf Unternehmens-Websites wie Philips und ST, oder ARM-Architektur selbst an http://www.arm.com.