Erweiterung Programmspeicher EDK MicroBlaze

Gast #3530928
Lesenswert?

Guten Tag.

Ich habe eine Architektur in EDK erstellt. (MicroBlaze + Peripherie). 
Das geschriebene Programm übersteigt die eingangs von mir zugewiesende 
Größe des Programmspeichers.

(1) Wie kann ich den internen Programmspeicher nachträglich erweitern?

Ich habe schon in andere Beiträge geschaut. Finde jedoch keine Lösung 
für EDK 14.7.

Für eine Antwort wäre ich dankbar.
Gast #3530996
Lesenswert?

Danke. Als höchste Adresse steht bei mir dort: 0x0001ffff.
Da die Basisadresse 0x00 lautet,habe ich eine Speichergröße von

8 Bit * 131071 = 1048,568 kB korrekt?

Welches ist meine max. Speichergröße, die ich einstellen darf? Ich 
dachte, dass es 64 kb sind?! Eigentlich habe ich ja eine 32 Bit 
Aritektur, korrekt?
#3531064
Lesenswert?

User schrieb:
> Danke. Als höchste Adresse steht bei mir dort: 0x0001ffff.
> Da die Basisadresse 0x00 lautet,habe ich eine Speichergröße von
>
> 8 Bit * 131071 = 1048,568 kB korrekt?

Nicht ganz. Erstens sind es 131072 und zweitens ist das schon ein 
Byte-Wert.

> Welches ist meine max. Speichergröße, die ich einstellen darf? Ich
> dachte, dass es 64 kb sind?! Eigentlich habe ich ja eine 32 Bit
> Aritektur, korrekt?

Und wie kommst Du bei 32 Bit auf 64K? Theoretisch wären 4G möglich, 
tatsächlich ist der Speicher begrenzt durch die BRAMs Deines FPGA und 
die Tatsache, dass die Größe eine Zweierpotenz sein muss (D.h. wenn Dein 
FPGA z.B. 96 KByte BRAM hat, kannst Du trotzdem nur 64 verwenden).
Gast #3531215
Lesenswert?

So ganz habe ich das wohl nicht verstanden. Tatsache ist, dass mein 
Programm zu groß ist und deswegen nicht SDK einen Error ausgibt:

`microblaze_0_i_bram_ctrl_microblaze_0_d_bram_ctrl'
c:/xilinx/14.7/ise_ds/edk/gnu/microblaze/nt/bin/../lib/gcc/microblaze-xi 
linx-elf/4.6.4/../../../../microblaze-xilinx-elf/bin/ld.exe:  region 
`microblaze_0_i_bram_ctrl_microblaze_0_d_bram_ctrl' overflowed by 4144 
bytes

Ich arbeite auf der Umgebung ML605. Speicher ist also hardwaremäßig 
vorhanden.

Ich habe leider nicht das Wissen, wie und welchen ich dafür erweitern 
muss in EDK. Habe ich nach deiner Aussage demnach noch die Möglichkeit 
die Adresse zu erhöhen ? (Welches ist die obere Schranke)? In Zukunft 
wird das Programm noch weiter wachsen.

Ich kam auf die 64 kb als obere Schranke durch folgenden Link:

http://www.xilinx.com/tools/microblaze.htm

Dort steht: Cache size configurable:  2kB - 64kB (Block RAM based).
#3532025
Lesenswert?

User schrieb:
> Ich arbeite auf der Umgebung ML605. Speicher ist also hardwaremäßig
> vorhanden.
Was hast Du denn da drauf? DDR2? Könnte man sicher auch als 
Programmspeicher verwenden, hab ich aber noch nie gemacht...und stell 
ich mir auch nicht ganz trivial vor. Aber vielleicht macht es das EDK da 
auch leichter als ich vermute.

>  Habe ich nach deiner Aussage demnach noch die Möglichkeit
> die Adresse zu erhöhen ? (Welches ist die obere Schranke)?
Wie gesagt theoretisch 4G, praktisch vorhandener Speicher. Wieviel BRAM 
hat Dein FPGA?

> In Zukunft wird das Programm noch weiter wachsen.
Und an der Programmgröße kannst Du ganz sicher nicht schrauben?
Gast #3535292
Lesenswert?

User schrieb:
> Bzw wie kann ich einen externen Programmspeicher hinzufügen? Welcher IP
> Core?


Im EDK musst du den Multi-Port Memory Controller(DDR/DDR2/SDRAM) Core 
hinzufügen.

Im SDK bei deinem Projekt findest du unter den .c und .h Dateien ein 
Linker Script, sowas wie - lass mich lügen - lscript.ld?!
Da kannst dann den Heap und Stack erweitern und auf den DDR-Baustein 
auslagern.

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