mimxrt — Funktionalität speziell für NXP i.MXRT¶
Das Modul mimxrt enthält Funktionen und Klassen, die speziell für die NXP-i.MXRT-Familie von Mikrocontrollern sind.
Klassen¶
- class mimxrt.Flash¶
Ruft das Singleton-Objekt ab, das den Benutzer-Speicherbereich des integrierten QSPI-Flash als ein zu
vfs.AbstractBlockDevkompatibles Block-Gerät bereitstellt. Blocknummern sind relativ zum Anfang dieses Bereichs, nicht zum physischen Anfang des Flash.In den meisten Fällen möchten Sie, um persistente Daten auf dem Gerät zu speichern, eine höhere Abstraktionsebene verwenden – zum Beispiel das Dateisystem über Pythons Standard-Datei-API. Diese Schnittstelle ist nützlich, um die Dateisystemkonfiguration anzupassen oder ein Low-Level-Speichersystem für Ihre Anwendung zu implementieren.
Das Objekt implementiert außerdem das Puffer-Protokoll, das einen schreibgeschützten, speicherabgebildeten Zugriff auf den gesamten Flash-Speicherbereich über die QSPI-XIP-Basis ermöglicht. Dadurch wird eine Zero-Copy-Ansicht des Bereichs verfügbar gemacht, ohne dass Flash-Lesevorgänge ausgegeben werden:
flash = mimxrt.Flash() view = memoryview(flash) magic = bytes(view[:4]) # read the first 4 bytes directly from XIP
Die von den zugrunde liegenden Flash-Sektoren verwendete Blockgröße kann zur Laufzeit mit
ioctl(5, 0)abgefragt werden.- readblocks(block_num: int, buf: bytearray) None¶
- readblocks(block_num: int, buf: bytearray, offset: int) None
Liest Bytes aus dem Flash in
buf. Zwei Überladungen stellen die einfache und die erweiterte Schnittstelle bereit:Einfache Form (
readblocks(block_num, buf)): liest ganze Blöcke beginnend bei Blockindexblock_num.len(buf)muss ein Vielfaches der Flash-Blockgröße sein.Erweiterte Form (
readblocks(block_num, buf, offset)): liestlen(buf)Bytes – nicht notwendigerweise eine ganze Anzahl von Blöcken – beginnend bei Byteoffsetinnerhalb von Blockblock_num.len(buf)unterliegt keiner Ausrichtungsbeschränkung.
- writeblocks(block_num: int, buf: bytes) None¶
- writeblocks(block_num: int, buf: bytes, offset: int) None
Schreibt Bytes aus
bufin den Flash. Zwei Überladungen stellen die einfache und die erweiterte Schnittstelle bereit:Einfache Form (
writeblocks(block_num, buf)): schreibt ganze Blöcke beginnend bei Blockindexblock_num.len(buf)muss ein Vielfaches der Flash-Blockgröße sein. Jeder betroffene Block wird vor dem Schreiben automatisch gelöscht.Erweiterte Form (
writeblocks(block_num, buf, offset)): schreibtlen(buf)Bytes – nicht notwendigerweise eine ganze Anzahl von Blöcken – beginnend bei Byteoffsetinnerhalb von Blockblock_num.len(buf)unterliegt keiner Ausrichtungsbeschränkung, und es wird kein implizites Löschen durchgeführt – der Aufrufer muss sicherstellen, dass die betroffenen Blöcke über einen vorherigen Aufruf vonioctl(6, block_num)gelöscht wurden.Löst
OSErroraus, wenn der zugrunde liegende Flash-Lösch- oder Schreibvorgang fehlschlägt.
- ioctl(cmd: int, arg: int) int | None¶
Standard-Einstiegspunkt ioctl für
vfs.AbstractBlockDev. Die vollständige Liste dercmd-Werte finden Sie untervfs.AbstractBlockDev.ioctl().cmd=5gibt die Flash-Blockgröße in Bytes zurück;cmd=6löscht den Block mit dem Indexarg.