classe Flash – accès à la mémoire flash de stockage intégrée¶
La classe Flash offre un accès direct, au niveau bloc, à la puce de mémoire flash QSPI externe du RP2040. Le pilote implémente l’interface vfs.AbstractBlockDev, de sorte qu’il peut être passé à vfs.mount() pour des configurations de système de fichiers personnalisées.
La plupart des scripts persistent les données via le système de fichiers monté automatiquement à / et ne construisent jamais directement un objet Flash. Construisez-en un manuellement lorsque vous devez :
Monter un système de fichiers non par défaut (par exemple en l’enveloppant avec
vfs.VfsFat) sur une partition personnalisée.Lire ou écrire des régions de micrologiciel ou des blocs de données d’usine qui n’appartiennent pas au système de fichiers.
Implémenter un format de stockage personnalisé sur la mémoire flash qui contourne la couche du système de fichiers.
Constructeurs¶
- class rp2.Flash Flash¶
Renvoie l’objet périphérique-bloc singleton
Flashadossé à la puce de mémoire flash QSPI du RP2040. Le premier bloc exposé est celui qui suit immédiatement la région du micrologiciel, de sorte que les appelants ne voient que la zone de la puce admissible au système de fichiers.Méthodes¶
- readblocks(block_num: int, buf: bytearray) None¶
- readblocks(block_num: int, buf: bytearray, offset: int) None
Lit des octets depuis la mémoire flash dans
buf. Point d’entrée standard du périphérique-blocvfs.AbstractBlockDevutilisé par la couche du système de fichiers.Forme simple (
readblocks(block_num, buf)) : lit des blocs entiers à partir de l’index de blocblock_num.len(buf)doit être un multiple de la taille de bloc de la mémoire flash.Forme étendue (
readblocks(block_num, buf, offset)) : litlen(buf)octets – pas nécessairement un nombre entier de blocs – à partir de l’octetoffsetà l’intérieur du blocblock_num. Utilisée par littlefs et d’autres systèmes de fichiers adressables à l’octet.
- writeblocks(block_num: int, buf: bytes) None¶
- writeblocks(block_num: int, buf: bytes, offset: int) None
Écrit des octets de
bufvers la mémoire flash. Point d’entrée standard du périphérique-blocvfs.AbstractBlockDevutilisé par la couche du système de fichiers.Forme simple (
writeblocks(block_num, buf)) : écrit des blocs entiers à partir de l’index de blocblock_num.len(buf)doit être un multiple de la taille de bloc de la mémoire flash. Chaque bloc concerné est effacé automatiquement avant d’être écrit.Forme étendue (
writeblocks(block_num, buf, offset)) : écritlen(buf)octets – pas nécessairement un nombre entier de blocs – à partir de l’octetoffsetà l’intérieur du blocblock_num. Aucun effacement implicite n’est effectué – l’appelant doit s’assurer que les blocs concernés ont été effacés au moyen d’un appelioctl(6, block_num)préalable.
- ioctl(cmd: int, arg: int) int | None¶
Point d’entrée de contrôle standard
vfs.AbstractBlockDev. Appelé par la couche du système de fichiers au moment du montage/démontage et à chaque synchronisation. Valeurscmdreconnues :1– initialiser. Renvoie0en cas de succès.2– désinitialiser. Renvoie0en cas de succès.3– synchroniser les écritures en attente. Renvoie0.4– renvoie le nombre de blocs de mémoire flash visibles par le système de fichiers.5– renvoie la taille de bloc en octets (généralement la taille de secteur de la mémoire flash,4096).6– efface le bloc à l’indexarg. Requis avant d’utiliser la forme étendue dewriteblocks.7– renvoie si le périphérique prend en charge la commande d’effacement de bloc (1sur RP2040).
Les appelants directs n’utilisent normalement pas cette méthode – le pilote du système de fichiers répartit automatiquement les codes standard une fois que l’objet
Flashest monté.