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 ?
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).
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?
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.