klasa Flash – pristup ugrađenoj flash memoriji¶
Klasa Flash omogućuje izravan pristup na razini blokova vanjskom QSPI flash čipu RP2040. Upravljački program implementira sučelje vfs.AbstractBlockDev tako da se može proslijediti funkciji vfs.mount() za prilagođene konfiguracije datotečnog sustava.
Većina skripti trajno pohranjuje podatke putem automatski montiranog datotečnog sustava na / i nikada izravno ne stvara Flash. Stvorite ga ručno kada trebate:
Montirati nestandardni datotečni sustav (npr. omotati s
vfs.VfsFat) na prilagođenoj particiji.Čitati ili pisati u regije ugrađenog programa ili blokove tvorničkih podataka koji nisu u vlasništvu datotečnog sustava.
Implementirati prilagođeni format pohrane na flash memoriji koji zaobilazi sloj datotečnog sustava.
Konstruktori¶
- class rp2.Flash Flash¶
Vraća jedinstveni (singleton) objekt blok-uređaja
Flashkoji se oslanja na QSPI flash čip RP2040. Prvi izloženi blok je onaj neposredno nakon regije ugrađenog programa, pa pozivatelji vide samo područje čipa pogodno za datotečni sustav.Metode¶
- readblocks(block_num: int, buf: bytearray) None¶
- readblocks(block_num: int, buf: bytearray, offset: int) None
Čita bajtove iz flash memorije u
buf. Standardna ulazna točka blok-uređajavfs.AbstractBlockDevkoju koristi sloj datotečnog sustava.Jednostavni oblik (
readblocks(block_num, buf)): čita cijele blokove počevši od indeksa blokablock_num.len(buf)mora biti višekratnik veličine flash bloka.Prošireni oblik (
readblocks(block_num, buf, offset)): čitalen(buf)bajtova – ne nužno cijeli broj blokova – počevši od bajtaoffsetunutar blokablock_num. Koristi se kod littlefs i drugih datotečnih sustava koji se adresiraju po bajtu.
- writeblocks(block_num: int, buf: bytes) None¶
- writeblocks(block_num: int, buf: bytes, offset: int) None
Piše bajtove iz
bufu flash memoriju. Standardna ulazna točka blok-uređajavfs.AbstractBlockDevkoju koristi sloj datotečnog sustava.Jednostavni oblik (
writeblocks(block_num, buf)): piše cijele blokove počevši od indeksa blokablock_num.len(buf)mora biti višekratnik veličine flash bloka. Svaki zahvaćeni blok automatski se briše prije zapisivanja.Prošireni oblik (
writeblocks(block_num, buf, offset)): pišelen(buf)bajtova – ne nužno cijeli broj blokova – počevši od bajtaoffsetunutar blokablock_num. Nema implicitnog brisanja – pozivatelj mora osigurati da su zahvaćeni blokovi prethodno obrisani putem pozivaioctl(6, block_num).
- ioctl(cmd: int, arg: int) int | None¶
Standardna upravljačka ulazna točka
vfs.AbstractBlockDev. Poziva je sloj datotečnog sustava pri montiranju/demontiranju i pri svakoj sinkronizaciji. Prepoznate vrijednosticmd:1– inicijalizacija. Vraća0pri uspjehu.2– deinicijalizacija. Vraća0pri uspjehu.3– sinkronizacija zapisivanja na čekanju. Vraća0.4– vraća broj flash blokova vidljivih datotečnom sustavu.5– vraća veličinu bloka u bajtovima (obično veličina flash sektora,4096).6– briše blok na indeksuarg. Obavezno prije korištenja proširenog oblikawriteblocks.7– vraća podržava li uređaj naredbu brisanja bloka (1na RP2040).
Izravni pozivatelji obično ne koriste ovu metodu – upravljački program datotečnog sustava automatski upućuje standardne kodove nakon što je
Flashmontiran.