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 bloc block_num. len(buf) doit être un multiple de la taille de bloc flash.

Forme étendue (readblocks(block_num, buf, offset)) : lit len(buf) octets – pas nécessairement un nombre entier de blocs – à partir de l’octet offset au sein du bloc block_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 buf dans 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 bloc block_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)) : écrit len(buf) octets – pas nécessairement un nombre entier de blocs – à partir de l’octet offset au sein du bloc block_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 OSError si 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. Voir vfs.AbstractBlockDev.ioctl() pour la liste complète des valeurs de cmd. cmd=5 renvoie la taille de bloc flash en octets ; cmd=6 efface le bloc d’index arg.