Forum: Compiler & IDEs CubeIDE const data ins flash


von Detlef _. (detlef_a)


Lesenswert?

Hallo,

ich bin bei ST mit CubeIDE und C unterwegs.

Ich habe konstante Tabellen
const uint16_t blabla[10000] = { ........
Ich dachte, die würden ins Codesegment verschoben. Das ist eine 
Fehldenke, die bleiben im RAM segment.

Wie bekomme ich die denn dahin wo auch der Code steht?

Vielen Dank
Cheers
Detlef

von Da Baby [reformed] (Gast)


Lesenswert?

Musst mit __atribute__(section ) die Sektion explizit angeben und im 
Linker Script eine hinreichend große neue Sektion im FLASH erstellen

von Detlef _. (detlef_a)


Lesenswert?

Hallo,

vielen Dank, so wirds' gehen. Bin allerdings linkerscriptmäßig völlig 
unbedarft, hab das alles immer CubeIDE überlassen.

Gibts' nich noch was anderes, ein attribute wo man ihm sagt 'tu einfach 
so als sei das Code und keine const Variable' ?

THX
Cheers
Detlef

von Detlef _. (detlef_a)


Lesenswert?

Hallo,

hab es rausgefunden.

Man muss nicht ans linkerscript ran.

const uint16_t __attribute__((__section__(".text"))) blabla[10000] = { 
...

schiebt die Tabellen ins flash in die section .text. Da steht schon der 
sourcecode.

THX
Cheers
Detlef

von Bernd das Brot (Gast)


Lesenswert?

Ich nutze nur C++ und dort landet const immer im Flash.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Eigentlich würde man das in Section ".rodata" erwarten, die ein 
vernünftiges ld-Script ins Flash lokatiert.

von Detlef _. (detlef_a)


Lesenswert?

Hi,
ja, .rodata gibts bei ST auch und wird benutzt. Hab ich erst jetzt 
gesehen, die Verortung der Tabellen dorthin wäre sauberer gewesen. 
Abergehtauchso.

Einiges gelernt.
THX
Cheers
Detlef

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
Noch kein Account? Hier anmelden.