AVR單片機(jī)燒寫Arduino bootloader


關(guān)于bootloader

Arduino
  • 通常情況下MCU燒寫程序都需要通過專門的編程器進(jìn)行。
  • 假使每次復(fù)位時(shí)MCU不是從程序存儲(chǔ)器起始位置開始讀取命令察滑,而是預(yù)先加載一段指令,實(shí)現(xiàn)一些設(shè)置和功能修肠,再開始執(zhí)行代碼贺辰。這樣可以極大的方便MCU編程與使用,而這些預(yù)先寫入的程序代碼就是bootloader嵌施。
  • Arduino通過預(yù)先寫入的bootloader饲化,當(dāng)用戶通過串口給Arduino板下載程序時(shí),Arduino板首先會(huì)復(fù)位一次吗伤,這樣就進(jìn)入了bootloader吃靠。 接著向Arduino板發(fā)送特定的下載指令,bootloader識別到這些指令后就會(huì)開始接收待更新的程序代碼足淆,并寫入到內(nèi)部flash中巢块;如果沒有進(jìn)行下載,bootloader沒有識別到下載指令巧号,那么它就會(huì)跳轉(zhuǎn)到程序區(qū)正常工作族奢。
  • 總結(jié)上述內(nèi)容,可以理解為:Arduino之所以能用一根usb線就愉快下載程序的原因就是bootloader丹鸿。

問題來了:
  • 有些情況下我們需要自己搭建Arduino最小系統(tǒng)板越走,或者將其嵌入到自己的PCB項(xiàng)目里。這些只要你想都很容易卜高,但是:新出廠的ATmega328p等等MCU里是沒有bootloader的弥姻,怎么辦?這時(shí)就需要自己燒寫掺涛。

燒寫bootloader

? 硬件接口

燒寫bootloader本質(zhì)上只是使用編程器燒寫一段特殊的程序到MCU中庭敦,因此其方法與使用編程器燒寫程序是一樣的,這個(gè)方法在不同廠商薪缆、不同種類的單片機(jī)上都是不同的秧廉。
對于一般的Arduino開發(fā)板使用的AVR單片機(jī)來說,燒寫程序是通過ICSP(in-circuit serial programmming)硬件接口來實(shí)現(xiàn)的拣帽。


Arduino UNO Rev3上的ICSP接口
如圖所示疼电,Arduino UNO Rev3上有兩個(gè)ICSP接口,
分別對應(yīng)其中ATmega32u4(左上减拭,用于usb轉(zhuǎn)串口)
和ATmega328p(右下蔽豺,用于正常執(zhí)行指令)。

`對于一般的Arduino開發(fā)板拧粪,只需要對主處理器燒寫bootloader即可修陡。
如:ATmega328p沧侥、ATmega1280、ATmega2560等MCU魄鸦。`

ICSP接口有6個(gè)引腳宴杀,其定義如下表所示,MISO對應(yīng)引腳1拾因。

(1) MISO VCC
SCK MOSI
Reset GND

引腳可以分為三個(gè)部分:

?   SPI接口 `MISO` `MOSI` `SCK` 
?   電源 `VCC` `GND` 
?   復(fù)位 `Reset `

有些Arduino開發(fā)板中不僅引出了ICSP接口旺罢,同時(shí)其中的SPI接口部分的引腳也可以復(fù)用作為普通IO使用,包含在了普通的IO口排座中绢记。部分開發(fā)板如Pro MINI等則沒有專門設(shè)置ICSP接口排針扁达,但所有引腳均引出。下表是部分Arduino開發(fā)板上IO口與SPI引腳的對應(yīng)關(guān)系蠢熄。

Arduino MCU MOSI MISO SCK
ATmega328p 11 12 13
mega1280\mega2560 51 50 52
Intel Curie 11 12 13

?燒寫過程

燒寫bootloader可以使用多種編程器罩驻。
Arduino IDE的Tools -> Programmer下顯示了所有支持的編程器列表:


支持燒寫的編程器列表
在此小編推薦大家使用`Arduino as ISP`方式,此方式較為簡單而且成功率高护赊。

Arduino as ISP簡單來說就是將一塊Arduino開發(fā)板作為編程器:給它用普通方式下載一段專門的程序惠遏,將其變?yōu)橐粋€(gè)ISP下載器。
準(zhǔn)備好編程器后骏啰,將其相應(yīng)引腳與待燒寫bootloader的開發(fā)板對應(yīng)引腳相連节吮,并通過Arduino IDE來進(jìn)行bootloader燒寫

步驟如下:

    ?   1判耕、制作編程器板

