load ELF file to microblaze (AEMB)

OP #4886577
Lesenswert?

Mein aktueller Stand ist der Folgende:
Compilieren eines C-Files in ein ELF-File für die microblaze(AEMB) 
Architektur
Erzeugung eines HEX-Files aus dem ELF-File,
Der AEMB core hat eine Harvardarchitektur, ich habe an den
Instruction-Bus sozusagen ein Rom gehängt, und an den Datenbus
ein getrenntes Ram.
Laden den Hex-Files ins "ROM" und "RAM". Erste Testprogramme (inkl 
Floating Point per Software ) laufen einwandfrei, das ist die gute 
Nachricht.

Die Frage ist: Wie macht man es richtig, denn: Der microblaze-gcc
Compiler geht vermutlich nicht davon aus, dass eine Harvardarchitektur 
vorliegt, zumindest sehe ich den sections im ELF-File das nicht an.
Andererseits muss ein Teil des erzeugten "Codes" ins Ram geladen
werden, vermutlich mindestens die "rodata" Section, da diese
Daten offensichtlich vom AEMB-Core als Daten gelesen werden.
(Lade ich das Ram nicht, laufen einige Programme nicht).

Kann einer Licht ins Dunkel bringen und hat Ideen zu folgenden Fragen:

Darf man den microblaze(AEMB) core mit getrenntem Code- und 
Daten-speicher betreiben ? (Oder darf es nur einen Speicher geben, aber 
getrennte Instruction- und Daten caches (ich habe keine Caches))

Kann ich dann die getrennten Speicher überhaupt jeweils vollständig
nutzen ?

Welche sections der ELF-Files sind wohin zu laden ?
#4887203
Lesenswert?

Hi,

du musst ein Linkerscript für deinen Code erstellen. Da bist du dann 
komplett frei, was die Allozierung in Programm/Daten-Memory angeht.
Habe mal ein Beispielscript angehängt. .rodata, .data, .bss, usw. kannst 
du entsprechend in DATA-Memory mappen. In dem Beispiel ist allerdings 
Daten- und Code-Memory nicht getrennt (> l1ram).
Angehängte Dateien:
#4888165
Lesenswert?

Hi Martin,

ich würde das Script entsprechend anpassen (Architektur musst du eh 
ändern), und beim Rest halt bisschen positive Feedback-Raffinade :-)
Die -Map Linker-Option zur Kontrolle wo was hinalloziert wird, kennst Du 
ja sicher, und die Details des ld sind bei gnu.org dokumentiert.

Viel Erfolg,

- Strubi

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren