Why code is placed into IRAM
Posted: Sun Jan 20, 2019 9:53 am
Hi.
I'm trying to get a third-party library onto ESP32. I've packaged it as component and it compiles OK. But the problem is when I link everything into a final application, it complains that iram section is overflowed:
Is there a way to figure out why linker decides that way?
I'm trying to get a third-party library onto ESP32. I've packaged it as component and it compiles OK. But the problem is when I link everything into a final application, it complains that iram section is overflowed:
I have examined `make size-symbols COMPONENT=my-component` and it shows some functions from that third-party library being placed into IRAM and I have no idea why it does that. I checked linker scripts and found no rule that would have caused that. The third-party component knows nothing about ESP32 architecture and thus does not use any attributes on functions whatsoever. The functions look normal, no special attributes.xtensa-esp32-elf/bin/ld: my-project.elf section `.iram0.text' will not fit in region `iram0_0_seg'
xtensa-esp32-elf/bin/ld: IRAM0 segment data does not fit.
xtensa-esp32-elf/bin/ld: region `iram0_0_seg' overflowed by 24384 bytes
Is there a way to figure out why linker decides that way?