Klasse Flash – Zugriff auf den integrierten Flash-Speicher¶
Die Klasse Flash bietet direkten, blockweisen Zugriff auf den externen QSPI-Flash-Chip des RP2040. Der Treiber implementiert die Schnittstelle vfs.AbstractBlockDev, sodass er für benutzerdefinierte Dateisystemkonfigurationen an vfs.mount() übergeben werden kann.
Die meisten Skripte speichern Daten über das automatisch eingehängte Dateisystem unter / und erstellen niemals direkt eine Flash-Instanz. Erstellen Sie eine manuell, wenn Sie Folgendes benötigen:
Einhängen eines nicht standardmäßigen Dateisystems (z. B. umhüllt mit
vfs.VfsFat) auf einer benutzerdefinierten Partition.Lesen oder Schreiben von Firmware-Bereichen oder Werksdatenblöcken, die nicht zum Dateisystem gehören.
Implementierung eines benutzerdefinierten Flash-Speicherformats, das die Dateisystemebene umgeht.
Konstruktoren¶
- class rp2.Flash Flash¶
Gibt das Singleton-Blockgeräteobjekt
Flashzurück, das vom QSPI-Flash-Chip des RP2040 gespeist wird. Der erste freigegebene Block ist derjenige unmittelbar nach dem Firmware-Bereich, sodass Aufrufer nur den für das Dateisystem geeigneten Bereich des Chips sehen.Methoden¶
- readblocks(block_num: int, buf: bytearray) None¶
- readblocks(block_num: int, buf: bytearray, offset: int) None
Liest Bytes aus dem Flash in
buf. Standardmäßiger Blockgeräte-Einstiegspunkt vonvfs.AbstractBlockDev, der von der Dateisystemebene verwendet wird.Einfache Form (
readblocks(block_num, buf)): Liest ganze Blöcke beginnend beim Blockindexblock_num.len(buf)muss ein Vielfaches der Flash-Blockgröße sein.Erweiterte Form (
readblocks(block_num, buf, offset)): Liestlen(buf)Bytes – nicht notwendigerweise eine ganze Anzahl von Blöcken – beginnend beim Byteoffsetinnerhalb von Blockblock_num. Wird von littlefs und anderen byteadressierbaren Dateisystemen verwendet.
- writeblocks(block_num: int, buf: bytes) None¶
- writeblocks(block_num: int, buf: bytes, offset: int) None
Schreibt Bytes aus
bufin den Flash. Standardmäßiger Blockgeräte-Einstiegspunkt vonvfs.AbstractBlockDev, der von der Dateisystemebene verwendet wird.Einfache Form (
writeblocks(block_num, buf)): Schreibt ganze Blöcke beginnend beim Blockindexblock_num.len(buf)muss ein Vielfaches der Flash-Blockgröße sein. Jeder betroffene Block wird vor dem Schreiben automatisch gelöscht.Erweiterte Form (
writeblocks(block_num, buf, offset)): Schreibtlen(buf)Bytes – nicht notwendigerweise eine ganze Anzahl von Blöcken – beginnend beim Byteoffsetinnerhalb von Blockblock_num. Es wird kein implizites Löschen durchgeführt – der Aufrufer muss sicherstellen, dass die betroffenen Blöcke durch einen vorherigen Aufrufioctl(6, block_num)gelöscht wurden.
- ioctl(cmd: int, arg: int) int | None¶
Standardmäßiger Steuerungs-Einstiegspunkt von
vfs.AbstractBlockDev. Wird von der Dateisystemebene beim Ein- und Aushängen sowie bei jeder Synchronisierung aufgerufen. Erkanntecmd-Werte:1– initialisieren. Gibt bei Erfolg0zurück.2– deinitialisieren. Gibt bei Erfolg0zurück.3– ausstehende Schreibvorgänge synchronisieren. Gibt0zurück.4– gibt die Anzahl der für das Dateisystem sichtbaren Flash-Blöcke zurück.5– gibt die Blockgröße in Bytes zurück (typischerweise die Flash-Sektorgröße,4096).6– löscht den Block am Indexarg. Erforderlich vor der Verwendung der erweitertenwriteblocks-Form.7– gibt zurück, ob das Gerät den Blocklöschbefehl unterstützt (1beim RP2040).
Direkte Aufrufer verwenden diese Methode normalerweise nicht – der Dateisystemtreiber leitet die Standardcodes automatisch weiter, sobald das
Flash-Objekt eingehängt ist.