mimxrt — funcționalitate specifică NXP i.MXRT¶
Modulul mimxrt conține funcții și clase specifice familiei de microcontrolere NXP i.MXRT.
Clase¶
- class mimxrt.Flash¶
Obține obiectul singleton care expune regiunea de stocare a utilizatorului din memoria flash QSPI integrată ca dispozitiv de tip bloc compatibil cu
vfs.AbstractBlockDev. Numerele blocurilor sunt relative la începutul acelei regiuni, nu la începutul fizic al memoriei flash.În majoritatea cazurilor, pentru a stoca date persistente pe dispozitiv, veți dori să folosiți o abstractizare de nivel superior – de exemplu, sistemul de fișiere prin API-ul standard de fișiere al Python. Această interfață este utilă pentru a personaliza configurația sistemului de fișiere sau pentru a implementa un sistem de stocare de nivel scăzut pentru aplicația dvs.
Obiectul implementează de asemenea protocolul buffer, permițând accesul în mod doar-citire prin mapare în memorie la întreaga regiune de stocare flash prin baza QSPI XIP. Acest lucru face disponibilă o vizualizare fără copiere (zero-copy) a regiunii, fără a emite vreo citire din flash:
flash = mimxrt.Flash() view = memoryview(flash) magic = bytes(view[:4]) # read the first 4 bytes directly from XIP
Dimensiunea blocului folosită de sectoarele flash subiacente poate fi interogată în timpul execuției cu
ioctl(5, 0).- readblocks(block_num: int, buf: bytearray) None¶
- readblocks(block_num: int, buf: bytearray, offset: int) None
Citește octeți din flash în
buf. Două supraîncărcări expun interfața simplă și pe cea extinsă:Forma simplă (
readblocks(block_num, buf)): citește blocuri întregi începând de la indicele de blocblock_num.len(buf)trebuie să fie un multiplu al dimensiunii blocului flash.Forma extinsă (
readblocks(block_num, buf, offset)): citeștelen(buf)octeți – nu neapărat un număr întreg de blocuri – începând de la octetuloffsetdin interiorul bloculuiblock_num.len(buf)nu are nicio constrângere de aliniere.
- writeblocks(block_num: int, buf: bytes) None¶
- writeblocks(block_num: int, buf: bytes, offset: int) None
Scrie octeți din
bufîn flash. Două supraîncărcări expun interfața simplă și pe cea extinsă:Forma simplă (
writeblocks(block_num, buf)): scrie blocuri întregi începând de la indicele de blocblock_num.len(buf)trebuie să fie un multiplu al dimensiunii blocului flash. Fiecare bloc afectat este șters automat înainte de a fi scris.Forma extinsă (
writeblocks(block_num, buf, offset)): scrielen(buf)octeți – nu neapărat un număr întreg de blocuri – începând de la octetuloffsetdin interiorul bloculuiblock_num.len(buf)nu are nicio constrângere de aliniere și nu se efectuează nicio ștergere implicită – apelantul trebuie să se asigure că blocurile afectate au fost șterse printr-un apel anteriorioctl(6, block_num).Generează
OSErrordacă operația subiacentă de ștergere sau scriere în flash eșuează.
- ioctl(cmd: int, arg: int) int | None¶
Punctul de intrare ioctl standard pentru
vfs.AbstractBlockDev. Consultațivfs.AbstractBlockDev.ioctl()pentru lista completă de valoricmd.cmd=5returnează dimensiunea blocului flash în octeți;cmd=6șterge blocul cu indicelearg.