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.