当前位置: 首页 > news >正文

ESP32-S3 自带usb/jtag初步尝试体验

一、背景

最近在做一台小机器,设备初步规划使用几个实体按钮,这样方便用户戴手套操作。但因为设备有一些需要配置的参数,有需要配备屏幕。但是开发时间比较紧。考虑再三,决定先在初步配备一个简单的控制箱。控制箱上不带屏幕。后期配备一个无线连接的屏幕。这样用户在需要设置参数的时候通过无线连接到设备上就可以配置。另一方面,如果用户不想使用无线连接的屏幕,也可以在后期开发一个app,只要设备接入无线局域网也可以控制设备。这时候就想到了使用ESP32。以前用过几次ESP32,但是ESP32-S3还是第一次用。因为ESP32-S3带有更多的IO,同时蓝牙支持BLE5.[ESP32支持双模蓝牙,其实也不错。]这次就决定使用ESP32-S3.

二、发现问题

经过一番电路设计、layout、制板、焊接之后,windows可以完美识别,并在设备管理器上呈现了两个设备。

一个是USB串行设备,一个是 USB/JTAG设备。一切似乎很完美。然后在vscode里面的esp-idf用blink example来测试配置工程。编译正常,但是令人疑惑的是当我用vscode的flash直接下载的时候。“start openocd”之后,就失败了。

提示信息大概如下(因为不想再浮现失败了,就没法截屏):

Warn : Transport "jtag" was already selected

[OpenOCD] Info : Listening on port 6666 for tcl connections Info : Listening on port 4444

[OpenOCD] for telnet connections

[OpenOCD] ❌ Error: libusb_open() failed with LIBUSB_ERROR_NOT_FOUND

Error: libusb_open() failed with LIBUSB_ERROR_NOT_SUPPORTED

[OpenOCD] ❌ Error: esp_usb_jtag: could not find or open device!

三、问题解决 

然后去官网浏览解决方案。找到一些openocd相关的教程。

测试发现openocd也正常运行,说明openocd安装本身没有问题。

只看到有一个用命令行烧写程序的教程,测试成功:

idf.py -p PORT flash
# 我这里将PORT改为了我的COM5

这再一次说明了我的设备,应该是驱动成功了。

四、最终解决方案

最终解决方案是在第二天解决的。其实就是按照前一天的思路找esp32-s3的官方usb/jtag驱动。

官网的网页如下:Configure ESP32-S3 built-in JTAG interface

里面提到windows系统可能会遇到LIBUSB_ERROR_NOT_FOUND 的问题。看来提示信息中的关键字就是“LIBUSB_ERROR_NOT_FOUND ”,只是最初没有想到。

解决方法如下:

在Powershell (wt命令)里面输入以下命令

Invoke-WebRequest 'https://dl.espressif.com/dl/idf-env/idf-env.exe' -OutFile .\idf-env.exe; .\idf-env.exe driver install --espressif

windows就会自动从上面提到的网址中下载驱动,并用idf-env去安装驱动。如果路径设置的好,可以将驱动直接下载到你已经存在的.espressif下。如果配置不好也没有关系,在安装好之后,可以手动将驱动安装文件转移到你自己的文件夹下。以保证下次安装的时候可以按照传统的方法更换驱动程序。

因为之前已经配置成功。这里只展示我手动删除设备和驱动之后,初次默认安装的驱动和手动选择指定驱动的地方。

 

 上图说明:

1.  2023/3/20/21:51:02的时候我手动删除了设备和驱动

2.  2023/3/20/21:51:08 我手动刷新,windows默认安装的驱动。并启动了设备。可以看到是随后配置和更新的是WINUSB驱动。

3. 2023/3/20/21:53:01 涉及的两条是配置了oem205,但是winusb并未启动。

如果你深入进去可以看到两个驱动的供应商不一样。一个是microsoft,另一个是libwdi。

总之在经过以上配置之后,就可以使用自带的usb/jtag下载程序了。

 

五、其它注意事项

idf-env的github链接,里面也提到了此命令。

上面命令成功的关键是设备的状态正常。我的设备有时候会在启动的时候进入特殊状态。这时程序没有正常跑,此时是不能正常烧写程序的。

