Wie viele andere Menschen bin ich von Ben Eaters Serie inspiriert, die Sie durch den Bau eines 8-Bit-Computers auf Steigbrettern führt, und ich wollte seine Arbeit wiederholen (und vielleicht das Design mit einigen eigenen Ideen in der Zukunft verbessern). Als ich jedoch die Liste der Komponenten erstellte, die ich kaufen musste, stellte ich fest, dass EEPROM -Chips heutzutage überall nahezu uneingeschränkt sind und sich so fragten, wie man dieses Problem lösen kann.
Nach einigen Untersuchungen stellte ich fest, dass die SST39SF010-Flash-Chips dem 28C16-EEPROM-Chip-Ben-Eater sehr ähnlich sind, und auch mit einer Reihe von Verbesserungen, wie das Schreiben/Lesegeschwindigkeit, die Beilungszeit, den Stromverbrauch ... natürlich einen unterschiedlichen Programmierer, der von Beneer für seine Serie, beneater/eeprom-programmer , vorgeschrieben ist. slu4coderSST39SF010-FLASH-Programmer könnte das sein, was ich brauchte. Meiner Meinung nach wurde es jedoch in einem ganz anderen Stil in Bezug auf die Lehridee geschrieben, die hinter Bens Projekt stand.
Deshalb habe ich mich entschlossen, meinen eigenen Programmierer zu schreiben, der zwar weniger optimiert als SLU4CODER ist, ist meiner Meinung nach eher für einen Anfänger geeignet, der sich der Flash -Programmierung nähern möchte, ohne viel Codierungserfahrung zu haben. Aus diesem Grund habe ich versucht, den Code zu kommentieren und in meinem Stil so klar wie möglich zu sein. Mein Projekt basiert auch auf dem Arduino Nano in Kombination mit zwei 74HC595 -Chips, genau wie die beiden oben genannten Projekte.
Ich könnte diese Software auf SST39SF0x0 generische Flash -Chips in der Zukunft erweitern. Wenn Sie hier angekommen sind und Chips mit höherer Kapazität flashen müssen, können Sie dieses Projekt wahrscheinlich selbst erweitern. :)
In meinem Code habe ich auch einen Überprüfungsmechanismus für die Datenschreib- und Lösch -Chipfunktionen beigefügt, die zur Kompilierungszeit aktiviert und konfiguriert werden können.
Das Makro WRITE_CHK ist standardmäßig als 0 definiert, kann jedoch in 1 geändert werden, um die Prüfung zu aktivieren. In diesem Fall wird jedes in den Speicher geschriebene Datenbyte automatisch überprüft, und die Software erhöht einen Fehler, wenn sich der Readback von den erwarteten Daten unterscheidet. Weitere Informationen finden Sie in der Funktion writeMem() im Code.
Das Makro CLR_CHK ist standardmäßig als 0 definiert, kann jedoch in eine positive Zahl geändert werden, um die Überprüfung zu aktivieren. In diesem Fall wird nach dem Befehl clear chip die Nummer, die dem Makro zugewiesen wird, die Anzahl der vom Flash gelesenen zufälligen Bytes sein und überprüft. Wenn sich eines dieser Bytes von 0xFF unterscheidet (Standardwert nach einem klaren Chip), erhöht die Software einen Fehler. Es gibt ein anderes Makro, das als CLR_CHK_MAX bezeichnet wird und die höchstmögliche Adresse definiert, die aus der zufälligen Funktion stammt. Standardmäßig ist es definiert als 131071 , das (2^17) -1, das höchste adressierbare Byte in SST39SF010. Ich wollte jedoch die Möglichkeit geben, dieses Makro zu konfigurieren, da in einigen Fällen der Flash -Speicher nur für die wenigen ersten Bytes verwendet wird, und daher ist es nützlich, nur die Bytes zu überprüfen, die im vorherigen Schreibzyklus verwendet wurden. Weitere Informationen finden Sie in der Funktion eraseAll() im Code.