Hallo,
ich stehe gerade etwas auf dem Schlauch... :(
Ich möchte in meinem Binärcode ein paar Strings im Flash speichern, um
später beim Auslesen zu erkennen, welches Programm da vorliegt. Also
irgendwo im Binär-Dump sollte dann sowas wie "Plattform=S88" stehen.
Speichere ich ein "normales" String-Makro aus einer Header-Datei (z.B.
ab, funktioniert das auch mit PROGMEM wunderbar.
Aber mit Makros aus dem makefile funktioniert das nicht. Ich habe da
z.B. eine Definition TARGETSYSTEM, die ich mit -D auch an gcc übergebe.
Die Abfrage in .c
funktioniert beim Compilieren auch einwandfrei. Aber wie kriege ich den
Wert des Makros so als String konvertiert, daß ich ihn als
Initialisierung mit PROGMEM benutzen kann? Also sowas wie:
1 | const char t[] PROGMEM = TARGETSYSTEM;
|
Nächste Stufe: Wie kriege ich ein Makro mit einer Zahl (kennt der
Präprozessor überhaupt den Unterschied von Zahl und String???) so
konvertiert, daß er hinterher F_CPU nicht als 16000000, sondern als
"1600000" interpretiert?
Wahrscheinlich ist die Lösung einfach, aber ich komme einfach nicht
drauf. #TARGETSYSTEM kommt nicht zur Lösung und das Schlüsselwort
STRINGIZE scheint auf Keil beschränkt zu sein?!
LG Klausewitz