mimxrt --- NXP i.MXRT 专属功能¶
mimxrt 模块包含 NXP i.MXRT 系列微控制器专属的函数和类。
类¶
- class mimxrt.Flash¶
获取单例对象,该对象将板载 QSPI 闪存的用户存储区域作为与
vfs.AbstractBlockDev兼容的块设备暴露出来。块号相对于该区域的起始位置,而非闪存的物理起始位置。在大多数情况下,要在设备上存储持久化数据,你会想要使用更高层的抽象——例如通过 Python 标准文件 API 访问文件系统。该接口对于 自定义文件系统配置 或为你的应用实现底层存储系统很有用。
该对象还实现了缓冲区协议,允许通过 QSPI XIP 基址对整个闪存存储区域进行只读的内存映射访问。这使得无需发起任何闪存读取,即可获得该区域的零拷贝视图:
flash = mimxrt.Flash() view = memoryview(flash) magic = bytes(view[:4]) # read the first 4 bytes directly from XIP
底层闪存扇区所使用的块大小可在运行时通过
ioctl(5, 0)查询。- readblocks(block_num: int, buf: bytearray) None¶
- readblocks(block_num: int, buf: bytearray, offset: int) None
将字节从闪存读取到
buf中。两个重载分别暴露简单接口和扩展接口:简单形式(
readblocks(block_num, buf)):从块索引block_num开始读取整块。len(buf)必须是闪存块大小的整数倍。扩展形式(
readblocks(block_num, buf, offset)):从块block_num内字节offset处开始读取len(buf)字节——不一定是整数个块。len(buf)没有对齐约束。
- writeblocks(block_num: int, buf: bytes) None¶
- writeblocks(block_num: int, buf: bytes, offset: int) None
将字节从
buf写入闪存。两个重载分别暴露简单接口和扩展接口:简单形式(
writeblocks(block_num, buf)):从块索引block_num开始写入整块。len(buf)必须是闪存块大小的整数倍。每个受影响的块在写入之前都会被自动擦除。扩展形式(
writeblocks(block_num, buf, offset)):从块block_num内字节offset处开始写入len(buf)字节——不一定是整数个块。len(buf)没有对齐约束,并且不会执行隐式擦除——调用方必须通过事先调用ioctl(6, block_num)确保受影响的块已被擦除。如果底层闪存擦除或写入操作失败,则引发
OSError。
- ioctl(cmd: int, arg: int) int | None¶
标准的
vfs.AbstractBlockDevioctl 入口点。完整的cmd值列表请参见vfs.AbstractBlockDev.ioctl()。cmd=5返回以字节为单位的闪存块大小;cmd=6擦除索引为arg的块。