文件系统介绍
1. 简介
文件系统大家都很熟悉,如其名,就是用来管理文件的,在电脑上使用关键管理器就可以轻松访问和管理文件系统 有了文件系统,可以把数据保存进去,就算断电了,数据仍然存在
2. 文件系统与内存详解
3. MaixPy 的文件系统
在 MaixPy 中,也内置了文件系统的支持
在电脑上,文件实际都是存在硬盘上的, 那么在 MaixPy 中,文件系统放在那里的呢, 答案是放在 Flash 里面或者SD卡里面,
开发板的 Flash 需要用来储存程序,我们预留了Flash
末尾的3MiB
空间,用来存放文件系统, 我们用了 SPIFFS
作为文件系统, Flash
文件系统具体组织方式可查看:Flash 分区。 另外也支持FAT32
格式的SD
卡。
- 如果你没有入门过单片机,你只需要知道, 你有什么数据需要断电后还能保存,它能够帮你做到
- 如果你之前简单的入门过单片机开发,你可能尝试过将数据保存到
Flash
, 也许没有使用文件系统,而是自己手动写数据到Flash
,然后自己管理哪些数据应该写到什么位置。有了文件系统,你不用再去管哪些数据应该写到哪儿了, 你只需要调用函数写入数据,文件系统会自动判断应该写到哪里最合适(会考虑效率、寿命等)
4. MaixPy 的文件系统使用
对于文件系统的使用, 和电脑上python
读写文件系统一样, 使用os
模块 和 open
函数
对于内置的 SPIFFS
, 开机会被自动挂在到/flash
目录, 所以只需要对这个目录进行操作即可,注意不支持文件夹,比如
import uos
print("files:", uos.listdir("/flash"))
with open("/flash/test.txt", "w") as f:
f.write("hello text")
print("files:", uos.listdir("/flash"))
with open("/flash/test.txt", "r") as f:
content = f.read()
print("read:", content)
解读:
- 导入了
uos
模块 - 列出了
/flash
目录下所有文件 - 并且向
/flash
目录写入了一个test.txt
文件,内容是hello text
, - 再列出了
/flash
目录下所有文件, 会发现多了一个test.txt
- 读取文件到
content
变量 - 打印
content
变量, 输出hello text
,也就是刚刚写入文件的内容 - 这个内容在开发板断电之后再上电,仍然能读到正确的内容
当然也支持 SD 卡, 如果你需要使用, SD 卡需要满足以下几点:
- 支持
SPI
模式, 市面上大多数正版卡都支持 - 分区为
MBR (msdos)
- 格式化为
FAT32
- 大小测试过最大
128GiB
可用 断电插入SD
后, 上电,SD
卡会被挂载在/sd
,如过有多个分区,第二个分区是/sd2
注意/
(根目录)不能写入数据,只能往/flash
或者/sd
写入数据
开机如果有SD
卡, 会自动将当前目录切换到/sd
, 如果没有,则会自动切换到/flash