openocd调试esp32(通过FT232H)

之前在学习ESP32,其中有一部分课程是学习openocd通过JTAG调试程序的,因为我用的是ESP32-wroom,usb端口没有集成对应的usb转jtag的ft232,查了ESP32相关的资料(JTAG 调试 - ESP32 - — ESP-IDF 编程指南 latest 文档 (espressif.com))里面提到ESP32的JTAG适配器,ESP-WROVER-KIT开发板使用的是FT2232H,且开发板内部已经集成这个适配器。

 我查了很多资料,确定ESP32里面是没有集成FT2232H适配器的,但是官方还是保留了接口以便我们自行接入JTAG适配器。 

根据上面的接口可以连接对应的JTAG适配器。

当时脑子一热就买了FT232H,看到淘宝里面的评论说可以调试ESP32就买了,没想到这么难配置,找不到合适的资料。淘宝店家也只是发了FTDI的官方资料和原理图(和这个模块的原理图还不一样),反正是靠不住的,最终各种摸索之下找到配置方法。 

网上有说需要EEPROM去写值设置成JTAG模式,包括spec上也是说需要通过EEPROM进行config,没看的很详细,主要是我还要买个EEPROM?这也太麻烦了吧? 

后来自己又摸索了一下,发现可以通过FT_Prog软件,将模式切换成D2xx。

因为我这个型号的只有一个JTAG口,所以选择Hardware Specific时要选Port A,然后Port A-->Driver右侧选择D2xx Direct这个选项最后,上方选项卡Devices中选择Program,弹出来的框选Program完成即可。

但还是连接不上openocd,猜测没有驱动导致的么?

下载usb driver tool可以设置对应的驱动,设置好之后,貌似能成功检测到了。 Automatic USB driver installer for FTDI and LibUSB drivers (visualgdb.com)

也不知道对不对,看到网上教程说这么设置,之后在设备管理器里面就会有这个。

但是openocd也仅仅是检测到了,实际上跑不起来,会有问题。是cfg配置的问题。

GitHub - amirgon/ESP32-JTAG: ESP32 FT232H JTAG Debugging on Linux

上面是一模一样这个模块,JTAG Debug的配置说明,接线也有说明,看了之后才发现我之前接线是有误的,各位也可以检查一下有没有接错。

 把git hub上的cfg下载下来,放在espressif(esp的sdk)中的openocd路径中。

D:\Espressif\tools\openocd-esp32\v0.11.0-esp32-20221026\openocd-esp32\share\openocd\scripts\board

上面是我的路径,给你们参考,之后执行openocd的指令

openocd -f .\board\ft232h.cfg

这里上面都已经配置好了,红色Error的信息是扫描不到cfg中的esp32的cpu,所以这里把esp32接上电脑之后,再执行一次指令。

 成功的接通,openocd处于端口监听的状态了,但是这里还是有些问题的,下面的额信息Debug controller reset了,这里不确定是什么问题,通过espidf去尝试连接gdb,openocd也没有反应,说明这里还是有问题的。暂时没确定是什么问题,后续解决了再补充。

8月13日更新:

经过github上的引用资料,找到了乐鑫官方一个类似的帖子。

openocd & esp32 DevKitC on Linux - ESP32 Forum

上面使用的gdb和我现在用的不太一样,我之前用的是riscv32-esp-elf-gdb,后来在前面配置的openocd中使用的ft232h.cfg中,发现其source了esp32.cfg这个文件,进到esp32.cfg之后,发现里面使用的是xtensa的语句,所以是我前面使用的gdb工具错了。

换成上面这个指令,最后成功连接,但是一开始进入的位置并不是main函数,而且提示remote方式不支持run指令,需要使用continue,指令调用后,blink程序就会运行,开发板LED灯闪烁。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/88367.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

React如何配置env环境变量

React版本: "react": "^18.2.0" 1、在package.json平级目录下创建.env文件 2、在‘.env’文件里配置环境变量 【1】PUBLIC_URL 描述:编译时文件的base-href 官方描述: // We use PUBLIC_URL environment variable …

使用 PyTorch 逐步检测单个对象

一、说明 在对象检测任务中,我们希望找到图像中对象的位置。我们可以搜索一种类型的对象(单对象检测,如本教程所示)或多个对象(多对象检测)。通常,我们使用边界框定义对象的位置。有几种方法可以…

netty基础与原理

Netty线程模型和Reactor模式 简介:reactor模式 和 Netty线程模型 设计模式——Reactor模式(反应器设计模式),是一种基于 事件驱动的设计模式,在事件驱动的应用中,将一个或多个客户的 服务请求分离&#x…

windows任务栏右下角不显示网络图标解决方法

1、背景 我运行windows诊断服务之后,然后重启了一把电脑,结果发现电脑无法上网了,进一步发现任务栏右下角的网络显示图标也没有了,网络状态显示也是一条横线。 几经折腾终于给解决了,遇到了不少坑,记录一…

三、web核心防御机制(下)

