mimxrt — funkcionalnost specifična za NXP i.MXRT

Modul mimxrt sadrži funkcije i klase specifične za NXP i.MXRT obitelj mikrokontrolera.

Klase

class mimxrt.Flash

Dohvaća singleton objekt koji izlaže područje korisničke pohrane ugrađene QSPI flash memorije kao blok uređaj kompatibilan s vfs.AbstractBlockDev. Brojevi blokova relativni su prema početku tog područja, a ne prema fizičkom početku flash memorije.

U većini slučajeva, za pohranu trajnih podataka na uređaju, htjet ćete koristiti apstrakciju više razine – na primjer datotečni sustav putem standardnog Python file API-ja. Ovo sučelje korisno je za prilagodbu konfiguracije datotečnog sustava ili implementaciju niskorazinskog sustava pohrane za vašu aplikaciju.

Objekt također implementira protokol međuspremnika, omogućujući pristup cijelom području flash pohrane samo za čitanje, mapiran u memoriju putem QSPI XIP baze. To čini dostupnim pogled na područje bez kopiranja, bez izdavanja ikakvih flash čitanja:

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

Veličina bloka koju koriste osnovni flash sektori može se upitati u vrijeme izvođenja pomoću ioctl(5, 0).

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

Čita bajtove iz flash memorije u buf. Dva preopterećenja izlažu jednostavno i prošireno sučelje:

Jednostavni oblik (readblocks(block_num, buf)): čita cijele blokove počevši od indeksa bloka block_num. len(buf) mora biti višekratnik veličine flash bloka.

Prošireni oblik (readblocks(block_num, buf, offset)): čita len(buf) bajtova – ne nužno cijeli broj blokova – počevši od bajta offset unutar bloka block_num. len(buf) nema ograničenje poravnanja.

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

Piše bajtove iz buf u flash memoriju. Dva preopterećenja izlažu jednostavno i prošireno sučelje:

Jednostavni oblik (writeblocks(block_num, buf)): piše cijele blokove počevši od indeksa bloka block_num. len(buf) mora biti višekratnik veličine flash bloka. Svaki zahvaćeni blok automatski se briše prije pisanja.

Prošireni oblik (writeblocks(block_num, buf, offset)): piše len(buf) bajtova – ne nužno cijeli broj blokova – počevši od bajta offset unutar bloka block_num. len(buf) nema ograničenje poravnanja, i ne izvodi se implicitno brisanje – pozivatelj mora osigurati da su zahvaćeni blokovi izbrisani prethodnim pozivom ioctl(6, block_num).

Diže OSError ako osnovna operacija brisanja ili pisanja flash memorije propadne.

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

Standardna ulazna točka ioctl klase vfs.AbstractBlockDev. Pogledajte vfs.AbstractBlockDev.ioctl() za potpuni popis vrijednosti cmd. cmd=5 vraća veličinu flash bloka u bajtovima; cmd=6 briše blok s indeksom arg.