打開IDE,Files -> Examples -> ArduinoISP -> ArduinoISP
接入作為編程器的Arduino開發(fā)板并下載此程序透绩,我們稱其為編程器板。


制作編程器板需下載的對應(yīng)程序
    ?   2壁熄、編程器板與待燒寫板連接

對應(yīng)連接關(guān)系如下表所示:

編程器板 待燒寫板
MISO/ 12 MISO / ICSP-1
Vcc / 5V Vcc / ICSP-2
SCK / 13 SCK / ICSP-3
MOSI / 11 MOSI / ICSP-4
10 Reset / ICSP-5
GND GND / ICSP-6

實(shí)際連接電路示例如下:


編程器與ICSP接口連接電路示意

編程器與引腳直接連接電路示意
    ?   3帚豪、使用Arduino IDE進(jìn)行bootloader燒寫

按照步驟2連接好電路后,打開IDE草丧,執(zhí)行如下步驟:

  • 點(diǎn)擊Tools -> Boards選擇待燒寫板的類型狸臣;
  • 在Tools -> Programmer中選擇Arduino as ISP;
  • 點(diǎn)擊Tools -> Burn Bootloader昌执;


    選擇待燒寫板的類型

    使用Arduino IDE進(jìn)行bootloader燒寫

    燒錄Bootloader

自測實(shí)拍

寫了這么多烛亦,到底好不好用呢,小楊今天就用自己的畫的PCB試試效果懂拾。步驟如上文所述煤禽。效果如下:


用UNO作為編程器,與自己畫的待燒寫PCB連接

Bootloader燒錄成功后D13燈會(huì)同時(shí)閃爍

測試下載成功

以上就是通過已有的Arduino開發(fā)板對部分AVR單片機(jī)進(jìn)行bootloader燒寫的一種方法岖赋。當(dāng)然方法很多檬果,各有優(yōu)缺點(diǎn)大家根據(jù)自己的喜好和需要進(jìn)行選擇。不足之處還請大家批評指正。

希望文章內(nèi)容對您稍有幫助选脊。

如果喜歡文章內(nèi)容衷畦,記得點(diǎn)贊關(guān)注我們哦。

附:Arduino官方參考文檔地址


    感謝一直關(guān)注著禾灮成長進(jìn)步的朋友們知牌。你們的信任、支持和鼓勵(lì)斤程,鞭策著我們一路走到了今天角寸。
    
    感謝所有的合作伙伴,我們相互促進(jìn)忿墅,共同見證了彼此的成長扁藕。

    感謝所有曾經(jīng)在禾灮彼此倚靠、相互鼓勵(lì)疚脐、攜手同心亿柑、砥礪同行的兄弟姐妹。這里承載了我們的青春與熱血棍弄。

                禾灮望薄,感謝有你。

    未來呼畸,我們將一如既往痕支,砥礪前行。

                                        禾灮·小楊
                                       2018.07.17

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蛮原,一起剝皮案震驚了整個(gè)濱河市卧须,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌儒陨,老刑警劉巖花嘶,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蹦漠,居然都是意外死亡椭员,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進(jìn)店門笛园,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拆撼,“玉大人,你說我怎么就攤上這事喘沿≌⒍龋” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵蚜印,是天一觀的道長莺禁。 經(jīng)常有香客問我,道長窄赋,這世上最難降的妖魔是什么哟冬? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任楼熄,我火速辦了婚禮,結(jié)果婚禮上浩峡,老公的妹妹穿的比我還像新娘可岂。我一直安慰自己,他們只是感情好翰灾,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布缕粹。 她就那樣靜靜地躺著,像睡著了一般纸淮。 火紅的嫁衣襯著肌膚如雪平斩。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天咽块,我揣著相機(jī)與錄音绘面,去河邊找鬼。 笑死侈沪,一個(gè)胖子當(dāng)著我的面吹牛揭璃,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播亭罪,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼塘辅,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了皆撩?” 一聲冷哼從身側(cè)響起扣墩,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎扛吞,沒想到半個(gè)月后呻惕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡滥比,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年亚脆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片盲泛。...
    茶點(diǎn)故事閱讀 39,841評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡濒持,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出寺滚,到底是詐尸還是另有隱情柑营,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布村视,位于F島的核電站官套,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜奶赔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一惋嚎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧站刑,春花似錦另伍、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至玻靡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間中贝,已是汗流浹背囤捻。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留邻寿,地道東北人蝎土。 一個(gè)月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像绣否,于是被迫代替她去往敵國和親誊涯。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內(nèi)容