mimxrt — funktionalitet specifik för NXP i.MXRT

Modulen mimxrt innehåller funktioner och klasser specifika för NXP i.MXRT-familjen av mikrokontroller.

Klasser

class mimxrt.Flash

Hämta singleton-objektet som exponerar användarlagringsregionen i det inbyggda QSPI-flashminnet som en blockenhet kompatibel med vfs.AbstractBlockDev. Blocknummer är relativa till början av den regionen, inte till flashminnets fysiska början.

I de flesta fall, för att lagra persistent data på enheten, vill du använda en abstraktion på högre nivå – till exempel filsystemet via Pythons standard-fil-API. Detta gränssnitt är användbart för att anpassa filsystemskonfigurationen eller implementera ett lågnivålagringssystem för din applikation.

Objektet implementerar också buffertprotokollet, vilket möjliggör skrivskyddad minnesmappad åtkomst till hela flashlagringsregionen via QSPI XIP-basen. Detta gör en nollkopieringsvy av regionen tillgänglig utan att utfärda några flashläsningar:

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

Blockstorleken som används av de underliggande flash-sektorerna kan efterfrågas vid körning med ioctl(5, 0).

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

Läs byte från flashminnet in i buf. Två överlagringar exponerar de enkla och utökade gränssnitten:

Enkel form (readblocks(block_num, buf)): läser hela block med start vid blockindex block_num. len(buf) måste vara en multipel av flashminnets blockstorlek.

Utökad form (readblocks(block_num, buf, offset)): läser len(buf) byte – inte nödvändigtvis ett helt antal block – med start vid byte offset inom block block_num. len(buf) har ingen justeringsbegränsning.

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

Skriv byte från buf till flashminnet. Två överlagringar exponerar de enkla och utökade gränssnitten:

Enkel form (writeblocks(block_num, buf)): skriver hela block med start vid blockindex block_num. len(buf) måste vara en multipel av flashminnets blockstorlek. Varje berört block raderas automatiskt innan det skrivs.

Utökad form (writeblocks(block_num, buf, offset)): skriver len(buf) byte – inte nödvändigtvis ett helt antal block – med start vid byte offset inom block block_num. len(buf) har ingen justeringsbegränsning, och ingen implicit radering utförs – anroparen måste säkerställa att de berörda blocken har raderats via ett tidigare anrop till ioctl(6, block_num).

Utlöser OSError om den underliggande flash-raderings- eller skrivoperationen misslyckas.

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

Standardgränssnittspunkt för ioctl i vfs.AbstractBlockDev. Se vfs.AbstractBlockDev.ioctl() för den fullständiga listan över cmd-värden. cmd=5 returnerar flashminnets blockstorlek i byte; cmd=6 raderar blocket med index arg.