class Flash – yerleşik flash bellek depolamasına erişim

Flash sınıfı, RP2040’ın harici QSPI flash yongasına doğrudan, blok düzeyinde erişim sağlar. Sürücü vfs.AbstractBlockDev arayüzünü uygular, böylece özel dosya sistemi yapılandırmaları için vfs.mount() işlevine geçirilebilir.

Çoğu betik, verileri / konumunda otomatik bağlanan dosya sistemi aracılığıyla kalıcı hale getirir ve hiçbir zaman doğrudan Flash oluşturmaz. Aşağıdakilere ihtiyaç duyduğunuzda elle bir tane oluşturun:

  • Özel bir bölümde varsayılan olmayan bir dosya sistemi bağlamak (ör. vfs.VfsFat ile sarmalamak).

  • Dosya sistemine ait olmayan aygıt yazılımı (firmware) bölgelerini veya fabrika verisi bloklarını okumak ya da yazmak.

  • Dosya sistemi katmanını atlayan özel bir flash üzeri depolama biçimi uygulamak.

Kurucular

class rp2.Flash Flash

RP2040’ın QSPI flash yongasıyla desteklenen tekil (singleton) Flash blok aygıtı nesnesini döndürür. Sunulan ilk blok, aygıt yazılımı (firmware) bölgesinin hemen ardından gelen bloktur; böylece çağıranlar yongada yalnızca dosya sistemine uygun alanı görür.

Yöntemler

readblocks(block_num: int, buf: bytearray) None
readblocks(block_num: int, buf: bytearray, offset: int) None

Flash bellekten buf arabelleğine bayt okur. Dosya sistemi katmanı tarafından kullanılan standart vfs.AbstractBlockDev blok aygıtı giriş noktası.

Basit biçim (readblocks(block_num, buf)): block_num blok indeksinden başlayarak tam blokları okur. len(buf), flash blok boyutunun bir katı olmalıdır.

Genişletilmiş biçim (readblocks(block_num, buf, offset)): block_num bloğu içindeki offset baytından başlayarak len(buf) bayt okur – ki bu mutlaka tam sayıda blok değildir. littlefs ve bayt adreslenebilir diğer dosya sistemleri tarafından kullanılır.

writeblocks(block_num: int, buf: bytes) None
writeblocks(block_num: int, buf: bytes, offset: int) None

buf arabelleğinden flash belleğe bayt yazar. Dosya sistemi katmanı tarafından kullanılan standart vfs.AbstractBlockDev blok aygıtı giriş noktası.

Basit biçim (writeblocks(block_num, buf)): block_num blok indeksinden başlayarak tam blokları yazar. len(buf), flash blok boyutunun bir katı olmalıdır. Etkilenen her blok yazılmadan önce otomatik olarak silinir.

Genişletilmiş biçim (writeblocks(block_num, buf, offset)): block_num bloğu içindeki offset baytından başlayarak len(buf) bayt yazar – ki bu mutlaka tam sayıda blok değildir. Örtük silme yapılmaz – çağıranın, etkilenen blokların önceki bir ioctl(6, block_num) çağrısıyla silinmiş olmasını sağlaması gerekir.

ioctl(cmd: int, arg: int) int | None

Standart vfs.AbstractBlockDev denetim giriş noktası. Dosya sistemi katmanı tarafından bağlama/ayırma anında ve her eşitlemede çağrılır. Tanınan cmd değerleri:

  • 1 – başlat. Başarı durumunda 0 döndürür.

  • 2 – sonlandır. Başarı durumunda 0 döndürür.

  • 3 – bekleyen yazmaları eşitle. 0 döndürür.

  • 4 – dosya sistemine görünür flash blok sayısını döndürür.

  • 5 – blok boyutunu bayt cinsinden döndürür (genellikle flash sektör boyutu, 4096).

  • 6arg indeksindeki bloğu siler. Genişletilmiş writeblocks biçimini kullanmadan önce gereklidir.

  • 7 – aygıtın blok silme komutunu destekleyip desteklemediğini döndürür (RP2040’ta 1).

Doğrudan çağıranlar normalde bu yöntemi kullanmaz – Flash bağlandıktan sonra dosya sistemi sürücüsü standart kodları otomatik olarak yönlendirir.