OpenOCD ESP32 Linux 64位版本详解:实践指南

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:OpenOCD是开源芯片级调试器,广泛用于嵌入式系统开发,特别针对ESP32平台进行优化。ESP32是物联网设备常用的Wi-Fi和蓝牙SoC。OpenOCD支持JTAG/SWD接口,可烧录固件,进行设备初始化与复位,提供GDB服务器支持,及自定义脚本功能。此压缩包提供OpenOCD版本0.10.0,优化了ESP32支持,含有执行文件、配置脚本、库文件及帮助文档等。用户需解压、配置环境变量,通过命令行启动OpenOCD以连接ESP32设备。掌握OpenOCD对提升物联网开发效率和产品质量至关重要。 openocd-esp32-linux64-0.10.0-esp32-20191114.tar.gz

1. OpenOCD概述及在ESP32平台的应用

1.1 OpenOCD的简介

OpenOCD(Open On-Chip Debugger)是一个开源的项目,专为嵌入式系统和芯片级调试设计。它支持多协议接口,如JTAG和SWD,并能与GDB服务器无缝集成,从而实现对目标设备的控制和调试。作为一个强大的调试工具,OpenOCD为嵌入式开发者提供了一个统一的接口,用于实现固件下载、执行控制、内存查看和程序调试等功能。

1.2 OpenOCD在ESP32平台的应用

ESP32作为一款广受欢迎的低成本、低功耗的Wi-Fi和蓝牙双模微控制器,其开发与调试往往借助于OpenOCD的强大功能。使用OpenOCD可以实现对ESP32芯片的程序烧录、实时调试以及性能监控,是ESP32开发中不可或缺的工具之一。在本章中,我们将介绍如何在ESP32平台上配置和使用OpenOCD,以便读者能够有效地进行开发和问题诊断。

2. JTAG和SWD接口支持

2.1 JTAG接口的工作原理及应用

2.1.1 JTAG接口的定义和特性

JTAG(Joint Test Action Group),是一种国际标准测试协议,主要用于芯片内部测试。JTAG接口可以访问芯片内部的测试逻辑,以便于进行芯片级的测试、调试和编程。JTAG接口允许对芯片的信号引脚进行实时的观测和控制,能够提供一种标准的方式对硬件进行检测和诊断。

JTAG接口的主要特性包括:

  • 边界扫描(Boundary Scan) :允许对芯片的输入输出引脚进行控制,使得测试可以不依赖于芯片的物理接触。
  • 高级调试功能 :提供对芯片内部处理器核心的调试支持,可以进行断点、单步执行等调试操作。
  • 内建自测试(BIST) :允许对芯片内部的存储器和其他逻辑进行自我测试。
  • 程序下载和更新 :通过JTAG接口可以向芯片下载程序或更新固件。

2.1.2 JTAG接口在OpenOCD中的应用

OpenOCD(Open On-Chip Debugger)是一个开源项目,提供了JTAG接口的调试和编程支持。它支持广泛的硬件调试器和目标芯片,包括许多常见的微控制器和处理器。

在OpenOCD中,JTAG接口被用来进行以下操作:

  • 设备初始化 :OpenOCD通过JTAG接口初始化目标设备,准备后续的调试或编程。
  • 下载和烧录固件 :利用JTAG接口,OpenOCD可以将固件烧录到目标芯片的闪存中。
  • 实时调试 :通过JTAG接口,可以对目标芯片进行实时的调试操作,包括设置断点、单步执行、监视寄存器和内存内容等。

OpenOCD通过其配置文件来定义如何与目标芯片的JTAG接口通信。配置文件中包含了目标芯片的特定信息,如JTAG链的配置、时钟频率等,使得OpenOCD能够正确地与芯片交互。

# JTAG接口的OpenOCD配置示例
adapter_khz 1000
transport select jtag
jtag newtap esp32 cpu -irlen 4 -expected-id 0x2ba01477

在上面的配置文件片段中,我们设置了JTAG的时钟频率为1000kHz,指定了传输方式为jtag,并且定义了一个新的JTAG调试目标 esp32 ,指定了其ID。这样的配置使得OpenOCD能够识别和配置相应的JTAG接口。

2.2 SWD接口的工作原理及应用

2.2.1 SWD接口的定义和特性

