如何解决内存错误:使用Micropython进行内存分配失败?



我正在使用 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

最新更新