ESP32通过USB/UART/ble/其他协议OTA报错解决

1、乐鑫官方例程

ESP32的OTA 例程是基于HTTP接口,需要连接WIFI和HTTP服务器,使用上不是很灵活,根据ESP32 idf component OTA相关API接口,理论上可以通过任何通信方式和协议进行升级,只要保证文件传输准确、flash空间足够、partitions文件flash布局合理就可以升级成功。

2、升级过程中出现:

bin文件传输完成,更新加载时报错:esp_image: invalid segment length 0x…/或者其他加载错误

3、问题分析

a、USB协议使用ymodem协议无问题,文件能够传输完成,文件传输长度正常
b、升级失败,通过esptool.py -p com5 -b 460800 read_flash 0x210000(地址) 0x200000(长度) flash_ota0.bin读取flash OTA写入的固件,发现写入到flash的固件和源文件不一致;
c、经过USB接收打印和OTA flash写入打印,定位到接收数据后,放入USB自定义的队列(由于ESP32接收到的数据是按每包64字节接收的,所以自己做了一个队列,每收到一包64字节就放入队列,通过超时机制–超过10ms没收到USB包,来判断一帧数据是否结束,然后对一帧数据进行处理),从队列取出数据的时候发生数据异常,导致写入的数据错误,在写入完成加载新固件时,升级失败报错,各种校验错误和加载错误

4、还是乐鑫开发资料和工具完善,排查和分析问题的手段就够多,问题已经解决

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值