class Flash —— 访问内置闪存存储¶
Flash 类提供对 RP2040 外部 QSPI 闪存芯片的直接块级访问。该驱动实现了 vfs.AbstractBlockDev 接口,因此可以传递给 vfs.mount() 以进行自定义文件系统配置。
大多数脚本通过自动挂载在 / 处的文件系统来持久化数据,从不直接构造 Flash。当你需要执行以下操作时,才手动构造一个:
在自定义分区上挂载非默认文件系统(例如用
vfs.VfsFat包装)。读取或写入不属于文件系统的固件区域或工厂数据块。
实现绕过文件系统层的自定义片上闪存存储格式。
构造函数¶
- class rp2.Flash Flash¶
返回由 RP2040 的 QSPI 闪存芯片支持的单例
Flash块设备对象。暴露的第一个块是紧接在固件区域之后的那个块,因此调用者只能看到芯片中可用于文件系统的区域。方法¶
- readblocks(block_num: int, buf: bytearray) None¶
- readblocks(block_num: int, buf: bytearray, offset: int) None
从闪存读取字节到
buf中。这是文件系统层使用的标准vfs.AbstractBlockDev块设备入口点。简单形式(
readblocks(block_num, buf)):从块索引block_num开始读取整数个块。len(buf)必须是闪存块大小的倍数。扩展形式(
readblocks(block_num, buf, offset)):从块block_num内的字节offset处开始读取len(buf)个字节——不一定是整数个块。供 littlefs 和其他按字节寻址的文件系统使用。
- writeblocks(block_num: int, buf: bytes) None¶
- writeblocks(block_num: int, buf: bytes, offset: int) None
将
buf中的字节写入闪存。这是文件系统层使用的标准vfs.AbstractBlockDev块设备入口点。简单形式(
writeblocks(block_num, buf)):从块索引block_num开始写入整数个块。len(buf)必须是闪存块大小的倍数。每个受影响的块在写入之前都会被自动擦除。扩展形式(
writeblocks(block_num, buf, offset)):从块block_num内的字节offset处开始写入len(buf)个字节——不一定是整数个块。不会执行隐式擦除——调用者必须确保受影响的块已通过事先的ioctl(6, block_num)调用被擦除。
- ioctl(cmd: int, arg: int) int | None¶
标准的
vfs.AbstractBlockDev控制入口点。文件系统层在挂载/卸载时以及每次同步时调用它。可识别的cmd值:1—— 初始化。成功时返回0。2—— 反初始化。成功时返回0。3—— 同步待处理的写入。返回0。4—— 返回文件系统可见的闪存块数量。5—— 返回以字节为单位的块大小(通常为闪存扇区大小4096)。6—— 擦除索引为arg的块。在使用扩展形式的writeblocks之前必须先擦除。7—— 返回设备是否支持块擦除命令(在 RP2040 上为1)。
直接调用者通常不使用此方法——一旦
Flash被挂载,文件系统驱动就会自动分发标准代码。