【PC电脑windows环境下-[jetson-orin-NX]Linux环境下-下载工具esptool工具使用-相关细节-简单样例-实际操作】
- 1、概述
- 2、实验环境
- 3、 物品说明
- 4-2、自我总结
- 5、本次实验说明
- 1、准备样例
- 2、设置芯片
- 3、编译
- 4、下载
- 5、验证
- (1)windows环境下进行烧写
- 1、下载软件
- 2、打开软件
- 3、相关选项
- 4、其它选项
- 5、进行下载
- 6、按下复位后,进行验证
- (2)Linux环境下进行烧写
- 1、下载软件
- 2、准备文件
- 3、相关命令
- 4、进行下载
- 5、功能验证
- 7、代码连接
- 8、相关细节
- (1)Windows 报错
- (2)Linux 下报错
- (3)Linux下pc环境配置
- 9、总结
1、概述
一般来说,我们编译的话,直接就下载到ESP32中,但是有时候我们可能需要反复下载或者工厂下载,一般来说不可能让调试代码的那台电脑去下载,像STM32有STM32 ST-LINK Utility和STM32CubeProgrammer这两种工具,那么esp32有没有,其实也有的,就是esptool。本次实验就是来熟悉这个工具,并且做的相关记录。
2、实验环境
硬件信息:开发板 ESP32-S3-DevKitM-1(EPS32-S3-wroom-1模块)
其它硬件:一个usb-type-c连接线。
软件环境:ESP-IDF 5.0 PowerShell 、vscode
3、 物品说明
ESP32对自己来说还是比较新的,最近也是刚刚接触,这里对自己使用ESP32进行简单说明。
博文链接:【在英伟达nvidia的jetson-orin-nx和PC电脑ubuntu20.04上-装配ESP32开发调试环境-基础测试】
上述单片机原理图。
文档链接:http://vcc-gnd.com:8080/yd-data/YD-ESP32-S3/5-public-YD-ESP32-S3-Hardware%20info/
另外如果对ESP32相关型号比较感兴趣,可以去官网查看,或者找些资。
官网文档:https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32s3/hw-reference/esp32s3/user-guide-devkitm-1.html
4-2、自我总结
自己认为有一条必须了解的是,ESP32每次下载需要下三个文件。
可能用习惯了STM32的惯性思维,因为STM32一般来说,只需要下一个bin文件,而ESP32是分开的,每次编译后的下载,其实ESP32都下了bootloader,app和parition_table三个文件。
1、Bootloader(引导加载程序):
引导加载程序是位于ESP32芯片上的特殊固件,负责引导和初始化系统。它是在芯片上电时首先执行的代码,负责加载应用程序(app)和分区表等内容。
引导加载程序通常由ESP-IDF(ESP32开发框架)提供,或者您可以选择自定义引导加载程序。
引导加载程序的主要功能是加载应用程序和分区表,并将控制权传递给应用程序的入口点。
2、Application(应用程序):[添加链接描述](https://docs.espressif.com/projects/esptool/en/latest/esp32/esptool/basic-commands.html)
应用程序是您开发的ESP32固件的主要部分,包含您自己编写的代码和功能。
应用程序通常是一个或多个源代码文件,实现了您的特定应用逻辑和功能。
应用程序文件通常被编译为可执行的固件映像(例如.bin或.elf文件),以便在ESP32上运行。
3、Partition Table(分区表):
分区表是一个描述ESP32闪存中不同分区的配置文件,每个分区对应一个特定的用途和大小。
分区表定义了不同分区的起始地址、大小、类型等信息,并在烧录过程中确定了ESP32固件的存储布局。
分区表通常是一个用于描述分区的JSON文件,指定了不同分区的名称、大小和类型等信息
(1)参照官方文档
无论你看任何文档,有什么不懂时候,都非常建议看看官网文档是如何写,再来看他人的解释说明文章,你会明白很多,不个人感觉,官方文档有时候确实不容易看,要不我们为啥不直接看官网文档,而是看他人写的说明书呢。
官方文档链接:https://docs.espressif.com/projects/esptool/en/latest/esp32/esptool/basic-commands.html
github上链接:https://github.com/espressif/esptool/releases/tag/v4.6.2
另外发现CSDN也有相关官方博客:https://blog.csdn.net/espressif/article/details/105028809
这块开始不知道esp32需要下载三个文件,随便弄个工程app.bin,就烧进去了,使用命令。
esptool.py --port COM4 write_flash 0x1000 my_app-0x01000.bin
后来才知道要下三个。
(2)windows下使用esptool相关工具
Windows下有现成esptool的exe工具,直接打开直接就能使用,只要选择算在算对就行。
(3)linux下也是用esptool相关工具
主要是需要安装,然后使用时候,注意烧写三个文件,所以我们需要将相关文件拿出来。
5、本次实验说明
我们将选择一个简单样例,一个串口打印程序,然后直接将相关文件进行烧写,分别在两种环境下,使用工具。
- windows
- linux
1、准备样例
我们需要准备一个简单样例,来完成本次实验。直接使用之前建立的模helloworld版样例
2、设置芯片
这里因为之前设置过了,如果你使用芯片不一样,可以重新设置下,vscode下如下图,
或者使用命令,
idf.py set-target esp32s3
3、编译
编译如下
或者使用命令行
idf.py build
编译完成如下
4、下载
使用命令行
命令行根据自己的设备端口
idf.py -p com6 flash
如果报错没有这个端口,可以重置下ESP32,进入下载模式。
如下图为自己其它文章寻找串口方式,就不重复造轮子了。
博文链接:【PC电脑windows-学习样例tusb_serial_device-ESP32的USB模拟串口程序+VScode建立工程+usb组件添加±基础样例学习】
或者如下vscode
5、验证
vscode还是挺强的,知道连串口软件都不用打开了
如此我们就准备好了样例。
(1)windows环境下进行烧写
1、下载软件
随着文档更新,以后版本可能不一样,但是大致还是这个工具。
文档链接:https://www.espressif.com.cn/en/support/download/other-tools
2、打开软件
下载之后,就是这个软件了,直接运行。
如下为软件打开后样子,选择我们自己相关型号。
3、相关选项
(1)boot文件选择,并选择后面选择烧写位置“0x0”
(2)app文件选择,并选择后面选择烧写位置“0x10000”
(3)分区表文件选择,并选择后面选择烧写位置“0x8000”
4、其它选项
5、进行下载
然后点击START,进行下载
注意只有下边有绿色进度条时,才算下载了,自己实际弄的时候,发现没有动。
6、按下复位后,进行验证
如此Windows下就验证完毕了。
(2)Linux环境下进行烧写
现在切到linux环境下,自己一个pc,因为还没有装工具,正好验证下,jetson orin因为已经装完了,可以用了,可能反而发现不了文档。参考CSND官方文章。
博文链接:https://blog.csdn.net/espressif/article/details/105028809
结果验证半天,PC的Linux 环境都没能成功,有点小尴尬。
这块后续可能再写个文章再说吧,直接在jetson下演示。
1、下载软件
在jetson 下,记得在如下进行下载。
如下,具体安装确实有点忘记了,以下是当时运行相关命令。
装成功后,使用命令可以查看。
2、准备文件
我们先验证下,使用串口软件,看看是哪个串口,一会方便烧写
如下就是我们需要准备的bin文件,就是之前Windows烧写那三个
3、相关命令
以下就是烧写的命令了,要烧写3个文件
esptool.py --port /dev/ttyACM0 write_flash 0x0 bootloader.bin 0x10000 app-template.bin 0x8000 partition-table.bin
以下是擦除命令
esptool.py -p /dev/ttyACM0 erase_flash
4、进行下载
5、功能验证
在windows下验证或者Linux下验证,使用串口软件链接debug串口,如下为win环境验证。
7、代码连接
(1)esp串口样例
代码链接:https://download.csdn.net/download/qq_22146161/88482930
8、相关细节
(1)Windows 报错
下载的时候卡着,那我需要重启软件,然后按住boot键,然后是rst键,在撒开boot键,重新下载。
(2)Linux 下报错
端口占用,关掉串口软件
(3)Linux下pc环境配置
确实遇到点问题,安装有点问题,后期有时间补下。
9、总结
保持初心