目录
前言
块设备是一类可以整块读取和写入的设备,对应的物理设备可以是SD卡和U盘之类,在块设备的基础之上可以使用文件系统来管理文件。
接下来介绍如何在MicroPython上使用块设备。
准备工作
- 硬件:
(1). 一块刷有MicroPython固件的开发板,可以是stm32开发板,也可以是ESP32,如果用ESP8266可能会遇到内存不够以及爆栈的问题,需要修改源码自行编译固件,这里不推荐使用;
(2). 一片W25QXX芯片,带有转接板,连接好之后如下图:

- 软件:
可以使用任意串口终端软件,这里推荐Thonny,集编辑器、终端、烧录器于一身,同时支持文件上传 。在这里下载> thonny
一、MicroPython是什么?
MicroPython是一个开源项目,它在资源受限的微控制器上实现了精简的Python3语法。
简单来说就是可以在单片机上运行Python脚本。
这是官网> MicroPython官网
二、使用块设备
1.测试官方示例
官方文档给出了一个简单的RAM块设备模型,接下来的移植将以它为基础
(官方文档,文件系统部分> Working with filesystems)
代码如下:
class RAMBlockDev:
def __init__(self, block_size, num_blocks):
self.block_size = block_size
self.data = bytearray(block_size * num_blocks)
def readblocks(self, block_num, buf):
for i in range(len(buf)):
buf[i] = self.data[block_num * self.block_size + i]
def writeblocks(self, block_num, buf):
for i in range(len(buf)):
self.data[block_num * self.block_size + i] = buf[i]
def ioctl(self, op, arg):
if op == 4: # get number of blocks
return len(self.data) // self.block_size
if op == 5: # get block size
return self.block_size
定义了一个 RAMBlockDev 类,提供三个基本方法,分别是readblocks,writeblocks,ioctl
只要实现了这三个方法就可以通过uos.VsFat格式化以及挂载块设备。下面测试一下官方的例子:
import os
bdev = RAMBlockDev(512, 50)
os.VfsFat.mkfs(bdev)
os.mount(bdev, '/ramdisk')
这样在Thonny中查看文件:

本文介绍了如何在MicroPython上使用块设备,包括基于RAM的块设备模型和W25QXX闪存芯片驱动的移植过程。
最低0.47元/天 解锁文章
315





