class Flash – acceso al almacenamiento flash integrado¶
La clase Flash proporciona acceso directo, a nivel de bloque, al chip de memoria flash QSPI externa del RP2040. El controlador implementa la interfaz vfs.AbstractBlockDev, por lo que puede pasarse a vfs.mount() para configuraciones de sistema de archivos personalizadas.
La mayoría de los scripts conservan datos mediante el sistema de archivos montado automáticamente en / y nunca construyen Flash directamente. Construya uno manualmente cuando necesite:
Montar un sistema de archivos no predeterminado (por ejemplo, envolviéndolo con
vfs.VfsFat) en una partición personalizada.Leer o escribir regiones de firmware o bloques de datos de fábrica que no pertenecen al sistema de archivos.
Implementar un formato de almacenamiento en flash personalizado que omita la capa del sistema de archivos.
Constructores¶
- class rp2.Flash Flash¶
Devuelve el objeto de dispositivo de bloque singleton
Flashrespaldado por el chip de memoria flash QSPI del RP2040. El primer bloque expuesto es el que está inmediatamente después de la región de firmware, de modo que quien lo invoca solo ve el área del chip elegible para el sistema de archivos.Métodos¶
- readblocks(block_num: int, buf: bytearray) None¶
- readblocks(block_num: int, buf: bytearray, offset: int) None
Lee bytes de la memoria flash hacia
buf. Punto de entrada estándar de dispositivo de bloquevfs.AbstractBlockDevutilizado por la capa del sistema de archivos.Forma simple (
readblocks(block_num, buf)): lee bloques completos comenzando en el índice de bloqueblock_num.len(buf)debe ser un múltiplo del tamaño de bloque de la memoria flash.Forma extendida (
readblocks(block_num, buf, offset)): leelen(buf)bytes – no necesariamente un número entero de bloques – comenzando en el byteoffsetdentro del bloqueblock_num. Lo usan littlefs y otros sistemas de archivos direccionables por bytes.
- writeblocks(block_num: int, buf: bytes) None¶
- writeblocks(block_num: int, buf: bytes, offset: int) None
Escribe bytes de
bufen la memoria flash. Punto de entrada estándar de dispositivo de bloquevfs.AbstractBlockDevutilizado por la capa del sistema de archivos.Forma simple (
writeblocks(block_num, buf)): escribe bloques completos comenzando en el índice de bloqueblock_num.len(buf)debe ser un múltiplo del tamaño de bloque de la memoria flash. Cada bloque afectado se borra automáticamente antes de escribirse.Forma extendida (
writeblocks(block_num, buf, offset)): escribelen(buf)bytes – no necesariamente un número entero de bloques – comenzando en el byteoffsetdentro del bloqueblock_num. No se realiza ningún borrado implícito – quien invoca debe asegurarse de que los bloques afectados hayan sido borrados mediante una llamada previa aioctl(6, block_num).
- ioctl(cmd: int, arg: int) int | None¶
Punto de entrada de control estándar de
vfs.AbstractBlockDev. Lo llama la capa del sistema de archivos al montar/desmontar y en cada sincronización. Valores decmdreconocidos:1– inicializar. Devuelve0en caso de éxito.2– desinicializar. Devuelve0en caso de éxito.3– sincronizar las escrituras pendientes. Devuelve0.4– devuelve el número de bloques de flash visibles para el sistema de archivos.5– devuelve el tamaño de bloque en bytes (normalmente el tamaño de sector de la memoria flash,4096).6– borra el bloque en el índicearg. Necesario antes de usar la forma extendida dewriteblocks.7– devuelve si el dispositivo admite el comando de borrado de bloques (1en el RP2040).
Quienes invocan directamente normalmente no usan este método – el controlador del sistema de archivos despacha los códigos estándar automáticamente una vez que
Flashestá montado.