Forum: Mikrocontroller und Digitale Elektronik wie oft kann man flash-memory programmieren


von futz (Gast)


Lesenswert?

wie oft kann man einen pic-prozessor programmieren?
a) 1000
b) 1000000
c) 10^20

von Wolfgang (Gast)


Lesenswert?

futz schrieb:
> wie oft kann man einen pic-prozessor programmieren?

Das kann dir keiner so genau sagen. Die garantierte Mindestzahl an 
Programmierzyklen verrät üblicherweise der Hersteller.

Lösungen a) und c) treffen bestimmt nicht zu

von DaBla Leser (Gast)


Lesenswert?

futz schrieb:
> wie oft kann man einen pic-prozessor programmieren?

Kann man in seinem Datenblatt nachlesen.

von Joachim B. (jar)


Lesenswert?

Wolfgang schrieb:
> Lösungen a) und c) treffen bestimmt nicht zu

bestimmt ist unbestimmt

man kann weniger und mehr programmieren, die Frage ist nur ab wann das 
Programm nicht mehr ankommt oder drin bleibt :)

von Jacko (Gast)


Lesenswert?

LDSD!
(RTFM ist blöd, weil 'F' außer für Nerds und andere Verklemmte doch
eher was Schönes ist)

Was der Hersteller garantiert, steht beim PIC (und auch bei AVR)
auf der ersten Seite des Datenblatts. Guckst du!

Ob es auch 1,01...10 mal so oft funktionieren KÖNNTE, ist völlig
schnurz und piepe (scheißegal), weil man sich nicht drauf
verlassen kann!

PUNKT, FERTIG UND AUS DIE MAUS.

von Thomas E. (thomase)


Lesenswert?

Jacko schrieb:
> PUNKT, FERTIG UND AUS DIE MAUS.

Genau.

von Wolfgang (Gast)


Lesenswert?

Joachim B. schrieb:
> man kann weniger und mehr programmieren, die Frage ist nur ab wann das
> Programm nicht mehr ankommt oder drin bleibt :)

Zu Programmieren gehört zumindest, dass nach dem Schreiben in den 
Flash auch ein Verify funktioniert.

von Patrick J. (ho-bit-hun-ter)


Lesenswert?

Hi

Nicht direkt hauen ;)

Trotzdem sei es mir doch gewährt, meine µC so oft zu brennen, wie mir 
beliebt?
Wenn das Brennen scheitert, kann ich den Rechenknecht immer noch in die 
ewigen Jagdgründe meiner Mülltonne verfrachten.
Und, seit Euch sicher, KEINER hier (oder sonst wo) zählt die 
Programmier-Zyklen mit.
Bis auf ein paar tausend µC, Die für das Allgemeinwohl tot geflasht 
wurden, wird die Anzahl Nirgends bekannt sein.
Wenn's geklappt hat, wunderbar!
Wenn nicht Fehlersuche - zu 99,999% (vll. ein paar 9er mehr) wird 
Spannung, Takt oder Kontakt 'falsch' gewesen sein - wegschmeißen geht da 
aber immer noch, will hier Keinem vorschreiben, wie lange Er Seinen µC 
behalten muß ;)

MfG und 'jeweils ein Bit breit Flash im µC Platz' ... oda so

: Bearbeitet durch User
von Gerald B. (gerald_b)


Lesenswert?

Wolfgang schrieb:
> Zu Programmieren gehört zumindest, dass nach dem Schreiben in den
> Flash auch ein Verify funktioniert.

Und nach 10 Jahren sollte das Programm möglichst auch noch im Flash 
sein. Im worst case auch noch bei erhöhter Umgebungstemperatur.
Je öfter eine Speicherzelle geschrieben wird, desdo mehr leckt die 
Gateisolation, da beim Durchtunneln der Gateisolation zum Floatingate 
eben auch eine Materialmigration im atomaren Maßstab stattfindet.
Es kann durchaus sein, das du für Labortests den Flash auch 10 oder 100x 
soviel, wie garantiert beschreiben kannst, aber dann ist auf ihn nicht 
viel mehr Verlass, als auf Birkenrinde ;-)

von Jacko (Gast)


Lesenswert?

Na klar zähl ich auch nicht mit.
Aber wenn ich 1/4 Jahr lang täglich 50 neue Prog-Versionen
in den µC schiebe, sind das unter 5000.

Und wenn es in einem halben Jahr (10.000 Flashs) immer
noch nicht fuktioniert, ist es doch egal, ob der µC
da noch mitmacht... DAS WIRD NIX!

Somit erschien mir die Frage eher als "was geht denn nu?",
oder "hat meiner mehr geschafft, als deiner?".
- Also Unsinn.

von Matthias M. (Firma: privat) (quadraturencoder)


Lesenswert?

Der ATmega8 kann laut Datenblatt zehntausend mal neu beschrieben werden, 
das Flash RAM hunderttausend mal.

Es wird also für die meisten Aufgaben knapp reichen.

Steht übrigens auf der allerersten Seite des Datenblattes.

von futz (Gast)


Lesenswert?

Danke.
Im Datenblatt sehe ich aber trotzdem keine Angabe darüber.

Thomas E. schrieb:
>> PUNKT, FERTIG UND AUS DIE MAUS.
>
> Genau.

Genau.

von Joachim B. (jar)


Lesenswert?

Wolfgang schrieb:
> Zu Programmieren gehört zumindest, dass nach dem Schreiben in den
> Flash auch ein Verify funktioniert.

sicher?

ich erlebe fast täglich das Programmiertes nicht verfiziert wird, sei es 
in Programmen oder Webinterfaces wo man 40 Zeichen 3-zeilige 
Eingabemasken hat die auf Adressaufkleber nicht übernommen werden.

Dann schreibe sollte verfiziert werden :)

: Bearbeitet durch User
von Wolfgang (Gast)


Lesenswert?

futz schrieb:
> Im Datenblatt sehe ich aber trotzdem keine Angabe darüber.

Dann musst du mal einen Prozessor nenne. Sonst kann dich keiner mit der 
Nase auf die Zeile stoßen.

von Thomas E. (thomase)


Lesenswert?

Patrick J. schrieb:
> Und, seit Euch sicher, KEINER hier (oder sonst wo) zählt die
> Programmier-Zyklen mit.

Na, ein bißchen schon.

Mein Versionierungs- und Quelltextsicherungsprogramm zählt bei jedem 
Compilieren und dem damit verbundenen Speichern immer eins hoch. Und da 
ich fast ausschließlich im Debug-Modus arbeite, erhalte ich dadurch auch 
eine zumindest einigermaßen brauchbare Aussage darüber, wie oft der 
Controller geflasht wurde. Die Deadline von 10000 Zyklen bei den AVRs 
habe ich allerdings noch nie auch nur annähernd erreicht. Auch nicht bei 
großen Projekten, an denen ich monatelang gesessen habe und die immer 
wieder rausgekramt und geändert wurden.

von Carsten S. (dg3ycs)


Lesenswert?

Hi,

Wolfgang schrieb:
> futz schrieb:
>> wie oft kann man einen pic-prozessor programmieren?
>
> Das kann dir keiner so genau sagen. Die garantierte Mindestzahl an
> Programmierzyklen verrät üblicherweise der Hersteller.
>
> Lösungen a) und c) treffen bestimmt nicht zu

Was der Controllerhersteller angibt ist, bis auf ganz wenige Ausnahmen, 
nicht die garantierte Zahl, sondern die üblicherweise zu erwartende Zahl 
an Schreibvorgängen ohne nennenswerten Funktionsverlust.
Die Wahrscheinlichkeit das genau der Controller den man gerade verwendet 
diese Zahl durchhält ist sehr hoch.
Aber es ist dennoch immer möglich das man jetzt genau diesen einen von 
tausenden Controllern erwischt hat der schon beim dritten mal 
wiederbeschreiben das Zeitliche segnet.

