用命令行給Arduino燒寫軟件程序

Arduino IDE編譯代碼下載程序很方便夕春,但是有如下理由我們?nèi)孕枰帽容^方便快捷的方法燒寫編譯后的二進(jìn)制文件蒂誉。

  1. 源代碼不需要修改圆丹,可以用IDE燒寫郊丛,但是用IDE打開源代碼挺耗時
  2. 需要給很多個成熟的產(chǎn)品燒錄程序
  3. 不想把源代碼發(fā)給他人,但是希望他人可以自己燒錄程序(編譯后的二進(jìn)制文件)
  4. 需要頻繁燒錄不同的程序昆稿,比如Arduboy等掌機(jī)更換內(nèi)置游戲

有挺多工具軟件可以完成脫離Arduino IDE燒錄Hex二進(jìn)制文件的工作纺座,他們大多是通過GUI前端在后臺調(diào)用avrdude程序。大多數(shù)情況下溉潭,他們可以很好的工作净响,但是要么是不跨平臺,只能用于Windows(這類工具Windows版本的比較多喳瓣,也有些是python編寫的馋贤,但是又打包為exe文件運(yùn)行,也是只支持Windows)夫椭,要么就是工具本身有些限制掸掸。

我實(shí)驗(yàn)了用命令行的方式來燒寫Hex文件,這樣的話蹭秋,只要系統(tǒng)內(nèi)安裝有Arduino IDE扰付,甚至是只要安裝了avrdude程序,就可以方便的燒寫Hex文件仁讨,而且可以跨平臺羽莺,無論Windows,macOS洞豁,或者是Linux(樹莓派盐固?)都可以工作。

首先丈挟,我的系統(tǒng)里安裝了Arduino IDE v1.8.9刁卜。 目前,這個版本是最新版曙咽。

確定Arduino IDE編譯好的Hex文件的位置

  • 在File菜單的Preferences里面蛔趴,打開preferences.txt文件,在更改之前例朱,關(guān)閉Arduino IDE孝情。
  • 新建一個文件夾C:\Users\zz\Documents\Arduino\hex (zz是我的Windows登錄用戶名)
  • 在preferences.txt文件里加入如下一行, 并保存
    build.path=C:\Users\zz\Documents\Arduino\hex
    對于macOS的話
    build.path=/Users/zz/Documents/Arduino/hex
  • 打開Arduino IDE,并打開Blink示例程序洒嗤,Ctrl-R編譯后箫荡,會在新建的文件夾中看到編譯好的Blink.ino.hex文件
C:\Users\zz\Documents\Arduino\hex>dir
 驅(qū)動器 C 中的卷沒有標(biāo)簽。
 卷的序列號是 1234-5678

 C:\Users\zz\Documents\Arduino\hex 的目錄

2019/06/08  14:28    <DIR>          .
2019/06/08  14:28    <DIR>          ..
2019/06/08  14:28                13 Blink.ino.eep
2019/06/08  14:28            13,920 Blink.ino.elf
2019/06/08  14:28             2,640 Blink.ino.hex
2019/06/08  14:28             4,000 Blink.ino.with_bootloader.hex
2019/06/08  14:28               968 build.options.json
2019/06/08  14:28    <DIR>          core
2019/06/08  14:28               397 includes.cache
2019/06/08  14:28    <DIR>          libraries
2019/06/08  14:28    <DIR>          preproc
2019/06/08  14:28    <DIR>          sketch
               6 個文件         21,938 字節(jié)
               6 個目錄 31,183,998,976 可用字節(jié)

嘗試用Arduino IDE下載程序渔隶,并觀察編譯和燒寫過程

  • 在Arduino IDE中的preferences設(shè)置對話框中show verbose output during: 選中compilation和upload羔挡,保存設(shè)置
  • 打開Blink示例程序,連接Arduino Uno并Ctrl-U(Upload)
  • 然后在主界面的信息提示區(qū)域,會打印輸出編譯和燒寫過程婉弹。輸出內(nèi)容很多睬魂,最關(guān)鍵的是avrdude的命令行
C:\arduino-1.8.9\hardware\tools\avr/bin/avrdude -CC:\arduino-1.8.9\hardware\tools\avr/etc/avrdude.conf -v -patmega328p -carduino -PCOM3 -b115200 -D -Uflash:w:C:\Users\zz\Documents\Arduino\hex/Blink.ino.hex:i
  • 我也嘗試了Arduino Micro (更換不同的板子后终吼,需要注意Arduino IDE的board和Port的設(shè)定變更)镀赌,命令行是這樣的:
C:\arduino-1.8.9\hardware\tools\avr/bin/avrdude -CC:\arduino-1.8.9\hardware\tools\avr/etc/avrdude.conf -v -patmega32u4 -cavr109 -PCOM4 -b57600 -D -Uflash:w:C:\Users\zz\Documents\Arduino\hex/Blink.ino.hex:i
  • 可以清楚的看到Arduino IDE調(diào)用avrdude燒寫hex文件,以及相關(guān)命令行參數(shù)
  • 在macOS系統(tǒng)下际跪,我看到的是
/Applications/Arduino.app/Contents/Java/hardware/tools/avr/bin/avrdude -C/Applications/Arduino.app/Contents/Java/hardware/tools/avr/etc/avrdude.conf -v -patmega328p -carduino -P/dev/cu.usbmodem141301 -b115200 -D -Uflash:w:/Users/zz/Documents/Arduino/hex/Blink.ino.hex:i 

