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 Flash podlož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.AbstractBlockDev používaný vrstvou souborového systému.

Jednoduchá forma (readblocks(block_num, buf)): načte celé bloky počínaje indexem bloku block_num. len(buf) musí být násobkem velikosti flash bloku.

Rozšířená forma (readblocks(block_num, buf, offset)): načte len(buf) bajtů – ne nutně celý počet bloků – počínaje bajtem offset v rámci bloku block_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 buf do flash paměti. Standardní vstupní bod blokového zařízení vfs.AbstractBlockDev používaný vrstvou souborového systému.

Jednoduchá forma (writeblocks(block_num, buf)): zapíše celé bloky počínaje indexem bloku block_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íše len(buf) bajtů – ne nutně celý počet bloků – počínaje bajtem offset v rámci bloku block_num. Žádné implicitní mazání se neprovádí – volající musí zajistit, že dotčené bloky byly vymazány předchozím voláním ioctl(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é hodnoty cmd:

  • 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 indexu arg. Vyžadováno před použitím rozšířené formy writeblocks.

  • 7 – vrátí, zda zařízení podporuje příkaz mazání bloků (1 na RP2040).

Přímí volající tuto metodu obvykle nepoužívají – ovladač souborového systému standardní kódy odbavuje automaticky, jakmile je Flash připojena.