我的ESP32實做書籍:https://youyouyou.pixnet.net/blog/post/121105860
博客來網址: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)。

image

(a) ESP-PROG模組外觀

image

(b) ESP-PROG JTAG PIN腳位定義

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

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

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

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

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

 

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

 

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

ESP-PROG ESP32 備註
GND GND(麵包板左側6 接地
TDI 12(麵包板左側7 輸入
TDO 15(麵包板右側4 輸出
TCK 13(麵包板左側5 時脈
TMS 14(麵包板左側8 模式選擇


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

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

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

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

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

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

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

image   image

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

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

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

image

2. 停在Info : telnet server disabled然後就完全沒反應,這可能是您電腦找不到ESP-PROG裝置,建議您重新拔插ESP-PROG裝置,讓電腦重新偵測。
image

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

 

arrow
arrow
    全站熱搜

    夜市 小霸王 發表在 痞客邦 留言(0) 人氣()