Ich werde auf die Programmierung von Flash-Speichern eingehen, aber eine Menge Material wird EEPROMs (Electrically Erasable Programmable ROM) ähneln, da Flash-Speicher Mitte der 1980er Jahre aus EEPROMs abgeleitet wurden. Wie im Folgenden beschrieben, ist der Standardzustand vom physikalischen Standpunkt aus 1. Aber noch wichtiger ist , ich werde erklären , warum es ist ein Zustand , Standard - man kann nicht einfach willkürlich Programm auf, was bereits vom letzten Mal programmiert wird.
NOR-Flash wird fast immer für Programm-Flash gewählt, da die Schnittstelle am besten zum Platzieren der Daten in der Speicherkarte des Mikrocontrollers geeignet ist - vollständige Adressen- und Datenbusse ahmen den RAM nach und ermöglichen den wahlfreien Zugriff auf jeden Ort. Daten können wortweise gelesen werden, wobei ein Wort als Datenbreite des Mikrocontrollers definiert ist, typischerweise 8, 16 oder 32 Bit. NAND-Flash hingegen wurde entwickelt, um Festplatten zu ersetzen und funktioniert sequentiell.
Die Programmierung wird jedoch etwas komplizierter. Wie bereits erwähnt, ist der Standardzustand für NOR-Flash und andere nichtflüchtige Speicher wie NAND-Flash, EEPROMs und sogar EPROMs eine logische 1. Sie können in diesen Geräten keine Einsen programmieren, Sie können nur Nullen programmieren. Wenn Sie beispielsweise ein Byte haben, das 0x0123 enthält, und es in 0x3210 ändern möchten, können Sie dies nicht direkt über ein Byte im RAM schreiben.
Stattdessen müssen Bits im Speicher gelöscht werden, wodurch sie in den bereits erwähnten Standardzustand 1 versetzt werden. Dies kann nur in Blöcken erfolgen, nicht in Worten. Auf dem Microchip PIC32, mit dem ich zuletzt gearbeitet habe, beträgt die minimale Blockgröße, die gelöscht werden kann, 4096 Bytes. Wenn Sie also nur ein Wort (32 Bit) ändern möchten, müssen Sie die 4 KByte des Speichers lesen, den Block löschen und dann die 4 KByte des Speichers auf Flash zurückschreiben, wobei Sie den neuen 32-Bit-Wert nach Bedarf einschließen. Dieses Löschen kann einige Zeit in Anspruch nehmen - einen guten Teil einer Sekunde.
Das Folgende ist ein Bild einer Flash-Speicherzelle. Flash speichert die Daten durch Entfernen oder Anbringen von Elektronen am Floating Gate. Wenn Elektronen auf dem Floating Gate vorhanden sind, fließt kein Strom durch den Transistor, was eine 0 anzeigt. Wenn Elektronen vom Floating Gate entfernt werden, beginnt der Transistor zu leiten und zeigt eine 1 an andersherum wären aber Wechselrichter auf allen Datenleitungen erforderlich.)
Vorgang löschen. Der Standardzustand von Flash-Speicherzellen (eine einstufige NOR-Flash-Zelle) ist 1, da Floating-Gates keine negativen Ladungen übertragen. Das Löschen einer Flash-Speicherzelle (Zurücksetzen auf 1) wird durch Anlegen einer Spannung an die Source und das Steuergate (Wortleitung) erreicht. Die Spannung kann im Bereich von -9 V bis -12 V liegen. Und legen Sie auch ungefähr 6V an die Quelle an. Die Elektronen im Floating Gate werden abgezogen und durch Quantentunneling zur Source übertragen . Mit anderen Worten, Elektronen tunneln vom Floating Gate zur Source und zum Substrat.
Da beim Löschen hohe Spannungen verwendet werden, erfordert das Löschen in Blöcken weniger Chipfläche. Daher können nur ganze Reihen von Transistoren gleichzeitig mit Spannung versorgt werden.
Zum Schreiben kann eine NOR-Flash-Zelle wie folgt programmiert oder auf 0 gesetzt werden. Während des Schreibens wird eine hohe Spannung von ungefähr 12 V an das Steuergate (Wortleitung) angelegt. Wenn eine Hochspannung von ungefähr 7 V an die Bitleitung (Drain-Anschluss) angelegt wird, wird eine 0 in der Zelle gespeichert. Der Kanal ist jetzt eingeschaltet, damit Elektronen von der Source zum Drain fließen können. Der Source-Drain-Strom ist hoch genug, um zu bewirken, dass einige energiereiche Elektronen durch die Isolierschicht auf das Floating-Gate springen, was als Injektion heißer Elektronen bezeichnet wird.
Zum Lesen wird eine Spannung von ungefähr 5 V an das Steuergate und ungefähr 1 V an den Drain angelegt. Der Zustand der Speicherzelle wird durch den zwischen Drain und Source fließenden Strom unterschieden.
Die Nutzungsdauer des nichtflüchtigen Speichers wird in Form von Löschzyklen gemessen. Der Nachteil von NOR ist, dass die Anzahl der Löschzyklen etwa 1/10 der Anzahl der NAND-Speicher beträgt. Bei vielen Versionen des PIC32 kann der Flash-Speicher nur 1000-mal aktualisiert werden, weit weniger als die typischen 100.000 Löschzyklen für EEPROMs.
Es ist also nicht so wichtig, ob die Designer den Standardstatus auf 1 oder 0 gesetzt haben (sie haben den Wert gewählt, der die einfachste Implementierung ermöglicht). Wichtig ist, dass man zuerst einen Flash-Block löscht (was Zeit kostet) und dann den gesamten Block neu programmiert (auch wenn ein einzelnes Wort geändert wird (was eine erhebliche Menge an RAM erfordert).
Diese Blocklöschung des Gerätes geht auf die ersten EPROMs (Erasable Programmable ROM) zurück, die EEPROMs durchliefen. Der Code wurde in Chips (wie die 16KB 27128) programmiert und in Sockel gesteckt. Diese Chips hatten oben ein kleines Fenster, durch das Licht auf den Würfel fiel. Wenn das Programm geändert werden musste, wurden die Chips etwa 20 Minuten lang in einen UV-Radierer gelegt, wodurch der gesamte Chip gelöscht wurde. Dann würde der Chip mit dem neuen Programm programmiert.
Einige EEPROMs erfordern das Löschen von Speicherblöcken vor dem Programmieren. andere erlauben das gleichzeitige Schreiben eines Bytes (der EEPROM-Controller löscht tatsächlich zuerst das Byte und die Programme, die es enthält).