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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.