gcc-arm-none-eabi: Wie const char-Array verschieben?

Gast #5591889
Lesenswert?

Mein Code für einen Cortex M3 enthält die folgende Definition:
1
const char[] = {42, 55, 241, 81, ...};  // mehrere KB

Ich nehme an, gcc-arm legt das Array ins Flash.

Wie kann ich das Array ins SRAM legen? Genügt es, das const zu 
entfernen, oder muß ich das Linker-Skript bemühen?
Gast #5591958
Lesenswert?

Neverever schrieb:
>> Ich habe zwar keine Ahnung,
>
> Dieter Nuhr: "Wenn man keine Ahnung hat: Einfach mal Fresse halten"

Ok, großer Krieger. Jetzt mal Butter bei die Fische.

Aus dem Link zum Artikel bin ich leider nicht schlau geworden.

Bekomme ich jetzt bei

char []
1) eine Kopie des Arrays im Flash, das der Compiler im Start-Up-Code 
selbständig ins RAM kopiert.
oder
2) ein Sequenz mit Store-Kommandos, die das char-Array in das RAM 
kopiert.

Ich bin Sparheimer und zu faul der Dekompiler zu benutzen.
#5592333
Lesenswert?

Ingo L. schrieb:
> Ingo L. schrieb:
>> Du siehst doch, dass dein RAM-Verbrauch deutlich ansteigt und
>> gleichzeitig dein Flash-Verbrauch sinkt.
> War wohl zu einfach, daher bestimmt auch die "negative Bewertung"

Ne, die negative Bewertung kommt daher, weil nur eine Deiner zwei 
Aussagen richtig ist.
Der Flashverbrauch ist derselbe, weil die Initialwerte des Arrays ja 
nirgendwo anders als im Flash gespeichert werden können.
Lässt man "const" weg, dann wird zusätzlich noch RAM verbraucht, da 
automatisch code erzeugt wird (bzw. durch startup code), welcher das 
Array, welches im RAM liegt mit den Werten aus dem Flash initialisiert.
#5592339
Lesenswert?

Johnny B. schrieb:
> Der Flashverbrauch ist derselbe, weil die Initialwerte des Arrays ja
> nirgendwo anders als im Flash gespeichert werden können.
> Lässt man "const" weg, dann wird zusätzlich noch RAM verbraucht, da
> automatisch code erzeugt wird, welcher das Array, welches im RAM liegt
> mit den Werten aus dem Flash initialisiert.
Uups, ich habe übersehen das das Array nicht auf 0 bzw. "alle gleich" 
initialisiert werden...

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