【ESP32專欄】JTAG除錯環境建立:(一) 開發環境設定篇

作者:尤濬哲

對於以往有寫過其他類型程式的人來說,Arduino IDE其實並非是完整的開發工具,以筆者常在使用的微軟.net系列開發工具「Visual Studio」來說,先不論專案管理、資源管理等大型專案需要用到的工具,還有設計階段需要用到的程式碼自動提示(autocompletion)之外,就先以程式執行過程所需的除錯(Debug)工具來說則是完全缺乏。

對於程式設計師最需要用到的除錯工具包括中斷點(Breakpoint)、步進執行(Step Into)、變數監看(Watcher)等三大工具,這三大工具可以讓設計師完全掌握程式走向,「中斷點」可以在重要的地方暫停,然後用「步進執行」一步一步查看程式的動態,最後「變數監看」則可以知道數值目前狀態,了解變數變化的過程,因為缺少這些除錯工具,導致Arduino撰寫大型程式時非常艱難,大部分都是透過Serial拋出訊息來查看程式執行狀態,而程式中過多的Serial print導致結構過於混亂,也會影響程式執行效能。

不過其實這是可以解決的,Arduino架構也是可以像其他開發環境一樣,有程式碼自動提示、中斷點、步進執行、變數監看這些工具的,只是還需要兩項工具的支援,一個是改用有支援除錯的開發工具VSCode及PlatformIO,另外就是需要一組能支援JTAG除錯的工具ESP-PROG模組,其架構如下圖,本章將介紹如何建立具有除錯功能的Arduino開發環境。

如前面所述,Arduino IDE缺少了許多工具,因此本節我們先介紹如何安裝VSCode及PlatformIO開發工具,讀者會覺得比較奇怪的是,當本文說開發工具是VSCode及PlatformIO時,那到底是指VSCode?還是用PlatformIO呢?

應該這樣說比較精確:「是用VSCode底下的一個延伸模組名稱是PlatformIO來開發Arduino的應用」,有點像是Chrome瀏覽器底下可以安裝很多小工具,而PlatformIO就是VSCode底下的工具,所以我們先來簡介VSCode及他的安裝過程。

1. VSCode安裝

VSCode是微軟提供的開發工具,屬於.net系列開發工具Visual Studio .net(簡稱為VS.net)的簡易版,兩者最大的差異在於VS.net只支援微軟自己的開發語言例如C#、VB、ASP等,而VSCode則可以透過外掛模組來編輯多種程式語言,由於VSCode的穩定性及擴充性受到非常多開發者的愛用,本節我們會先安裝VSCode後,再安裝PlatformIO延伸模組。

安裝VSCode非常簡單,先到微軟的網站直接下載安裝檔。

VSCode下載網址:https://code.visualstudio.com/download

然後依照讀者使用的作業系統下載符合的安裝檔,如果讀者也是Windows的話,可以跟筆者一樣點選上圖紅圈部份:System Installer 64 bit。下載後,依照下面的步驟完成安裝。

(1) 確認同意授權條款

(2) 安裝選項:勾選「建立桌面圖示」及「加入PATH中」兩個選項即可

3. 點選安裝按鈕,進入程式安裝過程

4. 等候安裝過程完畢

5. 安裝完畢了,按完成,啟動VSCode

6. VSCode開啟後的畫面

7. 由於VSCode預設為英文界面,我們可以安裝中文延伸模組來改成中文界面

a.請點選左側延伸模組圖示
b.在關鍵字輸入「chinese」
c.找到中文(繁體)的延伸模組名稱
d.點右邊的install安裝按鈕
e. 完成安裝後,右下角會出現一個浮動視窗,內容是「請重開啟動以切換成中文」,點選Restart按鈕即可切換中文

完成中文畫面切換:

到這裡為止,我們已經完成VSCode的安裝與設定,下一步就是安裝PlatformIO的延伸模組來支援Arduino。

2. PlatformIO安裝

