【ESP32專欄】ESP32 JTAG除錯環境建立:(二)ESP-PROG安裝與設定

作者:尤濬哲

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腳位定義

首先我們先將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)」,就代表驅動程式安裝正確。

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

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

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

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

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

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


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

 

 

 

 

 

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

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

1. Failed to launch GDB: .point:11 ….

此訊息代表無法找到除錯裝置,可能是ESP-PROG驅動程式未完成安裝,或者ESP-PROG與ESP32的JTAG線接錯,若確認驅動程式沒問題,請重新檢查線路是否接錯,或者重新拔插USB裝置,讓電腦重新偵測ESP-PROG及ESP32裝置,並記得查看platformio.ini中ESP32的Port號是否正確。

2. 停在Info : telnet server disabled然後就完全沒反應

這可能是您電腦找不到ESP-PROG裝置,建議您重新拔插ESP-PROG裝置,讓電腦重新偵測。

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

(作者為本刊共筆作者,原文連結,其專欄文章同步發表於作者部落格;責任編輯:謝涵如)

尤濬哲

Author: 尤濬哲

身兼助理教授/專欄作家/知名部落客,以及點點滴滴科技研發總監等身份,專長包括人工智慧、多媒體互動(Unity)、智慧互動裝置(APP、Arduino)、虛擬實境與擴增實境互動、IoT 實做開發。 學歷:中山大學資訊管理研究所 博士

Share This Post On

發表

跳至工具列