Wobei es gibt ja eine ganze Reihe von Pic Controllern wo man die 
möglichen Schreibzyklen wirklich absolut genau festlegen kann...
Alle "C" typen mit Ausnahme von des 16C83 und 16C84 sowie den 
Controllern mit JW als Suffix. Da ist die Zahl der möglichen 
Programmiervorgänge ziemlich exakt "EINS".
(Wenn man genau nimmt statistisch ein Hauch unter 1 durch einige wenige 
DOA Controller)
Aber auch wenn viele davon noch beziehbar sind ist das Technik von 
Vorgestern ;-)

Und das die Lösung "a" (1000 Schreibvorgänge) für Pic Controller nicht 
zutreffend ist, darauf solltest du nicht wetten - die Wette würdest du 
verlieren!
Denn das ist genau die Zahl die Microchip für seine ersten Flash Typen 
im Datenblatt angibt. (PIC16F84 OHNE A!)
http://www.microchip.com/wwwproducts/en/PIC16F84
Interessanterweise ist dessen Vorgänger, der noch mit EEPROM 
Programmspeicher ausgestattet war, mit einer Million Schreibzugriffen 
gelistet.
Ich habe damals in meiner jugendlichen Naivität (gerade im ersten LJ in 
der Ausbildung zum KE-Inf mit den PICs angefangen) mir deshalb 
tatsächlich darum Sorgen gemacht und extra getrennt zwischen den paar 
PIC16C84 die ich hatte und den schon  leichter/billiger zu beschaffenden 
PIC16F84. Experimentiert mit dem 16C Type, wenn es dann lief kam in die 
fertige Schaltung der 16F.
Aber ich habe nie einen kaputtgeflasht, dafür ettliche auf anderen Weg 
gekillt. Aber auch diese Varianten der Flash Technologie sind völlig 
veraltet.

Schon dessen Nachfolger der 16F84A wird mit 10k Schreibvorgängen 
beworben.
Jetzt, FAST 20 Jahre später, sind die aktuellen Typen wie der 16f1459 
immer noch bei 10k Schreibvorgängen für den normalen Programmspeicher 
und 100k Schreibvorgängen (hier tatsächlich mit der Bemerkung Minimum) 
für einen kleinen Teil des Flashspeichers der zwar als Programmspeicher 
genutzt werden kann, aber in erster Linie als Ersatz für den EEPROM 
speicher dienen soll. Interessanterweise wird vorne auf dem DS nur noch 
mit den 100k geworben. DAs der größte Teil des Flash-Speichers immer 
noch bei "nur" 10k ist steht erst ganz hinten klein in den technischen 
Daten...

Thomas E. schrieb:
> Die Deadline von 10000 Zyklen bei den AVRs
> habe ich allerdings noch nie auch nur annähernd erreicht. Auch nicht bei
> großen Projekten, an denen ich monatelang gesessen habe und die immer
> wieder rausgekramt und geändert wurden.

Durch "normale" Entwicklungs- oder auch Updatevorgänge wird wohl heute 
niemand der es nicht ganz gezielt darauf anlegt auch nur in die Nähe der 
typischen Werte kommen. Von einem automatisierten Stresstest abgesehen 
müsste man dazu schon Jahrelang nicht nur mit praktisch einem einzigen 
Controllertyp arbeiten sondern auch noch immer genau denselben 
Controller durchgehend für alle Projekte benutzen (Ohne das der 
zwischendurch durch andere Dinge beschädigt wird)

Aber die Zahl ist dennoch alles andere als Unwichtig und es ist schon 
sehr wichtig die bei vielen Dingen im Hinterkopf zu haben:
Immer mehr Controller mit "self Write" Fähigkeiten haben gar keinen 
EEprom Speicher für nichtflüchtige Zwischenspeicherung mehr. Wo man 
früher den EEProm (mit 1M bis 10M an zu erwartenden Schreibvorgängen vor 
Funktionsverlust) genutzt hat wird heute einfach der noch freie Teil des 
Programmspeichers genutzt.
Wenn dann periodisch Werte durch das Programm nichtflüchtig im Speicher 
abgelegt werden kann das je nach Intervall bei ungünstiger 
Implementierung schon nach kurzer Zeit den Flash zerschießen. Bei einer 
Speicherung pro Stunde ist dann bereits nach einem Jahr und zwei Monaten 
im Betrieb die Zahl überschritten.

