LinkIt Smart 7688 Duo 之 Arduino COM埠閃退篇
本文將說明LinkIt Smart 7688 Duo 的 Arduino COM port 常見的問題與處理方式
文:Ted Lee李俊德 個人CC授權發布於CAVEDU blog [1]
延伸閱讀:LinkIt Smart 7688 Duo-Wi-Fi 掛點急救篇
Q:我的7688 Duo(以下簡稱7688D)在Arduino IDE上時常行蹤飄忽不定,有時會在燒錄Arduino草稿碼(sketch)(以下簡稱Arduino程式)之前找不著指定的COM埠(port),有時程式燒到一半它就不見了。更糟的是,還會有程式順利燒好了,原本配置的埠卻也不見,再也找不到? A: 問題思考 在探究問題的根源之前,我們需要先了解Arduino程式如何在7688D上執行的整個過程,將之整理為圖1。 以Arduino IDE寫好的程式對作業系統來說皆屬於應用程式的性質,此類應用程式會呼叫作業系統的系統服務(system services),並透過驅動程式將此程式傳到Arduino晶片上。Arduino晶片上的啟動程式(bootloader),以啟動程式簡稱)會將之載入內部的記憶體後不斷地重覆執行(Arduino程式會循環地執行loop()副程式區塊(block)內的程式碼)。 因此,先排除硬體故障和作業系統錯誤的可能性(可用另一片正常的Arduino交叉測試)與Arduino程式的撰寫錯誤(可找另一可執行無誤的程式替換),我們可以合理懷疑都是驅動程式或啟動程式「惹的禍」!
圖1:Arduino程式在7688D上從燒入到執行的一連串過程[2]
本問題的解法有三[3]: 一. 重置MCU 如開發手冊(Developer's Guide)的3.1節所述,按下MCU重置鈕(MCU Reset Button) 後讓ATmega32U晶片重新啟動(reboot)。
圖2:重置MCU
二. 重灌驅動程式 在Windows作業系統的裝置管理員(device manager)內確認7688D的驅動程式是否運作正常。如果異常,請参考本文的「複習」一節重新再安裝一次適合您電腦作業系統版本的驅動程式。
圖3:可從裝置管理員中確認7688D驅動程式是否正確被作業系統識別(recognize)。[4]
補充說明:在您玩7688D時是否曾注意到這個COM埠,有時名稱是B(啟動程式COM埠)、有時卻出現G(一般COM埠)呢?原因是這樣的:- 啟動程式COM埠:這個COM埠是由ATmega32U4上的啟動程式提供。它出現的時機有二:
- 當使用者剛重新燒錄ATmega32U4的啟動程式但還未燒錄Arduino程式時,這個COM埠會出現。
- 當使用者快速按兩下MCU重置鈕時,此COM埠會短暫出現後才切換到Arduino程式提供的COM埠。
- 一般COM埠:這個COM埠由Arduino程式提供(使用者本身沒有寫它,但Arduino函式庫(library)一定會連結)。如果Arduino程式錯誤或寫壞記憶體時,這個COM埠就可能會消失。
- 將Caterina-smart7688.hex(通常放在C:\Users\使用者名稱\AppData\Local\Arduino15\packages\LinkIt\hardware\avr\0.1.6\bootloaders\caterina\之下)複製到USB隨身碟(handy drive)。
- 將此隨身碟(以USB-A1稱之)插到7688D上。
- 使用Putty工具以SSH(Secure Shell)方式連入7688D後(注意:使用SSH連線時你的電腦和7688D需在同一網段下),下達:
- 成功重燒妥啟動程式的畫面如圖4所示:
圖4:以AVRDUDE指令重燒啟動程式的成功畫面。
複習(review)開發環境(development environment)設定(setup) 根据MTK(MediaTek,聯發科)的線上版開發手冊之第2小節預先準備好後續的開發環境:- 將韌體(firmware)的版本更新(update)到最新版(筆者撰稿時為9.3)。
- 安裝6.4版的Arduino IDE。
- 在開發板管理程式(board manager)內指定JSON格式的擴充套件(package)下載網址(http://download.labs.mediatek.com/package_mtk_linkit_smart_7688_index.json),以安裝7688D识別資訊。
- 驅動程式安裝:
- Windows 7:從 http://download.labs.mediatek.com/mediatek_linkit_smart_7688_duo-windows-com-port-driver.zip下載後解压縮,在inf档案上按滑鼠右鍵選安擇安裝(請無視Windows的安全性警告,強迫安裝即可)。
- Windows 8:請先停用驅動程式強制的數位簽章(signature),再重覆上述在Win 7系統的安裝步驟即可完成。其中,停止數位簽章的方法[7]詳列如下:
- 將滑鼠移到桌面右上角,選擇設定齒輪。
- 在設定選單中點撃變更電腦設定。
- 在電腦設定選單中點撃:一般®進階設定®立即重新啟動。
- 在選擇選項選單中點撃疑難排解。
- 在疑難排解選單中點撃進階選項。
- 在進階選項選單中點撃啟動設定。
- 在啟動設定選單中點撃重新啟動。
- 重新開機後,在啟動設定選單中點撃7) 停用驅動程式強制簽章。然後電腦會自動重新開機。
- Windows 10:7688D驅動程式已內建,但需額外設定(第一次將7688D接到電腦時設定妥即可)。
- 連接7688D與電腦。
- 在700毫秒(ms)[8]內快速按压MCU(Micro Controller Unit,微控制單元)[9]重置鈕二次。
- Ubuntu:和Windows 10同,驅動程式已自動被掛載到(mount)在/dev目錄下的ttyUSBx(類UNIX(UNIX-like)的檔案系統(file system)規定所有週邊的硬體裝置(peripheral devices)皆以檔案(file)的方式存放在/dev(device)內)。其中,數字x在不同機器上會顯示不同的值。
- OS X:Apple Mac上的作業系統OS X也是從UNIX某個版本修訂而來的。因此,同上述的Ubuntu,7688D的驅動程式會被掛載到/dev/tty.usbmodemxxxx。其中,數字xxxx在不同機器上出現不一樣的數值。
留言 💬 (0)
還沒有留言,來當第一個。