在前一篇中,我們已經知道如何讓 Arduino Uno 進入 DFU mode,這一篇我們來學習如何用 FLIP 更新 Atmega8U2 的韌體。我將以 Arduino-usbserial 示範如何燒錄韌體。
準備韌體檔
Arduino-usbserial 的韌體檔座落於 "arduino-00xx\hardware\arduino\firmwares\arduino-usbserial\" 這個資料夾:
▲ Arduino-usbserial-uno.hex 是給 Uno 用,而 Arduino-usbserial-mega 則是供 Mega 2560 使用
你也可以連到底下的網址,直接從網路下載 hex 檔:
下載畫面:
我的板子是 Uno,所以我選擇 Arduino-usbserial-uno.hex。
用 FLIP 更新 Atmega8U2 的韌體
我們第一步是讓 Arduino 進入 DFU mode。在還沒進入 DFU mode 前,你在「裝置管理員」裏看到的裝置是 "Arduino UNO (COMx)"
現在拿出一條連接線,一端接到 GND,然後另一端輕輕觸碰一下 Atmega8U2 的 RESET 接腳:
當 Arduino 進入 DFU mode 後,你在「裝置管理員」裏看到的裝置會變成 AT90USB82:
接著打開 Atmel Flip,開啟後畫面會是這樣,一開始視窗上大部份功能都是失效的 (Disabled),不能點:
先點一下左上角工具列的第一個圖示 ("Select a Target Device"):
選擇 "AT90USB82" 後按「確定」:
▲ 注意不要選錯了!是選擇 "AT90USB82",而非 "Atmega8U2"
接著點工具列第二個圖示 (長得像 USB cable 的圖示),然後選 USB:
如果一切順利,這時 Flip 視窗上所有功能會變成有效的 (Enabled),而且圖示會變成彩色的:
再來是點 "File > Load HEX File…",載入 Arduino-usbserial-uno.hex:
按一下 Run 把 hex 檔寫到 Atmega8U2 晶片上:
最後按一下 Start Application:
這時候「裝置管理員」裏就會看到 "Arduino UNO (COMx)" 這個裝置再度出現重出江湖,這代表你已經成功用 FLIP 更新了 Atmega8U2 的韌體了:
補充說明:有時候按下 FLIP 的 Start Application 後「裝置管理員」上看到的可能還是 AT90USB82 的裝置,這時候請給 Arduino 重新上電,這樣就會看到 "Arduino UNO (COMx)" 的裝置了。
請問Arduino Uno R3的atmega16u2也可以使用相同的韌體嗎
回覆刪除作者已經移除這則留言。
回覆刪除Arduino-usbserial-uno.hex 是給 Atmega8u2 用的,UNO R3 的 Atmega16u2 要用 Arduino-usbserial-atmega16u2-Uno-Rev3.hex 這個版本。檔案一樣是放在 "arduino-1.xx\hardware\arduino\firmwares\arduino-usbserial\" 這個資料夾 (Arduino 1.0 之後的版本才有)
回覆刪除你也可以從網路下載 Arduino-usbserial-atmega16u2-Uno-Rev3.hex:
https://github.com/arduino/Arduino/tree/master/hardware/arduino/firmwares/arduino-usbserial
請問...
回覆刪除我把HEX檔放在"arduino-1.xx\hardware\arduino\firmwares\arduino-usbserial\" 這裡了
可是FLIP在讀HEX的時候會顯示
"cannot open file"
然後我就改把HEX檔放桌面
他在讀取的時候變成
"invalid HEX file syntax"
請問這樣可能是哪裡出錯了...
然後...
回覆刪除我的arduino進入DFU mode之後
就回不了UNO了 怎麼辦QAQ!!!
重新插拔USB之後仍然是DFU mode...
你有裝 FLIP 嗎? 你用 FLIP 把 UNO 就行了
回覆刪除方法可以參考這篇的操作步驟
你 HEX 檔是打哪來的? 是在 arduino-1.xx\hardware\arduino\firmwares\arduino-usbserial 取得的,還是從網路下載的?
回覆刪除檔案 size 是多大?
我大概知道了
回覆刪除我猜你 HEX 檔是不是從網路下載的?
之所以 FLIP 開啟 HEX 檔會出現 "invalid HEX file syntax",應該是因為下載回來的 HEX 檔是 HTML 格式的檔案的關係
建議你到底下的網址,在 RAW 上面按右鍵選 "另存連結為" 存檔後再試試:
http://goo.gl/6a8qT
耶~我成功了
回覆刪除謝謝~
不過HEX檔放在資料夾裡他FLIP就讀不到...
放在桌面卻可以~
更新完硬體之後他也終於回到UNO mode了(感動
所以你會用 FLIP 更換 atmega8u2 的韌體了!恭禧!恭禧!
回覆刪除現在你可以試著往下一站移動,試試 "Arduino Uno Keyboard": http://coopermaa2nd.blogspot.tw/2011/11/arduino-uno-keyboard.html
請問~
回覆刪除如果我想用arduino偵測可變電阻的值
控制鍵盤左右鍵的話
也可以用這種方法嗎?
還是需要別的作法?
是的, 你可以搭配可變電阻控制鍵盤左右鍵
回覆刪除不過,"Arduino Uno Keyboard" (http://coopermaa2nd.blogspot.tw/2011/11/arduino-uno-keyboard.html) 這篇比較難,建議你看過 USBKeyboard Library (http://coopermaa2nd.blogspot.tw/2011/11/usbkeyboard-library.html) 這篇後再行動不遲