mimxrt — functionaliteit specifiek voor NXP i.MXRT

De mimxrt-module bevat functies en klassen die specifiek zijn voor de NXP i.MXRT-familie van microcontrollers.

Klassen

class mimxrt.Flash

Verkrijg het singleton-object dat de gebruikersopslagregio van het ingebouwde QSPI-flashgeheugen blootstelt als een blokapparaat dat compatibel is met vfs.AbstractBlockDev. Bloknummers zijn relatief ten opzichte van het begin van die regio, niet het fysieke begin van het flashgeheugen.

In de meeste gevallen wilt u, om persistente gegevens op het apparaat op te slaan, een abstractie op hoger niveau gebruiken – bijvoorbeeld het bestandssysteem via Pythons standaard bestands-API. Deze interface is nuttig om de bestandssysteemconfiguratie aan te passen of een laagniveau-opslagsysteem voor uw applicatie te implementeren.

Het object implementeert ook het buffer-protocol, wat alleen-lezen, geheugen-gemapte toegang tot de volledige flashopslagregio mogelijk maakt via de QSPI XIP-basis. Dit maakt een zero-copy-weergave van de regio beschikbaar zonder dat er flash-leesbewerkingen worden uitgevoerd:

flash = mimxrt.Flash()
view = memoryview(flash)
magic = bytes(view[:4])      # read the first 4 bytes directly from XIP

De blokgrootte die door de onderliggende flashsectoren wordt gebruikt, kan tijdens runtime worden opgevraagd met ioctl(5, 0).

readblocks(block_num: int, buf: bytearray) None
readblocks(block_num: int, buf: bytearray, offset: int) None

Lees bytes uit het flashgeheugen in buf. Twee overloads stellen de eenvoudige en uitgebreide interfaces beschikbaar:

Eenvoudige vorm (readblocks(block_num, buf)): leest hele blokken vanaf blokindex block_num. len(buf) moet een veelvoud zijn van de flashblokgrootte.

Uitgebreide vorm (readblocks(block_num, buf, offset)): leest len(buf) bytes – niet noodzakelijk een geheel aantal blokken – vanaf byte offset binnen blok block_num. len(buf) heeft geen uitlijningsbeperking.

writeblocks(block_num: int, buf: bytes) None
writeblocks(block_num: int, buf: bytes, offset: int) None

Schrijf bytes vanuit buf naar het flashgeheugen. Twee overloads stellen de eenvoudige en uitgebreide interfaces beschikbaar:

Eenvoudige vorm (writeblocks(block_num, buf)): schrijft hele blokken vanaf blokindex block_num. len(buf) moet een veelvoud zijn van de flashblokgrootte. Elk betrokken blok wordt automatisch gewist voordat het wordt beschreven.

Uitgebreide vorm (writeblocks(block_num, buf, offset)): schrijft len(buf) bytes – niet noodzakelijk een geheel aantal blokken – vanaf byte offset binnen blok block_num. len(buf) heeft geen uitlijningsbeperking, en er wordt geen impliciete wisbewerking uitgevoerd – de aanroeper moet ervoor zorgen dat de betrokken blokken zijn gewist via een voorafgaande aanroep van ioctl(6, block_num).

Veroorzaakt OSError als de onderliggende flash-wis- of schrijfbewerking mislukt.

ioctl(cmd: int, arg: int) int | None

Standaard ioctl-toegangspunt van vfs.AbstractBlockDev. Zie vfs.AbstractBlockDev.ioctl() voor de volledige lijst van cmd-waarden. cmd=5 retourneert de flashblokgrootte in bytes; cmd=6 wist het blok met index arg.