Da haben sich Anfangs so einige mit ins Knie geschossen. Die Werte 
einfach periodisch Weggeschrieben. Selbst bei 1x die Minute würde das 
ein PIC mit EEPROM Datenspeicher rund 20Jahre bei geringfügig neueren 
Controllern auch 200 Jahre mitmachen. Also wurden die Werte nur einfach 
weggeschrieben. Jede Schutzmaßnahme war verschwendete 
Zeit/Programmspeicher. Schließlich wurden viele dieser Programme 
ursprünglich sogar noch in ASM für mit EPROM und RAM geizende Controller 
geschrieben.

Dann wurde der Controller auf was aktuelles umgestellt, die 
Programmroutine unverändert beibehalten und noch in der 
Gewährleistungszeit sind die Geräte ausgefallen... Dumm gelaufen!
10k ist also nicht wirklich viel. Auch die 100k des kleinen 
"hochzuverlässigen" Bereichs in einigen neuen Controllern ist verglichen 
mit den 10M bei den nicht ganz so alten Pics mit EEPROM Speicher nicht 
wirklich viel. Wenn man also nicht nur Kalibrierdaten die sich 
vielleicht alle paar Monate nach Neukalibrierung mal ändern oder sogar 
nur einmalig "im Werk" erzeugt werden wegspeichern muss sondern mit 
periodischen Schreibzugriffen im nichtflüchtigen Speicher arbeiten will 
sollte man sich bei Flash schon sehr sorgfältig überlegen zu wievielen 
Schreibvorgänen es kommen könnte und ab einer gewissen Häufigkeit dann 
wie man das gut implementiert.
Die erforderlichen Maßnahmen können dann von einer einfachen Überprüfung 
ob überhaupt ein Schreibzugriff nötig ist (keine Änderung im Vergleich 
zum alten Wert) bis hin zu einem komplexen wear Leveling Algorithmus 
gehen.

Gruß
Carsten

: Bearbeitet durch User
von Wolfgang (Gast)


Lesenswert?

Carsten S. schrieb:
> Was der Controllerhersteller angibt ist, bis auf ganz wenige Ausnahmen,
> nicht die garantierte Zahl, sondern die üblicherweise zu erwartende Zahl
> an Schreibvorgängen ohne nennenswerten Funktionsverlust.
> ...
> Aber es ist dennoch immer möglich das man jetzt genau diesen einen von
> tausenden Controllern erwischt hat der schon beim dritten mal
> wiederbeschreiben das Zeitliche segnet.

Wie viele von einer Million Controllern fallen denn nach drei mal 
Programmieren aus, wenn der Hersteller im Datenblatt bspw. angibt 
"100,000 write Flash endurance (minimum)" - wohlgemerkt "minimum". 
Kennst du dazu belastbare, statistische Auswertungen?
Ein Hersteller wird sich hüten, Produkte rauszuschicken, von denen er 
weiss, dass eine nennenswerte Anzahl die als "minimal" genannte Angabe 
von Zyklen nur zu einem Bruchteil erreicht.

von Clemens L. (c_l)


Angehängte Dateien:

Lesenswert?

Gerald B. schrieb:
> Und nach 10 Jahren sollte das Programm möglichst auch noch im Flash
> sein. Im worst case auch noch bei erhöhter Umgebungstemperatur.

Manche Hersteller verraten auch, wie sich die Temperatur auswirkt, wie 
man das testen kann, und wann man den Flash regelmäßig neu schreiben 
sollte, z.B.:
http://www.ti.com/lit/pdf/slaa392
http://www.ti.com/lit/pdf/slaa334

Und zwischen den Flash-Zellen verschiedener Herstellern gibt es keine 
großen Unterschiede.

: Bearbeitet durch User
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.