class Flash – åtkomst till inbyggt flashminne¶
Klassen Flash ger direkt åtkomst på blocknivå till RP2040:s externa QSPI-flashchip. Drivrutinen implementerar gränssnittet vfs.AbstractBlockDev så att den kan skickas till vfs.mount() för anpassade filsystemskonfigurationer.
De flesta skript lagrar data via det automatiskt monterade filsystemet vid / och konstruerar aldrig Flash direkt. Konstruera ett manuellt när du behöver:
Montera ett filsystem som inte är standard (t.ex. omslutet av
vfs.VfsFat) på en anpassad partition.Läsa eller skriva firmware-regioner eller fabriksdatablock som inte ägs av filsystemet.
Implementera ett anpassat lagringsformat på flashminnet som kringgår filsystemslagret.
Konstruktorer¶
- class rp2.Flash Flash¶
Returnerar singleton-blockenhetsobjektet
Flashsom backas av RP2040:s QSPI-flashchip. Det första blocket som exponeras är det som ligger omedelbart efter firmware-regionen, så anropare ser endast den del av chipet som är tillgänglig för filsystemet.Metoder¶
- readblocks(block_num: int, buf: bytearray) None¶
- readblocks(block_num: int, buf: bytearray, offset: int) None
Läser byte från flashminnet in i
buf. Standardingång för blockenheter enligtvfs.AbstractBlockDevsom används av filsystemslagret.Enkel form (
readblocks(block_num, buf)): läser hela block med start vid blockindexblock_num.len(buf)måste vara en multipel av flashblockstorleken.Utökad form (
readblocks(block_num, buf, offset)): läserlen(buf)byte – inte nödvändigtvis ett helt antal block – med start vid byteoffsetinom blockblock_num. Används av littlefs och andra byteadresserbara filsystem.
- writeblocks(block_num: int, buf: bytes) None¶
- writeblocks(block_num: int, buf: bytes, offset: int) None
Skriver byte från
buftill flashminnet. Standardingång för blockenheter enligtvfs.AbstractBlockDevsom används av filsystemslagret.Enkel form (
writeblocks(block_num, buf)): skriver hela block med start vid blockindexblock_num.len(buf)måste vara en multipel av flashblockstorleken. Varje berört block raderas automatiskt innan det skrivs.Utökad form (
writeblocks(block_num, buf, offset)): skriverlen(buf)byte – inte nödvändigtvis ett helt antal block – med start vid byteoffsetinom blockblock_num. Ingen implicit radering utförs – anroparen måste säkerställa att de berörda blocken har raderats via ett föregående anrop tillioctl(6, block_num).
- ioctl(cmd: int, arg: int) int | None¶
Standardingång för styrning enligt
vfs.AbstractBlockDev. Anropas av filsystemslagret vid montering/avmontering och vid varje synkronisering. Igenkändacmd-värden:1– initiera. Returnerar0vid lyckat resultat.2– avinitiera. Returnerar0vid lyckat resultat.3– synkronisera väntande skrivningar. Returnerar0.4– returnera antalet flashblock som är synliga för filsystemet.5– returnera blockstorleken i byte (vanligtvis flashsektorstorleken,4096).6– radera blocket vid indexarg. Krävs innan den utökadewriteblocks-formen används.7– returnera huruvida enheten stöder blockraderingskommandot (1på RP2040).
Direkta anropare använder normalt inte denna metod – filsystemsdrivrutinen skickar standardkoderna automatiskt så snart
Flashär monterad.