SWD(Serial Wire Debug)是另一种常用的调试接口,它是ARM公司开发的一种两线串行通信协议,用于替代传统的四线JTAG接口。SWD提供了更高效的调试和编程解决方案,主要特点包括:

  • 简化布线 :由于只需要两条信号线(SWDIO和SWCLK),相比于JTAG的五条线(TDI、TDO、TCK、TMS、TRST),SWD大大简化了硬件调试的布线复杂性。
  • 更高的数据传输效率 :SWD提供更高的数据传输速率,使得调试信息的传输更加高效。
  • 兼容性 :SWD接口在物理层与JTAG兼容,但逻辑层有所不同,使用特定的协议进行通信。

2.2.2 SWD接口在OpenOCD中的应用

OpenOCD支持SWD协议,允许开发者通过SWD接口与目标设备进行交互。在使用SWD进行调试或编程时,OpenOCD同样需要配置文件来定义目标设备的调试接口和相关参数。

# SWD接口的OpenOCD配置示例
adapter_khz 1000
transport select swd
swd newaport cortex_m 0x2ba01477

在这个配置中,我们指定了调试器的传输方式为SWD,并且创建了一个针对cortex_m内核的新端口实例。这些配置信息会使得OpenOCD与目标设备的SWD接口建立正确的通信方式。

SWD接口在许多ARM Cortex系列的微控制器中广泛使用,比如STM32系列、LPC系列等。使用SWD接口,OpenOCD可以实现对这些设备的代码下载、执行控制、内存访问和寄存器读写等操作。由于其布线简单和性能优越的特点,SWD特别适合于在空间受限或者布线困难的场合。

通过上述的介绍,我们可以了解到JTAG和SWD接口在OpenOCD中的不同应用及其特性。这两类接口为不同需求和场景下的硬件调试提供了多样化的选择。接下来,我们将探讨如何准备固件烧录的过程,包括确认目标设备、开发环境以及获取OpenOCD和固件等步骤,为后续的操作打下基础。

3. 固件烧录过程

3.1 烧录前的准备工作

3.1.1 确认目标设备和开发环境

在进行固件烧录之前,开发者必须确保他们已经正确地识别了目标硬件设备,因为不同的微控制器或处理器可能需要特定的烧录协议和步骤。对于ESP32平台,开发者需要了解ESP32的基本硬件特性和连接接口。此外,开发环境的搭建是另一个重要的准备工作。一般而言,这涉及到安装操作系统上的依赖软件和驱动程序,例如对于ESP32,开发者通常需要安装用于烧录的工具如esptool.py,以及OpenOCD所需的驱动和工具链。

3.1.2 获取OpenOCD和固件

获取OpenOCD程序本身相对简单,大多数主流操作系统都提供了包管理器来安装。例如,在Ubuntu上,可以通过APT包管理器安装OpenOCD:

sudo apt-get install openocd

开发者还需要获取目标设备的固件文件。这些文件通常是二进制格式的,可以直接烧录到目标设备上。确保固件版本与目标设备兼容是十分关键的。此外,有时还需要获取固件烧录工具,比如Windows上需要的ESPTOOL,或者是Linux和macOS上的esptool.py。以下是一个使用pip安装esptool.py的示例:

pip install esptool

一旦开发者确认了目标设备,搭建好了开发环境,获取了OpenOCD和固件,就可以开始进行固件烧录了。

3.2 烧录过程详解

3.2.1 连接设备和配置OpenOCD

在开始烧录之前,开发者需要将目标设备通过适当的接口连接到开发主机上。对于ESP32,这通常是通过USB接口进行连接。设备连接好之后,接下来需要配置OpenOCD以匹配设备和接口。一般需要准备一个包含配置指令的OpenOCD配置文件。

OpenOCD配置文件通常是以 .cfg 结尾的文本文件,其中包含了一系列配置指令,用于指定目标设备、接口以及烧录协议等信息。例如,下面是一个简单的OpenOCD配置文件示例,它配置了ESP32作为目标设备,并且指定了使用JTAG接口:

source [find interface/ftdi/ft2232h.cfg]
source [find target/esp32.cfg]

adapter_khz 1000

在这个示例中, ft2232h.cfg 是用于FTDI FT2232H USB适配器的接口配置文件, esp32.cfg 是专门针对ESP32目标设备的配置文件。 adapter_khz 1000 指令设置了接口时钟频率为1000 kHz。

