題:
如何通過Linux命令行進行編譯,上傳和監視?
maxschlepzig
2015-09-08 00:13:34 UTC
view on stackexchange narkive permalink

在Fedora 21下,可以將Arduino Uno(上載等)與Arduino IDE(使用Fedora包)連接起來很好。

但是我寧願使用vim + make + vim-quickfix-mode等等。

我該怎麼做?

最好通過Fedora存儲庫中提供的工具。

我假設IDE為以下應用程序調用外部命令行實用程序

等效於IDE的串行監視器,可能是將終端仿真器(例如 screen )連接到 / dev / ttyACM0 ,對嗎?

也許有一個很好的示例項目可以看一下makefile?

五 答案:
Metamorphic
2016-06-02 12:24:09 UTC
view on stackexchange narkive permalink

我在 arduino 命令中使用命令行界面。

我是這樣運行它的:

  arduino --upup sketch / sketch.ino --port / dev / ttyUSB *  

有一個頁面描述了其他命令行工具,例如 inotool 。該頁面上還有一個示例 Makefile 。這些替代方法似乎很誘人,但在撰寫本文時,顯然沒有一個可行。我假設這是由於它們依賴的Arduino IDE發行文件中的一些最新更改。

如上所述,運行 arduino 有點慢,因為它必須加載Java我想,但至少可以奏效。 Arduino IDE發行版中還有一個 arduino-builder 命令。在撰寫本文時,它對我的文檔還不夠完善,無法弄清楚如何使用它。例如,自述文件或我遇到的任何教程都沒有示例命令行,而且我不知道如何使用它將代碼上傳到板上。但是,大概它能夠為我們提供比 arduino 更快的編譯速度。自述文件還提到了能夠重用以前編譯的目標文件,因此具有一些類似make的功能。


要查看串行輸出,我使用類似

  stty -F / dev / ttyUSB * 1000000 raw -clocal -echocat / dev / ttyUSB *  

數字1000000應該與您傳遞給 Serial.begin()。如果您具有適當交互的電路板程序,也可以使用 screen ,或者您可以使用任何實用程序直接寫入設備。順便說一下,我的Due顯示為 / dev / ttyACM0 (而不是Uno的 / dev / ttyUSB0 )。

確保目錄中只有一個* .ino文件,因為它似乎不一定要上傳--upload參數所提到的文件。
沒有設置X11 DISPLAY變量,但是該程序執行了需要它的操作。為了我
Nick Gammon
2015-09-08 01:44:36 UTC
view on stackexchange narkive permalink

我建議對Makefile項目使用Google搜索。通過基本了解IDE生成的內容並以更通用的方式進行複制,我為Blink程序做了一段時間。

  ##簡單的Arduino Makefile ##作者:Nick Gammon #日期:2015年3月18日#安裝Arduino應用的位置ARDUINO_DIR = C:/ Documents and Settings / Nick / Desktop / arduino-1.0.6 /#各種程序CC =“ $(ARDUINO_DIR)hardware / tools / avr / bin / avr- gcc“ CPP =” $(ARDUINO_DIR)硬件/工具/ avr / bin / avr-g ++“ AR =” $(ARDUINO_DIR)硬件/工具/ avr / bin / avr-ar“ OBJ_COPY =” $(ARDUINO_DIR)硬件/工具/ avr / bin / avr-objcopy“ MAIN_SKETCH = g ++和gcc#的Blink.cpp#編譯標誌可能需要更改這些F_CPU = 16000000MCU = atmega328p#編譯標誌GENERAL_FLAGS = -c -g -Os -Wall -ffunction-sections -fdata-部分-mmcu = $(MCU)-DF_CPU = $(F_CPU)L -MMD -DUSB_VID =空-DUSB_PID =空-DARDUINO = 106CPP_FLAGS = $(GENERAL_FLAGS)-fno-exceptionsCC_FLAGS = $(GENERAL_FLAGS)#包含文件的位置= INCLUDE “ -I $(ARDUINO_DIR)硬件/ arduino / cores / arduino”“ -I $(ARDUINO_DIR)硬件/ arduino / variants /標準“#庫源LIBRARY_DIR =” $(ARDUINO_DIR)硬件/ arduino / cores / arduino /“版本:$(CPP)$(CPP_FLAGS)$(INCLUDE_FILES)$(MAIN_SKETCH) -o $(MAIN_SKETCH).o $(CC)$(CC_FLAGS)$(INCLUDE_FILES)$(LIBRARY_DIR)avr-libc / malloc.c -o malloc.co $(CC)$(CC_FLAGS)$(INCLUDE_FILES)$( LIBRARY_DIR)avr-libc / realloc.c -o realloc.co $(CC)$(CC_FLAGS)$(INCLUDE_FILES)$(LIBRARY_DIR)WInterrupts.c -o WInterrupts.co $(CC)$(CC_FLAGS)$(INCLUDE_FILES) $(LIBRARY_DIR)wiring.c -o佈線。 LIBRARY_DIR)wiring_digital.c -oconnection_digital.co $(CC)$(CC_FLAGS)$(INCLUDE_FILES)$(LIBRARY_DIR)wiring_pulse.c-oconnection_pulse.co $(CC)$(CC_FLAGS)$(INCLUDE_FILES)$(LIBRARY_DIR)接線_移位-c -o接線_移位.co
