mimxrt — az NXP i.MXRT-specifikus funkcionalitás¶
A mimxrt modul az NXP i.MXRT mikrovezérlő-családra jellemző függvényeket és osztályokat tartalmazza.
Osztályok¶
- class mimxrt.Flash¶
Lekéri azt az egyke (singleton) objektumot, amely a fedélzeti QSPI flash memória felhasználói tárolóterületét egy
vfs.AbstractBlockDev-kompatibilis blokkeszközként teszi elérhetővé. A blokkszámok az adott terület kezdetéhez viszonyítottak, nem a flash fizikai kezdetéhez.A legtöbb esetben az eszközön történő tartós adattároláshoz egy magasabb szintű absztrakciót érdemes használni – például a fájlrendszert a Python szabványos fájl-API-ján keresztül. Ez az interfész a fájlrendszer-konfiguráció testreszabására vagy egy alacsony szintű tárolórendszer megvalósítására hasznos az alkalmazásodhoz.
Az objektum a pufferprotokollt is megvalósítja, lehetővé téve a teljes flash-tárolóterület csak olvasható, memóriába leképezett elérését a QSPI XIP báziscím révén. Ez a terület másolásmentes nézetét teszi elérhetővé anélkül, hogy bármilyen flash-olvasást kiadna:
flash = mimxrt.Flash() view = memoryview(flash) magic = bytes(view[:4]) # read the first 4 bytes directly from XIP
Az alapul szolgáló flash-szektorok által használt blokkméret futásidőben lekérdezhető a
ioctl(5, 0)használatával.- readblocks(block_num: int, buf: bytearray) None¶
- readblocks(block_num: int, buf: bytearray, offset: int) None
Byte-okat olvas a flash memóriából a
bufpufferbe. Két túlterhelés teszi elérhetővé az egyszerű és a kibővített interfészt:Egyszerű forma (
readblocks(block_num, buf)): teljes blokkokat olvas ablock_numblokkindextől kezdve. Alen(buf)értéknek a flash blokkméretének többszörösének kell lennie.Kibővített forma (
readblocks(block_num, buf, offset)):len(buf)byte-ot olvas – nem feltétlenül egész számú blokkot – ablock_numblokkon belülioffsetbyte-tól kezdve. Alen(buf)értékre nincs igazítási megkötés.
- writeblocks(block_num: int, buf: bytes) None¶
- writeblocks(block_num: int, buf: bytes, offset: int) None
Byte-okat ír a
bufpufferből a flash memóriába. Két túlterhelés teszi elérhetővé az egyszerű és a kibővített interfészt:Egyszerű forma (
writeblocks(block_num, buf)): teljes blokkokat ír ablock_numblokkindextől kezdve. Alen(buf)értéknek a flash blokkméretének többszörösének kell lennie. Minden érintett blokk automatikusan törlődik, mielőtt kiíródna.Kibővített forma (
writeblocks(block_num, buf, offset)):len(buf)byte-ot ír – nem feltétlenül egész számú blokkot – ablock_numblokkon belülioffsetbyte-tól kezdve. Alen(buf)értékre nincs igazítási megkötés, és nem történik implicit törlés – a hívónak kell biztosítania, hogy az érintett blokkok egy korábbiioctl(6, block_num)híváson keresztül törlődtek.OSErrorkivételt vált ki, ha az alapul szolgáló flash-törlési vagy -írási művelet sikertelen.
- ioctl(cmd: int, arg: int) int | None¶
Szabványos
vfs.AbstractBlockDevioctl belépési pont. Acmdértékek teljes listáját lásd avfs.AbstractBlockDev.ioctl()metódusnál. Acmd=5a flash blokkméretét adja vissza byte-ban; acmd=6törli azargindexű blokkot.