关于编译报错问题,基于esp32 wroom 32u,请问如何解决

nash.zhao
Posts: 15
Joined: Mon Jun 07, 2021 2:32 pm

关于编译报错问题,基于esp32 wroom 32u,请问如何解决

Postby nash.zhao » Wed Jul 07, 2021 1:53 pm

SDK idf4.2.1
ubuntu20.04

编译报错如下
/root/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: balance_car.elf section `.iram0.text' will not fit in region `iram0_0_seg'
/root/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: IRAM0 segment data does not fit.
/root/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: region `iram0_0_seg' overflowed by 1040 bytes
collect2: error: ld returned 1 exit status
make[3]: *** [CMakeFiles/balance_car.elf.dir/build.make:403: balance_car.elf] Error 1
make[2]: *** [CMakeFiles/Makefile2:2053: CMakeFiles/balance_car.elf.dir/all] Error 2
make[1]: *** [CMakeFiles/Makefile2:4315: esp-idf/esptool_py/CMakeFiles/app-flash.dir/rule] Error 2
make: *** [Makefile:1308: app-flash] Error 2
make failed with exit code 2

ESP_Gargamel
Posts: 786
Joined: Wed Nov 14, 2018 8:45 am

Re: 关于编译报错问题,基于esp32 wroom 32u,请问如何解决

Postby ESP_Gargamel » Thu Jul 08, 2021 8:39 am

`.iram0.text' will not fit in region `iram0_0_seg'

放在 IRAM 里的代码太多了,你做了什么?比如 menuconfig 里做了哪些特殊配置?以及是否使用了 IRAM_ATTR 给一些函数?

nash.zhao
Posts: 15
Joined: Mon Jun 07, 2021 2:32 pm

Re: 关于编译报错问题,基于esp32 wroom 32u,请问如何解决

Postby nash.zhao » Thu Jul 08, 2021 3:24 pm

我把蓝牙部分的代码加进来了。
请问有IRAM_ATTR表示的函数数据都会放在iram0 里面吗?都哪些代码会把数据放到iram0?
请问目前编译报错,它为什么没有继续使用iram1的空间?

ESP_Gargamel
Posts: 786
Joined: Wed Nov 14, 2018 8:45 am

Re: 关于编译报错问题,基于esp32 wroom 32u,请问如何解决

Postby ESP_Gargamel » Fri Jul 09, 2021 1:57 am

有 IRAM_ATTR 的函数都会放到 iram0,但不仅仅这样,还可以用 linker script 的方式 https://docs.espressif.com/projects/esp ... ation.html,来指定是哪些函数,哪些文件需要放到哪些地方,具体可以参看 idf 中一些 components 下的 linker.lf。
具体哪些会放到 iram0,当前没有完整统计。
iram1,其实也是在 iram0 段内的。

如果链接不过,你可以先临时把 components/esp32/ld/esp32.ld 内 iram0_0_seg 的值加个 0,然后编译出来后,就可以分析一下哪些在 iram0 里。注意,这只是为了编译,不要拿来跑。方便的话直接提供 elf 文件,否则至少提供 map 文件。

nash.zhao
Posts: 15
Joined: Mon Jun 07, 2021 2:32 pm

Re: 关于编译报错问题,基于esp32 wroom 32u,请问如何解决

Postby nash.zhao » Sat Jul 10, 2021 7:44 am

好的好的,感谢感谢。我自己查一下问题。

Who is online

Users browsing this forum: No registered users and 60 guests