$(CPP)$(CPP_FLAGS)$(INCLUDE_FILES)$(LIBRARY_DIR)CDC.cpp -o CDC.cpp.o $(CPP)$(CPP_FLAGS)$(INCLUDE_FILES)$(LIBRARY_DIR)HardwareSerial.cpp -o HardwareSerial。 .o $(CPP)$(CPP_FLAGS)$(INCLUDE_FILES)$(LIBRARY_DIR)HID.cpp -o HID.cpp.o $(CPP)$(CPP_FLAGS)$(INCLUDE_FILES)$(LIBRARY_DIR)IPAddress.cpp -o IPAddress .cpp.o $(CPP)$(CPP_FLAGS)$(INCLUDE_FILES)$(LIBRARY_DIR)main.cpp -o main.cpp.o $(CPP)$(CPP_FLAGS)$(INCLUDE_FILES)$(LIBRARY_DIR)new.cpp- o new.cpp.o $(CPP)$(CPP_FLAGS)$(INCLUDE_FILES)$(LIBRARY_DIR)Print.cpp -o Print.cpp.o $(CPP)$(CPP_FLAGS)$(INCLUDE_FILES)$(LIBRARY_DIR)Stream。 cpp -o Stream.cpp.o $(CPP)$(CPP_FLAGS)$(INCLUDE_FILES)$(LIBRARY_DIR)Tone.cpp -o Tone.cpp.o $(CPP)$(CPP_FLAGS)$(INCLUDE_FILES)$(LIBRARY_DIR) USBCore.cpp -o USBCore.cpp.o $(CPP)$(CPP_FLAGS)$(INCLUDE_FILES)$(LIBRARY_DIR)WMath.cpp -o WMath.cpp.o $(CPP)$(CPP_FLAGS)$(INCLUDE_FILES)$( LIBRARY_DIR)WString.cpp -o WString.cpp.o rm core.a $(AR)rcs core.a ma lloc.co $(AR)rcs核心。realloc.co $(AR)rcs核心.a WInterrupts.co $(AR)rcs核心.aconnection.co $(AR)rcs核心.aconnection_analog.co $(AR )rcs core.aconnection_digital.co $(AR)rcs core.aconnection_pulse.co $(AR)rcs core.aconnection_shift.co $(AR)rcs core.a CDC.cpp.o $(AR)rcs core。一個HardwareSerial.cpp.o $(AR)rcs核心。一個HID.cpp.o $(AR)rcs核心。一個IPAddress.cpp.o $(AR)rcs核心。一個main.cpp.o $(AR)rcs core.a new.cpp.o $(AR)rcs核心.a Print.cpp.o $(AR)rcs核心.a Stream.cpp.o $(AR)rcs核心.a Tone.cpp.o $(AR )rcs core.a USBCore.cpp.o $(AR)rcs core.a WMath.cpp.o $(AR)rcs core.a WString.cpp.o $(CC)-Os -Wl,-gc-sections -mmcu = $(MCU)-o $(MAIN_SKETCH).elf $(MAIN_SKETCH).o core.a -lm $(OBJ_COPY)-O ihex -j .eeprom --set-section-flags = .eeprom = alloc,加載--no-change-warnings --change-section-lma .eeprom = 0 $(MAIN_SKETCH).elf $(MAIN_SKETCH).eep $(OBJ_COPY)-O ihex -R .eeprom $(MAIN_SKETCH).elf $( MAIN_SKETCH).hex  

您至少需要更改 ARDUINO_DIR ,以反映IDE的安裝位置。如果使用Wire庫之類的其他功能,則需要對其進行某種程度的擴展以編譯其他庫。同樣,您可以使用IDE自身生成的內容來指導您的更改。

