【PC电脑windows环境下-[jetson-orin-NX]Linux环境下-下载工具esptool工具使用-相关细节-简单样例-实际操作】

本文主要是介绍【PC电脑windows环境下-[jetson-orin-NX]Linux环境下-下载工具esptool工具使用-相关细节-简单样例-实际操作】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【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、本次实验说明

我们将选择一个简单样例,一个串口打印程序,然后直接将相关文件进行烧写,分别在两种环境下,使用工具。

  1. windows
  2. 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、总结

保持初心

这篇关于【PC电脑windows环境下-[jetson-orin-NX]Linux环境下-下载工具esptool工具使用-相关细节-简单样例-实际操作】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/356614

相关文章

C++使用栈实现括号匹配的代码详解

《C++使用栈实现括号匹配的代码详解》在编程中,括号匹配是一个常见问题,尤其是在处理数学表达式、编译器解析等任务时,栈是一种非常适合处理此类问题的数据结构,能够精确地管理括号的匹配问题,本文将通过C+... 目录引言问题描述代码讲解代码解析栈的状态表示测试总结引言在编程中,括号匹配是一个常见问题,尤其是在

Java中String字符串使用避坑指南

《Java中String字符串使用避坑指南》Java中的String字符串是我们日常编程中用得最多的类之一,看似简单的String使用,却隐藏着不少“坑”,如果不注意,可能会导致性能问题、意外的错误容... 目录8个避坑点如下:1. 字符串的不可变性:每次修改都创建新对象2. 使用 == 比较字符串,陷阱满

Python使用国内镜像加速pip安装的方法讲解

《Python使用国内镜像加速pip安装的方法讲解》在Python开发中,pip是一个非常重要的工具,用于安装和管理Python的第三方库,然而,在国内使用pip安装依赖时,往往会因为网络问题而导致速... 目录一、pip 工具简介1. 什么是 pip?2. 什么是 -i 参数?二、国内镜像源的选择三、如何

使用C++实现链表元素的反转

《使用C++实现链表元素的反转》反转链表是链表操作中一个经典的问题,也是面试中常见的考题,本文将从思路到实现一步步地讲解如何实现链表的反转,帮助初学者理解这一操作,我们将使用C++代码演示具体实现,同... 目录问题定义思路分析代码实现带头节点的链表代码讲解其他实现方式时间和空间复杂度分析总结问题定义给定

Linux使用nload监控网络流量的方法

《Linux使用nload监控网络流量的方法》Linux中的nload命令是一个用于实时监控网络流量的工具,它提供了传入和传出流量的可视化表示,帮助用户一目了然地了解网络活动,本文给大家介绍了Linu... 目录简介安装示例用法基础用法指定网络接口限制显示特定流量类型指定刷新率设置流量速率的显示单位监控多个

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

如何使用Java实现请求deepseek

《如何使用Java实现请求deepseek》这篇文章主要为大家详细介绍了如何使用Java实现请求deepseek功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.deepseek的api创建2.Java实现请求deepseek2.1 pom文件2.2 json转化文件2.2

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

Linux流媒体服务器部署流程

《Linux流媒体服务器部署流程》文章详细介绍了流媒体服务器的部署步骤,包括更新系统、安装依赖组件、编译安装Nginx和RTMP模块、配置Nginx和FFmpeg,以及测试流媒体服务器的搭建... 目录流媒体服务器部署部署安装1.更新系统2.安装依赖组件3.解压4.编译安装(添加RTMP和openssl模块