作者:Dan Eddleman and Malavika Sajikumar
Linduino 是凌力爾特的 Arduino 兼容系統(tǒng),用于向凌力爾特集成電路的客戶分發(fā)固件庫(kù)和示例代碼。該設(shè)計(jì)基于Arduino Uno,使用Atmel ATmega328處理器,同時(shí)增加了14針QuikEval。?可插入近 100 個(gè)子板的連接器。這些電路板展示了凌力爾特的部件,包括模數(shù)轉(zhuǎn)換器、數(shù)模轉(zhuǎn)換器、高壓功率監(jiān)控器、溫度測(cè)量設(shè)備、射頻合成器、電池組監(jiān)控器等。
最初的Arduino Uno(可從 www.arduino.cc 獲得)包括一個(gè)很少使用的功能,使其能夠在切割PCB上的銅跡線后與Atmel硬件調(diào)試器配對(duì)。在此模式下,圍繞 Microsoft Visual Studio 構(gòu)建的免費(fèi)提供的 Atmel Studio 開發(fā)環(huán)境支持廣泛的調(diào)試功能,包括逐行代碼單步執(zhí)行、斷點(diǎn)支持和輕松查看變量值的功能。不幸的是,在Arduino Uno的PCB走線被切斷后,只有硬件調(diào)試器才能將新固件(草圖)加載到Arduino Uno;標(biāo)準(zhǔn)Arduino IDE通過USB電纜加載新固件的能力將丟失,直到用一點(diǎn)焊料重新連接走線。
當(dāng)我在2013年設(shè)計(jì)Linduino時(shí),我增加了一個(gè)規(guī)定,讓用戶可以焊接一個(gè)3引腳針座,這樣就可以隨時(shí)在正常操作和支持硬件調(diào)試器的操作之間進(jìn)行選擇,而無需進(jìn)一步焊接。
雖然 Arduino IDE 是一個(gè)絕佳的環(huán)境,讓用戶在 10 分鐘內(nèi)啟動(dòng)并運(yùn)行凌力爾特演示板和示例代碼,但其簡(jiǎn)單性是有代價(jià)的。它不提供更高級(jí)的 IDE 的功能,例如實(shí)時(shí)調(diào)試代碼的功能。當(dāng)我在 Linduino 上開發(fā)自己的代碼時(shí),我會(huì)使用 Atmel Studio 和 Atmel-ICE 硬件調(diào)試器。到目前為止,將 Arduino 草圖轉(zhuǎn)換為可以使用硬件調(diào)試器進(jìn)行調(diào)試的 Atmel Studio 項(xiàng)目是一個(gè)相當(dāng)復(fù)雜的過程。
最近,Atmel Studio 的 Visual Micro 加載項(xiàng)簡(jiǎn)化了此過程,因此我創(chuàng)建了本教程,以展示將 Linduino(或 Arduino)草圖轉(zhuǎn)換為可以使用 Atmel-ICE 硬件調(diào)試器進(jìn)行調(diào)試的表單所需的步驟。這篇博客的長(zhǎng)度可能令人生畏,但過程相當(dāng)簡(jiǎn)單,我已經(jīng)努力從頭到尾包含所有步驟。
話雖如此,我不會(huì)向全新的Arduino用戶推薦此過程。如果您編寫的代碼少于 100 行,Arduino IDE 很簡(jiǎn)單,而且可以正常工作。隨著代碼越來越大,并且您接受調(diào)試代碼所花費(fèi)的時(shí)間比編寫代碼所花費(fèi)的時(shí)間更多,您將欣賞硬件調(diào)試器提供的功能。但是,請(qǐng)理解,如果您錯(cuò)誤地覆蓋了Linduino的引導(dǎo)加載程序,您可能會(huì)使Linduino變磚。引導(dǎo)加載程序可以使用 Atmel-ICE 恢復(fù),因此 Linduino 并不是真正的磚砌,但如果您是不熟悉術(shù)語(yǔ)引導(dǎo)加載程序的新手用戶,這可能不適合您。
安裝 Linduino Library 和 Arduino IDE
在此處下載林杜伊諾圖書館

圖1.下載林杜伊諾圖書館。
下載完成后,打開包含 *.zip 文件的文件夾,然后右鍵單擊 LTsketchbook.zip將內(nèi)容提取到用戶的“文檔”文件夾中,如下所示。

