Forum: Mikrocontroller und Digitale Elektronik interner Flash-Speicher des Mikrocontrollers


von Dirk (Gast)


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

von Bensch (Gast)


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.

von Dirk (Gast)


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 :-(

von 6639 (Gast)


Lesenswert?

Wie hast in das Flash geschrieben ? per Firmware, per Programmer.

von Dirk (Gast)


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.

von Dirk (Gast)


Lesenswert?

kann mir jemand einige Internetseiten über Flash-Speicher geben?

Danke

von Andreas K. (a-k)


Lesenswert?

www.gidf.de

von Dirk (Gast)


Lesenswert?

>www.gidf.de

hahaha..sehr lustig echt jetzt

von Andreas K. (a-k)


Lesenswert?

Dann frag bitte konkreter. Du hast ein bischen sehr allgemein gefragt.

von Dirk (Gast)


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

von Andreas K. (a-k)


Lesenswert?

Du hast es in diesem Thread auf 6 Postings gebracht ohne irgendwo zu 
verraten, um welchen Controller es überhaupt geht. Freescale hat wohl 
ein Dutzend recht verschiedener Controller-Familien, von den Modellen 
ganz zu schweigen.

Forum-Fragenformulierung

von Dirk (Gast)


Lesenswert?

hab das Entwicklungsboard von Freescale, auf dem Board ist der 
56F8037-Mikrocontroller drauf..

von Dirk (Gast)


Angehängte Dateien:

Lesenswert?

was ist der Unterschied zwischen RAM und Flash
(damit meine ich wann wird RAM und wann der Flash benutzt)

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Dirk wrote:
> was ist der Unterschied zwischen RAM und Flash
> (damit meine ich wann wird RAM und wann der Flash benutzt)

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

von Dirk (Gast)


Lesenswert?

habe ich, wirklich.

Aber ich verstehe es nicht :-(

von Andreas K. (a-k)


Lesenswert?

Jetzt wird's schon konkreter. Sieht mir schwer danach aus, als ob das 
Teil aus der DSP-Sparte stammt. Könnte sein, dass du daher im 
entsprechenden Forum besser aufgehoben bist.

von Andreas K. (a-k)


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.

von Dirk (Gast)


Lesenswert?

>welcher Teil welchen Speichers mit welchem Operand
>des Befehls erreichbar ist

wie soll denn ein Anfänger wie ich so etwas wissen

von Michael G. (linuxgeek) Benutzerseite


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

von Dirk (Gast)


Lesenswert?

Danke, jetzt ist mir schon einiges klarer

von Michael G. (linuxgeek) Benutzerseite


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

von Dirk (Gast)


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)

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Dirk wrote:
> (Mit "benutzen" meine ich, dass ich da irgendwelche Parameter speichere
> um sie dann einige Tage später abzurufen)

Hierfuer ist EEPROM deutlich besser geeignet, da langlebiger und fuer 
solche Zwecke extra vorhanden.

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.