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 blokindexblock_num.len(buf)moet een veelvoud zijn van de flashblokgrootte.Uitgebreide vorm (
readblocks(block_num, buf, offset)): leestlen(buf)bytes – niet noodzakelijk een geheel aantal blokken – vanaf byteoffsetbinnen blokblock_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
bufnaar het flashgeheugen. Twee overloads stellen de eenvoudige en uitgebreide interfaces beschikbaar:Eenvoudige vorm (
writeblocks(block_num, buf)): schrijft hele blokken vanaf blokindexblock_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)): schrijftlen(buf)bytes – niet noodzakelijk een geheel aantal blokken – vanaf byteoffsetbinnen blokblock_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 vanioctl(6, block_num).Veroorzaakt
OSErrorals de onderliggende flash-wis- of schrijfbewerking mislukt.
- ioctl(cmd: int, arg: int) int | None¶
Standaard ioctl-toegangspunt van
vfs.AbstractBlockDev. Zievfs.AbstractBlockDev.ioctl()voor de volledige lijst vancmd-waarden.cmd=5retourneert de flashblokgrootte in bytes;cmd=6wist het blok met indexarg.