Wir versuchen, ein Linux-Image in unserem DRAM an einem bestimmten Speicherort zu laden, ist die 0x350000000 DRAM-Endadresse, die wir aus Boot-Log kennen, die "mem Gerät endet Adresse ist 0x80000000" .Wir unser Bild geladen wird unter der Adresse ‚0x5000000‘ und davor variuos Abschnitt in Bild irgend Adresse geladen zu werden, die größer ist, als ‚0x80000000‘, für eaxmple wieder von Boot-ProtokollenWie lade ich Linux Image Speicherplatz
loading section to address 0xc5000000 from file position 0x1000, size is 0x5ac13e
was Bedeutung von "von Dateiposition 0x1000" in der obigen Zeile.
ersten Abschnitt, der geladen ist .text Abschnitt, unten ist unser vmlinux Bild Dump Abschnitt Kopf
[Nr] Name Type Addr Off Size ES Flg Lk Inf Al
[ 0] NULL 00000000 000000 000000 00 0 0 0
[ 1] .text PROGBITS c5000000 001000 5ac13e 00 AX 0 0 4096
[ 2] .notes NOTE c55ac140 5ad140 000168 00 AX 0 0 4
[ 3] __ex_table PROGBITS c55ac2b0 5ad2b0 000fe0 00 A 0 0 4
[ 4] .rodata PROGBITS c55ae000 5af000 20a930 00 A 0 0 64
[ 5] __bug_table PROGBITS c57b8930 7b9930 0075fc 00 A 0 0 1
[ 6] .pci_fixup PROGBITS c57bff2c 7c0f2c 001a90 00 A 0 0 4
[ 7] .builtin_fw PROGBITS c57c19bc 7c29bc 0000cc 00 A 0 0 4
Es ist eine ziemlich große Liste, also nicht voll .Aber eine Sache haben schreiben wir hier sehen können. Der Textbereich ist größer als die DRAM-Endadresse, daher sollte das Bild nicht ordnungsgemäß übertragen werden, obwohl nach dem Laden des ersten Abschnitts kein Fehler auftritt, es aber weiterhin andere Abschnitte lädt, aber nach dieser Nachricht hängt es.
program load complete, entry point: 0x5000000, size: 0x92e7fc
Meine Frage ist, wie kann ich diese verschiedenen Abschnitte Adresse an unsere DRAM-Adresse auszurichten, ist objcopy Dienstprogramm hier verwendet werden könnte Adresse dieser verschiedenen Abschnitte zu ändern.
Gibt es eine Möglichkeit, diese Abschnittsadressen vor der Kompilierung zu setzen? Zweite Sache, was Grund für dieses Hang Afer Programm Laden abgeschlossen sein könnte.
Eine Prämie gut gleiche brauchen, ist aber nicht unbedingt Sie eine Lösung in Gang zu bringen, weil die Frage nicht ausreichend informativ ist und weil wir Ihren Code nicht sehen können. Sie bitten die Leute im Grunde, im Dunkeln zu schießen. –
Ja, Alexey, du hast meine Frage schon sehr gut beantwortet, ich dachte mir mehr über diese Frage zu sehen ist eine gute Idee.Ich will nicht, dass Leute mein Problem lösen, denn dann werde ich nicht selbst lernen, wollte nur ein Paar haben von guten Ideen –
Guter Punkt, eigentlich. –