做完这一步下一步就是使用openocd调试了。任重而道远,后会有期。

相关文章:

ESP32-S3 自带usb/jtag初步尝试体验

一、背景 最近在做一台小机器,设备初步规划使用几个实体按钮,这样方便用户戴手套操作。但因为设备有一些需要配置的参数,有需要配备屏幕。但是开发时间比较紧。考虑再三,决定先在初步配备一个简单的控制箱。控制箱上不带屏幕。后…...

前端性能优化总结

前端性能优化是指在设计和开发网站时,采取一些措施来提升网站的性能。这对用户来说是非常重要的,因为高性能的网站可以带来更好的用户体验,同时也有助于提升搜索引擎排名。一、常见前端性能优化措施常见的前端性能优化方法有:压缩…...

React(四) ——hooks的使用

🧁个人主页:个人主页 ✌支持我 :点赞👍收藏🌼关注🧡 文章目录⛳React Hooks💸useState(保存组件状态)🥈useEffect(处理副作用)🔋useCallback(记忆函数&#…...

iphone手机热点卡顿多次断连解决办法

文章目录解决方法检查一下几个地方:1.个人热点是否打开2.查看手机是否为4g3.查看手机的最大兼容性开关是否关闭!!很重要解决方法 检查一下几个地方: 1.个人热点是否打开 这个个人热点容易自动断开,先检查一下是不是…...

设置Typora图床(Github)

PicGo,Github,Typora Nodejs下载: Node.js PicGo下载: GitHub - Molunerfinn/PicGo: A simple & beautiful tool for pictures uploading built by vue-cli-electron-builder 选择downloads或release. 然后进行安装。 Gith…...

jira提交bug规范

一、目的 1)方便开发人员根据bug描述快速进行定位问题原因,减少沟通成本。 2)规范bug编写,可以提现测试团队的专业性、严谨性。 3)可以帮助产品、项目经理及其它人员快速了解bug。 二、说明 本文档主要描述了技术产…...

【数据结构】链表相关题目(中档题)

🚀write in front🚀 📜所属专栏:初阶数据结构 🛰️博客主页:睿睿的博客主页 🛰️代码仓库:🎉VS2022_C语言仓库 🎡您的点赞、关注、收藏、评论,是对…...

小菜鸟Python历险记:(第四集)

今天写的文章是记录我从零开始学习Python的全过程。在Python中函数是非常重要的,这里也可以称为方法。在前面分享的几篇文章中用到的方法有print(),str(),int().这些都是方法,而除了上面写的这几种内置方法以外,我们也可以自己在程序中自定义…...

字符函数和字符串函数【下篇】

文章目录🎖️1.函数介绍📬1.8. strstr📬1.9. strtok📬1.10. strerror📬1.11. memcpy📬1.12. memmove📬1.13. memcmp📬1.14. memset🎖️1.函数介绍 📬1.8. st…...

【CSS】盒子模型内边距 ② ( 内边距复合写法 | 代码示例 )

文章目录一、内边距复合写法1、语法2、代码示例 - 设置 1 个值3、代码示例 - 设置 2 个值4、代码示例 - 设置 3 个值5、代码示例 - 设置 4 个值一、内边距复合写法 1、语法 盒子模型内边距 可以通过 padding-left 左内边距padding-right 右内边距padding-top 上内边距padding-…...

uni-app ——使用uploadFile上传多张图片

前言:最近的工作中出现了一个功能点,具体写法我在前面的文章中已经阐述过,不过之前的情况是上传图片调用后端的一个接口,整个表单页面提交的时候调用的是另一个接口,我也从中学到了另外的一种方法,写到这里…...

Linux - 进程控制(进程等待)

进程等待必要性之前讲过,子进程退出,父进程如果不管不顾,就可能造成‘僵尸进程’的问题,进而造成内存泄漏。另外,进程一旦变成僵尸状态,那就刀枪不入,“杀人不眨眼”的kill -9 也无能为力&#…...

Python 可视化最频繁使用的10大工具

