Tools->MMU option for ESP8266

Running 2.3.8 now, but in years past I have used the MMU option but don't see it for any ESP8266 now. This is for a Wemos D1 Mini but from what I recall I needed to first select a different board for MMU but none seem to have this setting.

How can the MMU option be selected in 2.3.8? In particular I'd like to set it to "16KB cache + 48 KB IRAM and 2nd Heap (shared)".

I see it.
I selected LOLIN (WEMOS) D1 R2 & mini.
Once selected you might need to scoll down some to see the MMU option.

What did you use before?

To my knowledge settings for one board (e.g. Lolin) are not used by an other board (Wemos).

@dca2020 This????

It’s been a couple years since I last used this option and I’ve updated a few times since then, so unfortunately I don’t know what version I was using when it worked. I do have 1.8.15 still installed and the option is missing from that one also.

Very strange. Here’s what my 2.3.8 menu looks like:

I'm using ESP8266 version 3.1.2.
What version do you have?

Is this what your additional boards looks like for esp8266?

(https://arduino.esp8266.com/stable/package_esp8266com_index.json)

I’m using version 2.3.8 which I upgraded from 1.8.15. Both do not show the MMU option for any of the esp8266 boards.

Thanks for everyone’s help so far!

My package_esp8266com_index.json is identical to the one you sent the link to. I never looked into configuring the IDE before since I haven’t needed to, but one thing I noticed is that my boards.txt file doesn’t contain any MMU entries for any of the boards. Seems like it should.

Hate to do it but my next move is to uninstall and wipe (move aside) legacy files. Since everyone else seems to not have this issue it is pointing to something corrupted with my install.

Does it contain the entry for the menu item itself? Here it is on line 27:

.arduino15$ grep -in mmu packages/esp8266/hardware/esp8266/3.1.2/boards.txt
27:menu.mmu=MMU
69:generic.menu.mmu.3232=32KB cache + 32KB IRAM (balanced)
70:generic.menu.mmu.3232.build.mmuflags=-DMMU_IRAM_SIZE=0x8000 -DMMU_ICACHE_SIZE=0x8000
71:generic.menu.mmu.4816=16KB cache + 48KB IRAM (IRAM)
72:generic.menu.mmu.4816.build.mmuflags=-DMMU_IRAM_SIZE=0xC000 -DMMU_ICACHE_SIZE=0x4000
73:generic.menu.mmu.4816H=16KB cache + 48KB IRAM and 2nd Heap (shared)
74:generic.menu.mmu.4816H.build.mmuflags=-DMMU_IRAM_SIZE=0xC000 -DMMU_ICACHE_SIZE=0x4000 -DMMU_IRAM_HEAP
75:generic.menu.mmu.3216=16KB cache + 32KB IRAM + 16KB 2nd Heap (not shared)
76:generic.menu.mmu.3216.build.mmuflags=-DMMU_IRAM_SIZE=0x8000 -DMMU_ICACHE_SIZE=0x4000 -DMMU_SEC_HEAP=0x40108000 -DMMU_SEC_HEAP_SIZE=0x4000
77:generic.menu.mmu.ext128k=128K Heap External 23LC1024
78:generic.menu.mmu.ext128k.build.mmuflags=-DMMU_EXTERNAL_HEAP=128 -DMMU_IRAM_SIZE=0x8000 -DMMU_ICACHE_SIZE=0x8000
79:generic.menu.mmu.ext8192k=8M w/256K Heap External 64 MBit PSRAM
80:generic.menu.mmu.ext8192k.build.mmuflags=-DMMU_EXTERNAL_HEAP=256 -DMMU_IRAM_SIZE=0x8000 -DMMU_ICACHE_SIZE=0x8000
531:esp8285.menu.mmu.3232=32KB cache + 32KB IRAM (balanced)
532:esp8285.menu.mmu.3232.build.mmuflags=-DMMU_IRAM_SIZE=0x8000 -DMMU_ICACHE_SIZE=0x8000
533:esp8285.menu.mmu.4816=16KB cache + 48KB IRAM (IRAM)
534:esp8285.menu.mmu.4816.build.mmuflags=-DMMU_IRAM_SIZE=0xC000 -DMMU_ICACHE_SIZE=0x4000
535:esp8285.menu.mmu.4816H=16KB cache + 48KB IRAM and 2nd Heap (shared)
536:esp8285.menu.mmu.4816H.build.mmuflags=-DMMU_IRAM_SIZE=0xC000 -DMMU_ICACHE_SIZE=0x4000 -DMMU_IRAM_HEAP
537:esp8285.menu.mmu.3216=16KB cache + 32KB IRAM + 16KB 2nd Heap (not shared)
538:esp8285.menu.mmu.3216.build.mmuflags=-DMMU_IRAM_SIZE=0x8000 -DMMU_ICACHE_SIZE=0x4000 -DMMU_SEC_HEAP=0x40108000 -DMMU_SEC_HEAP_SIZE=0x4000
539:esp8285.menu.mmu.ext128k=128K Heap External 23LC1024
540:esp8285.menu.mmu.ext128k.build.mmuflags=-DMMU_EXTERNAL_HEAP=128 -DMMU_IRAM_SIZE=0x8000 -DMMU_ICACHE_SIZE=0x8000
541:esp8285.menu.mmu.ext8192k=8M w/256K Heap External 64 MBit PSRAM
542:esp8285.menu.mmu.ext8192k.build.mmuflags=-DMMU_EXTERNAL_HEAP=256 -DMMU_IRAM_SIZE=0x8000 -DMMU_ICACHE_SIZE=0x8000

followed by dozens(?) of boards (included the first two above here). These are the menu entries at the top of the file:

menu.BoardModel=Model
menu.ESPModule=Module
menu.UploadTool=Upload Tool
menu.led=Builtin Led
menu.baud=Upload Speed
menu.xtal=CPU Frequency
menu.CrystalFreq=Crystal Frequency
menu.eesz=Flash Size
menu.FlashMode=Flash Mode
menu.FlashFreq=Flash Frequency
menu.ResetMethod=Reset Method
menu.dbg=Debug port
menu.lvl=Debug Level
menu.ip=lwIP Variant
menu.vt=VTables
menu.exception=C++ Exceptions
menu.stacksmash=Stack Protection
menu.wipe=Erase Flash
menu.sdk=NONOS SDK Version
menu.ssl=SSL Support
menu.mmu=MMU
menu.non32xfer=Non-32-Bit Access

##############################################################
generic.name=Generic ESP8266 Module

But is it from the FULL path?

I did a quick check and line 27 is identical in mine plus about 647 more hits in the boards.txt file under esp8266 3.1.2

I would never recommend wiping everything. It normally auto updates, but if you want a easier but ful reset, just do a board uninstall followed by install.

Maybe restart the IDE after as well.

Hi @dca2020.

You misunderstood the question. @jim-p asked which version of the "esp8266" boards platform you have installed. That is different from the Arduino IDE version.

I'm going to ask you to provide the full verbose output from a compilation.


:red_exclamation_mark: This procedure is not intended to solve the problem. The purpose is to gather more information.


Please do this:

  1. Open the sketch in Arduino IDE.
  2. Select File > Preferences... (or Arduino IDE > Settings... for macOS users) from the Arduino IDE menus.
    The "Preferences" dialog will open.
  3. Check the box next to "Show verbose output during: ☐ compile" in the "Preferences" dialog.
  4. Click the "OK" button.
    The "Preferences" dialog will close.
  5. Select Sketch > Verify/Compile from the Arduino IDE menus.
  6. Wait for the compilation to finish.
  7. Right click (Control-click for macOS users) on the black "Output" panel at the bottom of the Arduino IDE window.
    A context menu will open.
  8. Select Copy All from the menu.
  9. Open a reply here on this forum topic by clicking the "Reply" button.
  10. Click the <CODE/> icon on the post composer toolbar.
    This will add the forum's code block markup (```) to your reply to make sure the error messages are correctly formatted.
  11. Press the Ctrl+V keyboard shortcut (Command+V for macOS users).
    This will paste the compilation output into the code block.
  12. Move the cursor outside of the code block markup before you add any additional text to your reply.
  13. Click the "Reply" button to publish the post.

In case the output is longer than the forum software will allow to be added to a post, you can instead save it to a .txt file and then attach that file to a reply here.

Click here for attachment instructions

  1. Open any text editor program.
  2. Paste the copied output into the text editor.
  3. Save the file in .txt format.
  4. Open a reply here on this forum topic by clicking the "Reply" button.
  5. Click the "Upload" icon (Upload icon) on the post composer toolbar:

    The "Open" dialog will open.
  6. Select the .txt file you saved from the "Open" dialog.
  7. Click the "Open" button.
    The dialog will close.
  8. Click the "Reply" button to publish the post.

Alternatively, instead of using the "Upload" icon on the post composer toolbar as described in steps (5) - (7) above, you can simply drag and drop the .txt file onto the post composer field to attach it.

Ok I understand about the package version now. I was at 2.7.4 and that appears to be the cause of missing mmu lines from boards.txt. Installing 3.1.2 now has the MMU menu option showing up. I must have had something other than 2.7.4 installed years ago, giving me the MMU option back then.

So all set and thanks again.

You are welcome. Thanks for taking the time to post an update with your solution.

Regards, Per