ESP 8266 MicroPython无法分配内存

时间:2018-11-24 15:51:15

标签: esp8266 micropython

我是ESP8266上Micropython的新手,我似乎无法找到为什么不能为库分配内存的答案。

REPL输出为:

Traceback (most recent call last):
  File "main.py", line 2, in <module>
MemoryError: memory allocation failed, allocating 1152 bytes

我的内存信息如下:

>>> micropython.mem_info(1)
stack: 2128 out of 8192
GC: total: 35968, used: 11952, free: 24016
 No. of 1-blocks: 36, 2-blocks: 10, max blk sz: 264, max free sz: 185
GC memory layout; from 3ffef550:
00000: MDhhhBMMDDSMhDDB=BBBh===h====hMhhh==h===========================
00400: ================================================================
00800: ================================================================
00c00: ================================================================
01000: ============================================ThhDBBBBBBh===hB=h=h
01400: ===B=h==h=B...h========h=.h=======h=============================
01800: ================================================================
01c00: ================================================================
02000: ====================================================h.h==hh==..h
02400: =h=.............h=======..............................h=======..
02800: ......h=======......h=======...................................h
02c00: ===========.....................................................
03000: ................................................................
03400: .........................................h=======...............
03800: .h======......................h=======..........................
03c00: ...............h=======.........................................
04000: .................................................h=======.......
       (2 lines all free)
04c00: ..................................................h=======......
05000: .................................h=======.......................
05400: ................................................................
05800: .........h=======...............................................
05c00: .........................................................h======
06000: =...............................................................
06400: ...............h=======.........................................
06800: ................................h=======........................
06c00: ..............................h=======..........................
07000: ................................................................
07400: ......h=======..................................................
07800: .h=======.......................................................
07c00: .h=h=...........................................................
08000: .......h=======.................................................
08400: ....................................................h=======....
08800: ................................................................
08c00: ........
>>> 

除非我有误解,否则表明有2K可用块?

垃圾回收会产生以下结果:

>>> import gc
>>> import micropython
>>> gc.collect()
>>> micropython.mem_info()
stack: 2112 out of 8192
GC: total: 35968, used: 11856, free: 24112
 No. of 1-blocks: 32, 2-blocks: 11, max blk sz: 264, max free sz: 185
>>> 

我在这里做错了什么吗?

1 个答案:

答案 0 :(得分:1)

您的main.py位于flashROM上,脚本正在使用整个闪存 但是您必须使用冻结存储器(E2PROM),这意味着二进制框架已编译到esp8266。

frozen Module中确认