Jedes im Speicher vorhandene Objekt, sei es eine Variable vom Typ
uint8_t, int32_t, float oder auch ein String, ist letztlich nur eine
Folge von einem oder mehreren Bytes im Speicher. Und als genau diese
kann so ein Objekt auch ins Flash geschrieben werden.
Das kann dann in etwa so aussehen:
1 | float Wert;
|
2 | uint8_t* pSpeicher;
|
3 | pSpeicher = (uint8_t *) &Wert;
|
4 |
|
5 | for (i = 0; i < sizeof (float); i++)
|
6 | {
|
7 | write_byte_to_flash(pSpeicher[i], StartadresseImFlash + i);
|
8 | }
|
(Hier mal angenommen, daß die Flash-Beschreibe-Funktion als ersten
Parameter das zu schreibende Byte und als zweiten Parameter die Adresse,
an die dieses Byte geschrieben werden soll, erwartet)
Und umgekehrt siehts ganz genauso aus:
1 | float Wert;
|
2 | uint8_t* pSpeicher;
|
3 | pSpeicher = (uint8_t *) &Wert;
|
4 |
|
5 | for (i = 0; i < sizeof (float); i++)
|
6 | {
|
7 | pSpeicher[i] = read_byte_from_flash(StartadresseImFlash + i);
|
8 | }
|
(hier mal angenommen, daß die Flash-Lese-Funktion als Parameter die zu
lesende Adresse übergeben bekommt und als Ergebnis das gelesene Byte
liefert)