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
关于编译报错问题,基于esp32 wroom 32u,请问如何解决
-
- Posts: 786
- Joined: Wed Nov 14, 2018 8:45 am
Re: 关于编译报错问题,基于esp32 wroom 32u,请问如何解决
`.iram0.text' will not fit in region `iram0_0_seg'
放在 IRAM 里的代码太多了,你做了什么?比如 menuconfig 里做了哪些特殊配置?以及是否使用了 IRAM_ATTR 给一些函数?
放在 IRAM 里的代码太多了,你做了什么?比如 menuconfig 里做了哪些特殊配置?以及是否使用了 IRAM_ATTR 给一些函数?
Re: 关于编译报错问题,基于esp32 wroom 32u,请问如何解决
我把蓝牙部分的代码加进来了。
请问有IRAM_ATTR表示的函数数据都会放在iram0 里面吗?都哪些代码会把数据放到iram0?
请问目前编译报错,它为什么没有继续使用iram1的空间?
请问有IRAM_ATTR表示的函数数据都会放在iram0 里面吗?都哪些代码会把数据放到iram0?
请问目前编译报错,它为什么没有继续使用iram1的空间?
-
- Posts: 786
- Joined: Wed Nov 14, 2018 8:45 am
Re: 关于编译报错问题,基于esp32 wroom 32u,请问如何解决
有 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 文件。
具体哪些会放到 iram0,当前没有完整统计。
iram1,其实也是在 iram0 段内的。
如果链接不过,你可以先临时把 components/esp32/ld/esp32.ld 内 iram0_0_seg 的值加个 0,然后编译出来后,就可以分析一下哪些在 iram0 里。注意,这只是为了编译,不要拿来跑。方便的话直接提供 elf 文件,否则至少提供 map 文件。
Re: 关于编译报错问题,基于esp32 wroom 32u,请问如何解决
好的好的,感谢感谢。我自己查一下问题。
Who is online
Users browsing this forum: Google [Bot] and 127 guests