klasa Flash – pristup ugrađenoj flash pohrani¶
Klasa Flash omogućuje izravan pristup primarnom flash uređaju na STM32-baziranim OpenMV Cam kamerama.
U većini slučajeva, za pohranu trajnih podataka na uređaju, poželjet ćete koristiti apstrakciju više razine, na primjer datotečni sustav putem Pythonovog standardnog API-ja za datoteke, ali ovo sučelje korisno je za prilagodbu konfiguracije datotečnog sustava ili implementaciju niskorazinskog sustava pohrane za vašu aplikaciju.
Napomena
OpenMV Cam H7 Plus, Pure Thermal i N6 koriste vanjski SPI/QSPI/XSPI flash čip za primarnu pohranu; ostale STM32-bazirane OpenMV Cam kamere koriste internu flash memoriju unutar MCU. Python sučelje je identično u oba slučaja.
Konstruktori¶
- class pyb.Flash¶
- class pyb.Flash(*, start: int = -1, len: int = -1)
Stvara blok uređaj kompatibilan s
vfs.AbstractBlockDevza ugrađenu flash memoriju. Postoje dva oblika:Flash()(bez argumenata): vraća zastarjeli singleton objekt koji izlaže cijelu flash memoriju s virtualnom tablicom particija dodanom na početak. Stvarni flash podaci počinju na bloku0x100. Ovaj oblik je zastario i bit će uklonjen u budućem izdanju MicroPythona.Flash(start=..., len=...): vraća svjež blok uređaj koji pristupa flash memoriji počevši od bajtnog odmakastart(zadano0) zalenbajtova (zadano: ostatak uređaja). Obje vrijednosti moraju biti višekratnici osnovne veličine bloka (obično 512 bajtova za internu flash memoriju; vanjski SPI/QSPI/XSPI dijelovi koriste veću veličinu sektora brisanja).
Metode¶
- readblocks(block_num: int, buf: bytearray) None¶
- readblocks(block_num: int, buf: bytearray, offset: int) None
Čita bajtove iz flash memorije u
buf. Dvije inačice izlažu jednostavno i prošireno sučelje:Jednostavni oblik (
readblocks(block_num, buf)): čita cijele blokove počevši od indeksa blokablock_num.len(buf)mora biti višekratnik veličine flash bloka.Prošireni oblik (
readblocks(block_num, buf, offset)): čitalen(buf)bajtova – ne nužno cijeli broj blokova – počevši od bajtaoffsetunutar blokablock_num.len(buf)nema ograničenje poravnanja. Podržano samo na objektima stvorenima s izričitim argumentimastart/len, ne na zastarjelom singletonu.
- writeblocks(block_num: int, buf: bytes | bytearray) None¶
- writeblocks(block_num: int, buf: bytes | bytearray, offset: int) None
Zapisuje bajtove iz
bufu flash memoriju. Dvije inačice izlažu jednostavno i prošireno sučelje:Jednostavni oblik (
writeblocks(block_num, buf)): zapisuje cijele blokove počevši od indeksa blokablock_num.len(buf)mora biti višekratnik veličine flash bloka. Svaki zahvaćeni blok automatski se briše prije zapisivanja.Prošireni oblik (
writeblocks(block_num, buf, offset)): zapisujelen(buf)bajtova – ne nužno cijeli broj blokova – počevši od bajtaoffsetunutar blokablock_num.len(buf)nema ograničenje poravnanja i ne provodi se nikakvo implicitno brisanje – pozivatelj mora osigurati da su zahvaćeni blokovi obrisani prethodnim pozivomioctl(6, block_num). Podržano samo na objektima stvorenima s izričitim argumentimastart/len.
- ioctl(cmd: int, arg: int) int | None¶
Standardna ulazna točka ioctl za
vfs.AbstractBlockDev. Pogledajtevfs.AbstractBlockDev.ioctl()za potpuni popis vrijednosticmd.cmd=5vraća veličinu flash bloka u bajtovima;cmd=6briše blok s indeksomarg.