clasa Flash – acces la stocarea flash încorporată¶
Clasa Flash oferă acces direct, la nivel de bloc, la cipul flash QSPI extern al RP2040. Driverul implementează interfața vfs.AbstractBlockDev, astfel încât poate fi transmis lui vfs.mount() pentru configurări personalizate de sistem de fișiere.
Majoritatea scripturilor persistă datele prin sistemul de fișiere montat automat la / și nu construiesc niciodată direct un obiect Flash. Construiți unul manual atunci când aveți nevoie să:
Montați un sistem de fișiere non-implicit (de ex. încapsulat cu
vfs.VfsFat) pe o partiție personalizată.Citiți sau scrieți regiuni de firmware sau blocuri de date din fabrică care nu aparțin sistemului de fișiere.
Implementați un format personalizat de stocare pe flash care ocolește stratul sistemului de fișiere.
Constructori¶
- class rp2.Flash Flash¶
Returnează obiectul singleton de tip dispozitiv-bloc
Flashsusținut de cipul flash QSPI al RP2040. Primul bloc expus este cel imediat după regiunea de firmware, astfel încât apelanții văd doar zona cipului eligibilă pentru sistemul de fișiere.Metode¶
- readblocks(block_num: int, buf: bytearray) None¶
- readblocks(block_num: int, buf: bytearray, offset: int) None
Citește octeți din memoria flash în
buf. Punctul de intrare standard de tip dispozitiv-blocvfs.AbstractBlockDevutilizat de stratul sistemului de fișiere.Forma simplă (
readblocks(block_num, buf)): citește blocuri întregi începând de la indexul 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. Utilizată de littlefs și de alte sisteme de fișiere adresabile la nivel de octet.
- writeblocks(block_num: int, buf: bytes) None¶
- writeblocks(block_num: int, buf: bytes, offset: int) None
Scrie octeți din
bufîn memoria flash. Punctul de intrare standard de tip dispozitiv-blocvfs.AbstractBlockDevutilizat de stratul sistemului de fișiere.Forma simplă (
writeblocks(block_num, buf)): scrie blocuri întregi începând de la indexul 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. Nu se efectuează nicio ștergere implicită – apelantul trebuie să se asigure că blocurile afectate au fost șterse printr-un apel anteriorioctl(6, block_num).
- ioctl(cmd: int, arg: int) int | None¶
Punctul de intrare standard de control
vfs.AbstractBlockDev. Apelat de stratul sistemului de fișiere la montare/demontare și la fiecare sincronizare. Valoricmdrecunoscute:1– inițializare. Returnează0în caz de succes.2– dezinițializare. Returnează0în caz de succes.3– sincronizează scrierile în așteptare. Returnează0.4– returnează numărul de blocuri flash vizibile pentru sistemul de fișiere.5– returnează dimensiunea blocului în octeți (de obicei dimensiunea sectorului flash,4096).6– șterge blocul de la indexularg. Necesar înainte de a folosi forma extinsăwriteblocks.7– returnează dacă dispozitivul acceptă comanda de ștergere a blocului (1pe RP2040).
În mod normal, apelanții direcți nu folosesc această metodă – driverul sistemului de fișiere distribuie automat codurile standard odată ce obiectul
Flasheste montat.