乐鑫技术交流
直播中

vinww特烦恼

9年用户 1220经验值
擅长:存储技术
私信 关注
[问答]

使用make flash命令烧录Hello_world程式失败了,为什么?

请问我使用 make flash 命令要烧录 Hello_world 程式失败了
看起来像是COM3 Port有连上,但找不到开发板上芯片,无法写入
状况如下                                                                                                                                                e3.JPG (119.44 KiB) Viewed 8394 times                                                                                                      
我有使用串口程式来手动进入下载模式,开发板有回应                                                                                                                                                                                                      
使用PC下载程式依然烧录失败                                                                                                                                                
请教各位大神,是板子坏了吗?还是有其他的解决方法?
谢谢~
                                                                                                                                                           

回帖(2)

蔡鼎瑾

2024-6-26 17:14:38
原因可能有以下几点:

1. **开发板未正确连接**:确保开发板已经正确连接到计算机的 COM3 端口,并且连接稳定。

2. **驱动程序问题**:检查您的计算机是否已经安装了正确的驱动程序,以便识别并使用 COM3 端口。

3. **串口冲突**:如果您的计算机上还有其他设备使用 COM 端口,可能会导致冲突。尝试关闭其他使用 COM 端口的设备,或者更改端口设置。

4. **电源问题**:确保开发板的电源已经打开,并且电源稳定。

5. **烧录器设置问题**:检查您的烧录器设置是否正确,包括波特率、数据位、停止位和奇偶校验等。

6. **开发板固件问题**:确保开发板上的固件是最新的,或者与您的程序兼容。

7. **程序问题**:检查您的 Hello_world 程序是否有错误,或者是否与开发板的硬件不兼容。

8. **烧录命令问题**:确保您使用的 "make flash" 命令是正确的,并且与您的开发环境和开发板兼容。

解决这些问题的方法可能包括:

- 重新连接开发板并检查连接稳定性。
- 安装或更新驱动程序。
- 检查并更改 COM 端口设置。
- 确保开发板电源稳定。
- 检查并调整烧录器设置。
- 更新或修复 Hello_world 程序。
- 确保使用正确的烧录命令。


举报

禾洛

前天 17:00
您遇到的 Failed to connect to ESP32: Timed out waiting for packet header 错误,根本原因是 计算机与ESP32芯片之间无法建立串口握手协议。这与程序本身无关,是通信链路问题。
核心问题是:ESP32未正确进入下载模式,导致芯片没有响应计算机通过esptool发送的握手信号。
请按照以下顺序排查,99%的问题出在前三步:
1. 首要步骤:检查并确保ESP32进入“下载模式”
这是最常见的原因。ESP32必须在上电复位时处于特定的引脚电平状态才能进入固件下载模式。
关键引脚:
GPIO0:必须拉低(通常接地)。
EN(或 RST):需要一个由低到高的上升沿脉冲(即先拉低再释放)来触发芯片复位启动。
标准操作流程:
1.保持 GPIO0 为低电平。
2.将 EN 引脚拉低(手动接地一下)。
3.释放 EN 引脚(断开接地,让其恢复到高电平)。
4.立即执行 make flash 命令。
简化操作(适用于大多数开发板):
许多开发板(如ESP32-DevKitC)集成了自动下载电路(USB转串口芯片的 RTS 和 DTR 信号通过逻辑电路控制 EN 和 GPIO0)。您日志中使用的 CP210x 芯片支持此功能。
必须确保您的串口驱动程序(如CP210x驱动)支持并正确发送了这些控制信号。 在串口助手或 esptool 连接时, RTS 和 DTR 应被自动控制。请检查您的下载工具是否启用了此功能(在您的第一个截图中,Download Panel 部分的 RTS 和 DTR 设置需要正确配置)。
2. 检查串口独占占用
您的日志显示同时使用了 Flash下载工具 和 串口助手(XCOM)。这两个程序不能同时打开同一个串口(COM3)。
彻底关闭所有可能占用COM3的软件:包括串口助手、Arduino IDE、PlatformIO、其他Flash工具等,只保留一个命令行终端进行 make flash。
3. 检查硬件连接与电源
USB数据线:确保使用的是数据线而非仅能充电的电源线。更换一根已知良好的USB线。
串口转换器:确认 Silicon Labs CP210x 驱动已正确安装(在设备管理器中查看,应无感叹号)。
端口号:确认ESP32开发板连接的端口确实是 COM3(设备管理器 -> 端口)。
电源:开发板供电稳定。如果使用外部电源,确保其电压为3.3V且电流足够(>500mA)。
4. 降低初始波特率
默认的115200波特率在某些连接质量不佳时可能不稳定。尝试在 make flash 时指定一个更低的初始连接波特率。

bash
make flash ESPTOOL_BAUD=9600

5. 尝试手动使用esptool.py
在项目 build 目录下,使用完整的 esptool.py 命令进行更精细的控制,例如:

bash
python esptool.py --chip esp32 --port COM3 --baud 115200 --before default_reset --after hard_reset write_flash 0x10000 hello-world.bin
(注意:需要先 cd 到包含 hello-world.bin 的 build 目录)

总结与建议排查顺序:
1.【最重要】 确保 GPIO0 在复位时已拉低,并执行正确的 EN 复位时序(或确保自动下载电路已启用)。
2.【立即检查】 关闭所有其他占用 COM3 的软件(串口助手等)。
3.更换USB数据线,重插开发板。
4.尝试在 make flash 时降低波特率。
请首先执行 第1步 和 第2步,这几乎可以解决同类问题。
举报

更多回帖

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