Forum: Compiler & IDEs arm variable in flash lesen/schreiben


von H. R. (hacker_r)


Lesenswert?

Hi
ich benutze gerade ATMEL studio und ein SAM D10 ARM Cortex.

Hier mit habe ich meine Variable ins flash gelegt.
uint32_t __attribute__((section(".eeprom")))   on_Counter_eeprom   = 0;

wie schreibe ich jetzt auf meine variable?

Danke ;-)

von Hocker Raaki (Gast)


Lesenswert?

Verstehe Flash als ROM und nicht als RAM.

von Thosch (Gast)


Lesenswert?

Hacker R. schrieb:
> wie schreibe ich jetzt auf meine variable?

Da musst du dich wohl mal mit dem Datenblatt des SAM D10 beschäftigen,
genauer: Mit dem Non-Volatile Memory Controller (NVMCTRL) S.349 ff

Datenblatt: 
http://www.atmel.com/images/atmel-42242-sam-d10_datasheet.pdf

Der NVMCTRL ermöglicht eine EEPROM-Emulation, allerdings muss man dazu 
den Controller entsprechend bedienen und man kann (anders als bei echtem 
EEPROM)
nicht einfach Datenworte überschreiben, sondern muss eine Row (= 4 
Pages) löschen, bevor man sie neu beschreiben kann.
Wenn also mehrere Variablen dort liegen, müssen die Daten zuvor 
eingelesen, verändert und wieder geschrieben werden.

von Thosch (Gast)


Lesenswert?

Einschaltvorgänge zu zählen geht villeicht gerade noch mit der 
EEPROM-Emulation. Wenn du öfter schreiben willst, würde ich ernsthaft 
über ein externes EEPROM bzw. besser gleich ein FRAM nachdenken.
Die lassen sich über I2C-Bus oder per SPI anschließen und Wortweise 
umprogrammieren.
Das FRAM hat ggü. EEPROM noch den Vorteil, daß es keine 
Schreibzyklen-Begrenzung hat, und daß man keinen BUSY-Handshake beim 
Schreiben benötigt, da das Teil so schnell geschrieben, wie gelesen 
werden kann.

Geeignet für den SAM wären 3V-Typen wie z.B. von Cypress
FM24CL64 (I2C) oder FM25CL64 (SPI)

von H. R. (hacker_r)


Lesenswert?

Hi
Danke für die Antworten.


>> Mit dem Non-Volatile Memory Controller beschäftigen:Also wenn ich variablen 
habe dessen Werte bei Stromausfall bestehen sollen, habe ich keine andere 
möglichkeit als diesen Weg richtig? Abgesehen von hardware Erweiterung mit 
externer FRAM/EEPROM.

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.