ESP32入门之程序烧录:烧录错误总结
系列文章目录
《ESP32入门之GPIO:点亮一盏LED灯》
目录
系列文章目录
前言
一、ESP32烧录错误总结
1.错误一:等待报头超时
2.错误二:没有接收到串行数据
2.错误二:没有接收到串行数据
4.错误四:数据包头 (0xXX) 无效:可能的串行噪音或损坏。
2.错误二:没有接收到串行数据
2.错误二:在seq 32之后将压缩数据写入flash失败
二、ESP32串口烧录方法
1.strapping管脚
2.log打印
三、方法总结
参考资料
前言
ESP32系类芯片、模组等烧录程序时失败原因及解决方法总结。
本文仅供个人参考学习之用,不做其他任何用途。
一、ESP32烧录错误总结
1.错误一:等待报头超时
A fatal error occurred: Timed out waiting for packet header
此错误通常意味着esp32模组(芯片)没有正常进入下载模式,也有可能串口被占用。
解决方案:通过串口调试助手查看是否有进入下载模式的打印;检查模组的strapping管脚电平是否处于下载模式的电平;检查串口是否被占用。
2.错误二:没有接收到串行数据
A fatal error occurred: No serial data received
此错误通常意味着某种硬件问题,如TX、RX引脚未连接,usb转串口工具(CH340等)硬件存在问题等。
解决方案:检查串口引脚连接是否正常,更换usb转串口工具等。
3.错误三:没有串口权限
Failed to open port /dev/ttyUSB0
此错误通常出现在Linux向esp32烧录固件时,说明串口此时确实对应的权限。
解决方案:此时可执行以下命令以将用户添加至 dialout 组。
sudo usermod -a -G dialout $USER
4.错误四:数据包头 (0xXX) 无效:可能的串行噪音或损坏。
A fatal error occurred: Invalid head of packet (0xXX): Possible serial noise or corruption.
此错误通常意味着以下某种硬件问题:
1)使用质量差的usb电缆;
2)开发板spi flash 引脚短路等问题;
3)烧录时的电压不稳定等;
解决方案:更换usb电缆;更换模组或开发板尝试;更换稳压电源供电
5.错误五:拒绝许可 dev/ttyUSB0
Permission denied: '/dev/ttyUSB0'
此错误说明串口被其它工具占用。
解决方案:检查串口调试助手工具关闭串口。
6.错误六:将压缩数据写入flash失败
A fatal error occurred: Failed to write compressed data to flash after seq 32 (result was C100)
本人没有实际遇见过此问题,也许与flah参数有关,解决方法可以参考论坛。
解决方案:参考《压缩数据写入flash失败》
7.错误七:MD5文件与flash中的数据不匹配!
A fatal error occurred: MD5 of file does not match data in flash!
这意味着 esptool.py 将新的二进制文件写入闪存后,它会读回内容,并且不匹配。本人没有实际遇见过这个错误,但看论坛里的讨论似乎与flah有关,也许是flash损坏或引脚焊接问题,解决方法可以尝试参考论坛的方法。
解决方案:参考《MD5文件与flash中的数据不匹配》
二、ESP32串口烧录方法
ESP系列芯片从ESP8266到现在的ESP32S3都支持通过固定串口烧录(烧录时的串口io固定),串口烧录也是最常用的烧录方式。下面将介绍如何让ESP系列芯片进入下载模式。
1.strapping管脚
ESP系列芯片上电时会检测strapping管脚的电平状态来决定芯片的工作模式,并通过串口将log打印出来。因此,通过检测strapping管脚的电平状态可以有效帮助我们确认芯片是否处于固件下载模式。不同系列的ESP芯片可以通过芯片规格书获取其对应的strapping管脚。
以ESP32为例,芯片规格书的strapping管脚描述如下:
与下载启动模式相关的strapping管脚有GPIO0和GPIO2,当这两个IO在上电时都处于低电平时ESP32芯片将进入下载模式,但由于GPIO2默认处于下拉模式,即低电平状态,所以我们一般只需要关注GPIO0的状态即可。GPIO0默认处于上拉模式,因此在烧录固件时我们需要将GPIO0外部下拉,使其处于低电平状态,从而让芯片进入下载模式。其它ESP系列芯片与此类似。
2.log打印
1.固件下载模式:
rst:0x1(POWERON_RESET),boot:0x3(DOWNLOAD_BOOT(UART0/UART1/SDIO_REI_REO_V2))
2.芯片启动模式:
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
三、方法总结
ESP32芯片固件下载时可能遇到的错误多种多样,既可能是软件原因,也可能是硬件原因,但无论是什么错误都可以通过以下一些方法来进行初步排查:
1)通过串口调试助手查看log以确定芯片是否处于固件下载模式。
2)没有log时可通过电压表检测芯片strapping引脚电平来确定芯片状态。
3)尽量使用稳压电源为芯片或模组供电。
4)检查串口是否有足够的权限及是否被被占用。
5)尝试更换usb电缆或usb转串口工具(CH340等)。
6)尝试更换模组或芯片。
7)尝试降低波特率。
8)尝试使用官方下载工具先进行flash擦除后再进行烧录。
参考资料
1、《ESP32启动信息参考》0
2、《故障排除》
3、《官方下载工具》
ESP32入门之程序烧录:烧录错误总结相关推荐
- c语言烧录芯片,入门扫盲!芯片程序的烧录过程,没想象那么难跟着走就行!...
大家好!之前就说过从上个月起,创客e工坊在原本讲解电路知识的基础上会逐渐加入单片机的教程. 并且也如约出了三期的单片机视频:什么是单片机:C语言如何控制单片机:单片机小制作自动加湿器: 那么,今天我们 ...
- 【PIC18单片机学习笔记】一、程序的烧录
目录 编程器 烧录软件 烧录 准备程序 main.c pic18.h 烧录 效果 Windows 10 20H2 PICkit 3 v3.10 MPLAB X IDE v5.45 PIC18F46J5 ...
- stc12c5a32s2c语言程序,为什么STC12C5A32S2程序不能烧录进去啊
为什么STC12C5A32S2程序不能烧录进去啊 [复制链接] ORG 00H LJMP MAIN ORG 30H MAIN:MOV P1,#0FFH MOV P3,#0FFH LCALL YS MO ...
- Quartus II 软件编写程序及烧录步骤
Quartus II 软件编写程序及烧录步骤 最近刚开始接触这个软件,这次详细记录了部分使用步骤,当做备忘录.
- 单片机程序读取烧录方法记录
用Jlink和J-Flash RAM读取单片机程序和烧录单片机程序操作步骤 读取单片机内部程序: 烧录单片机程序: 注:以上操作第三步可根据实际硬件连接方式选择SWD还是JTAG
- STM32程序正常烧录后不能运行的可能原因(关于新旧CUBE的型号问题)
STM32程序正常烧录后不能运行的可能原因: 1. 没有勾选Mirco Lib: 2. 没有在烧写选项里勾选reset and run,然后自己也没有手动复位,把自己吓到了: 3.对于使用HAL库生成 ...
- cfree运行程序错误的原因_Python入门教程 | 第 8 章 错误、调试和测试
第八章 错误.调试和测试 在程序运行过程中,总会遇到各种各样的错误. 有的错误是程序编写有问题造成的,比如本来应该输出整数结果输出了字符串,这种错误我们通常称之为bug,bug是必须修复的. 有的错误 ...
- ESP32 入门教学,不入门,不教学
1. Internet of things (iot)这个概念非常火,物联网是什么?把所有物品通过射频识别等信息传感设备与互联网连接起来,实现智能化识别和管理. 物联网通过智能感知.识别技术与普适计算 ...
- 七牛服务器入门教程_教程:使用无服务器,StepFunction和StackStorm构建社区的入门应用程序…...
七牛服务器入门教程 by Dmitri Zimine 由Dmitri Zimine 使用无服务器,StepFunction和StackStorm Exchange构建社区注册应用 (Building ...
- Angular和.NET Core Web API入门应用程序
下载源160.2 KB 您可以在此处查看此项目的源代码和最新更新 这是Angular/.NET Core Web API入门应用程序,具有添加.编辑和删除客户的基本功能,因此您可以将其用作构建应用程序 ...
最新文章
- ng-repeat 设定select 选择项
- DDoS攻击的大量增加给企业带来了新的威胁——Vecloud
- AngularJS基于MVC的复杂操作案例
- Dalvik虚拟机简要介绍和学习计划
- Python数模笔记-模拟退火算法(1)多变量函数优化
- 网络管理员&MCSE2003之2:使用虚拟机Vmware建立多电脑网络环境
- 【ER网络?BA网络?WS网络?NW网络?】复杂网络分析+数据集+代码实现
- 使用Control Flash 更新AB PLC的固件版本(通过网线)
- CSS基础的文字样式
- 文本域换行 php,js获取textarea文本域自动换行符
- 90后凤凰男:寒门难出贵子
- App是什么,可以分为几类?及其相关解释。
- 芯片设计中的latch_为什么ICG Cell中使用锁存器(Latch),而不使用触发器(Flip Flop)?...
- Python PDF转Word,以及提取Word中图片里的文字
- python读取txt文件代码-Python txt文件常用读写操作代码实例
- 产学互为表里,携手方见大道:华为云AI院长峰会的价值思考
- HP 孙振耀 九大感言(转)
- 转杨毅:火箭——自助者天助
- 公众号内容拓展学习笔记(2021.5.2)
- css3滤镜属性filter实现网页变黑白效果
热门文章
- Linux基本常用命令(大数据开发里也用的到)
- 手机信令数据怎么获得_如何运用手机信令大数据辅助城市规划决策
- crx什么意思_CRX文件是什么
- SHIMANO套件差别详解
- linux系统发生假死状态处理办法
- 【offer谈判】如何做一朵盛世白莲花,让企业愿意为你花大价钱!
- linux创建文档并且打字,与 Linux 一起学习:学习打字
- 云服务器最重要的特点,云服务的优势是什么(云服务的主要特点)
- const T 与T const(const T vs.T const的翻译 Dan Saks)
- eclipse的.java文件有蓝色三角符号