文章目录 核心防御机制2.3处理攻击者2.3.1 处理错误2.3.2 维护审计日志2.3.3 向管理员发出警报2.3.4 应对攻击 2.4 管理应用程序 核心防御机制 2.3处理攻击者 任何设计安全应用程序的开发人员必须基于这样一个假设:应用程序将成为蓄意破坏且经验丰富的攻击者的直接…

双端口存储器原理实验

1.实验目的及要求 1.1实验目的 1)了解双端口静态随机存储器IDT7132的工作特性及使用方法。 2)了解半导体存储器怎样存储和读出数据。 3)了解双端口存储器怎样并行读写,并分析冲突产生的情况。 1.2实验要求 1)做好…

Oracle连接数据库提示 ORA-12638:身份证明检索失败

ORA-12638 是一个 Oracle 数据库的错误代码,它表示身份验证(认证)检索失败。这通常与数据库连接相关,可能由于以下几个原因之一引起: 错误的用户名或密码: 提供的数据库用户名或密码不正确,导致…

[HDLBits] Exams/2012 q1g

Consider the function f shown in the Karnaugh map below. Implement this function. (The original exam question asked for simplified SOP and POS forms of the function.) //

Three.js 设置模型材质纹理贴图和修改材质颜色,材质透明度,材质网格

相关API的使用: 1 traverse (模型循环遍历方法) 2. THREE.TextureLoader(用于加载和处理图片纹理) 3. THREE.MeshLambertMaterial(用于创建材质) 4. getObjectByProperty(通过材…

交换排序——选择排序和冒泡排序的区别是什么?

今天重温一下算法,其实刚开始我觉得冒泡排序和选择排序是一样的,因为他们排序过程中都是通过相邻的数据比较找到最小/最大的数据,通过不断思考和学习才明白,两者还是有区别的。 冒泡排序 概念 冒泡排序(Bubble Sort)&#xff0…

Django实现音乐网站 ⑽

使用Python Django框架制作一个音乐网站, 本篇主要是后台对歌曲类型、歌单功能原有功能进行部分功能实现和显示优化。 目录 歌曲类型功能优化 新增编辑 优化输入项标题显示 父类型显示改为下拉菜单 列表显示 父类型显示名称 过滤器增加父类型 歌单表功能优化…

OpenStack监控工具

OpenStack是一个开源的云计算管理平台项目,是一系列软件开源项目的组合。由NASA和Rackspace合作研发并发起,以Apache许可证(Apache软件基金会发布的一个自由软件许可证)授权。 OpenStack为私有云和公有云提供可扩展的弹性的云计算…

V3s uboot 通过env 修改LCD 参数信息

实际项目中我们可能使用各种参数的LCD 显示器,有7吋,4.3 寸等等,我这里使用的uboot 版本是U-Boot 2017.01-rc2 ,在make menuconfig 时候会填入lcd 配置信息,如下: 所以这里使用起来很不方便,查看…

无涯教程-Perl - readline函数

描述 此函数从EXPR引用的文件句柄中读取一行,并返回输出。如果要直接使用FILEHANDLE,则必须将其作为typeglob传递。 Simply readline function is equvivalent to <>. 语法 以下是此函数的简单语法- readline EXPR返回值 此函数在标量context中仅返回一行,而在列表…

章节7:Burp Intruder模块

章节7&#xff1a;Burp Intruder模块 参考资料 https://portswigger.net/burp/documentation/desktop/tools/intruder 01 Intruder模块作用与原理 原理 http://xxx.xx.com/bbs/index.php?namewuyanzu&mottogo 对请求参数进行修改&#xff0c;分析响应内容&#xff0…

Markdown编辑器的使用

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

MySQL多表关联查询

目录 1. inner join&#xff1a; 2. left join&#xff1a; 3. right join&#xff1a; 4.自连接 5.交叉连接&#xff1a; 6、联合查询 7、子查询 1. inner join&#xff1a; 代表选择的是两个表的交差部分。 内连接就是表间的主键与外键相连&#xff0c;只取得键值一致…

mysql的高级查询语句

目录 一、本文前言 二、高效查询方式 1&#xff09;指定指字段进行查看 2&#xff09;对字段进行去重查看 3&#xff09;where条件查询 4&#xff09;and 和 or 进行逻辑关系的增加 5&#xff09;查询取值列表中的数据 6&#xff09;between的引用 7&#xff09;like…

ACL2023:成分对比学习生成句子嵌入表示

title:Composition-contrastive Learning for Sentence Embeddings 很多基于对比学习的方法用在无监督语料中&#xff0c;通过最大化对齐同一句子的最小扰动&#xff0c;并且鼓励向量在广泛文本语料中的均匀分布。本文方法提出最大化文本与其短语成分的组合之间的对齐。 …

linux 学习————LNMP之分布式部署

目录 一、概述 二、LNMP环境部署 三、配置nginx 四、 配置php使nginx能够解析.php 五、配置mysql 六、配置discuz进行登录论坛访问测试 一、概述 LNMP代表 Linux、Nginx、MySQL、PHP&#xff0c;是一种常用的服务器架构。它由以下组件组成&#xff1a; Linux&#xff1a;作…