mimxrt — fonctionnalités spécifiques au NXP i.MXRT¶
Le module mimxrt contient des fonctions et des classes spécifiques à la famille de microcontrôleurs NXP i.MXRT.
Classes¶
- class mimxrt.Flash¶
Obtient l’objet singleton qui expose la région de stockage utilisateur de la mémoire flash QSPI embarquée comme un périphérique de bloc compatible
vfs.AbstractBlockDev. Les numéros de bloc sont relatifs au début de cette région, et non au début physique de la mémoire flash.Dans la plupart des cas, pour stocker des données persistantes sur l’appareil, vous voudrez utiliser une abstraction de plus haut niveau – par exemple le système de fichiers via l’API de fichiers standard de Python. Cette interface est utile pour personnaliser la configuration du système de fichiers ou implémenter un système de stockage de bas niveau pour votre application.
L’objet implémente également le protocole tampon, permettant un accès en lecture seule à mappage mémoire de toute la région de stockage flash via la base QSPI XIP. Cela rend disponible une vue sans copie de la région sans émettre la moindre lecture flash
flash = mimxrt.Flash() view = memoryview(flash) magic = bytes(view[:4]) # read the first 4 bytes directly from XIP
La taille de bloc utilisée par les secteurs flash sous-jacents peut être interrogée à l’exécution avec
ioctl(5, 0).- 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. Deux surcharges exposent les interfaces simple et étendue :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 flash.Forme étendue (
readblocks(block_num, buf, offset)) : litlen(buf)octets – pas nécessairement un nombre entier de blocs – à partir de l’octetoffsetau sein du blocblock_num.len(buf)n’a aucune contrainte d’alignement.
- writeblocks(block_num: int, buf: bytes) None¶
- writeblocks(block_num: int, buf: bytes, offset: int) None
Écrit des octets depuis
bufdans la mémoire flash. Deux surcharges exposent les interfaces simple et étendue :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 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’octetoffsetau sein du blocblock_num.len(buf)n’a aucune contrainte d’alignement, et aucun effacement implicite n’est effectué – l’appelant doit s’assurer que les blocs concernés ont été effacés via un appel préalable àioctl(6, block_num).Lève
OSErrorsi l’opération sous-jacente d’effacement ou d’écriture flash échoue.
- ioctl(cmd: int, arg: int) int | None¶
Point d’entrée ioctl standard de
vfs.AbstractBlockDev. Voirvfs.AbstractBlockDev.ioctl()pour la liste complète des valeurs decmd.cmd=5renvoie la taille de bloc flash en octets ;cmd=6efface le bloc d’indexarg.