class Flash – toegang tot het ingebouwde flashgeheugen¶
De klasse Flash biedt directe toegang op blokniveau tot de externe QSPI-flashchip van de RP2040. Het stuurprogramma implementeert de interface vfs.AbstractBlockDev, zodat het aan vfs.mount() kan worden doorgegeven voor aangepaste bestandssysteemconfiguraties.
De meeste scripts bewaren gegevens via het automatisch aangekoppelde bestandssysteem op / en construeren Flash nooit rechtstreeks. Construeer er handmatig een wanneer je het volgende nodig hebt:
Een niet-standaard bestandssysteem aankoppelen (bijv. omhuld met
vfs.VfsFat) op een aangepaste partitie.Firmwareregio’s of fabrieksgegevensblokken lezen of schrijven die niet eigendom zijn van het bestandssysteem.
Een aangepast opslagformaat op flashgeheugen implementeren dat de bestandssysteemlaag omzeilt.
Constructors¶
- class rp2.Flash Flash¶
Retourneer het singleton-blokapparaatobject
Flashdat wordt ondersteund door de QSPI-flashchip van de RP2040. Het eerste blootgestelde blok is het blok direct na de firmwareregio, zodat aanroepers alleen het voor het bestandssysteem geschikte deel van de chip zien.Methods¶
- readblocks(block_num: int, buf: bytearray) None¶
- readblocks(block_num: int, buf: bytearray, offset: int) None
Lees bytes uit het flashgeheugen in
buf. Standaard blokapparaat-toegangspuntvfs.AbstractBlockDevdat door de bestandssysteemlaag wordt gebruikt.Eenvoudige vorm (
readblocks(block_num, buf)): lees hele blokken vanaf blokindexblock_num.len(buf)moet een veelvoud van de flashblokgrootte zijn.Uitgebreide vorm (
readblocks(block_num, buf, offset)): leeslen(buf)bytes – niet noodzakelijk een geheel aantal blokken – vanaf byteoffsetbinnen blokblock_num. Gebruikt door littlefs en andere byte-adresseerbare bestandssystemen.
- writeblocks(block_num: int, buf: bytes) None¶
- writeblocks(block_num: int, buf: bytes, offset: int) None
Schrijf bytes uit
bufnaar het flashgeheugen. Standaard blokapparaat-toegangspuntvfs.AbstractBlockDevdat door de bestandssysteemlaag wordt gebruikt.Eenvoudige vorm (
writeblocks(block_num, buf)): schrijf hele blokken vanaf blokindexblock_num.len(buf)moet een veelvoud van de flashblokgrootte zijn. Elk betrokken blok wordt automatisch gewist voordat het wordt beschreven.Uitgebreide vorm (
writeblocks(block_num, buf, offset)): schrijflen(buf)bytes – niet noodzakelijk een geheel aantal blokken – vanaf byteoffsetbinnen blokblock_num. 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).
- ioctl(cmd: int, arg: int) int | None¶
Standaard besturingstoegangspunt
vfs.AbstractBlockDev. Wordt aangeroepen door de bestandssysteemlaag bij het aan- en afkoppelen en bij elke synchronisatie. Herkendecmd-waarden:1– initialiseren. Retourneert0bij succes.2– de-initialiseren. Retourneert0bij succes.3– in behandeling zijnde schrijfbewerkingen synchroniseren. Retourneert0.4– retourneer het aantal flashblokken dat zichtbaar is voor het bestandssysteem.5– retourneer de blokgrootte in bytes (doorgaans de flashsectorgrootte,4096).6– wis het blok op indexarg. Vereist voordat de uitgebreide vorm vanwriteblockswordt gebruikt.7– retourneer of het apparaat de blokwiscommando ondersteunt (1op de RP2040).
Directe aanroepers gebruiken deze methode normaal gesproken niet – het bestandssysteemstuurprogramma verzendt automatisch de standaardcodes zodra de
Flashis aangekoppeld.