ESP32 使用 Eclipse 进行 Debug 调试

6 篇文章 2 订阅
3 篇文章 1 订阅

之前介绍了如何安装 OPENOCD ,这是在 ESP32 上进行 Debug 的必要程序。可以使用 GDB 进行单步调试等等。

但是 GDB 是命令行界面,对于新手和复杂的调试不太友好,所以我打算使用 Eclipse 来调用 OPENOCD 进行辅助调试。

 

一 、安装软件

首先要在 Ubuntu 系统上安装 JDK , 由于 oracle 官网上的 JDK 现在要求登录才能下载,所以为了避免麻烦,可以使用 openjdk 作为 JDK 的安装源。Ubuntu 系统下只需要输入下面一行命令就可以完成。

sudo apt-get install openjdk-8-jre

然后安装 Eclipse 软件,我在网上找到了如下教程,写的很好,我就不再赘述了,大家可以参考原博主的博客进行安装。

https://www.cnblogs.com/zyrblog/p/8548270.html

 

二、设置桌面快捷方式

安装好 Eclipse 之后 第一件事是给 Eclipse 设置桌面快捷方式 在桌面 使用文本编辑器新建 Eclipse.desktop 文件 内容如下:

[Desktop Entry]
Encoding=UTF-8
Name=eclipse
Comment=Eclipse IDE
Exec=/home/gengyuchao/eclipse/cpp-2019-06/eclipse/eclipse
Icon=/home/gengyuchao/eclipse/cpp-2019-06/eclipse/icon.xpm
Terminal=false
StartupNotify=true
Type=Application
Categories=Application;Development;

其中Exec 和 Icon 的软件路径要换成你安装Eclipse的路径 

右击该文件 选择 Permission 选项卡 允许作为可执行文件

双击运行Eclipse图标, 选择相信该可执行文件, 就可以启动了。

 

三、添加(复制) IDF 工程到 workspace 

git clone --recursive https://github.com/espressif/esp-idf.git

 

四、导入IDF工程

将下载好的 IDF 工程放到 workspace 文件下(只是建议)

至此我们就可以再 Eclipse 中进行编辑 ESP32 的工程了。

在IDF 中添加自己的工程文件夹 myProject

复制一个例程blink

可以在例程目录(blink)下添加编译选项 方便编译和下载

右击工程文件夹 ->Build Target -> Build 会弹出如下配置界面

添加我们常用的功能到Build Target

添加好之后工程目录下会有如下选项 双击可以执行命令进行编译和下载

常用的编译有 
 

Build (quick)make -j4
flashmake -j4 flash
cleanmake clean

 

 

五、引用官方教程安装GDB插件

在 Eclipse 中使用 GDB

标准的 Eclipse 安装流程默认安装调试功能,另外我们还可以使用插件来调试,比如 “GDB Hardware Debugging”。这个插件用起来非常方便,本指南会详细介绍该插件的使用方法。

首先,通过打开 Eclipse 并转到 “Help” > “Install New Software” 来安装 “GDB Hardware Debugging” 插件。

一路点击下一步确认直至安装完成,安装完成之后eclipse会要求重启。

 

六、官方的配置说明

