Hi alle, Ich versuche gerade den C-Code, den ich in CCS 3.3 geschrieben habe zu optimieren und verschiedene Caches der DSP zu nutzen. Ich tu mir da jedoch ein bisschen schwer mit. Ich arbeite mit einem TI TMS320C6747. Dieser besitzt 2 x 32K L1, 256K L2 und 128K Shared RAM. Bisslang habe ich den Code komplett in L2 geladen. Soweit funktioniert alles. Nun habe ich versucht ein paar Arrays auf L1 zu bringen und schon funktionierte der Code nicht mehr. Ein Beispiel: Vorher: float *SIGNAL = (float *)0x11800000; Nachher: float *SIGNAL = (float *)0x11F00000; L1 wird sonst niergens benutzt. Kann mir einer vlt. erklaeren, warum das so nicht mehr funktioniert. Auch wenn ich den Compiler die Speichereinteilung ueberlasse, also ein fest definierten Array mit Pointer mache funktioniert es nich, z.B: float SIGNAL[512]; float *SIGNAL_Z = SIGNAL; Jedenfalls wollte ich mal einen grundsaetzlichen Ansatzt der Speichereinteilung von euch hoeren und wie man das am Besten macht. Im Linker definiert man ja die SECTIONS. Wie man in ASM den Code in Speicher aufteilt weiss ich, aber wie macht man das in C (in CCS)? z.B. kann die ganze Boardinitialisation vom L2 starten, aber die main Funktion soll vom L1 (L1P) starten. Damit laeuft der Code schneller, richtig? Das gilt genauso fuer meine Arrays, z.B. sollen einige auf L1D plaziert werden. Ist es grundsaetzlich ratsam und besser (schneller) wenn man den Code und Arrays aufteilt in verschiedene Caches? Und wie macht man das am besten.
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.