Flash osztály – hozzáférés a beépített flash tárolóhoz¶
A Flash osztály közvetlen, blokkszintű hozzáférést biztosít az RP2040 külső QSPI flash chipjéhez. A meghajtó megvalósítja a vfs.AbstractBlockDev interfészt, így átadható a vfs.mount() függvénynek egyéni fájlrendszer-konfigurációkhoz.
A legtöbb szkript a / alatt automatikusan csatolt fájlrendszeren keresztül tárol adatokat, és soha nem hozza létre közvetlenül a Flash objektumot. Akkor hozz létre egyet manuálisan, ha:
Nem alapértelmezett fájlrendszert szeretnél csatolni (pl. a
vfs.VfsFatosztállyal csomagolva) egy egyéni partíción.Olyan firmware-régiókat vagy gyári adatblokkokat akarsz olvasni vagy írni, amelyek nem a fájlrendszerhez tartoznak.
Egyéni, flash-alapú tárolási formátumot szeretnél megvalósítani, amely megkerüli a fájlrendszer-réteget.
Konstruktorok¶
- class rp2.Flash Flash¶
Visszaadja az RP2040 QSPI flash chipje által támogatott, egyetlen
Flashblokkeszköz-objektumot. Az első közzétett blokk az, amely közvetlenül a firmware-régió után következik, így a hívók a chipnek csak a fájlrendszer számára elérhető területét látják.Metódusok¶
- readblocks(block_num: int, buf: bytearray) None¶
- readblocks(block_num: int, buf: bytearray, offset: int) None
Bájtokat olvas a flash memóriából a
bufpufferbe. Ez a szabványosvfs.AbstractBlockDevblokkeszköz-belépési pont, amelyet a fájlrendszer-réteg használ.Egyszerű forma (
readblocks(block_num, buf)): teljes blokkokat olvas ablock_numblokkindextől kezdve. Alen(buf)értéknek a flash blokkméret többszörösének kell lennie.Kibővített forma (
readblocks(block_num, buf, offset)):len(buf)bájtot olvas – nem feltétlenül egész számú blokkot – ablock_numblokkon belülioffsetbájttól kezdve. A littlefs és más bájtcímezhető fájlrendszerek használják.
- writeblocks(block_num: int, buf: bytes) None¶
- writeblocks(block_num: int, buf: bytes, offset: int) None
Bájtokat ír a
bufpufferből a flash memóriába. Ez a szabványosvfs.AbstractBlockDevblokkeszköz-belépési pont, amelyet a fájlrendszer-réteg használ.Egyszerű forma (
writeblocks(block_num, buf)): teljes blokkokat ír ablock_numblokkindextől kezdve. Alen(buf)értéknek a flash blokkméret többszörösének kell lennie. Minden érintett blokk automatikusan törlődik az írás előtt.Kibővített forma (
writeblocks(block_num, buf, offset)):len(buf)bájtot ír – nem feltétlenül egész számú blokkot – ablock_numblokkon belülioffsetbájttól kezdve. 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ással törölve legyenek.
- ioctl(cmd: int, arg: int) int | None¶
Szabványos
vfs.AbstractBlockDevvezérlési belépési pont. A fájlrendszer-réteg hívja meg csatoláskor/lecsatoláskor és minden szinkronizáláskor. Felismertcmdértékek:1– inicializálás. Sikeres esetben0értékkel tér vissza.2– deinicializálás. Sikeres esetben0értékkel tér vissza.3– függőben lévő írások szinkronizálása.0értékkel tér vissza.4– a fájlrendszer számára látható flash blokkok számának visszaadása.5– a blokkméret visszaadása bájtban (jellemzően a flash szektorméret,4096).6– azargindexű blokk törlése. Szükséges a kibővítettwriteblocksforma használata előtt.7– annak visszaadása, hogy az eszköz támogatja-e a blokktörlési parancsot (1az RP2040 esetén).
A közvetlen hívók általában nem használják ezt a metódust – a fájlrendszer-meghajtó automatikusan kiküldi a szabványos kódokat, amint a
Flashcsatolva van.