上面帶有前導空格的行將需要 tab 字符而不是空格,這對於生成文件。

make文件中的上載部分對於將編譯後的草圖上載到arduino(使用avr-dude)也很有用。
那肯定是有用的。但是,到目前為止,IDE滿足了我對編譯和上傳的需求,因此我並沒有強烈的動機去研究如何做。 :)
看看“變形”答案,這是一個更簡單的解決方案
Majenko
2015-09-08 00:40:23 UTC
view on stackexchange narkive permalink

您需要的是一個Makefile。 Arduino周圍有一些Makefile項目。搜尋“ Arduino Makefile”會返回許多結果,包括在Github上看起來不錯的結果: https://github.com/sudar/Arduino-Makefile

從命令編譯

等效於IDE的串行監視器可能是將終端仿真器(例如,屏幕)連接到/ dev / ttyACM0,對嗎?

對於串行監視器,我建議使用minicom。它是命令行上的功能齊全的終端仿真器(vt102)。

  minicom -D / dev / ttyACM0 -b 115200  

...例子。

這個Makefile本質上是接受答案的維護版本。 GitHub上還有一個模板項目,向您展示如何進行設置:https://github.com/ladislas/Bare-Arduino-Project
Pavel Milanes Costa
2018-05-08 22:16:40 UTC
view on stackexchange narkive permalink

如果您想為您的arduino項目提供完全兼容的解決方案(是的,您可以與僅使用普通Arduino IDE的其他人共享您的項目),則需要檢查 amake簡化cli的工具在arduino中,我將它與Geany一起使用,而其他人則將其與vi,Atom等一起使用。

它的靈感來自於已死的Ino和Arturo項目。請花5分鐘進行測試,並提供反饋。

使用示例:

  cd〜/ Arduino / Blink / [移至arduino項目文件夾] amake -v uno Blink.ino [用於編譯/驗證代碼] amake -u uno Blink.ino / dev / ttyUSB0 [用於將代​​碼上傳到通過USB連接的arduino]  

粘在其中,它可以記住木板和文件,甚至可以自動檢測木板的USB;因此,成功執行“ amake -v”命令後,您可以在命令行上執行此操作,它將起作用。

  amake -v [編譯/驗證代碼] amake -u [上傳您的代碼到通過USB連接的arduino]  

如果您使用一些IDE宏,則可以輕鬆編寫和上傳命令,例如使用Geany IDE,它將變成:

  • 編譯/驗證: cd%d; amake -v uno%f
  • 上傳: cd%d; amake -u uno%f

您可以在安裝“ amake”或“ amake -h”後獲得更多幫助。

它還可以支持您在Arduino IDE中安裝/配置的所有闆卡/庫/編程器,是的,現代闆卡,例如Adafuit Trinket M0 / Arduino M0等...

只要啟動Arduino IDE,轉到董事會經理,安裝支持,僅此而已,只需按照一些簡單的說明進行操作即可。

不支持您擁有的董事會?沒問題,檢測fqbn(讀取README.md文件)並將其作為板名傳遞。

我正在尋找測試人員來增加編號或板別名並自動檢測正確的USB簽名。

請記住,這是一個私有的工具,現在已經與公眾共享,只是程序員為之癢……

乾杯。

Madacol
2019-11-14 04:40:04 UTC
view on stackexchange narkive permalink

官方CLI工具

arduino團隊正在開發 cli 客戶端 https://github.com/arduino/arduino-cli

公告 https://blog.arduino.cc/2018/08/24/announcing-the-arduino-command-line-interface-cli/

您幾乎可以執行所有操作,從下載開發板和庫,到編譯和上傳腳本。缺少的是監視部分(您可以通過 stty cat 使用 Metamorphic的方法,它可以正常工作!)

命令與 Metamorphic的答案非常相似,因為此工具是從 Github存儲庫和手冊頁中的

指令中分支出來的:

  $ arduino-cli Arduino命令行界面(arduino-cli)。用法:arduino-cli [命令]示例:arduino <command> [flags ...]可用命令:開發板Arduino開發板命令。編譯編譯Arduino草圖。 config Arduino配置命令。核心Arduino核心操作。 help關於任何關於庫的命令庫Arduino命令的幫助。 sketch Arduino CLI Sketch命令。上傳上傳Arduino草圖。版本顯示Arduino CLI的版本號。 


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...