It’s possible to generate map files with extra linker options (Generate a .map file - #8 by krishna_chaitanya) and analyze it (e.g. amap). You may be able to force a non-passing build (due to out of IRAM) to pass by artificially modifying the underlying linker file (C:\Users\<user>\.platformio\packages\framework-arduinoespressif32\tools\sdk\ld\esp32_out.ld
and related) with hacked len = ..
directives). Though I think it’s clear why the build doesn’t pass: .text1
in IRAM contains function code which has the ICACHE_RAM_ATTR
attribute. The umm_malloc library does that with its functions to provide a higher execution speed than when it’s executed from flash. If there is other stuff (SDK, wifi, libs,…) using IRAM instruction code space, there may be an overflow.
At the time the documentation was written it may have been required. Some later commits (Update core with upstream umm_malloc (#6438) · esp8266/Arduino@7a43092 · GitHub) definitely changed something regarding the typedef errors you are receiving.
Also, are you sure you’re on the latest package version for the Arduino-ESP8266 framework? Because it seems to me that above commits were targeted to fix those compilation problems. Check with pio platform update
or in the VSCode GUI.
I could of course also be wrong and without that flag it will compile but not actually use umm_malloc
…