class Flash – toegang tot ingebouwde flashopslag¶
De Flash-klasse biedt directe toegang tot het primaire flashapparaat op de STM32-gebaseerde OpenMV Cams.
In de meeste gevallen wilt u, om persistente data op het apparaat op te slaan, een abstractie op hoger niveau gebruiken, bijvoorbeeld het bestandssysteem via de standaard bestand-API van Python, maar deze interface is nuttig om de configuratie van het bestandssysteem aan te passen of om een laag-niveau opslagsysteem voor uw applicatie te implementeren.
Notitie
De OpenMV Cam H7 Plus, Pure Thermal en N6 gebruiken een externe SPI/QSPI/XSPI-flashchip voor primaire opslag; de andere STM32-gebaseerde OpenMV Cams gebruiken het interne flashgeheugen in de MCU. De Python-interface is in beide gevallen identiek.
Constructors¶
- class pyb.Flash¶
- class pyb.Flash(*, start: int = -1, len: int = -1)
Construeer een met
vfs.AbstractBlockDevcompatibel blokapparaat voor het ingebouwde flashgeheugen. Er bestaan twee vormen:Flash()(zonder argumenten): geeft het verouderde singleton-object terug dat het volledige flashgeheugen blootstelt met een virtuele partitietabel ervoor. De feitelijke flashdata begint bij blok0x100. Deze vorm is verouderd en zal in een toekomstige MicroPython-release worden verwijderd.Flash(start=..., len=...): geeft een nieuw blokapparaat terug dat het flashgeheugen benadert vanaf byte-offsetstart(standaard0) overlenbytes (standaard: de rest van het apparaat). Beide waarden moeten een veelvoud zijn van de onderliggende blokgrootte (doorgaans 512 bytes voor intern flashgeheugen; de externe SPI/QSPI/XSPI-onderdelen gebruiken een grotere wissectorgrootte).
Methods¶
- readblocks(block_num: int, buf: bytearray) None¶
- readblocks(block_num: int, buf: bytearray, offset: int) None
Lees bytes uit het flashgeheugen in
buf. Twee overloads bieden de eenvoudige en de uitgebreide interface:Eenvoudige vorm (
readblocks(block_num, buf)): leest volledige blokken vanaf blokindexblock_num.len(buf)moet een veelvoud zijn van de flash-blokgrootte.Uitgebreide vorm (
readblocks(block_num, buf, offset)): leestlen(buf)bytes – niet noodzakelijk een geheel aantal blokken – vanaf byteoffsetbinnen blokblock_num.len(buf)heeft geen uitlijningsbeperking. Alleen ondersteund op objecten die zijn aangemaakt met explicietestart/len-argumenten, niet op de verouderde singleton.
- writeblocks(block_num: int, buf: bytes | bytearray) None¶
- writeblocks(block_num: int, buf: bytes | bytearray, offset: int) None
Schrijf bytes uit
bufnaar het flashgeheugen. Twee overloads bieden de eenvoudige en de uitgebreide interface:Eenvoudige vorm (
writeblocks(block_num, buf)): schrijft volledige blokken vanaf blokindexblock_num.len(buf)moet een veelvoud zijn van de flash-blokgrootte. Elk betrokken blok wordt automatisch gewist voordat het wordt geschreven.Uitgebreide vorm (
writeblocks(block_num, buf, offset)): schrijftlen(buf)bytes – niet noodzakelijk een geheel aantal blokken – vanaf byteoffsetbinnen blokblock_num.len(buf)heeft geen uitlijningsbeperking, en er wordt geen impliciete wisbewerking uitgevoerd – de aanroeper moet ervoor zorgen dat de betrokken blokken zijn gewist via een voorafgaande aanroep vanioctl(6, block_num). Alleen ondersteund op objecten die zijn aangemaakt met explicietestart/len-argumenten.
- ioctl(cmd: int, arg: int) int | None¶
Standaard ioctl-ingangspunt van
vfs.AbstractBlockDev. Zievfs.AbstractBlockDev.ioctl()voor de volledige lijst metcmd-waarden.cmd=5geeft de flash-blokgrootte in bytes terug;cmd=6wist het blok met indexarg.