之前介紹瞭如何安裝 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會要求重啓。
六、官方的配置說明
官方的配置說明很詳細,我就不再贅述,這裏引用過來方便參考,後面補充了一些注意事項。
在 Eclipse 中,進入 Run > Debug Configuration,會出現一個新的窗口。在窗口的左側窗格中,雙擊 “GDB Hardware Debugging” (或者選擇 “GDB Hardware Debugging” 然後按下 “New” 按鈕)來新建一個配置。
在右邊顯示的表單中,“Name:” 一欄中輸入配置的名稱,例如: “Blink checking”。
在下面的 “Main” 選項卡中, 點擊 “Project:” 邊上的 “Browse” 按鈕,然後選擇當前的 “blink” 項目。
在下一行的 “C/C++ Application:” 中,點擊 “Browse” 按鈕,選擇 “blink.elf” 文件。如果 “blink.elf” 文件不存在,那麼很有可能該項目還沒有編譯,請參考 使用 Eclipse IDE 編輯和燒寫指南中的介紹。
最後,在 “Build (if required) before launching” 下面點擊 “Disable auto build”。
上述步驟 1 - 5 的示例輸入如下圖所示。
GDB 硬件調試的配置 - Main 選項卡
點擊 “Debugger” 選項卡,在 “GDB Command” 欄中輸入
xtensa-esp32-elf-gdb
來調用調試器。更改 “Remote host” 的默認配置,在 “Port number” 下面輸入
3333
。上述步驟 6 - 7 的示例輸入如下圖所示。
GDB 硬件調試的配置 - Debugger 選項卡
最後一個需要更改默認配置的選項卡是 “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
命令的說明請參考 上傳待調試的應用程序章節。在 “Load Image and Symbols” 下,取消選中 “Load image” 選項。
在同一個選項卡中繼續往下瀏覽,建立一個初始斷點用來在調試器復位後暫停 CPU。插件會根據 “Set break point at:” 一欄中輸入的函數名,在該函數的開頭設置斷點。選中這一選項,並在相應的字段中輸入
app_main
。選中 “Resume” 選項,這會使得程序在每次調用步驟 8 中的
mon reset halt
之後恢復,然後在app_main
的斷點處停止。上述步驟 8 - 11 的示例輸入如下圖所示。
GDB 硬件調試的配置 - Startup 選項卡
上面的啓動序列看起來有些複雜,如果你對其中的初始化命令不太熟悉,請查閱 調試器的啓動命令的含義章節獲取更多說明。
如果你前面已經完成 配置 ESP32 目標板中介紹的步驟,那麼目標正在運行並準備與調試器進行對話。按下 “Debug” 按鈕就可以直接調試。否則請按下 “Apply” 按鈕保存配置,返回 配置 ESP32 目標板章節進行配置,最後再回到這裏開始調試。
一旦所有 1 - 12 的配置步驟都已經完成,Eclipse 就會打開 “Debug” 視圖,如下圖所示。
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,我會在這裏分享我的一些技術文章,期待大家給我點贊和小星星哦~^_^