Comprensione del processo di compilazione / collegamento / caricamento (quindi non devo usare l'IDE)


10

Ho iniziato a giocare con e arduino UNO abbastanza di recente (senza alcuna esperienza precedente con i microcontroller). Vorrei usare emacs invece dell'IDE, e vorrei anche sapere cosa fa l'IDE sotto il cofano, per poter scrivere il mio makefile. I tutorial che ho trovato sono obsoleti o sono presentati come una serie di passaggi senza alcuna spiegazione. Gradirei se qualcuno potesse spiegarmi come funziona l'intero processo di compliation / collegamento / upload usando gcc-avr e avr-dude e come viene usato dall'IDE.


5
Puoi dare un'occhiata sotto il cofano "Mostra output dettagliato durante: ☑ compilazione ☑ carica" ​​in File → Preferenze.
jippie,

Quasi duplicato: compilazione del codice tramite terminale . Vedi i link a arduino-builder e Sudar Muthu 'Makefile nella mia risposta a quella domanda.
Edgar Bonet,

Risposte:


12

Se vuoi una duplicazione esatta di ciò che fa l'IDE ma vuoi che sia guidato dalla riga di comando, ecco a cosa serve Ino . L'intero processo di compilazione di Arduino comporta la copia di molti file da molti luoghi e in genere non è banale duplicare.

Se sei pronto a lasciare andare i file .ino e le librerie Arduino, otterrai un set di strumenti molto più semplice. compilazioni avr-gcc, caricamenti avrdude e il gioco è fatto. Ecco uno dei miei makefile da un semplice progetto:

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

Se si copia e incolla, assicurarsi di sostituire tutto "↹" con i caratteri di tabulazione.

MODIFICARE:

Ho creato un repository con il mio buildsystem su Github .


Grazie, il tuo makefile è praticamente quello che stavo cercando di inventare. Ma credo che sbarazzarsi delle librerie significhi che non sarò in grado di usare funzioni come digitalWrite ()? In tal caso, dove dovrei cercare di apprendere i loro equivalenti C semplici?
Ash,

1
Le librerie di Arduino conterrebbero i loro equivalenti, ma possono essere un po 'erudite da leggere. Ti consiglio di trovare un tutorial di basso livello su AVR che ti spieghi i vari registri e periferiche. Oh, e il foglio dati. Ottieni sempre il foglio dati.
Ignacio Vazquez-Abrams,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.