圖2.從LT素描本中提取內(nèi)容。

圖3.用戶文檔文件夾。
在LTsketchbook.zip提取時(shí),下載Windows Installer for Arduino IDE版本1.6.7。在編寫本文時(shí),最新版本 1.6.10 和 1.6.11 無法使用此調(diào)試方法正常工作。

圖4.Arduino IDE.
下載完成后,運(yùn)行 Windows 安裝程序并接受所有默認(rèn)設(shè)置。安裝完成后,打開Arduino應(yīng)用程序并選擇文件→首選項(xiàng)。

圖5.打開 Arduino。
按“素描簿位置”旁邊的“瀏覽”按鈕,然后選擇新提取的 LT素描簿文件夾。此外,在“在檢查編譯和上傳期間顯示詳細(xì)輸出”旁邊,然后按“確定”。

圖6.提取的LT素描本。
選擇素描本→實(shí)用工具→MyBlink

圖7.我的眨眼。

圖8.我的眨眼上傳。
將Linduino連接到USB端口,如果出現(xiàn)提示,則允許安裝驅(qū)動(dòng)程序。然后,選擇“工具→端口→COMx”,其中 COMx 對(duì)應(yīng)于已分配給 Linduino 的 COM 端口。在下圖中,它是 COM3。如果列出了多個(gè)端口,則可能很難確定哪個(gè)端口對(duì)應(yīng)于您的Linduino。在這種情況下,請(qǐng)斷開 Linduino 的連接,然后再次選擇“工具→端口”以查看已刪除的 COM 端口。重新連接 Linduino 并選擇該端口。

圖9.Linduino 到 USB 端口。
接下來,按箭頭按鈕編譯并上傳到林杜伊諾。完成后,您將在Arduino IDE中看到“完成上傳”消息,Linduino的LED將開始閃爍。

圖 10.編譯并上傳我的眨眼。
配置視覺微
請(qǐng)仔細(xì)遵循接下來的幾個(gè)步驟,即使您尚未完全了解其目的。這些步驟對(duì)于 Visual Micro 的正確操作非常重要,原因?qū)⒃陂_始使用硬件調(diào)試器后變得清晰。
關(guān)閉所有打開的Arduino IDE應(yīng)用程序。使用 Windows 文件資源管理器,導(dǎo)航到 Documents/LTsketchbook/Utilities/MyBlink。在該文件夾中,將 MyBlink.ino 復(fù)制到 MyBlink.cpp。

圖 11.復(fù)制MyBlink.ino。
接下來,從MyBlink.ino中刪除所有內(nèi)容并將其保留為空文件。清除內(nèi)容的最簡(jiǎn)單方法是雙擊 MyBlink.ino .Arduino IDE使用MyBlink打開MyBlink.ino.cpp在第二個(gè)選項(xiàng)卡中加載。清除MyBlink.ino的所有內(nèi)容(鍵入Ctrl-A并按鍵盤上的刪除)。保存文件,然后再次按上傳箭頭。MyBlink.cpp的內(nèi)容將被編譯并上傳到Linduino中。
雖然這里沒有顯示,但最好在 MyBlink.ino 文件中添加注釋。
/* 此文件 MyBlink.ino 故意留空,代碼已移至 MyBlink.cpp。從 ino 文件中刪除所有代碼允許此項(xiàng)目與 Arduino IDE 和 Atmel Studio、Visual Micro 加載項(xiàng)和硬件調(diào)試器正常工作。*/

圖 12.編譯并上傳了MyBlink.cpp。
關(guān)閉 Arduino IDE 并下載 Atmel Studio Web 安裝程序。

圖 13.愛特梅爾工作室安裝程序。
運(yùn)行安裝程序并接受所有默認(rèn)值。安裝程序可能需要很長(zhǎng)時(shí)間才能完成,可能需要一個(gè)小時(shí)或更長(zhǎng)時(shí)間。如果 Atmel Studio 提示需要某些 Windows 更新,請(qǐng)嘗試使用其提供的鏈接安裝更新。
Atmel Studio 安裝完成后,打開 Atmel Studio 并選擇“工具→擴(kuò)展和更新”。