官方的配置说明很详细,我就不再赘述,这里引用过来方便参考,后面补充了一些注意事项。

  1. 在 Eclipse 中,进入 Run > Debug Configuration,会出现一个新的窗口。在窗口的左侧窗格中,双击 “GDB Hardware Debugging” (或者选择 “GDB Hardware Debugging” 然后按下 “New” 按钮)来新建一个配置。

  2. 在右边显示的表单中,“Name:” 一栏中输入配置的名称,例如: “Blink checking”。

  3. 在下面的 “Main” 选项卡中, 点击 “Project:” 边上的 “Browse” 按钮,然后选择当前的 “blink” 项目。

  4. 在下一行的 “C/C++ Application:” 中,点击 “Browse” 按钮,选择 “blink.elf” 文件。如果 “blink.elf” 文件不存在,那么很有可能该项目还没有编译,请参考 使用 Eclipse IDE 编辑和烧写指南中的介绍。

  5. 最后,在 “Build (if required) before launching” 下面点击 “Disable auto build”。

    上述步骤 1 - 5 的示例输入如下图所示。

    Configuration of GDB Hardware Debugging - Main tab

    GDB 硬件调试的配置 - Main 选项卡

  6. 点击 “Debugger” 选项卡,在 “GDB Command” 栏中输入 xtensa-esp32-elf-gdb 来调用调试器。

  7. 更改 “Remote host” 的默认配置,在 “Port number” 下面输入 3333

    上述步骤 6 - 7 的示例输入如下图所示。

    Configuration of GDB Hardware Debugging - Debugger tab

    GDB 硬件调试的配置 - Debugger 选项卡

  8. 最后一个需要更改默认配置的选项卡是 “Startup” 选项卡。在 “Initialization Commands” 下,取消选中 “Reset and Delay (seconds)” 和 “Halt”,然后在下面一栏中输入以下命令:

    mon reset halt
    flushregs
    set remote hardware-watchpoint-limit 2
    

    注解

    如果你想在启动新的调试会话之前自动更新闪存中的镜像,请在 “Initialization Commands” 文本框的开头添加以下命令行:

    mon reset halt
    mon program_esp32 ${workspace_loc:blink/build/blink.bin} 0x10000 verify
    

    有关 program_esp32 命令的说明请参考 上传待调试的应用程序章节。

  9. 在 “Load Image and Symbols” 下,取消选中 “Load image” 选项。

  10. 在同一个选项卡中继续往下浏览,建立一个初始断点用来在调试器复位后暂停 CPU。插件会根据 “Set break point at:” 一栏中输入的函数名,在该函数的开头设置断点。选中这一选项,并在相应的字段中输入 app_main

  11. 选中 “Resume” 选项,这会使得程序在每次调用步骤 8 中的 mon reset halt 之后恢复,然后在 app_main 的断点处停止。

    上述步骤 8 - 11 的示例输入如下图所示。

    Configuration of GDB Hardware Debugging - Startup tab

    GDB 硬件调试的配置 - Startup 选项卡

    上面的启动序列看起来有些复杂,如果你对其中的初始化命令不太熟悉,请查阅 调试器的启动命令的含义章节获取更多说明。

  12. 如果你前面已经完成 配置 ESP32 目标板中介绍的步骤,那么目标正在运行并准备与调试器进行对话。按下 “Debug” 按钮就可以直接调试。否则请按下 “Apply” 按钮保存配置,返回 配置 ESP32 目标板章节进行配置,最后再回到这里开始调试。

一旦所有 1 - 12 的配置步骤都已经完成,Eclipse 就会打开 “Debug” 视图,如下图所示。

Debug Perspective in Eclipse

Eclipse 中的调试视图

 

按照以上内容配置完成后,记得要在系统中打开 openocd 这里介绍的插件并不会自动启动 openocd,直接使用 debug 功能会造成启动超时失败。

启动openocd

sudo openocd -f interface/ftdi/esp32_devkitj_v1.cfg -f board/esp-wroom-32.cfg

下面时我使用的配置页

 

 

七、OpenOCD基本操作

openocd无参数启动时默认使用当前目录下的openocd.cfg配置文件,建议把需要的配置写在这个文件里以方便使用。

openocd需要使用usb,建议把/usr/local/share/openocd/contrib/60-openocd.rules拷贝到/etc/udev/rules.d,这样openocd就有使用usb调试设备的权限了,不用每次sudo (配置完成后需要重启生效)

openocd.cfg里面重要的配置包括选择接口配置文件、选择接口类型、选择具体芯片

 

八、调试

配置完成后点击Debug或者在编辑器中点击后面的小三角 选中刚刚配置好的Debug模式 就可以开始进行断点调试了。

 

九、一些常用的调试方法

包括设置断点、单步调试、设置watch point等以后再补充。

 

 

欢迎大家关注我的博客和github,我会在这里分享我的一些技术文章,期待大家给我点赞和小星星哦~^_^

 

 

  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值