ESP32 JTAG除錯環境建立:2.ESP-PROG安裝與設定

JTAG全名為Joint Test Action Group,是一種國際標準測試協議(相容IEEE 1149.1),用於驗證設計與測試生產出的印刷電路板功能,而本章所介紹的ESP-PROG支援JTAG可以對ESP32/ESP8266系列產品進行除錯

我的ESP32實做書籍:我出書了 ESP32 物聯網專題
博客來網址:https://www.books.com.tw/products/0010901195


實做說明

JTAG全名為Joint Test Action Group,是一種國際標準測試協議(相容IEEE 1149.1),用於驗證設計與測試生產出的印刷電路板功能,而本章所介紹的ESP-PROG支援JTAG可以對ESP32/ESP8266系列產品進行除錯,ESP-PROG外觀如下圖(a),本次我們將會使用的是右下角的JTAG區,其腳位定義則如下圖(b)。

(a) ESP-PROG模組外觀
(b) ESP-PROG JTAG PIN腳位定義

1. 安裝ESP-PROG驅動程式

首先我們先將ESP-PROG用USB與電腦連接,並開啟電腦的裝置管理員(本機/右鍵/管理/裝置管理員),由於沒有安裝驅動程式,此時會裝置管理員應該會顯示有兩組其他裝置,一般是Dual RS232-HS及USB Serial Port,不過實際名稱可能會因為電腦版本不同而異。

接下來我們透過Zadig工具來安裝正確的驅動程式,先到Zadig的首頁https://zadig.akeo.ie/,並在下方的Download處點選Zadig 2.5下載後直接開啟。

Zadig開啟後,在上面的Option處點選「List All Devices」,將電腦中所有的USB裝置都顯示在下方的列表中。

接著在下方的裝置列表找到我們需要更新的驅動的裝置「Dual RS232-HS (Interface 0)」,請讀者注意這裡列表會有兩組USB裝置名稱都是「Dual RS232-HS」,請務必要挑選(Interface 0)這組。

確定挑選的是「Dual RS232-HS (Interface 0)」後,點選下方的Replace Driver按鈕,並稍後一陣子就會完成更新。

此時再開啟裝置管理員就可以看到安裝正確時的狀態(如下圖),一組為「Dual RS232-HS」,另外一組為「USB Serial Port (COM XX)」,就代表驅動程式安裝正確。

驅動程式安裝完成畫面

2. ESP-PROG與ESP32進行連線

下一步就是將ESP-PROG與ESP32進行連線,ESP-PROG的JTAG腳位分別為TMS、TCK、TDO、TDI,再加上GND一共五個腳位需要連接,其對應腳位請依照下表及下圖方式連接。

ESP-PROG與ESP32連接參考圖
ESP-PROGESP32備註
GNDGND(麵包板左側6)接地
TDI12(麵包板左側7)輸入
TDO15(麵包板右側4)輸出
TCK13(麵包板左側5)時脈
TMS14(麵包板左側8)模式選擇

連接完畢後即可準備進入偵錯模式,我們先修改上一節HelloWorld程式,在第二行新增一個廣域變數i,另外在第十行loop內增加一個i++,這個i用來展示變數監看視窗的功能,另外在i++這行的行號前方點一下滑鼠,會產生一個紅點(如下圖),這個就是所謂的中斷點,當偵錯開始後,程式一旦執行到紅點的地方就會暫停,使用者可再搭配步進執行來觀察程式動向。

3. 進入偵錯模式

接下來我們使用功能表的執行/啟動偵錯,或直接按快捷鈕F5來啟動偵錯環境。

偵錯啟動後,右上角會出現「偵錯工具列」,其功能簡要說明如下

繼續(F5)直接執行到下一個中斷點
不進入函式(F10)逐步執行,但不進入副程式
逐步執行(F11)逐步執行,且會進入副程式
跳離函式(Shift + F11)離開副程式回到主流程
重新啟動(Ctrl + Shift + F5)關閉本次偵錯,再重啟一次偵錯
停止(Shift + F5)停止偵錯,回到程式編輯功能

當程式完成上傳ESP32後,就會自動開始執行偵錯程序,讀者可點選下方的「偵錯主控台」視窗來觀察偵錯執行狀態,大約等候20-40秒的時間後,就會跳到第一次中斷,停在main.cpp的app_main()中,這是程式的進入點。

由於main.cpp不是我們要觀察的程式,此處直接按F5直接跳到下一個中斷點,就是我們設定的i++的位置,此時這一行會用黃色背景標示,提示使用者這是目前程式執行的位置。

接下來我們可以利用F10來步進執行,讓程式一步一步的往下執行。若需要監看變數數值,可以點選左側的執行按鈕 ,將滑鼠移動到「監看」窗格中,點選上方的+符號,輸入「i」,代表我們要監看變數i的數值,如此,我們就可以在每次中斷時,查看i的最新變化。

監看變數數值,輸入「i」
在每次中斷時,查看i的最新變化

要停止偵錯功能時,點選偵錯工具列的 ,即可終止偵錯回到程式編輯狀態,讀者可輸入自己的程式碼,利用上述偵錯及監看功能,提昇自己的程式邏輯能力。

4. 常見的錯誤訊息

筆者第一次在使用ESP-PROG時,發現有幾個常見的錯誤訊息,導致無法啟動偵錯,主要有以下兩點須注意:

  1. Failed to launch GDB: .point:11 ….
    • 此訊息代表無法找到除錯裝置,可能是ESP-PROG驅動程式未完成安裝,或者ESP-PROG與ESP32的JTAG線接錯,若確認驅動程式沒問題,請重新檢查線路是否接錯,或者重新拔插USB裝置,讓電腦重新偵測ESP-PROG及ESP32裝置,並記得查看platformio.ini中ESP32的Port號是否正確。
  1. 停在Info : telnet server disabled然後就完全沒反應
    • 這可能是您電腦找不到ESP-PROG裝置,建議您重新拔插ESP-PROG裝置,讓電腦重新偵測。

經過本章的說明,了解原來Arduino架構也是可以做步進執行來除錯,這樣未來在寫大型程式時,就更能分析錯誤資訊,讓應用開發能更加得心應手嘍。

Leave a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *