interner Flash-Speicher des Mikrocontrollers

Gast #799328
Lesenswert?
• ▲
▼
Hallo,

ich benutze einen Freescale Mikrocontroller und da wollte ich mal den 
internen Flash-Speicher testen.
Wenn ich in den Flash schreibe und gleich danach die Adresse auslese, 
bekomme ich den Wert, was in den Falsh geschrieben wurde.

Nun wollte ich sehen, ob der Wert auch nach dem Reset/Neustart erhalten 
bleibt.
Ich habe die Spannungversorgung ausgeschlatet und wieder eingeschaltet. 
Naja jetzt wollte ich aus dem Flash lesen, und zwar aus der Adresse, was 
vor dem Neustart das Datum gespeichert wurde. Das Ergebnis war/ist, dass 
ich ganz andere Werte erhalte.

Wie kann das sein?
Wenn ich doch in den Flash schreibe, müsste es doch solange erhalten 
bleiben bis entweder der Flash gelöscht oder der Inhalt überschrieben 
wird.
Liege ich da vielleicht falsch?

Gruß
Dirk
Gast #799339
Lesenswert?
• ▲
▼
> Wenn ich in den Flash schreibe und gleich danach die Adresse auslese,

Was heisst "gleich danach"? 1 us?

Wenn deine Schreibprozedur den Herstellervorgaben entspricht, dann steht 
der Wert auch da, bin ich 100% sicher.
Gast #799351
Lesenswert?
• ▲
▼
>Was heisst "gleich danach"? 1 us?
gleich danach heißt Stecker raus und wieder rein..
Die Versorgung wird getrennt, um zu sehen ob danach der INhalt immer 
noch erhalten bleibt.

>Wenn deine Schreibprozedur den Herstellervorgaben entspricht, dann steht
>der Wert auch da, bin ich 100% sicher.
wie gesagt, wenn in den Flash schreibe und nachdem in den Flash 
geschrieben wurde, den Flash auslese, bekomme ich die richtigen Daten. 
Aber wenn die Spannungsversorgung getrennt wurde und nachdem ich wieder 
die Versorgung einschalte und den Flash auslese, bekomme ich ganz andere 
Werte :-(
Gast #799443
Lesenswert?
• ▲
▼
im Quellcode mache ich einen Zugriff auf den Flash-Speicher..
Nach der Initialisierung kann ich mit "SetByteFlash(Adresse, Wert);" in 
den Flash schreiben und mit "GetByteFlash(Adresse, &Wert);" aus dem 
Flash lesen.
Gast #799672
Lesenswert?
• ▲
▼
mein Problem ist, ich kann aus dem Datenblatt nicht erkennen in welchen 
Bereich ich Daten schreiben kann.

Ich meine der Flash-Speicher wird ja für alles Mögliche benutz. Das 
ganze Programm wird in den Flash geschrieben (denke ich).

Ich habe keine Idee, was so alles mit dem Flash-Speicher gemacht wird.

Naja was auch immer passiert, muss es doch einen extra Bereich geben, 
was der User ohne Gefahr und Bedenken benutzen kann. Mit benutzen meine 
ich irgendwelche Parameter ablegen und nach dem Neustart abholen.

>Dann frag bitte konkreter
Wie konkreter kann ich meine Fragen noch stellen? Für paar Ideen, wie 
man Frage konkret stellen kann, bin ich sehr dankbar

Danke
#799868
Lesenswert?
• ▲
▼
Michael G. wrote:

> Autsch... ;) Du solltest wirklich mal die Dokumentation lesen, bevor Du
> solche Fragen stellst.

Vielleicht ist die Frage nicht ganz so dusselig wie sie 
zugegebenermassen klingt. DSPs haben manchmal eine sehr eigene 
Vorstellung davon, welcher Teil welchen Speichers mit welchem Operand 
des Befehls erreichbar ist, weil sich das auf mehrere interne Busse 
verteilt.
Persönliche Seite #799879
Lesenswert?
• ▲
▼
Gut, aber es steht auch fest dass Flash-Speicher auf MCUs eine recht 
begrenzte Lebensdauer hat. Ich kann natuerlich darueber jetzt auch 
nichts sagen, ich muesste auch im Datenblatt nachsehen, da sollte sowas 
dann aber drinnen stehen. Dirk, Flash-Speicher ist nicht fuer sehr 
haeufige Schreibzugriffe geeignet, da er recht gewaltsam geloescht wird. 
Bei Mikrocontrollern hat man ueberlicherweise nach etwa 10.000 
Schreibzyklen so eine Flash-Speicherzelle erledigt, d.h. sie ist danach 
defekt.

RAM ist erstens quasi verschleissfrei und vor allem beim Schreiben (aber 
auch beim lesen) wesentlich schneller als Flash. Im Gegensatz zu Flash 
ist RAM halt volatil, d.h. fluechtig. Bei den AVRs wird der Flash z.B. 
dafuer benutzt, um den eigentlichen Programmcode zu speichern. Es gibt 
noch einen EEPROM, in dem man z.B. Konfigurationsdaten abspeichern kann. 
Der hat mit etwa 100.000 Schreibzyklen schon eine deutlich hoehere, aber 
dennoch begrenzte Lebensdauer.

Gruss,
Michael
Persönliche Seite #799891
Lesenswert?
• ▲
▼
Dirk wrote:
>>welcher Teil welchen Speichers mit welchem Operand
>>des Befehls erreichbar ist
>
> wie soll denn ein Anfänger wie ich so etwas wissen

Das Teil sieht mir ja auch recht fett aus zum Anfangen. Warum hast Dich 
denn genau fuer diesen Controller entschieden? Ich denke damit werden 
Dir hier nur wenige helfen koennen, der Hauptteil hier ist AVR und 
einige PIC-Vertreter. Und wie gesagt, sowas sollte in der entsprechenden 
Dokumentation zu finden sein, um Lesen kommt man nicht herum bei solchen 
Themen, glaub's mir ;)

Nochmal zu den Speichern: Such mal nach "Speicherhierarchie". Flash ist 
hier Sekundaerspeicher (bzw. Hintergrundspeicher) und RAM ist 
Primaerspeicher.
Hierbei ist SRAM (statischer RAM) nochmals schneller als DRAM 
(dynamischer RAM). Kleinere Mikrocontroller haben ueblicherweise nur 
SRAM, da dieser um einiges einfacher anzusteuern und zu verwalten ist.

Lg,
Michael
Gast #799921
Lesenswert?
• ▲
▼
>Warum hast Dich denn genau fuer diesen Controller entschieden?
hab ich nicht ausgesucht, habe ich als Geburtstagsgeschenk erhalten.

>Ich denke damit werden Dir hier nur wenige helfen koennen
ja das weiß ich, aber was soll ich sonst macht. Wo anders wird nicht mal 
geantwortet. Hier bekommt man zumindest paar Tipps und Ideen

>sowas sollte in der entsprechenden Dokumentation zu finden sein
ja hast recht, vielleicht liegt das Problem bei mir, dass ich es einfach 
nicht verstehen kann.

Ich dachte, die Doku müsste vielleicht sagen können "hey, du Benutzer!Du 
darft/kannst von der Adresse des Flash's xyz biz zu der Adresse vwy 
benutzen."
(Mit "benutzen" meine ich, dass ich da irgendwelche Parameter speichere 
um sie dann einige Tage später abzurufen)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren