Forum: Mikrocontroller und Digitale Elektronik LPC2119 Daten im Flash Rom speichern


von Johannes F. (jof307)


Lesenswert?

Ich arbeite im Moment an einem Programm für den LPC2119.
Um auf einen EEprom Baustein verzichten zu können würde ich gerne den 
internen Flash ROM (immerhin 128k) als Datenspeicher für bestimmte 
Parameter nutzen, die während der Betriebszeit verändert wurden.
Da bei gewöhnlicher Variablendeklaration nach Trennung des 
Microcontrollers vom Strom alle Daten verloren gehen, ist anzunehmen, 
dass sie im Ram gespeichert werden. Wie bekomme ich Zugriff auf den 
Flash ROM? Gibt es irgendwo Beispieldateien?

Gruß Johannes

von Andreas K. (a-k)


Lesenswert?

User Manual Kap. 20 (IAP).

von ARM-Fan (Gast)


Lesenswert?

Aber bedenke, dass der Flash-Speicher kein adäquater Ersatz für
ein EEProm ist, wie man es von anderen µCs kennt.
Du kannst den Flash nur sektorweise löschen (4k/32k) und dann
auch nur in Blöcken von mindestens 256 Byte wieder beschreiben.

Um also mal ein paar Parameter abzulegen/ zu ändern taugt das
Verfahren also leidern nicht. Sonst müßtest du ja immer den
ganzen Sektor, also 4k oder 32k ins RAM laden, deine kleine
Parameteränderung machen und den ganzen Block dann wieder zurück-
schreiben, um die anderen Parameter nicht kaputt zu machen.

Stehe gerade vor dem selben Problem und werde wohl ein kleines
I2C EEprom außen dranhängen.

von Johannes Friedrich (Gast)


Lesenswert?

Im Prinzip hast du Recht, aber ich denke ich werde das Problem anders 
angehen, da ich mir das EEprom mangels Platz wirklich gerne ersparen 
würde.
Ich werde ein flüchtiges Parameter-Array anlegen in das alle Parameter 
gespeichert werden. Und dieses Array schreibe ich dann jedesmal komplett 
in den Flash Rom, quasi wie ein Parameter Buffer. Das hat zwar den 
Nachteil das ich jedes Mal alle Parameter schreibe. Aber das 
interessiert mich eigentlich gar nicht, zumal ich dann immer nur die 4k 
beschreibe.
Wieviel Schreibzyklen hält das Flash Rom denn überhaupt aus?
Man könnte die Daten dann auch nur jedesmal vor dem Ausschalten 
speichern, nur leider weiss ich nicht, wann der Strom das nächste Mal 
weg ist.

von Robert Teufel (Gast)


Lesenswert?

Es gibt eine Application Note wie das mit dem Flash als EEPROM Ersatz 
funktionieren kann. Eines ist dabei ganz wichtig, waehrend der 
Programmierung des Flashes kann kein Code aus dem Flash abgearbeitet 
werden. Also verzoegert sich eine Interrupt Antwortzeit in den 
millisekunden-Bereich. Das ist bei fast allen Microcontrollern der Fall. 
Deshalb halte ich auch die Verfahren, "die man von anderen 
Microcontrollern her kennt" fuer ziemlich kritisch im Bezug auf 
Echtzeit. Speichern von Variablen und Interrupts passen nicht so gut 
zusammen :-( auch wenn man einen Byte adressierbaren Speicher hat, wie 
z.B. die LPC900 Familie oder andere populaere Micros.

Die ApNote fuer LPC2000 ist hier:
http://tech.groups.yahoo.com/group/lpc2000/files/
dann suche nach: "  EE_demo_1_1.zip "

Wenn es das Budget zulaesst, ist ein externes serielles EEPROM trotzdem 
eine gute Idee! Kein Einfluss auf Echtzeitverhalten, simple 
Implemtierung = schnellere Entwicklungszeit.

Programmierzyklen on-chip Flash LPC2000: 100000

Robert

von Gerhard. (Gast)


Lesenswert?

Ich weiss nicht ob diese Frage berechtigt ist, aber was mich 
interessiert ist, dass viele neuere Mikrokontroller der 3V Serien keine 
eingebauten EEPROM mehr aufweisen. Hat das erst mit der 3.3V Technik 
angefangen?

Ich habe fast den Eindruck dass alle diese neuen Niedervolttypen kein 
EEPROM intern mehr erlauben. Zum Beispiel, alle 3V Typen von Microchip 
die mir bekannt sind und ein J in der Bauteilenummer haben sind 
EEPROMlos. LPC2000 ist ganz aehnlich. Habe mal schnell bei ATMEL SAM7 
Typen nachgeschaut und es ist da genauso.

Ich habe vor da etwas nachzuforschen, da mich das interessiert und zur 
Zeit nur Vermutungen habe.

Andrerseits, ist es ja nicht so schlimm zumindestens fuer Hobbyprojekte 
ein externes EEPROM mit Zweidrahtanschluss oder SPI ranzuhaengen, aber 
trotzdem.

Wie seht Ihr das?

Gruss,
Gerhard

von Johannes F. (jof307)


Lesenswert?

Die Tatsache mit den Interrupts hat mich schon Schweiß und Nerven 
gekostet. Die Interrupts haben beim Erase Vorgang nämlich immer 
dazwischen gefunkt. Einen EEprom zu benutzen macht sicher in vielen 
Fällen Sinn.
Aber was spricht dagegen:
Ich habe nicht viele Parameter zu sichern (und diese auch nicht oft). 
Also schreibe ich sie in den Flashspeicher. Und solange der 
Speichervorgang läuft, schalte ich die Interrupts einfach ab.
Natürlich geht das nicht immer. Hängt eben vom Programm ab. Aber wenn es 
nichts ausmacht, dann ist das doch die einfachste Lösung?
Welche Nachteile hat diese Methode?

von LightCo (Gast)


Lesenswert?

Guten Morgen zusammen,
könnte evtl jemand das Codebeispiel EE_demo_1_1.zip hier hochladen? Ich 
habe da bei Yahoo keinen Zugang.
Ich müßte meinen Flash ebenfalls als einen EE PROM nutzen und benötige 
noch eine gewisse Starthilfe. Die IAP Funktionen laufen einwandtfrei.

Gruß

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.