Hallo,
Ich möchte per PROGMEM u.a. eine FAT Tabelle in den Flash des µC
speichern.
Da ich einen FAT-Eintrag mit langen Dateinamen nicht einfach im Kopf
zusammenbasteln kann, möchte ich eine C-Funktion schreiben, der ich nur
den Dateinamen übergebe, und diese mir den fertigen FAT-Eintrag
zurückgibt.(Der Dateiname wird öfter in jeder Codeversion geändert)
Natürlich sollte diese Funktion beim Compilen ausgeführt werden, und
letzendlich natürlich einfach nur der fertige FAT-Eintrag in der
hexfile/µC-flash gespeichert werden.
1.Wie stelle ich das an?
z.B. wird die Funktion int i = sin(3.14) ja normal automatisch
wegrationalisiert und nur das Ergebnis verwendet. Kann ich mir sicher
sein, das auch große komplexe Funktionen, welche keine variablen
Parameter haben, immer sicher automatisch vor der Laufzeit berechnet
werden ?
2.wie kann ich das Ergebnis z.B. per PROGMEM im Flash speichern ?
PROGMEM will ja nur Konstanten, und der compiler gibt einen Fehler aus
wenn ich z.b. das versuche:
1 | char shift_buchsbe(char buchstabe) {
|
2 | return buchstabe+1;
|
3 | }
|
4 | char hui PROGMEM = shift_buchsbe('A');
|
error: initializer element is not constant
Oder kann ich gar auf Progmem verzichten, weil der Compiler erkennt,
dass die Funktion einen Kontanten Wert zurückliefert und daher
automatisch das Ergebnis (nämlich 'B') fest in den flash schreibt ?
Natürlich sind es bei meiner Anwendung später große Arrays, welche teils
den RAM deutlich sprengen würden, falls das erst zur Laufzeit ausgeführt
werden würde..