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. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-21 13:46:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-21 13:46:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-21 13:46:03       87 阅读
  4. Python语言-面向对象

    2024-03-21 13:46:03       96 阅读

热门阅读

  1. git--首次提交本地代码到github

    2024-03-21 13:46:03       47 阅读
  2. 报错:npm WARN ERESOLVE overriding peer dependency

    2024-03-21 13:46:03       29 阅读
  3. bat 实现Windows系统服务看门狗

    2024-03-21 13:46:03       44 阅读
  4. PTA 字符串替换

    2024-03-21 13:46:03       45 阅读
  5. C# 中 判断指定2条线是否相交、重合等功能

    2024-03-21 13:46:03       44 阅读
  6. Linux 常用命令 cat

    2024-03-21 13:46:03       45 阅读
  7. 2024年最新地推网推拉新平台推荐

    2024-03-21 13:46:03       140 阅读
  8. 559: 字符串排序(python)

    2024-03-21 13:46:03       41 阅读