Hi zusammen
ich hab ein kleines Problem.
Wenn ich ein C programm in meinen microblaze brenne indem irgendwo
1 | unsigned short myarray[2048];
|
steht laeuft es fehlerfrei.
Aendere ich das auf
1 | unsigend short myarray[4096]
|
laeuft es nicht mehr. Allerdings spuckt der compiler keinerlei
Fehlermeldung aus und tut so als waere alles in Ordnung.
Ich kann das gleiche Problem hervorrufen wenn ich mein Main Programm
aufblase also irgendwie mehr code reinpacke - dann laeuft es auch mit
2048 nicht mehr.
Ich vermute das meine Daten meine Instructions ueberlagern und somit
das Programm von den Daten ueberschrieben wird und nix mehr geht.
Waere auch logisch weil die 2 sich einen BRAM block teilen. (hab den uB
mit dem Wizard generiert).
Wenn ich nun einen 2. BRAM block einfuege und ilmb und dlmb je einen
eigenen zuweise geht nicht mal mehr die 2048 Variante die vorher lief.
Was mich auch wundert - laut EDK ist der BRAM block 2kB gross. Wenn sich
die beiden den BRAM bei ersterem Teilen duerfte ja nicht mal die 2048
variante laufen da die ja alleine schon 4 kB des RAMs frisst.
Irgendwer eine idee wo es da klemmt? Kann es sein das die Daten im ilmb
abgelegt werden aus Versehen? Muss ich die speziell deklarieren wenn ich
die im dlmb haben will oder tut es das mit "unsigend short"?
Fuer Hilfe Dankbar
Tobi