圖 14.擴(kuò)展和更新。
從“擴(kuò)展和更新”窗口的左側(cè)面板中,選擇“可用下載→全部”。從中央面板中,下載并安裝 Atmel Studio 7 的 Arduino IDE。Atmel Studio 可能會(huì)要求您注冊(cè)一個(gè)帳戶。完成后,按“立即重新啟動(dòng)”按鈕。

圖 15.Arduino IDE for Atmel Studio 7.
Atmel Studio 重新啟動(dòng)后,將打開一個(gè) Visual Micro 配置窗口,該窗口由上一步中用于 Atmel Studio 7 擴(kuò)展的 Arduino IDE 安裝。接受默認(rèn)值。將草圖位置和電路板管理器字段留空,然后按確定 如果配置窗口未自動(dòng)打開,請(qǐng)選擇 vMicro→IDE 并從下拉菜單中選擇配置管理器。

圖 16.接受默認(rèn)值。
此時(shí),Arduino IDE和Atmel Studio已經(jīng)安裝了許多USB驅(qū)動(dòng)程序。我建議重新啟動(dòng) Windows 以確保正確注冊(cè)所有新驅(qū)動(dòng)程序。
重新啟動(dòng) Windows 后,將 Atmel-ICE3 的電纜插入 USB 端口。您將看到一條消息,指出正在設(shè)置新設(shè)備。

圖 17.設(shè)備設(shè)置安裝。
修改林杜伊諾進(jìn)行硬件調(diào)試
如果尚未修改,這將是修改Linduino以進(jìn)行硬件調(diào)試的好時(shí)機(jī)。拔下Linduino上的所有連接,將其翻轉(zhuǎn)并剪切如下所示的痕跡。

圖 18.切斷痕跡。

圖 19.剪切跟蹤細(xì)節(jié)。
然后,將 1mm 3 針接頭焊接到 Linduino 中,并在未標(biāo)有 NORM 的引腳上放置跳線。
當(dāng)跳線處于如下所示的位置時(shí),Linduino 處于調(diào)試模式,需要硬件調(diào)試器和 Atmel Studio 對(duì) Linduino 進(jìn)行編程。Arduino IDE將無法在調(diào)試模式下對(duì)Linduino進(jìn)行編程。當(dāng)跳線處于NORM位置時(shí),Linduino將與Arduino IDE一起正常工作,但硬件調(diào)試器則不能正常工作。如果沒有可用的 1mm 3 針接頭,上面顯示的切割將啟用調(diào)試模式。焊接在切口或跳線孔上的 NORM 引腳將重新啟用正常工作。

圖 20.焊接在 NORM 引腳上。

圖 21.JTAGICE3 連接器。
按如下所示的方向?qū)?Atmel-ICE 的 6 針連接器插入 Linduino 的 6 針 ISP 接頭上。

圖 22.Atmel-ICE 的 6 針連接器位于 Linduino 的 6 針 ISP 接頭上。
對(duì)于那些熟悉Arduino電路和操作的人來說,在調(diào)試模式下,ATmega328P的RESET引腳用于傳輸有關(guān)內(nèi)存,寄存器值,斷點(diǎn)等的所有數(shù)據(jù),而不會(huì)中斷IO引腳。Arduino的自動(dòng)復(fù)位(從FTDI的USB到串行DTR引腳耦合的交流電)與ATmega328P斷開連接。對(duì)于普通用戶來說,沒有必要了解這些細(xì)節(jié)就可以有效地使用硬件調(diào)試器。
配置我的眨眼
重新啟動(dòng) Windows 后,將 Atmel-ICE3 的電纜插入 USB 端口。您將看到一條消息,指出正在設(shè)置新設(shè)備。

圖 23.新設(shè)備設(shè)置。
如果您尚未這樣做,請(qǐng)重新連接PC和Linduino之間的USB電纜。
重新啟動(dòng) Atmel Studio。選擇vMicro→打開現(xiàn)有Arduino項(xiàng)目。

圖 24.打開現(xiàn)有的 Arduino 項(xiàng)目。
導(dǎo)航到 Documents→LTsketchbook→Utilities→MyBlink 文件夾,然后選擇 MyBlink 文件。如上所述,在使用Visual Micro打開任何Arduino項(xiàng)目之前,最好將*.ino文件復(fù)制到*.cpp文件,并從*.ino文件中刪除所有內(nèi)容。我們?cè)诒窘坛痰纳弦徊街袨?MyBlink 做到了這一點(diǎn)。如果不創(chuàng)建 *.cpp 文件,Visual Micro 將創(chuàng)建一個(gè)新的臨時(shí)文件夾,并將您的項(xiàng)目復(fù)制到該文件夾中。生成的復(fù)制更難與硬件調(diào)試器一起使用。