avrdude的參數(shù)

  • -C <config-file> 制定配置文件的位置.
    對于Windows系統(tǒng)的例子
    -CC:\arduino-1.8.9\hardware\tools\avr/etc/avrdude.conf
    對于macOS系統(tǒng)的例子
    -C/Applications/Arduino.app/Contents/Java/hardware/tools/avr/etc/avrdude.conf
  • -v 打印詳細(xì)的提示信息.
  • -p <partno> 必須項(xiàng). 指定AVR零件號.
    對于Arduino Uno
    -patmega328p
    對于Arduino Micro
    -patmega32u4
  • -c <programmer> 指定編程器的類型.
    對于Arduino Uno
    -carduino
    對于Arduino Micro
    -cavr109
  • -P <port> 指定連接的串口.
    對于Windows系統(tǒng)的例子
    -PCOM3
    對于macOS系統(tǒng)的例子
    -P/dev/cu.usbmodem141301
  • -b <baudrate> 指定RS-232串口波特率.
    對于Arduino Uno
    -b115200
    對于Arduino Micro
    -b57600
  • -D 禁止自動擦除閃存空間
  • -U <memtype>:r|w|v:<filename>[:format]
    指定存儲類型商佛,操作方式,hex文件名以及文件類型.
    對于Windows系統(tǒng)的例子
    -Uflash:w:C:\Users\zz\Documents\Arduino\hex/Blink.ino.hex:i
    對于macOS系統(tǒng)的例子
    -Uflash:w:/Users/zz/Documents/Arduino/hex/Blink.ino.hex:i

命令行燒寫hex文件

這樣我們就可以用命令行很便捷的燒寫hex文件到Arduino里了

Windows

Uno

C:\arduino-1.8.9\hardware\tools\avr\bin\avrdude -CC:\arduino-1.8.9\hardware\tools\avr\etc\avrdude.conf -v -patmega328p -carduino -PCOM3 -b115200 -D -Uflash:w:C:\Users\zz\Documents\Arduino\hex\Blink.ino.hex:i

Micro

C:\arduino-1.8.9\hardware\tools\avr\bin\avrdude -CC:\arduino-1.8.9\hardware\tools\avr\etc\avrdude.conf -v -patmega32u4 -cavr109 -PCOM4 -b57600 -D -Uflash:w:C:\Users\zz\Documents\Arduino\hex\Blink.ino.hex:i
macOS

Uno

/Applications/Arduino.app/Contents/Java/hardware/tools/avr/bin/avrdude -C/Applications/Arduino.app/Contents/Java/hardware/tools/avr/etc/avrdude.conf -v -patmega328p -carduino -P/dev/cu.usbmodem141301 -b115200 -D -Uflash:w:/Users/zz/Documents/Arduino/hex/Blink.ino.hex:i 

Micro

/Applications/Arduino.app/Contents/Java/hardware/tools/avr/bin/avrdude -C/Applications/Arduino.app/Contents/Java/hardware/tools/avr/etc/avrdude.conf -v -patmega32u4 -cavr109 -P/dev/cu.usbmodem141401 -b57600 -D -Uflash:w:/Users/zz/Documents/Arduino/hex/Blink.ino.hex:i 

注意

  • 對于32u4芯片的Arduino板子姆打,必須在燒寫前先按一下板子上的Reset按鈕良姆,等1-2秒再執(zhí)行燒寫命令
  • 如果有新的芯片類型或者不同板子的Arduino及其兼容版,只要能先嘗試用Arduino IDE編譯后燒寫幔戏,得到燒寫相關(guān)的命令行信息玛追,就可以手動的用命令行燒寫

總結(jié)

  • 命令行燒寫hex文件比用IDE打開源文件燒寫要快捷很多
  • 用于燒寫的命令行可以在其他程序(比如Python)中調(diào)用,非常方便用于二次開發(fā)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末闲延,一起剝皮案震驚了整個濱河市痊剖,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌垒玲,老刑警劉巖陆馁,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異合愈,居然都是意外死亡叮贩,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進(jìn)店門佛析,熙熙樓的掌柜王于貴愁眉苦臉地迎上來益老,“玉大人,你說我怎么就攤上這事寸莫∞嗝龋” “怎么了?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵储狭,是天一觀的道長互婿。 經(jīng)常有香客問我,道長辽狈,這世上最難降的妖魔是什么慈参? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮刮萌,結(jié)果婚禮上驮配,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好壮锻,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布琐旁。 她就那樣靜靜地躺著,像睡著了一般猜绣。 火紅的嫁衣襯著肌膚如雪灰殴。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天掰邢,我揣著相機(jī)與錄音牺陶,去河邊找鬼。 笑死辣之,一個胖子當(dāng)著我的面吹牛掰伸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播怀估,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼狮鸭,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了多搀?” 一聲冷哼從身側(cè)響起歧蕉,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎酗昼,沒想到半個月后廊谓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡麻削,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年蒸痹,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片呛哟。...
    茶點(diǎn)故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡叠荠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出扫责,到底是詐尸還是另有隱情榛鼎,我是刑警寧澤,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布鳖孤,位于F島的核電站者娱,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏苏揣。R本人自食惡果不足惜黄鳍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望平匈。 院中可真熱鬧框沟,春花似錦藏古、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至梅垄,卻和暖如春厂捞,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背哎甲。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工蔫敲, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留饲嗽,地道東北人炭玫。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像貌虾,于是被迫代替她去往敵國和親吞加。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評論 2 355

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