Comme beaucoup d'autres personnes, j'ai été inspirée par la série de Ben Eater qui vous guide à travers la construction d'un ordinateur 8 bits sur des planches à pain, et je voulais reproduire son travail (et peut-être améliorer la conception avec quelques idées à l'avenir). Cependant, lorsque je fais la liste des composants que je devais acheter, j'ai découvert que les puces EEPROM sont presque impossibles à un terme partout ces jours-ci et je me suis donc demandé comment résoudre ce problème.
Après quelques recherches, j'ai découvert que les puces flash SST39SF010 sont très similaires à la puce beneater/eeprom-programmer utilise, et avec également un certain nombre d'améliorations, telles que la vitesse d'écriture / lecture, le temps de rétention, la consommation électrique ... bien sûr, cependant, ce slu4coderSST39SF010-FLASH-Programmer pourrait être ce dont j'avais besoin. Cependant, à mon avis, il a été écrit dans un style très différent en ce qui concerne l'idée d'enseignement qui était derrière le projet de Ben.
J'ai donc décidé d'écrire mon propre programmeur qui, bien qu'à coup sûr, moins optimisé que celui de Slu4coder, je pense que c'est plus adapté à un débutant qui veut aborder la programmation flash sans avoir beaucoup d'expérience en codage. Pour cette raison, j'ai essayé de commenter le code et d'être aussi clair que possible dans mon style. Mon projet est également basé sur l'Arduino Nano en combinaison avec deux puces 74HC595, tout comme les deux projets susmentionnés.
Je pourrais étendre ce logiciel pour être compatible avec les puces flash génériques SST39SF0X0 à l'avenir; Bien que si vous êtes arrivé ici et que vous devez flasher les puces de capacité supérieure, vous êtes probablement capable d'étendre ce projet par vous-même. :)
Dans mon code, j'ai également inclus un mécanisme de vérification des fonctions d'écriture et de puce de données, qui peuvent être activées et configurées au moment de la compilation.
Le macro WRITE_CHK est défini par défaut comme 0 , mais peut être changé en 1 pour activer le chèque. Dans ce cas, chaque octet de données écrit dans la mémoire est automatiquement vérifié et le logiciel augmentera une erreur si la lecture est différente des données attendues. Pour plus d'informations, veuillez vous référer à la fonction writeMem() dans le code.
La macro CLR_CHK est définie par défaut comme 0 , mais peut être changée en un nombre positif pour activer le chèque. Dans ce cas, après la commande Clear Chip, le numéro attribué à la macro sera le nombre d'octets aléatoires lus à partir du flash et vérifiés. Si l'un de ces octets est différent de 0xFF (valeur par défaut après une puce claire), le logiciel augmentera une erreur. Il existe une autre macro, appelée CLR_CHK_MAX , qui définit l'adresse la plus élevée possible provenant de la fonction aléatoire; Par défaut, il est défini comme 131071 , qui est (2 ^ 17) -1, l'octet adressable le plus élevé dans SST39SF010. Cependant, je voulais donner la possibilité de configurer cette macro car dans certains cas, la mémoire flash est utilisée uniquement pour les premiers octets, et il est donc utile de vérifier uniquement les octets utilisés dans le cycle d'écriture précédent. Pour plus d'informations, veuillez vous référer à la fonction eraseAll() dans le code.