class Flash – yerleşik flash belleğe erişim¶
Flash sınıfı, STM32 tabanlı OpenMV Cam’ler üzerindeki birincil flash aygıtına doğrudan erişim sağlar.
Çoğu durumda, aygıtta kalıcı veri depolamak için daha üst düzey bir soyutlama kullanmak istersiniz; örneğin Python’un standart dosya API’si aracılığıyla dosya sistemi, ancak bu arayüz dosya sistemi yapılandırmasını özelleştirmek veya uygulamanız için düşük düzeyli bir depolama sistemi uygulamak için kullanışlıdır.
Not
OpenMV Cam H7 Plus, Pure Thermal ve N6, birincil depolama için harici bir SPI/QSPI/XSPI flash yongası kullanır; diğer STM32 tabanlı OpenMV Cam’ler MCU içindeki dahili flash belleği kullanır. Python arayüzü her iki durumda da aynıdır.
Yapıcılar¶
- class pyb.Flash¶
- class pyb.Flash(*, start: int = -1, len: int = -1)
Yerleşik flash için
vfs.AbstractBlockDevile uyumlu bir blok aygıtı oluşturur. İki biçim mevcuttur:Flash()(argümansız): başına sanal bir bölüm tablosu eklenmiş olarak tüm flash belleği sunan eski tekil (singleton) nesneyi döndürür. Gerçek flash verileri0x100bloğunda başlar. Bu biçim kullanımdan kaldırılmıştır ve gelecekteki bir MicroPython sürümünde kaldırılacaktır.Flash(start=..., len=...): flash belleğestartbayt ofsetinden başlayarak (varsayılan0)lenbayt boyunca (varsayılan: aygıtın geri kalanı) erişen yeni bir blok aygıtı döndürür. Her iki değer de temeldeki blok boyutunun bir katı olmalıdır (dahili flash için genellikle 512 bayt; harici SPI/QSPI/XSPI parçaları daha büyük bir silme sektörü boyutu kullanır).
Yöntemler¶
- readblocks(block_num: int, buf: bytearray) None¶
- readblocks(block_num: int, buf: bytearray, offset: int) None
Flash bellekten
bufiçine baytlar okur. İki aşırı yükleme (overload) basit ve genişletilmiş arayüzleri sunar:Basit biçim (
readblocks(block_num, buf)):block_numblok 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_numbloğu içindeoffsetbaytından başlayaraklen(buf)bayt okur – mutlaka tam sayıda blok olması gerekmez.len(buf)üzerinde hizalama kısıtlaması yoktur. Yalnızca açıkstart/lenargümanlarıyla oluşturulan nesnelerde desteklenir, kullanımdan kaldırılan tekil nesnede desteklenmez.
- writeblocks(block_num: int, buf: bytes | bytearray) None¶
- writeblocks(block_num: int, buf: bytes | bytearray, offset: int) None
bufiçinden flash belleğe baytlar yazar. İki aşırı yükleme basit ve genişletilmiş arayüzleri sunar:Basit biçim (
writeblocks(block_num, buf)):block_numblok 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_numbloğu içindeoffsetbaytından başlayaraklen(buf)bayt yazar – mutlaka tam sayıda blok olması gerekmez.len(buf)üzerinde hizalama kısıtlaması yoktur ve örtük silme gerçekleştirilmez – çağıran kişi, etkilenen blokların önceki birioctl(6, block_num)çağrısı aracılığıyla silinmiş olduğundan emin olmalıdır. Yalnızca açıkstart/lenargümanlarıyla oluşturulan nesnelerde desteklenir.
- ioctl(cmd: int, arg: int) int | None¶
Standart
vfs.AbstractBlockDevioctl giriş noktası.cmddeğerlerinin tam listesi içinvfs.AbstractBlockDev.ioctl()bölümüne bakın.cmd=5flash blok boyutunu bayt cinsinden döndürür;cmd=6argindeksli bloğu siler.