用Arduino板爲另一塊Arduino燒寫(更新)BootLoader

手上有兩塊幾年前買的arduino nano板子,這兩天要用的時候發現用arduino IDE 1.8.11燒寫的時候始終報錯“上傳失敗”。查閱相關資料發現應該在 IDE–工具–處理器 中選擇ATmega238P(Old Bootloader)即可上傳成功。
這也側面說明了我的板子的BootLoader已經舊了,不如順便更新一下。
在這裏插入圖片描述

  • 燒寫BootLoader至少需要兩塊arduino板,其中一個作爲ISP下載器,另一個則是需要被燒寫的板子(它們的型號可以不一樣)
  • 本例將用兩塊arduino nano ATmega238P(Old Bootloader) 互相依次更新爲最新的BootLoader

過程

1. 將ISP下載器的程序燒錄進第一塊arduino板(下文將其稱爲 ISP板):

打開 arduino IDE – 示例 – 11.ArduinoISP 示例文件,並上傳(燒錄)進arduino板中,因爲兩塊板子都是old BootLoader,所以應注意此時選擇的處理器應爲“ATmega238P(Old Bootloader)”才能成功上傳。
在這裏插入圖片描述


2. 將第二塊arduino板(被燒錄板)與ISP板相連:

本例中使用的arduino nano 的ISP接口是D10~D13口,分別是SS, MOSI, MISO, SCK
在這裏插入圖片描述
將ISP板與被燒錄板的MOSI(D11), MISO(D12), SCK(D13), GND, 5V 引腳相接,將ISP板的SS(D10)引腳與被燒錄板的RST引腳相接

ISP板 被燒錄板
MOSI(D11) MOSI(D11)
MISO(D12) MISO(D12)
SCK(D13) SCK(D13)
GND GND
5V 5V
SS(D10) RST

注:由於不同型號的arduino板在引腳複用時對應的引腳不一樣,所以括號內的引腳名稱僅適用於arduino nano 和arduino UNO。若要使用arduino mega2560 等其他型號的板子時,注意對應的ISP接口與引腳號的對應與此表括號內的引腳號是不同的。


3. 進行BootLoader燒寫
在 IDE–工具–處理器 中選擇ATmega238P,選擇沒有括號的那個,作爲要燒寫進去的版本
在這裏插入圖片描述
IDE–工具–編程器 中選擇Arduino as ISP
在這裏插入圖片描述
點擊“燒錄引導程序”即可完成燒寫。
在這裏插入圖片描述


至此第二塊Arduino nano 板的BootLoader已經燒寫(更新)爲最新的了。而第一塊nano板作爲ISP下載器,其中的BootLoader並未更新。接下來對調兩者的角色,再如法炮製即可。

需要注意的是,此時給第二塊(已更新)的nano板燒錄ISP程序時,在IDE–工具–處理器 中就應該選擇 ATmega238P了,燒錄好ISP程序後,然後再給第一塊板燒錄BootLoader。


常見報錯

在燒錄引導程序的時候有過這樣的報錯:
avrdude: ser_open(): can't open device "\\.\COM10": ϵͳ�Ҳ���ָ�����ļ���
錯誤原因是串口端口被佔用,嘗試關閉IDE或其他軟件的串口監視器後重試。

還有報錯:
avrdude: Expected signature for ATmega328P is 1E 95 0F. Double check chip, or use -F
或:
Yikes! Invalid device signature. Double check connections and try again, or use -F to override this check.
在這裏插入圖片描述
解決方案:
在 IDE–文件–首選項 中把所有的調試信息(顯示詳細輸出)打開,若顯示Device signature = 0x000000Device signature = 0xffffff等情況,其實不是真的芯片簽名有誤,而是電路連接有問題,再次檢查接線是否接對。


總結

總體思路是:

  1. 上傳例程“11.ArduinoISP”,將其中一塊Arduino作爲ISP燒寫器。
  2. 通過ISP引腳將兩塊板子相連。
  3. 選擇BootLoader版本並上傳。

值得注意的有兩點:

  1. 我們會在步驟1和步驟3,兩次涉及到在 IDE–工具–處理器 中選擇處理器型號。其中步驟1中選擇的是上傳程序的那塊板子(跟電腦用USB連接的那塊)的處理器(BootLoader)型號。步驟3中選擇的是要被燒寫BootLoader的那塊板子(用引線連接的那塊)的處理器(BootLoader)型號。
  2. 這兩塊Arduino板的型號可以不一樣,但要注意它們對應的ISP的引腳號也會不一樣。不能單純按照板子上印刷的引腳號相應連接,而應該找各個板子的PinMapping,找到對應的ISP的引腳。
ISP引腳 nano和UNO mega2560
SS D10 D53
MOSI D11 D51
MISO D12 D50
SCK D13 D52

覺得有用的話,不要吝惜評論點贊分享哦,希望大家多多包涵,有任何問題歡迎指正、討論。
本文基於CC-BY-SA 4.0協議,歡迎轉載
(博客看累了?去我的B站瞧一瞧?)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章