Wie kann ich feststellen, welcher RAM-Adressbereich von uboot verwendet wird?

12

Ich bin in Uboot und habe mich gefragt, wie ich feststellen kann, welcher RAM-Adressbereich von Uboot verwendet wird.

uboot benötigt zum Ausführen Speicher, sodass möglicherweise ein Teil des Arbeitsspeichers verwendet wird. Ich möchte vermeiden, diese RAM-Adressen zu ändern.

Woher weiß ich, welche Speicherregion uboot geladen ist?

Ankur Agarwal
quelle

Antworten:

2

Die DULG DebuggingUBoot- Seite hat dies zu sagen (die "Verlagerung", von der sie spricht, kopiert sich von Flash in den RAM).

Zum Debuggen von U-Boot nach dem Umzug müssen wir die Adresse kennen, an die sich U-Boot verlagert. Wenn keine exotischen Funktionen wie PRAM verwendet werden, lautet diese Adresse normalerweise - CONFIG_SYS_MONITOR_LEN. In unserem Beispiel mit 16 MB RAM und CONFIG_SYS_MONITOR_LEN = 192 KB ergibt dies die Adresse 0x1000000 - 0x30000 = 0xFD0000.

Weiteres Lesen des Textes scheint darauf hinzudeuten, dass er vom Prozessor oder der Karte abhängt und dass Sie möglicherweise die U-Boot-Quelle überprüfen müssen, um dies sicher zu wissen.

In Bezug auf den Guruplug :

Auf der RAM-Seite sind bei u-Boot die ersten 8 Megabyte reserviert. Der Rest ist kostenlos. Einige Entwickler laden Kernel und Dateisysteme mit 0 × 800000 für die Programmierung auf Flash. Ein weiterer häufiger Punkt ist die 100-Megabyte-Grenze (oder der Versatz 0 × 640000).

Abhängig von Ihrer Version von U-Boot können Befehle verfügbar sein, um eine Zeichenfolge irgendwo im freien RAM abzulegen und dann den Rest des RAM nach dieser Zeichenfolge zu durchsuchen, wobei die ungefähre Position von U-Boot im Speicher angezeigt wird.

LawrenceC
quelle
1

Wenn ich die von mir verwendete Uboot-Version starte, wird automatisch ein "virtuelles Kernel-Speicherlayout" angezeigt.

Memory: 859068k/859068k available, 25668k reserved, 0K highmem
Virtual kernel memory layout:
    vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
    DMA     : 0xf9e00000 - 0xffe00000   (  96 MB)
    vmalloc : 0xe0800000 - 0xf4000000   ( 312 MB)
    lowmem  : 0x80000000 - 0xe0000000   (1536 MB)
    pkmap   : 0x7fe00000 - 0x80000000   (   2 MB)
    modules : 0x7f000000 - 0x7fe00000   (  14 MB)
      .init : 0x80008000 - 0x8004d000   ( 276 kB)
      .text : 0x8004d000 - 0x808ad000   (8576 kB)
      .data : 0x808ce000 - 0x80937a40   ( 423 kB)

Ich fand es sicher, den Lowmem-Bereich für verschiedene Dienstprogramme zu verwenden, die ich ausführen wollte (z. B. das Laden großer Dateien in den Speicher). Im Idealfall möchten Sie für solche Dinge einen hohen Speicher verwenden, aber ich hatte keine Option (wie Sie in meiner Ausgabe sehen können).

BuvinJ
quelle
Sind Sie sicher, dass dies nicht die Speicherzuordnung von Linux ist?
Claymation
Ich bin nicht sicher. Dieser Mangel an Highmem und der Verweis auf "Virtual Kernel" veranlasst mich, anders zu denken. Ich bin ein Noob / Hack, wenn es um Uboot geht. Der wichtige Punkt hier war, dass ich diesen Lowmem-Bereich sicher nutzen konnte, ohne über etwas zu schreiben, was der Ubooot zu erfordern schien.
BuvinJ
Soweit ich mich erinnere, wird dies übrigens vor dem Laden des Betriebssystems angezeigt.
BuvinJ