Forum: Compiler & IDEs Define String in Flash


von thomas (Gast)


Lesenswert?

hallo,

ich habe eine Frage.Kann man überhaupt einen define String im flash 
speichern?

#define  ERROR0  "data out of range"
#define  ERROR1  "length out of range"
ich meine die einzelne define zuerst im flash anlegen und dann das Array 
im Flash speichern.


const uint8_t error[] PROGMEM={ERROR0 , ERROR1}

von tuppes (Gast)


Lesenswert?

> const uint8_t error[] PROGMEM={ERROR0 , ERROR1}

ERROR0 und ERROR1 sind nur Präprozessor-Symbole, die zur Compilezeit 
durch das jeweilige Stringliteral ersetzt werden.

Im Binary bzw. Hex-File landet Folgendes:

const uint8_t error[] PROGMEM={"data out of range" , "length out of 
range"}

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Anzumerken sei noch, daß das Schlüsselwort PROGMEM nur bei der 
Harvard-Architektur erforderlich ist, die die AVRs leider verwenden.

Bei anderen Controllern mit von-Neumann-Architektur, wie z.B. MSP430, 
genügt die Angabe des Schlüsselworts const, damit der Linker die Daten 
im Programmspeicher unterbringt, und auch die Lesezugriffe auf diese 
Daten müssen nicht anders gehandhabt werden als die auf "normale" Daten.

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.