mimxrt — funkce specifické pro NXP i.MXRT¶
Modul mimxrt obsahuje funkce a třídy specifické pro rodinu mikrokontrolérů NXP i.MXRT.
Třídy¶
- class mimxrt.Flash¶
Získá singleton objekt, který zpřístupňuje uživatelskou úložnou oblast vestavěné QSPI flash paměti jako blokové zařízení kompatibilní s
vfs.AbstractBlockDev. Čísla bloků jsou relativní vůči začátku této oblasti, nikoli vůči fyzickému začátku flash paměti.Ve většině případů budete pro ukládání trvalých dat na zařízení chtít použít vyšší úroveň abstrakce – například souborový systém přes standardní souborové API Pythonu. Toto rozhraní je užitečné pro přizpůsobení konfigurace souborového systému nebo implementaci nízkoúrovňového úložného systému pro vaši aplikaci.
Objekt také implementuje buffer protokol, což umožňuje přístup k celé úložné oblasti flash paměti pouze pro čtení namapovaný do paměti přes QSPI XIP base. To zpřístupňuje pohled na oblast bez kopírování, aniž by se prováděla jakákoli čtení flash paměti:
flash = mimxrt.Flash() view = memoryview(flash) magic = bytes(view[:4]) # read the first 4 bytes directly from XIP
Velikost bloku používanou podkladovými sektory flash paměti lze za běhu zjistit pomocí
ioctl(5, 0).- readblocks(block_num: int, buf: bytearray) None¶
- readblocks(block_num: int, buf: bytearray, offset: int) None
Přečte bajty z flash paměti do
buf. Dvě přetížení zpřístupňují jednoduché a rozšířené rozhraní:Jednoduchá forma (
readblocks(block_num, buf)): přečte celé bloky počínaje indexem blokublock_num.len(buf)musí být násobkem velikosti bloku flash paměti.Rozšířená forma (
readblocks(block_num, buf, offset)): přečtelen(buf)bajtů – ne nutně celý počet bloků – počínaje bajtemoffsetuvnitř blokublock_num.len(buf)nemá žádné omezení na zarovnání.
- writeblocks(block_num: int, buf: bytes) None¶
- writeblocks(block_num: int, buf: bytes, offset: int) None
Zapíše bajty z
bufdo flash paměti. Dvě přetížení zpřístupňují jednoduché a rozšířené rozhraní:Jednoduchá forma (
writeblocks(block_num, buf)): zapíše celé bloky počínaje indexem blokublock_num.len(buf)musí být násobkem velikosti bloku flash paměti. Každý dotčený blok je před zápisem automaticky vymazán.Rozšířená forma (
writeblocks(block_num, buf, offset)): zapíšelen(buf)bajtů – ne nutně celý počet bloků – počínaje bajtemoffsetuvnitř blokublock_num.len(buf)nemá žádné omezení na zarovnání a neprovádí se žádné implicitní mazání – volající musí zajistit, že dotčené bloky byly vymazány předchozím volánímioctl(6, block_num).Vyvolá
OSError, pokud podkladová operace mazání nebo zápisu flash paměti selže.
- ioctl(cmd: int, arg: int) int | None¶
Standardní vstupní bod ioctl třídy
vfs.AbstractBlockDev. Úplný seznam hodnotcmdnajdete vvfs.AbstractBlockDev.ioctl().cmd=5vrací velikost bloku flash paměti v bajtech;cmd=6vymaže blok s indexemarg.