PlatformIO是一個嵌入式設備的延伸開發工具,關於PlatformIO的相關歷史,可以參閱官方網站 ,而安裝PlatformIO我們只須從VSCode的延伸模組中下載即可。

(1) 安裝PlatformIO延伸模組

a.點選左側延伸模組
b.於上方關鍵字處輸入「PlatformIO」
c.找到PlatformIO
d.點選右側的安裝按鈕,即可開始安裝。

e.安裝過程需要從網路下載許多其他模組,因此會佔用較多時間

f.安裝完成後,會跳出浮動視窗,請您重開VSCode

g.重開VSCode之後,再稍後一會就可以看到PlatformIO的圖示出現在左側的工具欄了

(2) 在PlatformIO執行HelloWorld

a.點選左下角的PlatformIO Home房子圖示,即可進入起始畫面
b.點選+New Project,建立第一個程式

c.在Name地方輸入計畫名稱為HelloWorld(讀者可以自己取名)
d.在Board的地方,選擇開發板為Espressif ESP-WROVER-KIT,由於支援板子眾多,可以先輸入ESP32來預先篩選
e.Framework選擇Arduino,ESP32開發可以選擇Arduino或Espressif IoT Development Framework兩種架構,本例則選擇使用Arduino。
f.Location則是選擇存檔的位置,預設在My documents內,讀者可以自行選擇其他位置存檔,這裡暫時用預設位置,保留勾選。
g.完成後,點選Finish即可

h.第一次的程式開啟會需要下載ESP32相容元件,又會花許上約5-20分鐘時間(視網路下載速度而定),但往後就可以快速開啟新計畫,請耐心等候。

i.完成開啟後,左側會出現檔案總管,資料夾底下為本程式的所有相關資源,我們要撰寫的程式碼在src/main.cpp,我們對main.cpp快速點兩下,就可以開啟程式碼,這裡可以發現PlatformIO的附檔名為.cpp與Arduino的.ino雖然不同,但語法是完全相同的。

3.HelloWorld測試

在程式碼視窗內輸入HelloWorld程式碼

1
2
3
4
5
6
7
8
#include  <span lang="EN-US">&lt;Arduino.h&gt;</span>
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println("Hello world!");
delay(1000);
}

程式碼結構與Arduino IDE的寫法是完全相同的,不過最上方的#include <Arduino.h>這個函式庫是每一個程式都一定要加的,另外就是Serial的速率我們選擇9600,因為這是預設值,要修改的話要進入platformio.ini初始化設定檔中設定。

接下來我們應該要來上傳,以往在Arduino IDE會有一個Port號要先選擇,在PlatformIO則不需要,PlatformIO會很自動的幫我們找到裝置的Port號後直接上傳。不過若您需要指定Port號的話,則一樣要用platformio.ini初始化設定檔來設定,這部份我們稍後會說明。

編譯及上傳程式的按鈕在PlatformIO則改在最下方,其圖示與Arduino一致,都是「編譯」為打勾 、「上傳程式碼」為向右箭頭 ,我們利用 將程式燒錄到ESP32中。

燒錄完成後,則要用插頭 圖示來開啟「序列監控視窗」,這樣就可以看到HelloWorld了,到這裡就可以確定我們安裝的VSCode及PlatformIO環境都是正確的沒問題。

若讀者需要修改Port號,或者序列埠的鮑率等設定,則可以開啟platformio.ini檔案,並在最下方加入設定,其中COM3為筆者電腦的序列Port號,請讀者依照自己的電腦環境修改正確的COM編號。

關於platformio.ini能設定的部份相當多,請自行參考官方說明 ,本書僅針對相關部份做說明,無法一一列舉。

至此,我們已經完成Arduino除錯環境建立的第一階段 開發環境設定,下一篇我們將會介紹如何接上ESP-PROG裝置,並用JTAG進行除錯。

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

尤濬哲

Author: 尤濬哲

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

Share This Post On

發表