3.2.2 执行烧录命令和监控烧录过程

一旦OpenOCD配置完毕,并且设备已经连接,开发者就可以运行OpenOCD程序并开始烧录过程。这通常通过在命令行中输入如下命令来完成:

openocd -f esp32.cfg

当OpenOCD运行后,开发者可以通过telnet或gdb命令连接到OpenOCD服务器,以执行进一步的命令来控制烧录过程。以下是使用telnet的连接方式:

telnet localhost 4444

连接成功后,可以使用OpenOCD提供的命令进行烧录,例如使用 flash 命令烧录固件:

> flash write_image erase firmware.bin

这条命令将会擦除目标设备上的现有固件,并将新的 firmware.bin 固件烧录上去。开发者可以使用 reset 命令来重启设备,让新烧录的固件开始运行:

> reset

整个烧录过程可以通过OpenOCD的日志输出来监控,开发者可以根据输出信息确认烧录是否成功。如果在烧录过程中遇到任何问题,开发者可以查看OpenOCD提供的错误信息来诊断和解决问题。

4. 芯片初始化与复位操作

芯片初始化与复位操作是嵌入式系统开发和调试过程中的基础步骤。了解如何正确初始化微控制器以及执行复位操作对于确保设备正常运行至关重要。OpenOCD提供了强大的工具来管理这些过程,使得开发者能够高效地进行开发和故障排除。

4.1 芯片初始化过程

4.1.1 初始化的定义和重要性

在微控制器上电或者在使用前,进行初始化是必须的步骤。初始化过程中,微控制器会设置其内部寄存器和外设至预定义状态,准备进行软件引导和运行。正确执行初始化可以确保系统在稳定、可靠的环境下启动,并且能够按照预期运行。任何初始化过程中的错误都可能导致系统不稳定或无法启动。

4.1.2 在OpenOCD中的初始化操作

使用OpenOCD进行初始化的一个典型例子是对ESP32芯片执行初始化操作。OpenOCD允许用户通过脚本语言配置并执行初始化序列。以下是一些基本步骤:

  1. 加载芯片的配置文件,这个文件描述了芯片的特定配置,如JTAG ID和时钟速度。
  2. 连接到目标设备,这可能包括配置JTAG或SWD接口,并且根据需要设置适配器速度。
  3. 执行初始化脚本,这个脚本会通过OpenOCD的命令行或配置文件发出一系列命令来设置芯片。

下面是一个简化的OpenOCD初始化ESP32的配置脚本例子:

# openocd.cfg example for ESP32 initialization
adapter_khz 1000
transport select jtag
source [find target/esp32.cfg]
init
reset init

上述脚本中的 init 命令将初始化JTAG接口,而 reset init 将复位目标设备并执行初始化序列。这样的命令序列通过OpenOCD的内部机制来完成所需的硬件操作,包括设置和清除特定的寄存器位。

4.2 芯片复位操作

4.2.1 复位的定义和作用

复位是微控制器系统中一项常用的操作,它将微控制器的状态重置到已知状态。复位可以由软件发起,或者由硬件事件(如外部复位引脚的低电平信号)触发。复位后,微控制器将重新启动执行初始化代码。正确使用复位可以解决系统不稳定的问题,或者在调试过程中方便地重启程序。

4.2.2 在OpenOCD中的复位操作

OpenOCD提供了多种复位操作命令,以满足不同的复位需求。对于ESP32芯片,开发者可以使用如下命令进行复位:

  • reset halt : 这个命令会复位目标设备,并使处理器停止在复位后的某个已知点(通常是复位向量),等待进一步的调试操作。
  • reset run : 此命令将复位目标设备,并且在复位后继续运行程序。
  • reset init : 除了复位处理器外,还会执行初始化序列(如上文提到的 init 命令)。

使用OpenOCD执行复位操作的具体步骤如下:

  1. 首先确保已经建立了与目标设备的连接。
  2. 使用 reset 命令来复位目标设备。
  3. 在复位完成后,可以使用 halt run init 命令来控制复位后的行为。
reset halt

复位并停止处理器后,开发者可以在GDB中继续进行断点设置、单步执行或变量检查等操作。

芯片初始化与复位操作的深入理解

