ESP32 使用 Eclipse 進行 Debug 調試

之前介紹瞭如何安裝 OPENOCD ,這是在 ESP32 上進行 Debug 的必要程序。可以使用 GDB 進行單步調試等等。

但是 GDB 是命令行界面,對於新手和複雜的調試不太友好,所以我打算使用 Eclipse 來調用 OPENOCD 進行輔助調試。

 

一 、安裝軟件

首先要在 Ubuntu 系統上安裝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
flash make -j4 flash
clean make 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,我會在這裏分享我的一些技術文章,期待大家給我點贊和小星星哦~^_^

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章