Sauvegarde de la mémoire RAM lors de l'écriture sur un flash NAND de taille de page 2K


10

J'écris un pilote pour la Samsung K9WAG08U1D NAND flashpuce. La spécification de la puce mémoire mentionne qu'elle a une taille de page de 2 048 octets (2 Ko). J'utilise un TI MSP430F2619qui a 4096 octets (4 Ko) de RAM. Cela signifie que je dois allouer un tampon de mémoire de 2k juste pour écrire sur flash. Mon application est un convertisseur de protocole et nécessite donc un tampon supplémentaire pour gérer la transmission aller-retour. Veuillez me suggérer une meilleure approche pour réduire les besoins en RAM en raison de la taille de la page flash.

Réponses:


7

Vous n'avez pas besoin de remplir la page en une seule fois.

Vous commencez une écriture de page (c'est-à-dire l'opération "Programme de page") en écrivant la commande Serial Data Input ( 0x80), l'adresse de colonne et l'adresse de ligne. Ensuite, vous transférez les données dans le registre de pages (jusqu'à 2112 octets). Ce transfert peut être divisé en morceaux, avec tout délai entre les morceaux dont vous avez besoin.

Lorsque vous avez rempli le registre de pages, vous commencez le transfert du registre de pages vers le tableau à l'aide de la commande Page Program Confirm ( 0x10).


veuillez noter que les flashs NAND sont généralement limités à 4 écritures partielles par page

1
@Jacen Je ne parle pas d'une écriture partielle par page. Cela se fait par une séquence de commande / adresse / données / commande distincte par pièce. Je fais référence à la rupture du transfert vers le registre de pages, qui peut être un "bloc" par octet si nécessaire.
Patrick

Fondamentalement, ma logique de pilote actuelle attendait que le tampon 2K entier dans la RAM soit rempli, puis écrivait sur flash. Mais maintenant, je peux aussi avoir un tampon RAM d'au moins 1 octet.

Oh oui, tu as raison Patrick, j'ai oublié cette option.
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.