我正在使用 pycom 的 SiPy 板进行项目,一切都很顺利,直到我实现了 2 个新文件(这不会修改项目行为本身(,但在上传新文件并尝试运行我的代码后,它显示了MemoryError: Memory allocation failed, allocating 136 bytes
。
我尝试了os.fsformat("/flash")
来清理电路板并再次上传 proyect,但最终遇到了同样的错误。我还尝试解决"错误行"(只是另一个运行良好的类的导入(无法解决它,只是稍后在分配了不同字节的另一个导入中发现了相同的错误。
根据您使用的micropython端口,您可以考虑使用:
import micropython
micropython.alloc_emergency_exception_buf(100)
在boot.py
文件的早期?
如果目标设备上有足够的 RAM,则可能需要增大micropython
正在使用的堆大小。
要检查micropython
的内存数据:
$ micropython
>>> import micropython
>>> micropython.mem_info()
mem: total=3818, current=728, peak=1592
stack: 464 out of 40000
GC: total: 1024512, used: 816, free: 1023696
No. of 1-blocks: 13, 2-blocks: 7, max blk sz: 8, max free sz: 63971
我示例中的重要部分是free: 1023696
.因此,例如,我可以运行具有 2MB 堆内存的micropython
。为此,请使用以下选项:
$ micropython -X heapsize=2M
>>> import micropython
>>> micropython.mem_info()
mem: total=2620, current=542, peak=1406
stack: 464 out of 40000
GC: total: 2049088, used: 592, free: 2048496
No. of 1-blocks: 8, 2-blocks: 6, max blk sz: 8, max free sz: 128019