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.
Du hast normalerweise in Deine mhs-Datei zwei Instanzen vom Typ lmb_bram_if_cntlr. Wenn Du hier bei beiden(!) den Attribut Parameter C_HIGHADDR vergrößerst (EDK schließen!), sollte EDK die entsprechende BRAM-Instanz automatisch anpassen.
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?
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).
Bzw wie kann ich einen externen Programmspeicher hinzufügen? Welcher IP Core?
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).
User schrieb: > 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). Cache ist nicht identisch mit Programmspeicher. MfG,
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?
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.
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.