Saya akan menyarankan proyek Googling untuk Makefile. Saya melakukan beberapa waktu yang lalu untuk program Blink, pada dasarnya melihat apa yang dihasilkan oleh IDE dan mereplikasi itu dengan cara yang lebih umum.
#
# Simple Arduino Makefile
#
# Author: Nick Gammon
# Date: 18th March 2015
# where you installed the Arduino app
ARDUINO_DIR = C:/Documents and Settings/Nick/Desktop/arduino-1.0.6/
# various programs
CC = "$(ARDUINO_DIR)hardware/tools/avr/bin/avr-gcc"
CPP = "$(ARDUINO_DIR)hardware/tools/avr/bin/avr-g++"
AR = "$(ARDUINO_DIR)hardware/tools/avr/bin/avr-ar"
OBJ_COPY = "$(ARDUINO_DIR)hardware/tools/avr/bin/avr-objcopy"
MAIN_SKETCH = Blink.cpp
# compile flags for g++ and gcc
# may need to change these
F_CPU = 16000000
MCU = atmega328p
# compile flags
GENERAL_FLAGS = -c -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=$(MCU) -DF_CPU=$(F_CPU)L -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=106
CPP_FLAGS = $(GENERAL_FLAGS) -fno-exceptions
CC_FLAGS = $(GENERAL_FLAGS)
# location of include files
INCLUDE_FILES = "-I$(ARDUINO_DIR)hardware/arduino/cores/arduino" "-I$(ARDUINO_DIR)hardware/arduino/variants/standard"
# library sources
LIBRARY_DIR = "$(ARDUINO_DIR)hardware/arduino/cores/arduino/"
build:
$(CPP) $(CPP_FLAGS) $(INCLUDE_FILES) $(MAIN_SKETCH) -o $(MAIN_SKETCH).o
$(CC) $(CC_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)avr-libc/malloc.c -o malloc.c.o
$(CC) $(CC_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)avr-libc/realloc.c -o realloc.c.o
$(CC) $(CC_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)WInterrupts.c -o WInterrupts.c.o
$(CC) $(CC_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)wiring.c -o wiring.c.o
$(CC) $(CC_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)wiring_analog.c -o wiring_analog.c.o
$(CC) $(CC_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)wiring_digital.c -o wiring_digital.c.o
$(CC) $(CC_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)wiring_pulse.c -o wiring_pulse.c.o
$(CC) $(CC_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)wiring_shift.c -o wiring_shift.c.o
$(CPP) $(CPP_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)CDC.cpp -o CDC.cpp.o
$(CPP) $(CPP_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)HardwareSerial.cpp -o HardwareSerial.cpp.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 malloc.c.o
$(AR) rcs core.a realloc.c.o
$(AR) rcs core.a WInterrupts.c.o
$(AR) rcs core.a wiring.c.o
$(AR) rcs core.a wiring_analog.c.o
$(AR) rcs core.a wiring_digital.c.o
$(AR) rcs core.a wiring_pulse.c.o
$(AR) rcs core.a wiring_shift.c.o
$(AR) rcs core.a CDC.cpp.o
$(AR) rcs core.a HardwareSerial.cpp.o
$(AR) rcs core.a HID.cpp.o
$(AR) rcs core.a IPAddress.cpp.o
$(AR) rcs core.a main.cpp.o
$(AR) rcs core.a new.cpp.o
$(AR) rcs core.a Print.cpp.o
$(AR) rcs core.a Stream.cpp.o
$(AR) rcs core.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,load --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
Anda harus mengubah ARDUINO_DIR
setidaknya, untuk mencerminkan di mana Anda menginstal IDE. Jika Anda menggunakan hal-hal lain seperti perpustakaan Wire Anda perlu mengembangkannya untuk mengkompilasi perpustakaan tambahan. Sekali lagi, Anda dapat menggunakan apa yang dihasilkan IDE untuk memandu perubahan Anda.
Baris dengan spasi terdepan di atas akan membutuhkan karakter tab alih-alih spasi, seperti normal untuk Makefile.
Saya menggunakan antarmuka baris perintah ke
arduino
perintah .Saya menjalankannya seperti ini:
Ada halaman yang menggambarkan alat-alat baris perintah lainnya, seperti
inotool
. Halaman itu juga punya contohMakefile
. Alternatif-alternatif ini tampaknya menarik, tetapi tampaknya, sampai tulisan ini dibuat, tidak ada satupun yang berfungsi. Saya berasumsi ini adalah karena beberapa perubahan terbaru dalam file distribusi Arduino IDE yang mereka andalkan.Berjalan
arduino
seperti di atas agak lambat, karena harus memuat Java, saya kira, tapi setidaknya itu berfungsi. Ada jugaarduino-builder
perintah yang datang dengan distribusi IDE Arduino. Pada tulisan ini, itu tidak cukup didokumentasikan dengan baik bagi saya untuk dapat mengetahui cara menggunakannya. Misalnya tidak ada contoh baris perintah di README atau tutorial yang saya temui, dan saya tidak tahu cara menggunakannya untuk mengunggah kode ke papan tulis. Namun, agaknya itu bisa memberi kita kompilasi lebih cepat daripadaarduino
. README juga menyebutkan dapat menggunakan kembali file objek dari kompilasi sebelumnya, jadi ada beberapa fungsi make-like.Untuk melihat output serial saya menggunakan sesuatu seperti
Angka 1000000 harus sesuai dengan angka yang Anda berikan
Serial.begin()
dalam kode papan Anda. Anda juga dapat menggunakanscreen
jika Anda memiliki program papan yang interaktif tepat, atau Anda dapat menggunakan utilitas apa pun untuk menulis langsung ke perangkat. Ngomong-ngomong, hak saya muncul sebagai/dev/ttyACM0
(bukan/dev/ttyUSB0
untuk Uno).sumber
*.ino
file dalam direktori, karena sepertinya tidak perlu mengunggah yang disebutkan oleh--upload
parameter.Yang Anda butuhkan adalah Makefile. Ada beberapa proyek Makefile di sekitar untuk Arduino. Googling untuk "Arduino Makefile" mengembalikan banyak hasil termasuk yang terlihat bagus di Github: https://github.com/sudar/Arduino-Makefile
Kompilasi dari baris perintah bukanlah hal sepele karena cara IDE Arduino menangani perpustakaan.
Untuk monitor serial saya akan merekomendasikan minicom. Ini adalah emulator terminal yang berfungsi penuh (vt102) pada baris perintah.
... sebagai contoh.
sumber
Jika Anda menginginkan solusi yang sepenuhnya kompatibel untuk proyek Arduino Anda (ya, Anda dapat membagikan proyek Anda dengan orang lain yang menggunakan IDE Arduino biasa) Anda perlu memeriksa amake alat untuk menyederhanakan cli Arduino, saya menggunakannya dengan Geany tetapi yang lain menggunakannya dengan vi, Atom, dll.
Ini terinspirasi dan proyek Ino dan Arturo yang sekarang sudah mati; mohon 5 menit untuk mengujinya dan berikan umpan balik.
Contoh penggunaan:
Ini memiliki beberapa lem pintar di sana, ia dapat mengingat papan dan file, dan bahkan mendeteksi secara otomatis usb papan; jadi setelah perintah "amake -v" berhasil, Anda dapat melakukan ini pada baris perintah dan itu akan berhasil.
Jika Anda menggunakan beberapa makro IDE, Anda dapat membuat kompilasi dan mengunggah perintah dengan mudah, misalnya menggunakan Geany IDE, itu akan menjadi:
Anda bisa mendapatkan lebih banyak bantuan dengan menjalankan hanya "amake" atau "amake -h" setelah diinstal.
Juga, ini dapat mendukung SETIAP papan / lib / programmer yang telah Anda instal / konfigurasikan di Arduino IDE Anda, ya, papan modern seperti Adafuit Trinket M0 / Arduino M0 dll ...
Hanya jalankan IDE Arduino Anda, pergi ke manajer papan, instal dukungan dan itu saja, cukup ikuti beberapa instruksi sederhana dan Anda sudah siap.
Papan yang Anda miliki tidak didukung? tidak masalah, deteksi fqbn (baca file README.md) dan sampaikan sebagai nama papan.
Saya mencari penguji untuk menumbuhkan jumlah atau alias alias dan deteksi otomatis tanda tangan USB yang tepat.
Ingat ini adalah alat yang dikembangkan pribadi, sekarang dibagikan kepada publik, Anda tahu, hanya seorang programmer menggaruknya gatal ...
Bersulang.
sumber
Alat CLI resmi
Tim arduino sedang mengembangkan klien cli https://github.com/arduino/arduino-cli
Pengumuman : https://blog.arduino.cc/2018/08/24/announcing-the-arduino-command-line-interface-cli/
Anda dapat melakukan hampir semua hal dengan ini, mulai dari mengunduh papan dan perpustakaan, hingga menyusun dan mengunggah skrip. Apa yang hilang adalah bagian pemantauan (Anda dapat menggunakan metode Metamorphic menggunakan
stty
cat
, Berhasil!)Perintahnya sangat mirip dengan jawaban Metamorphic karena alat ini bercabang dari yang itu
Instruksi di repo Github dan halaman manual:
sumber