初始化和复位是微控制器操作中的核心概念,OpenOCD通过简洁的命令使得这些操作变得容易。然而,理解这些命令背后的原理对于高效开发和故障排除是至关重要的。开发者需要对目标设备的初始化过程有深入的理解,同时对不同复位操作的影响及其适用场景有充分的了解。

利用OpenOCD执行初始化和复位操作,可以有效地控制目标设备的行为,为后续的调试和软件开发打下坚实的基础。

5. GDB服务器功能

5.1 GDB服务器的原理和功能

5.1.1 GDB服务器的定义和特性

GDB(GNU Debugger)服务器是一种运行在目标硬件设备上,能够与GDB客户端进行通信的后台程序。它的核心功能是允许开发者从远程或本地主机对嵌入式设备进行程序调试。GDB服务器的主要特性包括:

  • 远程调试协议支持 :GDB服务器实现了GDB标准协议,能够与GDB客户端建立连接,并在两者之间交换调试命令和数据。
  • 多目标支持 :能够服务于不同的处理器架构和不同的调试需求。
  • 断点和步进控制 :支持设置断点、单步执行等调试操作。
  • 寄存器和内存查看 :允许用户查看和修改处理器的寄存器值以及内存内容。
  • 信号和异常处理 :能够处理目标系统发出的信号和异常,并将信息反馈给调试器。

5.1.2 GDB服务器在OpenOCD中的应用

OpenOCD作为一个开源的硬件调试工具,集成了GDB服务器的功能,使得用户能够通过GDB进行跨平台调试。在OpenOCD中,GDB服务器主要的应用方式包括:

  • 建立调试会话 :通过配置OpenOCD作为GDB服务器,启动调试会话,用户随后可以连接GDB客户端到该服务器。
  • 目标系统控制 :通过GDB服务器与目标硬件交互,控制程序运行,如启动、停止和复位目标系统。
  • 调试信息共享 :与GDB客户端共享目标系统上的调试信息,提供实时的调试反馈。
  • 脚本和配置集成 :OpenOCD的GDB服务器能够集成和执行自定义的调试脚本和配置文件,以满足特定的调试需求。

5.2 GDB服务器的使用方法

5.2.1 连接GDB和配置OpenOCD

要使用OpenOCD的GDB服务器功能,首先需要在OpenOCD的配置文件中启用GDB服务端口。例如,可以在OpenOCD的启动脚本中加入以下配置:

gdb_port 3333

这段配置指示OpenOCD监听TCP端口3333,等待GDB客户端的连接。接着,启动OpenOCD:

openocd -f interface.cfg -f target.cfg -c "gdb_port 3333"

在这里, interface.cfg target.cfg 是配置文件,分别针对调试接口和目标硬件。然后,在另一终端运行GDB客户端,并指定可执行文件:

riscv32-unknown-elf-gdb your_program.elf

连接到OpenOCD服务器:

(gdb) target remote :3333

这将把GDB连接到OpenOCD服务器的3333端口。

5.2.2 使用GDB进行调试和运行

连接后,可以使用GDB提供的命令进行各种调试操作。例如:

  • 加载程序 load 命令用于将程序加载到目标设备。
  • 设置断点 break main 在主函数入口处设置断点。
  • 步进执行 step next 命令用于单步执行程序。
  • 查看和修改变量 print var 查看变量值, set var = value 修改变量值。
  • 查看寄存器 info registers 显示寄存器内容。
  • 继续运行 continue 命令继续执行程序直到下一个断点。

下面是一个简化的GDB命令序列示例,展示了如何在OpenOCD的GDB服务器上进行基本调试:

(gdb) target remote :3333
Remote debugging using :3333
0x0000000000001174 in ?? ()
(gdb) load
Loading section .text, size 0x790 lma 0x0
Loading section .data, size 0x8 lma 0x790
Start address 0x0000000000000534, load size 1912 bytes
Transfer rate: 1 KB/sec, 956 bytes/write.
(gdb) break main
Breakpoint 1 at 0x534: file main.c, line 13.
(gdb) run
Starting program: /path/to/your_program.elf

