完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我正在使用自定义服务器来升级 esp8266。我可以从服务器下载图像,但总是升级失败。
我将以下.bin文件下载到闪存中(下载前,我擦除整个闪存): ------------ 2 MByte flash ------------ 0x0 ----- boot_v1.6.bin 0x1000 ----- user1.bin 0x1fb000 ----- blank.bin 0x1fc000 ----- esp_init_data_default.bin 0x1fe000 ----- blank.bin 这是我的日志: 获取 /test/user2.bin HTTP/1.0 主机:192.168.1.113:8292 总和长度 = 236224 升级文件下载开始。 总计 = 1460 entry smartconfig >>> 答0 答4 SmartConfig 正常 总计 = 2920 总计 = 4380 。。。 总计 = 235060 总计 = 236224 升级文件下载完成。 flash_crc = 3875536896 img_crc = 395549339 upgrade_check ota_upgrade_rsp失败了 CRC值似乎是错误的。但我不知道为什么。我已经在我的 ubuntu 中检查了 CRC,这是另一个值: work@ubuntu:~/esp/Scent/bin/test$ ls user1.bin user2.bin work@ubuntu:~/esp/Scent/bin/test$ cksum user2.bin 68439177 236224 user2.bin work@ubuntu:~/esp/scent/bin/test$ 这是我的升级代码: LOCAL void ICACHE_FLASH_ATTR ota_upgrade_rsp(void *arg) { struct upgrade_server_info *server = arg; if (server->upgrade_flag == true) { // TODO write new version. os_printf("user_esp_platform_upgrade_successfuln"); os_printf("system_upgrade_rebootn"); system_param_save_with_protect(ESP_PARAM_START_SEC, &now, sizeof(firmware_version_t)); system_upgrade_reboot(); } else { os_printf("ota_upgrade_rsp失败了n"); } os_free(server->url); server->url = NULL; os_free(server); server = NULL; } LOCAL void ICACHE_FLASH_ATTR ota_upgrade_begin(struct espconn *pespconn) { uint8 user_bin[9] = {0}; uint8 devkey[41] = "No Device key"; struct upgrade_server_info *server = NULL; os_printf("user_ota_upgrade_begin...n"); server = (struct upgrade_server_info *)os_zalloc(sizeof(struct upgrade_server_info)); server->pespconn = pespconn; const char remote_ip[4] = {192, 168, 1, 113}; os_memcpy(server->ip, remote_ip, 4); server->port = 8292; server->check_cb = ota_upgrade_rsp; server->check_times = 120000; if (server->url == NULL) { server->url = (uint8 *)os_zalloc(512); } if (system_upgrade_userbin_check() == UPGRADE_FW_BIN1) { os_memcpy(user_bin, "user2.bin", 10); } else if (system_upgrade_userbin_check() == UPGRADE_FW_BIN2) { os_memcpy(user_bin, "user1.bin", 10); } os_sprintf(server->url, "GET /test/%s HTTP/1.0rnHost: "IPSTR":%drnrn", user_bin, IP2STR(server->ip), server->port); os_printf("%sn",server->url); if (system_upgrade_start(server) == false) { os_printf("upgrade is already startedn"); } } |
|
相关推荐
1个回答
|
|
ESP8266 OTA升级失败可能有以下几个原因:
1. **固件不兼容**:确保你下载的固件与你的ESP8266模块兼容。不同的模块可能需要不同的固件版本。 2. **错误的分区表**:检查你的ESP8266是否使用了正确的分区表。如果分区表不正确,可能会导致升级失败。 3. **下载过程中的错误**:在下载过程中,可能由于网络问题或其他原因导致文件损坏或不完整。尝试重新下载固件并再次尝试升级。 4. **闪存擦除不彻底**:虽然你提到已经擦除了整个闪存,但有时候擦除可能不彻底。尝试再次擦除闪存并重新下载固件。 5. **固件文件损坏**:检查固件文件是否完整且未损坏。如果可能,从官方或可靠的来源重新下载固件。 6. **服务器问题**:检查你的自定义服务器是否正常工作,确保固件文件可以正确传输到ESP8266。 7. **ESP8266硬件问题**:如果以上原因都排除了,可能是ESP8266硬件本身存在问题。尝试使用另一个ESP8266模块进行测试。 8. **固件升级代码问题**:检查你的固件升级代码是否正确。确保在升级过程中正确处理了所有必要的步骤,如擦除闪存、下载固件、校验和等。 9. **电源问题**:确保ESP8266在升级过程中电源稳定,避免因电源问题导致升级失败。 10. **固件版本问题**:如果你的ESP8266模块较旧,可能需要先升级到较新的固件版本,然后再升级到最新的固件。 综上所述,要解决ESP8266 OTA升级失败的问题,需要从多个方面进行排查。希望这些建议能帮助你找到问题所在并解决问题。 |
|
|
|
只有小组成员才能发言,加入小组>>
545浏览 6评论
457浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
437浏览 5评论
441浏览 4评论
411浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 05:17 , Processed in 0.738644 second(s), Total 81, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号