STM32F4 richtige Handhabung

Gast #3467179
Lesenswert?

Hallo,

ich habe nun seit einiger Zeit ein STM32F407 DISCOVERY board. Bisher bin 
verschiedene Dinge am Ausprobieren und ständig am flashen. Im Datenblatt 
des Chips steht aber, dass dieser nur 10000 Schreibzyklen verträgt. Wie 
gesagt, habe ich mir bisher darüber keine Gedanken gemacht, weil ich 
bisher dachte, dass diese Chips 100000 Schreibzyklen abkönnen.

Meine Frage ist jetzt eigentlich, wie ich richtig mit diesen Chips 
umgehe?
Ich bin nach wie vor nur am herum experimentieren, ohne konkretes Ziel.
Gibt es eine Möglichkeit bevor man Programme "flasht" diese zu 
simulieren? Oder kann man diese vorher debuggen, bevor man sie brennt?

Wie machen das die Profis?

Gruß
Kai
Gast #3467183
Lesenswert?

Die 10000 ist die garantierte Mindestanzahl an Schreibzyklen, die 
tatsächlich mögliche Anzahl kann deutlich höher liegen - dafür legt der 
Hersteller aber nicht die Hand ins Feuer.

Diese Anzahl ist aber nicht so wenig wie man glaubt. Wenn man den Chip 
täglich 100mal programmiert, sind das mindestens 100 Tage intensiver 
Arbeit mit dem Chip. Brennt er irgendwann durch, muß man ihn halt 
auswechseln.

Gruß. Tom
Gast #3467187
Lesenswert?

Wahrscheinlich werde ich dann wohl nicht so schnell an die Grenzen des 
Chips stoßen.

Aber kann man denn so ohne weiteres als Hobbybastler den Chip auslöten 
bei den Discovery boards?
Da braucht man doch sicherlich ein spezielles Lötgerät.
Gast #3467188
Lesenswert?

Den defekten Chip mit Heißluft vorsichtig auslöten ist kein Problem, er 
ist ja schon hinüber. Sonst mit einem Cuttermesser oder Skalpell die 
Beinchen vorsichtig abschneiden, damit die Lötpads nicht beschädigt 
werden und anschließend die Reste einzeln mit dem Lötkolben entfernen. 
Die Pads mit Entlötlitze von Lötzinnresten befreien und schon ist die 
Platine bereit für einen neuen Chip. :-)
Gast #3467410
Lesenswert?

> Wieso lässt sich der Chip nicht beliebig oft beschreiben?

Das würde mich auch mal interessieren. Klar ist, dass die Speicherzellen 
verschließen, aber warum das so ist, konnte ich nicht herausfinden.

Da wird wohl auf dem Floating Gtae eine Hand voll Elektronen abgelegt 
oder wieder entfernt. Warum zerstört dieser Vorgang den Transistor 
(langfristig)?
#3467927
Lesenswert?

Uwe Bonnes schrieb:
> Stefanus schrieb:
>> a wird wohl auf dem Floating Gtae eine Hand voll Elektronen abgelegt
>> oder wieder entfernt. Warum zerstört dieser Vorgang den Transistor
>
> Weil dazu Überspannung an das Gate angelegt wird, die "fast" einen
> Durchschlag durch das Gate erzeugt.

Weil Elektronen auch an Plätze wandern wo man sie nicht mehr weg 
bekommt. Dadurch verschiebt sich auch die Schwellspannung. Irgendwann 
hat man dann keinen vernünftigen Arbeitsbereich mehr.


Sei froh, dass wenigstens 10000 mal programmieren garantiert wird. Bei 
den Solid State Disks(SSD) ist gerade mal noch 1000 mal beschreiben 
möglich.
Gast #3468092
Lesenswert?

Werfe bei jedem Brennvorgang einfach einen cent in eine Spardose. Wenn 
das Ding dann kaputt geht, hast Du mindestens. 100 Euro zusammen und 
kannst Dir damit fast 10 neue Boards kaufen...
Soll heißen: Mache Dir über die Anzahl der möglichen Brennzyklen keine 
Gedanken. Bevor Du die erreichst, wirst Du das Board wohl eher beim 
Experimentieren auf andere Art und Weise kaputt machen. ;)
#3468098
Lesenswert?

A. K. schrieb:
> und diese nicht in der Debug-Engine des
> Chips sondern durch um-flashen vom Code realisiert werden.

Kommt das in der freien Wildbahn vor? Sowas habe ich bis jetzt nur ab 
RAM gesehen. Da die STM32 aber, soweit ich mich erinnere, acht 
HW-Breakpoints unterstützen, ist das ja zum Glück kein Thema.

A. K. schrieb:
> Schon mal einen µC mit wear levelling gesehen?

(ich weiss, das ist was völlig anderes, kam mir nur gerade in den Sinn)
ST Micro bietet einen "EEPROM-Emulator" zum Download an. der macht 
einfaches Wear Leveling. Ist praktisch, wenn man Parameter speichern 
will, und so doch irgendwann mal 10'000 Zyklen ein bisschen knapp 
werden.

Kai Wierzoch schrieb:
> Was ist denn wear leveling?

Vereinfacht gesagt: Wenn Du etwas speicherst, schaut ein Wear Leveling 
Algo zu, dass Du das nicht immer in die gleichen Zellen schreibst. 
Beispiel USB-Stick: Wenn Du da eine Datei überschreibst, überschreibst 
Du die Daten nicht, sondern legst sie in einem unbenutzten Bereich neu 
ab. So, dass - wie der Name eben sagt - der Verschleiss der echten 
Speicherzellen gleichmässig verteilt ist. Ausführlicheres weiss sicher 
Wikipedia.
#3468142
Lesenswert?

Kai Wierzoch schrieb:
> A. K. schrieb:
>>
>> Schon mal einen µC mit wear levelling gesehen?
>
> Was ist denn wear leveling?

Man benutzt laufend andere Speicherbereiche um zu vermeiden immer die 
gleichen Zellen zu löschen und beschreiben.

Bei deinem ARM Prozessor müsstest du jedes Mal den Speicheranfang des 
Programms und der konstanten Daten auf den nächst höheren 
Adressbereich(nächst höheren Sektor) legen anstatt immer die gleiche 
Basis-Adresse zu nehmen.
Gast #3479980
Lesenswert?

Das habe ich schon ausprobiert. Wenn ich dann Debug drücke führt er das 
Programm auch aus. Wenn ich dann Änderungen am Quellcode gemacht habe 
und wieder Debug drücke, führt er das Programm aus, allerdimgs die 
Version vor der Änderung.
Mache ich was falsch? Compiliert habe ich vorher.

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