今天介绍Python当中十大可视化工具,每一个都独具特色,惊艳一方。 文章目录Matplotlib技术提升SeabornPlotlyBokehAltairggplotHoloviewsPlotnineWordcloudNetworkxMatplotlib Matplotlib 是 Python 的一个绘图库,可以绘制出高质量的折线图、…...

Windows与Linux端口占用、查看的方法总结

Windows与Linux端口占用、查看的方法总结 文章目录Windows与Linux端口占用、查看的方法总结一、Windows1.1Windows查看所有的端口1.2查询指定的端口占用1.3查询PID对应的进程1.4查杀死/结束/终止进程二、Linux2.1lsof命令2.2netstat命令一、Windows 1.1Windows查看所有的端口 …...

48天强训 Day1 JavaOj

48天强训 & Day1 & JavaOj 1. 编程题1 - 组队竞赛 组队竞赛_牛客笔试题_牛客网 (nowcoder.com) 1.1 读题 1.2 算法思想基础 我们应该尽量的让每一个队伍的中间值都最大化~我们应该尽量的让每一个队伍的最小值都足够小~前33%的不应该都作为每个队伍的最大值~ 接下来…...

崩溃的一瞬间

——我可以忍受黑暗,除非我从未见过光明 原来,人真的会崩溃,如果不是昨夜的眼泪,我到现在还不知道人为什么会在一瞬间崩溃。 刚和认识不久的女孩子聊完天准备入睡。忽然想到自己可能过几个月就要离开这座待了仅一年多的城市…...

13回归网络:HTTP/2是怎样的网络协议?

本篇文章我们先放下实践,回归网络,深入gRPC底层的HTTP/2协议,去探究一下框架底层网络协议的原理,提升对高性能网络协议的认知,相信读完这篇文章以后,我们就可以了解HTTP/2有哪些优势,为什么gRPC要使用HTTP/2作为底层的传输协议。 在众多研究HTTP/2的博客和资料中,最具…...

CSS学习笔记——基础选择器,字体属性,文本属性,三种样式表

文章目录基础选择器标签选择器类选择器多类名使用方式id选择器通配符选择器字体属性字体系列字体字号字体粗细文字样式复合属性文本属性文本颜色对齐文本装饰文本文本缩进行间距CSS的三种样式表行内样式表(行内式)内部样式表(嵌入式&#xff…...

第十四届蓝桥杯三月真题刷题训练——第 16 天

目录 第 1 题:英文字母 问题描述 输入格式 输出格式 样例输入 1 样例输出 1 样例输入 2 样例输出 2 评测用例规模与约定 运行限制 代码: 第 2 题:单词分析 题目描述 输入描述 输出描述 输入输出样例 运行限制 数组代码&…...

鸟哥的Linux私房菜 Shell脚本

第十二章、学习 Shell Scripts https://linux.vbird.org/linux_basic/centos7/0340bashshell-scripts.php 12.2 简单的 shell script 练习 #!/bin/bash# Program: # User inputs his first name and last name. Program shows his full name.read -p "Please in…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...

苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会

在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...

Python训练营-Day26-函数专题1:函数定义与参数

题目1:计算圆的面积 任务: 编写一个名为 calculate_circle_area 的函数,该函数接收圆的半径 radius 作为参数,并返回圆的面积。圆的面积 π * radius (可以使用 math.pi 作为 π 的值)要求:函数接收一个位置参数 radi…...

若依登录用户名和密码加密

/*** 获取公钥:前端用来密码加密* return*/GetMapping("/getPublicKey")public RSAUtil.RSAKeyPair getPublicKey() {return RSAUtil.rsaKeyPair();}新建RSAUti.Java package com.ruoyi.common.utils;import org.apache.commons.codec.binary.Base64; im…...

AxureRP-Pro-Beta-Setup_114413.exe (6.0.0.2887)

Name:3ddown Serial:FiCGEezgdGoYILo8U/2MFyCWj0jZoJc/sziRRj2/ENvtEq7w1RH97k5MWctqVHA 注册用户名:Axure 序列号:8t3Yk/zu4cX601/seX6wBZgYRVj/lkC2PICCdO4sFKCCLx8mcCnccoylVb40lP...