Breakpoint 1, main () at main.c:13
13      {
(gdb) info registers
r0             0x0      0
r1             0x1      1
r31            0x0      0
pc             0x534    0x534 <main>
sp             0x7f0    0x7f0
(gdb) continue
Continuing.

在这个示例中,首先连接到了OpenOCD的GDB服务器,然后加载了程序,设置了断点,并启动了程序运行。通过这些基本的GDB命令,开发者可以对嵌入式设备上的程序进行深入的调试。

6. OpenOCD自定义脚本

6.1 OpenOCD脚本的编写和运行

6.1.1 OpenOCD脚本的语法和结构

OpenOCD脚本是文本文件,使用了特定的语法,通常以 .cfg 作为文件扩展名。这些脚本负责配置OpenOCD的运行参数和初始化序列。OpenOCD脚本支持一系列命令和关键字,这些命令通常与特定的硬件和调试任务相关联。脚本的结构通常包括以下部分:

  1. 加载其他配置文件 :使用 source 命令加载其他必要的配置文件。
  2. 接口和目标配置 :指定使用的接口类型和目标设备的配置。
  3. 命令执行 :启动特定的调试和编程任务,如初始化、烧录、复位等。
  4. 调试和监控命令 :如 log_output 设置日志输出级别, tcl_port 设置TCL接口端口等。
  5. 结束标记 :一般使用 end 命令来标记脚本的结束。

一个基本的OpenOCD脚本结构示例如下:

# 加载其他配置文件
source [find interface/ftdi/digilent-jtag-trace.cfg]
source [find target/esp32.cfg]

# 接口和目标配置
adapter_khz 500
set_part esp32

# 命令执行
init
reset init
flash_write_image erase /path/to/image.bin 0x10000

# 结束标记
end

6.1.2 编写OpenOCD脚本的步骤和技巧

编写OpenOCD脚本时,以下步骤和技巧可以帮助你创建高效且易于维护的脚本:

  1. 理解目标硬件和需求 :在开始编写脚本之前,清楚了解目标硬件的特性和你想要完成的调试任务。
  2. 参考现有脚本和文档 :查找与你的目标硬件和调试任务相关的现有脚本或配置文件作为参考。
  3. 使用逻辑分组和注释 :将脚本按照功能逻辑进行分组,并添加适当注释以提高可读性。
  4. 逐步测试和验证 :编写脚本后,通过逐步执行来验证每个命令和配置是否有效。
  5. 使用变量和宏 :合理地使用变量和宏可以增加脚本的灵活性和可重用性。

下面的示例展示了如何使用变量和宏简化脚本的编写:

# 定义变量
set BOARD_NAME "esp32-devkit"
set IMAGE_PATH "/path/to/$BOARD_NAME.bin"

# 使用变量
source [find interface/ftdi/$BOARD_NAME.cfg]
source [find target/esp32.cfg]

# 定义宏,实现烧录操作
proc烧录固件 {} {
  flash_write_image erase $IMAGE_PATH 0x10000
  reset run
}

# 调用宏执行烧录操作
烧录固件

6.2 OpenOCD脚本的应用实例

6.2.1 实例解析:烧录和调试ESP32

为了更具体地展示如何应用OpenOCD脚本,我们来看一个烧录和调试ESP32的实例。下面的脚本会执行以下任务:

  1. 连接到ESP32开发板。
  2. 烧录一个新固件到ESP32。
  3. 启动GDB服务器以进行调试。
# 加载ESP32特定配置
source [find interface/ftdi/digilent-jtag-trace.cfg]
source [find target/esp32.cfg]

# 初始化设置
adapter_khz 500
set_part esp32

# 烧录固件
flash erase_check 0x9000 0x10000
flash write_image erase /path/to/esp32.bin 0x10000
flash verify_image /path/to/esp32.bin 0x10000

# 启动GDB服务器
gdb_memory_map enable
gdb_target remote localhost:3333

# 重置并启动目标
reset init

6.2.2 实例解析:ESP32的自定义操作

接下来,我们将介绍另一个示例,该示例通过OpenOCD脚本执行ESP32的自定义操作。比如,我们要读取和写入某些寄存器的值,可以编写如下脚本:

# 同样加载ESP32配置和初始化设置
source [find interface/ftdi/digilent-jtag-trace.cfg]
source [find target/esp32.cfg]
adapter_khz 500
set_part esp32

# 初始化
init

# 连接GDB服务器
gdb_memory_map enable
gdb_target remote localhost:3333

# 执行自定义操作
# 读取寄存器值
reg r 0

# 写入寄存器值(示例:向寄存器0x10000000写入0x12345678)
reg w 0 0x12345678

# 执行程序到指定地址
reset halt
resume 0x40000000

以上脚本展示了通过OpenOCD如何进行基本的设备寄存器读写和程序控制操作,这些是自定义脚本应用中的常见需求。通过修改这些脚本中的命令和参数,可以针对特定的调试任务进行灵活配置。

7. 跨平台支持与版本0.10.0特性

7.1 OpenOCD的跨平台支持

7.1.1 跨平台支持的定义和重要性

跨平台支持是指软件能够在不同的操作系统(如Windows、Linux和macOS)上运行的能力。对于开发调试工具,如OpenOCD,这种能力尤其重要,因为它允许开发者在多种开发环境中工作,减少平台依赖性,提升开发效率。OpenOCD通过抽象硬件接口,为用户提供了一套统一的调试解决方案,这在一定程度上降低了用户在不同平台之间迁移的工作量。

7.1.2 OpenOCD在不同平台的使用方法

OpenOCD可以使用同样的代码库,在多种操作系统上编译和运行。用户需要根据不同的平台安装相应的编译工具链。例如,在Linux环境下,用户可能需要安装GCC编译器和make工具;而在Windows上,则可能需要使用MinGW或Cygwin环境。安装完毕后,通过在命令行中输入相应的编译命令,例如:

./configure
make
sudo make install

即可在多数UNIX-like系统上完成OpenOCD的编译和安装。对于Windows用户,OpenOCD提供了预编译的二进制文件,可以下载后直接使用。跨平台的特性使得用户能够根据个人喜好和项目需求灵活选择开发环境。

7.2 OpenOCD版本0.10.0的特性

7.2.1 新特性的介绍和应用

OpenOCD 0.10.0版本引入了一系列新特性,包括但不限于对新的调试器和芯片的支持、性能改进、bug修复以及对现有接口的增强。一些具体的新特性如下:

  • 支持更多种类的JTAG调试器;
  • 改进的内存访问速度;
  • 增加了新的调试命令;
  • 对特定芯片(例如新的ARM Cortex-M系列处理器)的支持。

这些特性能够进一步提升开发者调试的便利性和效率。例如,对于特定的芯片支持,开发者可以使用OpenOCD进行更深入的系统调试,包括访问新的硬件资源和使用新的调试功能。

7.2.2 与旧版本的对比和升级指南

当从旧版本升级到OpenOCD 0.10.0时,用户需要注意新版本对配置文件的兼容性问题。虽然大部分旧版本的配置文件仍然可用,但一些参数和命令可能已经被修改或弃用。建议用户阅读官方的升级指南,了解所有的变更点。

升级指南通常会包含以下内容:

  • 新增和移除的配置项及命令;
  • 已知的兼容性问题;
  • 建议的修改步骤。

为了安全起见,在升级之前,用户应该备份旧的配置文件,并在升级后进行充分的测试,确保升级后的版本可以正常工作。

**注意:** 在升级之前,务必检查硬件设备是否兼容新版本的OpenOCD,并确保所有的驱动程序和依赖项都已经更新。

升级过程中,开发者可能会用到 --version 标志来确认当前OpenOCD的版本,确保升级成功:

openocd --version

随着版本的更新,用户可以通过社区和官方文档来获取关于新特性的更多信息,以及如何将这些新特性融入日常的开发和调试工作当中。

通过本章节的介绍,开发者应该已经对OpenOCD的跨平台支持和版本更新有了基本的了解。随着技术的不断进步,OpenOCD的未来版本可能会引入更多激动人心的特性,因此持续关注其更新是非常重要的。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:OpenOCD是开源芯片级调试器,广泛用于嵌入式系统开发,特别针对ESP32平台进行优化。ESP32是物联网设备常用的Wi-Fi和蓝牙SoC。OpenOCD支持JTAG/SWD接口,可烧录固件,进行设备初始化与复位,提供GDB服务器支持,及自定义脚本功能。此压缩包提供OpenOCD版本0.10.0,优化了ESP32支持,含有执行文件、配置脚本、库文件及帮助文档等。用户需解压、配置环境变量,通过命令行启动OpenOCD以连接ESP32设备。掌握OpenOCD对提升物联网开发效率和产品质量至关重要。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值