圖 25.選擇“我的眨眼”。
Linduino 與 Arduino/Genuino Uno 板兼容,因此請(qǐng)選擇 vMicro→Board→Arduino/Genuino Uno。

圖 26.Arduino/Genuino Uno.
選擇“vMicro→Compiler→Verbose”以在編譯步驟中顯示更多信息。

圖 27.詳細(xì)編譯器選項(xiàng)。
選擇 vMicro→Uploader→Programmer→Atmel Studio Device Programming,指定應(yīng)使用 Atmel-ICE3(或其他與 Atmel Studio 兼容的硬件調(diào)試器)對(duì) Linduino 進(jìn)行編程。

圖 28.愛特梅爾工作室設(shè)備編程。
此外,選擇vMicro→Uploader→始終使用Programmer進(jìn)行上傳(而不是端口/IP)。

圖 29.始終使用程序員進(jìn)行上傳。
選擇 vMicro→Debugger→Atmel Studio Debugger 以指示將使用硬件調(diào)試器。

圖 30.愛特梅爾工作室調(diào)試器。
接口設(shè)置
選擇“調(diào)試”→“啟動(dòng)調(diào)試并中斷”。

圖 31.開始調(diào)試并中斷。
應(yīng)出現(xiàn)一個(gè)窗口,詢問接口設(shè)置。選擇 Atmel-ICE、ATmega328P 和 ISP,然后按“應(yīng)用”。

圖 32.接口設(shè)置。
如果您收到一條消息,請(qǐng)選擇連接的工具和界面,然后重試,請(qǐng)繼續(xù)。

圖 33.連接的工具和界面。
在要出現(xiàn)的下一個(gè)窗口中,選擇 Atmel-ICE3 和 debugWire。debugWire是一種調(diào)試模式,允許使用微控制器的RESET引腳傳輸所有信息。啟用后,固件將使用調(diào)試線加載到微控制器。
如果在啟用調(diào)試線時(shí)嘗試使用 Arduino IDE 加載固件,上傳將失敗。為了將來參考,如果遇到此問題,請(qǐng)選擇“調(diào)試→禁用調(diào)試線并關(guān)閉”以重新啟用Linduino的默認(rèn)引導(dǎo)加載程序。如果該菜單選項(xiàng)灰顯,則可能需要在 Atmel Studio 中加載項(xiàng)目才能使其可選。

圖 34.選擇“調(diào)試器/程序員”。
選擇“調(diào)試”→啟動(dòng)調(diào)試并再次中斷。如果“設(shè)備編程”窗口再次出現(xiàn),您可能還必須關(guān)閉該窗口。
此時(shí),您可能會(huì)收到一條消息,通知您即將啟用 debugWire。盡管該消息看起來是一個(gè)錯(cuò)誤,但這是 Atmel Studio 讓您知道它即將啟用 debugWire 的方式。如果演示板連接到Linduino的QuikEval連接器,請(qǐng)?jiān)诎础笆恰卑粹o之前將其卸下。您可以在啟用調(diào)試線后重新插入演示板。

圖 35.啟動(dòng)失敗。
啟用 debugWire 后,將顯示一條消息,提示您切換目標(biāo)電源。要切換電源,請(qǐng)從 Linduino 上拔下 USB 電纜,然后重新插入。如果您使用的是 12V 交流電源,請(qǐng)同時(shí)斷開它以從 Linduino 上卸下所有電源。

圖 36.已啟用調(diào)試線。
首次啟用 debugWire 后,可能需要再次選擇“調(diào)試→啟動(dòng)調(diào)試和中斷”。如果“設(shè)備編程”窗口再次出現(xiàn),您可能還必須關(guān)閉該窗口。等待構(gòu)建和寫入完成,如 Atmel Studio 窗口底部的狀態(tài)吟游詩(shī)人所示。

