Optimierung und Verteilung des C-Codes

Gast #2078599
Lesenswert?

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.

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