Memahami proses kompilasi / menautkan / mengunggah (jadi saya tidak harus menggunakan IDE)

10

Saya sudah mulai bermain dengan dan arduino UNO baru-baru ini (tanpa pengalaman sebelumnya dengan mikro-controller). Saya ingin menggunakan emacs daripada IDE, dan saya juga ingin tahu apa yang dilakukan IDE di bawah tenda, agar dapat menulis makefile saya sendiri. Tutorial yang saya temukan sudah ketinggalan zaman, atau disajikan sebagai serangkaian langkah tanpa penjelasan. Saya akan menghargai jika seseorang dapat menjelaskan kepada saya bagaimana seluruh proses compliation / linking / upload bekerja menggunakan gcc-avr dan avr-dude, dan bagaimana itu digunakan oleh IDE.

Abu
sumber
5
Anda dapat melihat di bawah tenda dengan "Tampilkan keluaran verbose selama: ☑ kompilasi ☑ unggah" Di bawah File → Preferences.
jippie
Hampir duplikat: Kompilasi kode via terminal . Lihat tautan ke arduino-builder dan Sudar Muthu 'Makefile dalam jawaban saya untuk pertanyaan itu.
Edgar Bonet

Jawaban:

12

Jika Anda ingin duplikasi yang tepat dari apa yang dilakukan IDE tetapi ingin itu didorong dari baris perintah, itulah gunanya Ino . Proses pembuatan Arduino lengkap melibatkan penyalinan banyak file dari banyak tempat, dan umumnya tidak mudah untuk digandakan.

Jika Anda siap untuk melepaskan file .ino dan pustaka Arduino, Anda mendapatkan toolset yang jauh lebih sederhana. kompilasi avr-gcc, unggahan avrdude, dan Anda selesai. Ini salah satu makefile saya dari proyek sederhana:

CC=avr-gcc
CXX=avr-c++
CXXFLAGS=-Wall -Wextra -mmcu=atmega1284p -Os
CFLAGS=$(CXXFLAGS)
BINARY=ledmatrix
OBJECTS=

all: $(BINARY)
@avr-size $<

$(BINARY): $(OBJECTS)

clean:
@rm -f $(BINARY) $(BINARY).hex $(OBJECTS)

upload: $(BINARY).hex
@avrdude -c usbasp -p m1284p -U flash:w:$<:i

%.hex: %
@avr-objcopy -j .text -j .data -O ihex $< $@

.PHONY: all clean upload

Jika menyalin dan menempel, pastikan untuk mengganti semua "↹" dengan karakter tab.

EDIT:

Saya telah membuat repositori dengan sistem build saya di Github .

Ignacio Vazquez-Abrams
sumber
Terima kasih, makefile Anda adalah apa yang saya coba buat. Tapi saya kira menyingkirkan perpustakaan berarti bahwa saya tidak akan dapat menggunakan fungsi-fungsi seperti digitalWrite ()? Dalam hal itu, di mana saya harus mencari untuk mempelajari padanan C mereka?
Ash
1
Perpustakaan Arduino akan berisi padanannya, tetapi bisa sedikit ilmiah untuk dibaca. Saya sarankan mencari tutorial AVR tingkat rendah untuk dikerjakan yang akan menjelaskan kepada Anda berbagai register dan periferal. Oh, dan lembar data. Selalu dapatkan lembar data.
Ignacio Vazquez-Abrams