Forum: FPGA, VHDL & Co. load ELF file to microblaze (AEMB)


von Martin O. (ossi-2)


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 ?

von Martin S. (strubi)


Angehängte Dateien:

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).

von Martin O. (ossi-2)


Lesenswert?

Besten Dank für den Hinweis. Sieht auf den ersten Blick nicht ganz 
einfach aus. Denkst Du ich kann von Deinem Beispiel aus starten oder 
sollte ich das Linker skript ganz neu schreiben?

von Martin S. (strubi)


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

von Martin O. (ossi-2)


Lesenswert?

Hi strubi,
besten Dank für deinen Tip. Ich habe jetzt, ausgehend von einem 
vorhandenen script, mein eigenes Linkerscript erstellt. Damit kann ich 
meine Bereiche genauso verwalten, wie ich will. Und Linkerscripts 
vertstehe ich jetzt rudimentär auch!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.