Grundlegendes zum Kompilieren / Verknüpfen / Hochladen (damit ich die IDE nicht verwenden muss)

10

Ich habe vor kurzem angefangen, mit und Arduino UNO zu spielen (ohne vorherige Erfahrung mit Mikrocontrollern). Ich möchte Emacs anstelle der IDE verwenden und möchte auch wissen, was die IDE unter der Haube macht, um mein eigenes Makefile schreiben zu können. Die Tutorials, die ich gefunden habe, sind entweder veraltet oder werden als eine Reihe von Schritten ohne Erklärung dargestellt. Ich würde mich freuen, wenn mir jemand erklären könnte, wie der gesamte Prozess der Komplementierung / Verknüpfung / des Uploads mit gcc-avr und avr-dude funktioniert und wie er von der IDE verwendet wird.

Asche
quelle
5
Sie können einen Blick unter die Haube werfen, indem Sie unter Datei → Einstellungen "Ausführliche Ausgabe während: ☑ Kompilierung ☑ Upload anzeigen" anzeigen.
Jippie
Fast doppelt: Code über Terminal kompilieren . Siehe die Links zu Arduino-Builder und Sudar Muthu 'Makefile in meiner Antwort auf diese Frage.
Edgar Bonet

Antworten:

12

Wenn Sie eine exakte Kopie der IDE wünschen, diese jedoch über die Befehlszeile steuern möchten, ist Ino genau das Richtige für Sie. Der vollständige Arduino-Erstellungsprozess umfasst das Kopieren vieler Dateien von vielen Orten und ist im Allgemeinen nicht trivial zu duplizieren.

Wenn Sie bereit sind, .ino-Dateien und die Arduino-Bibliotheken loszulassen, erhalten Sie ein viel einfacheres Toolset. avr-gcc kompiliert, avrdude Uploads und fertig. Hier ist eines meiner Makefiles aus einem einfachen Projekt:

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

Stellen Sie beim Kopieren und Einfügen sicher, dass alle "↹" durch Tabulatorzeichen ersetzt werden.

BEARBEITEN:

Ich habe mit meinem Buildsystem auf Github ein Repository erstellt .

Ignacio Vazquez-Abrams
quelle
Danke, dein Makefile ist so ziemlich das, was ich mir ausgedacht habe. Aber ich denke, die Bibliotheken loszuwerden bedeutet, dass ich keine Funktionen wie digitalWrite () verwenden kann? Wo sollte ich in diesem Fall nachsehen, um ihre einfachen C-Äquivalente zu lernen?
Ash
1
Die Arduino-Bibliotheken würden ihre Entsprechungen enthalten, aber das Lesen kann etwas gelehrt sein. Ich empfehle, ein AVR-Tutorial auf niedriger Ebene zu finden, das Ihnen die verschiedenen Register und Peripheriegeräte erklärt. Oh, und das Datenblatt. Holen Sie sich immer das Datenblatt.
Ignacio Vazquez-Abrams