třída Flash – přístup k vestavěné flash paměti¶
Třída Flash poskytuje přímý blokový přístup k externímu QSPI flash čipu procesoru RP2040. Ovladač implementuje rozhraní vfs.AbstractBlockDev, takže jej lze předat funkci vfs.mount() pro vlastní konfigurace souborového systému.
Většina skriptů ukládá data prostřednictvím automaticky připojeného souborového systému v / a nikdy nevytváří Flash přímo. Vytvořte instanci ručně, když potřebujete:
Připojit nestandardní souborový systém (např. zabalený do
vfs.VfsFat) na vlastní oddíl.Číst nebo zapisovat oblasti firmwaru či bloky továrních dat, které nevlastní souborový systém.
Implementovat vlastní formát ukládání ve flash paměti, který obchází vrstvu souborového systému.
Konstruktory¶
- class rp2.Flash Flash¶
Vrátí jedináčkový (singleton) blokový objekt
Flashpodložený QSPI flash čipem procesoru RP2040. Prvním zpřístupněným blokem je blok bezprostředně za oblastí firmwaru, takže volající vidí pouze tu část čipu, která je vhodná pro souborový systém.Metody¶
- readblocks(block_num: int, buf: bytearray) None¶
- readblocks(block_num: int, buf: bytearray, offset: int) None
Načte bajty z flash paměti do
buf. Standardní vstupní bod blokového zařízenívfs.AbstractBlockDevpoužívaný vrstvou souborového systému.Jednoduchá forma (
readblocks(block_num, buf)): načte celé bloky počínaje indexem blokublock_num.len(buf)musí být násobkem velikosti flash bloku.Rozšířená forma (
readblocks(block_num, buf, offset)): načtelen(buf)bajtů – ne nutně celý počet bloků – počínaje bajtemoffsetv rámci blokublock_num. Používá ji littlefs a další souborové systémy s adresováním po bajtech.
- writeblocks(block_num: int, buf: bytes) None¶
- writeblocks(block_num: int, buf: bytes, offset: int) None
Zapíše bajty z
bufdo flash paměti. Standardní vstupní bod blokového zařízenívfs.AbstractBlockDevpoužívaný vrstvou souborového systému.Jednoduchá forma (
writeblocks(block_num, buf)): zapíše celé bloky počínaje indexem blokublock_num.len(buf)musí být násobkem velikosti flash bloku. Každý dotčený blok je před zápisem automaticky vymazán.Rozšířená forma (
writeblocks(block_num, buf, offset)): zapíšelen(buf)bajtů – ne nutně celý počet bloků – počínaje bajtemoffsetv rámci blokublock_num. Žádné implicitní mazání se neprovádí – volající musí zajistit, že dotčené bloky byly vymazány předchozím volánímioctl(6, block_num).
- ioctl(cmd: int, arg: int) int | None¶
Standardní řídicí vstupní bod
vfs.AbstractBlockDev. Volá jej vrstva souborového systému při připojení/odpojení a při každé synchronizaci. Rozpoznávané hodnotycmd:1– inicializace. Při úspěchu vrací0.2– deinicializace. Při úspěchu vrací0.3– synchronizace čekajících zápisů. Vrací0.4– vrátí počet flash bloků viditelných pro souborový systém.5– vrátí velikost bloku v bajtech (typicky velikost flash sektoru,4096).6– vymaže blok na indexuarg. Vyžadováno před použitím rozšířené formywriteblocks.7– vrátí, zda zařízení podporuje příkaz mazání bloků (1na RP2040).
Přímí volající tuto metodu obvykle nepoužívají – ovladač souborového systému standardní kódy odbavuje automaticky, jakmile je
Flashpřipojena.