乐鑫技术交流
直播中

笑过就走

9年用户 935经验值
擅长:可编程逻辑 电源/新能源 MEMS/传感技术
私信 关注
[问答]

可以在esp8285上使用OTA吗?

您好,我在将二进制文件闪存到设备(SONOFF RF R2 V01)Esp8266时遇到问题,该设备具有1MB闪存。在我的程序中,我使用 MQTT、OTA(通过 http)、WIFI、GPIO。

当我traing到闪光灯时:

LD build/main.elf
/opt/xtensa-lx106-elf-gcc/bin/。/lib/gcc/xtensa-lx106-elf/8.4.0/.。/../../../xtensa-lx106-elf/bin/ld:/home/dlut/GIT/esp8266_rtos_tamplate/build/main.elf 部分“.flash.rodata”的地址0x4028b92c不在区域“iram0_2_seg”内
/opt/xtensa-lx106-elf-gcc/bin/。/lib/gcc/xtensa-lx106-elf/8.4.0/.。/../../../xtensa-lx106-elf/bin/ld:/home/dlut/GIT/esp8266_rtos_tamplate/build/main.elf 部分“.flash.rodata”的地址0x4028b92c不在区域“iram0_2_seg”内
collect2:错误:ld 返回 1 退出状态
make: *** [/home/dlut/esp/ESP8266_RTOS_SDK/make/project.mk:510: /home/dlut/GIT/esp8266_rtos_tamplate/build/main.elf] Error 1




我的分区表是:
法典:全选
nvs,      data, nvs,     0x9000,   0x4000
otadata,  data, ota,     0xd000,   0x2000
phy_init, data, phy,     0xf000,   0x1000
ota_0,    0,    ota_0,   0x10000,  0x78000
ota_1,    0,    ota_1,   0x88000, 0x78000



二进制文件的大小:
法典:全选
❯ ls -la  build/main.bin
-rw-r--r-- 1 dlut users 457120 Aug  3 10:26 build/main.bin




可以在 esp8285 上使用 OTA 吗?
                                                                                                                                                               

回帖(1)

李波

2024-7-9 16:03:49
是的,您可以在ESP8266(如SONOFF RF R2 V01)上使用OTA(Over-The-Air)更新。但是,您遇到的问题似乎与链接器错误有关,而不是OTA本身。

错误消息指出,链接器无法将“.flash.rodata”部分放入“iram0_2_seg”区域。这可能是由于以下原因之一:

1. 程序太大:ESP8266的闪存空间有限(1MB),您可能需要优化代码以减少占用的空间。尝试删除不必要的库或功能,以降低程序大小。

2. 内存分配问题:检查您的代码,确保没有内存泄漏或过多的静态变量。这可能导致内存不足,从而导致链接器错误。

3. 链接器配置问题:检查您的链接器脚本(通常是.ld文件),确保它正确配置了内存区域。如果需要,您可以调整内存区域的大小,以适应您的程序需求。

要解决此问题,您可以尝试以下步骤:

1. 优化代码:删除不必要的库和功能,以减少程序大小。

2. 检查内存分配:确保没有内存泄漏或过多的静态变量。

3. 调整链接器脚本:检查并修改链接器脚本,以确保内存区域正确配置。

4. 使用OTA更新:在解决链接器问题后,您可以使用OTA更新您的设备。确保您的设备连接到Wi-Fi,并使用适当的OTA库(如ArduinoOTA)来实现OTA功能。

希望这些建议能帮助您解决问题。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分