圖 37.狀態(tài)欄。
加載并執(zhí)行程序
MyBlink 草圖加載到 Linduino 中,并在 init() 語(yǔ)句處暫停。如果按 F5,程序?qū)?zhí)行。您還可以通過 MyBlink 放置斷點(diǎn)或單步,其方式與使用 Microsoft Visual Studio 調(diào)試其他軟件的方式相同。

圖 38.MyBlink Debugging AtmelStudio.
請(qǐng)注意,當(dāng)您退出 Atmel Studio 時(shí),debugWire 會(huì)自動(dòng)禁用。禁用debugWire后,將3針接頭移動(dòng)到NORM位置可恢復(fù)正常操作,Linduino可以再次與標(biāo)準(zhǔn)Arduino IDE一起使用。但是,Atmel Studio 有時(shí)無法自動(dòng)禁用 debugWire。在這種情況下,可以通過在 Atmel Studio 中打開項(xiàng)目并選擇“調(diào)試→禁用調(diào)試線并關(guān)閉”來手動(dòng)禁用調(diào)試線。
為避免混淆,建議您在關(guān)閉 Atmel Studio 之前始終禁用 debugWire。
結(jié)論
Arduino IDE簡(jiǎn)化了新手用戶的固件開發(fā),同時(shí)為更高級(jí)的用戶提供了一個(gè)交換代碼的通用環(huán)境。但是Arduino IDE的簡(jiǎn)單性是通過避開更高級(jí)的IDE的功能來實(shí)現(xiàn)的。本教程介紹了 Linduino 如何通過添加跳線來實(shí)現(xiàn) Atmel Studio IDE、Visual Micro 加載項(xiàng)和 Atmel-ICE3 硬件調(diào)試器提供的高級(jí)功能。
凌力爾特的 Linduino 不隸屬于官方 Arduino 團(tuán)隊(duì),但凌力爾特認(rèn)識(shí)到,Linduino 之所以成為可能,是因?yàn)?Arduino 團(tuán)隊(duì)對(duì)開源社區(qū)的承諾。請(qǐng)考慮在 www.arduino.cc 支持他們。
故障 排除
在“設(shè)備編程”窗口中,如果在單擊“應(yīng)用”時(shí)看到如下所示的連接問題,一個(gè)可能的原因是您在打開項(xiàng)目時(shí)選擇了 .cppproj 而不是 .atsln 文件。

無法連接。
下圖顯示了關(guān)閉“設(shè)備編程”窗口后的錯(cuò)誤消息。

設(shè)置失敗。
如果無法讀取設(shè)備簽名,請(qǐng)確保連接器已正確插入。

無法讀取設(shè)備。
如果需要固件更新,請(qǐng)?jiān)试S其完成。

需要固件更新。
審核編輯:郭婷
-
集成電路
+關(guān)注
關(guān)注
5452文章
12572瀏覽量
374552 -
連接器
+關(guān)注
關(guān)注
104文章
16139瀏覽量
147046 -
Arduino
+關(guān)注
關(guān)注
190文章
6526瀏覽量
196933
發(fā)布評(píng)論請(qǐng)先 登錄
使用帶有DAP miniwiggler硬件的memtool進(jìn)行閃存,如何使用memtool進(jìn)行調(diào)試?
為什么Config0/1 中的 Boot Select 設(shè)置在 Keil ICE 調(diào)試模式下無效呢?
AVR開發(fā)者福音:ICC8AVR-可直接使用jtag mkii、Atmel-ICE等仿真...
嵌入式硬件調(diào)試和軟件調(diào)試
Visual Studio + Micro 和 ESP8266 Arduino的錯(cuò)誤問題求解
如何使用PE Micro進(jìn)行雙核發(fā)布調(diào)試?
Deterministic ICE App 解決 ICE 局限性問題
Atmel Studio 6軟件中如何調(diào)試ARM Cortex-M
微雪電子Atmel-ICE-CAVR仿真器簡(jiǎn)介
微雪電子Atmel-ICE AtmeAVR仿真器簡(jiǎn)介
微雪電子Atmel-ICE-B2 Atmel-ICEAVR仿真器簡(jiǎn)介
使用Atmel-ICE進(jìn)行AVR單片機(jī)量產(chǎn)編程
如何進(jìn)行硬件調(diào)試?
設(shè)置Linduino、Visual Micro和Atmel-ICE進(jìn)行硬件調(diào)試
評(píng)論