Понимание процесса компиляции /компоновки /загрузки (поэтому мне не нужно использовать среду IDE)

Я начал играть с и arduino UNO совсем недавно (без какого-либо предварительного опыта с микроконтроллерами). Я хотел бы использовать emacs вместо IDE, и я также хотел бы знать, что делает IDE под капотом, чтобы иметь возможность писать свой собственный make-файл. Учебники, которые я нашел, либо устарели, либо представлены в виде серии шагов без каких-либо объяснений. Я был бы признателен, если бы кто-нибудь мог объяснить мне, как работает весь процесс compliation /linking /upload, используя gcc-avr и avr-dude, и как он используется средой разработки.

10 голосов | спросил Ash 27 PMpSun, 27 Apr 2014 21:35:01 +040035Sunday 2014, 21:35:01

1 ответ


12

Если вы хотите, чтобы точное дублирование того, что делает IDE, но хочет, чтобы оно было из командной строки, это то, что Ino для. Полный процесс сборки Arduino включает в себя копирование большого количества файлов из большого количества мест и, как правило, не является тривиальным для дублирования.

Если вы готовы отпустить файлы .ino и библиотеки Arduino, вы получите гораздо более простой набор инструментов. avr-gcc компилирует, загружает avrdude, и все готово. Вот один из моих make-файлов из простого проекта:

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 $< [email protected]

.PHONY: all clean upload

При копировании и вставке обязательно замените все символы «â † ¹» на символы табуляции.

EDIT:

Я создал репозиторий с моей сборной системой на Github .

ответил Ignacio Vazquez-Abrams 27 PMpSun, 27 Apr 2014 21:53:51 +040053Sunday 2014, 21:53:51

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132