M5Stack(ESP32)学习笔记(5)—— 剩余存储空间

和PC不一样的地方是,M5Stack毕竟是个单片机系统,其存储资源非常的有限,无论是ROM还是RAM。

对比一下我手上的M5Stack Fire和M5Stick-C。

  M5Stack M5Stick-C
ESP32 240MHz dual core, 600
DMIPS, 520KB SRAM,
Wi-Fi, dual mode
Bluetooth
240MHz dual core, 600
DMIPS, 520KB SRAM,
Wi-Fi, dual mode
Bluetooth
RAM 520KB
+
4MB PSRAM
520KB
ROM 16MB 4MB

这个配置对于单片机系统来说,还是比较优秀的,但是相对于PC来说,没有可比性。如果用来跑Arduino/C语言的程序,倒是没什么问题,不过如果跑Python,RAM比较小的情况下,尤其需要小心。本来MicroPython系统本身就需要有比较大的RAM开销,再稍微开个大点的list或者做个list的复杂操作,可能RAM就不够用了。

那么,我们就需要能够方便的查看系统剩余存储空间,包括ROM和RAM。

参考 https://micropython.nxez.com/2019/02/24/view-the-remaining-flash-space-on-the-micropython-board.html

我查看了M5Stack Fire和StickC的ROM和RAM情况。

M5Stack Fire

查看ROM

>>> import ubinascii
>>> import os
>>> statvfs_fields = ['bsize','frsize','blocks','bfree','bavail','files','ffree',]
>>> info = dict(zip(statvfs_fields, os.statvfs('/flash')))
>>> info
{'files': 0, 'ffree': 0, 'bsize': 4096, 'bfree': 175, 'frsize': 4096, 'bavail': 175, 'blocks': 513}
>>> info['bsize'] * info['bfree']
716800
>>>

 

查看RAM

>>> import gc
>>> gc.mem_free()
7904
>>> gc.collect()
>>> gc.mem_free()
60464
>>>

 

M5Stick-C

查看ROM

>>> import ubinascii
>>> import os
>>> statvfs_fields = ['bsize','frsize','blocks','bfree','bavail','files','ffree',]
>>> info = dict(zip(statvfs_fields, os.statvfs('/flash')))
>>> info
{'files': 0, 'ffree': 0, 'bsize': 4096, 'bfree': 398, 'frsize': 4096, 'bavail': 398, 'blocks': 513}
>>> info['bsize'] * info['bfree']
1630208
>>>

 

查看RAM

>>> import gc
>>> gc.mem_free()
57968
>>> gc.collect()
>>> gc.mem_free()
78336
>>>

 

Fire的ROM空间为什么这么少? 比StickC还少? 没理由啊……

还有,Fire不是有4M的PSRAM吗?

[Update 20190622] 可能是原装UIFlow系统并不支持超过4M的ROM,也不支持PSRAM,所以可能需要自己编译MicroPython固件,以支持更大的ROM和RAM。 参考: https://blog.csdn.net/zhufu86/article/details/92190720

 

 

你可能感兴趣的:(M5Stack(ESP32)学习笔记(5)—— 剩余存储空间)