完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我确定这是一个简单的答案,我只是在做一些愚蠢的事情,但我正在尝试编译我的代码,但似乎任何用户代码都不起作用,我不断收到这些“危险的重定位:call0:调用目标超出范围:...”错误。知道我做错了什么吗?
PS 我确实必须修改 eagle.app.v6.ld 以包含 __stack。 任何帮助将不胜感激。 查尔斯 代码:全选~/esp8266/xtensa-toolchain-build/build-lx106/root/bin/xtensa-lx106-elf-gcc driver/uart.c user/dumbcraft.c user/dumbutils.c user/user_main.c user/dumbgame.c user/mystuff.c user/util10.c -I../../esp8266/esp8266_sdk_v0.9.1/include -Imyclib -Iinclude -Iuser -Os -I../../esp8266/esp8266_sdk_v0.9.1/lib_from_xt/lx106/xtensa-elf/include/ -flto ../../esp8266/esp8266_sdk_v0.9.1/lib/libmain.a ../../esp8266/esp8266_sdk_v0.9.1/lib/liblwip.a ../../esp8266/esp8266_sdk_v0.9.1/lib/libphy.a ../../esp8266/esp8266_sdk_v0.9.1/lib/libssl.a ../../esp8266/esp8266_sdk_v0.9.1/lib/libupgrade.a ../../esp8266/esp8266_sdk_v0.9.1/lib/libupgrade_ssl.a ../../esp8266/esp8266_sdk_v0.9.1/lib/libnet80211.a ../../esp8266/esp8266_sdk_v0.9.1/lib/libwpa.a ../../esp8266/esp8266_sdk_v0.9.1/lib/libnet80211.a -L../../esp8266/esp8266_sdk_v0.9.1/lib_from_xt/lx106/xtensa-elf/arch/lib -L../../esp8266/esp8266_sdk_v0.9.1/lib_from_xt/lx106/xtensa-elf/lib -T deps/eagle.app.v6.ld -B../../esp8266/esp8266_sdk_v0.9.1/lib_from_xt/lx106/xtensa-elf/lib -B../../esp8266/esp8266_sdk_v0.9.1/lib_from_xt/lx106/xtensa-elf/lib/../arch/lib -o image.elf /tmp/ccmc8JQn.ltrans0.ltrans.o: In function `at_tcpserver_recon_cb$1730$1549': ccmc8JQn.ltrans0.o:(.text+0x69d): dangerous relocation: call0: call target out of range: ets_sprintf /tmp/ccmc8JQn.ltrans0.ltrans.o: In function `at_tcpserver_discon_cb$1727$1554': ccmc8JQn.ltrans0.o:(.text+0x6c5): dangerous relocation: call0: call target out of range: ets_sprintf /tmp/ccmc8JQn.ltrans0.ltrans.o: In function `SetServerName$1563': ccmc8JQn.ltrans0.o:(.text+0x6e3): dangerous relocation: call0: call target out of range: ets_sprintf /tmp/ccmc8JQn.ltrans0.ltrans.o: In function `at_tcpserver_listen$1742$1341': ccmc8JQn.ltrans0.o:(.text+0x705): dangerous relocation: call0: call target out of range: ets_sprintf ccmc8JQn.ltrans0.o:(.text+0x741): dangerous relocation: call0: call target out of range: espconn_regist_recvcb ccmc8JQn.ltrans0.o:(.text+0x749): dangerous relocation: call0: call target out of range: espconn_regist_reconcb ccmc8JQn.ltrans0.o:(.text+0x751): dangerous relocation: call0: call target out of range: espconn_regist_disconcb ccmc8JQn.ltrans0.o:(.text+0x759): dangerous relocation: call0: call target out of range: espconn_regist_sentcb /tmp/ccmc8JQn.ltrans0.ltrans.o: In function `at_procTask$1739$1344': ccmc8JQn.ltrans0.o:(.text+0x885): dangerous relocation: call0: call target out of range: system_os_post ccmc8JQn.ltrans0.o:(.text+0x89e): dangerous relocation: call0: call target out of range: ets_sprintf ccmc8JQn.ltrans0.o:(.text+0xdca): dangerous relocation: call0: call target out of range: espconn_sent ccmc8JQn.ltrans0.o:(.text+0x10c9): dangerous relocation: call0: call target out of range: gpio_output_set /tmp/ccmc8JQn.ltrans0.ltrans.o: In function `uart_config$1387$1620': ccmc8JQn.ltrans0.o:(.text+0x1539): dangerous relocation: call0: call target out of range: ets_isr_attach ccmc8JQn.ltrans0.o:(.text+0x157b): dangerous relocation: call0: call target out of range: uart_div_modify /tmp/ccmc8JQn.ltrans0.ltrans.o: In function `user_init': ccmc8JQn.ltrans0.o:(.text+0x162f): dangerous relocation: call0: call target out of range: ets_isr_unmask ccmc8JQn.ltrans0.o:(.text+0x1637): dangerous relocation: call0: call target out of range: ets_install_putc1 ccmc8JQn.ltrans0.o:(.text+0x163a): dangerous relocation: call0: call target out of range: wifi_get_opmode ccmc8JQn.ltrans0.o:(.text+0x1649): dangerous relocation: call0: call target out of range: wifi_set_opmode ccmc8JQn.ltrans0.o:(.text+0x1672): dangerous relocation: call0: call target out of range: espconn_regist_connectcb ccmc8JQn.ltrans0.o:(.text+0x1677): dangerous relocation: call0: call target out of range: espconn_accept ccmc8JQn.ltrans0.o:(.text+0x1682): dangerous relocation: call0: call target out of range: espconn_regist_time ccmc8JQn.ltrans0.o:(.text+0x168d): dangerous relocation: call0: call target out of range: ets_sprintf ccmc8JQn.ltrans0.o:(.text+0x16a6): dangerous relocation: call0: call target out of range: ets_sprintf ccmc8JQn.ltrans0.o:(.text+0x16b5): dangerous relocation: call0: call target out of range: system_os_task ccmc8JQn.ltrans0.o:(.text+0x16c3): dangerous relocation: call0: call target out of range: system_os_post collect2: error: ld returned 1 exit status 尝试将 -mlongcalls 添加到您的编译器选项。 xtensa ISA 无法对来自调用站点的长度超过 512K 的直接调用进行编码。当 -mlongcalls 传递给编译器(实际上传递给汇编器)时,它将用一系列“将目标地址加载到寄存器中并通过寄存器中的地址调用”替换直接调用。在链接步骤中,如果链接器发现被调用者在直接调用的范围内,则此类扩展调用可能会折叠回一条指令。 编辑: 虽然看起来没有那么多内存可以溢出直接调用范围。必须是您的链接描述文件中的内容。 |
|
相关推荐
1个回答
|
|
这是因为xtensa ISA只能对长度小于512K的直接调用进行编码。为了解决这个问题,您可以尝试使用间接调用(例如使用函数指针)或重新设计您的代码以避免超出编码范围的直接调用。另外,您需要确保您的代码和链接脚本正确配置。您也可以查看Espressif社区的论坛和文档以获取更多关于ESP8266的编程疑难解答和技术支持。
|
|
|
|
只有小组成员才能发言,加入小组>>
541浏览 6评论
454浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
434浏览 5评论
436浏览 4评论
409浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-18 22:17 , Processed in 0.594541 second(s), Total 48, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号