컴파일 / 링크 / 업로드 프로세스 이해 (따라서 IDE를 사용할 필요가 없습니다)


10

나는 최근에 (마이크로 컨트롤러에 대한 사전 경험이없는) arduino UNO를 가지고 놀기 시작했습니다. IDE 대신 emacs를 사용하고 싶습니다. 또한 자체 makefile을 작성할 수 있도록 IDE에서 후드가 수행하는 작업을 알고 싶습니다. 내가 찾은 자습서는 오래되었거나 설명없이 일련의 단계로 표시됩니다. 누군가가 gcc-avr과 avr-dude를 사용하여 전체 compliation / linking / upload 프로세스가 어떻게 작동하는지, 그리고 IDE에서 어떻게 사용되는지 설명해 주시면 감사하겠습니다.


5
파일 → 환경 설정에서 "중 컴파일 출력 표시 : ☑ 편집 ☑ 업로드"를 통해 후드를 살펴볼 수 있습니다.
jippie

거의 복제 : 터미널을 통한 코드 컴파일 . 그 질문에 대한 대답에서 arduino-builder와 Sudar Muthu 'Makefile에 대한 링크를 참조하십시오.
Edgar Bonet

답변:


12

IDE 의 기능을 정확하게 복제하고 싶지만 명령 행에서 구동하기를 원한다면 이것이 바로 Ino 입니다. 전체 Arduino 빌드 프로세스에는 많은 장소에서 많은 파일을 복사하는 것이 포함되며 일반적으로 복제하기가 쉽지 않습니다.

.ino 파일과 Arduino 라이브러리를 놓을 준비가 되었다면 훨씬 간단한 툴셋을 얻게됩니다. avr-gcc 컴파일, avrdude 업로드, 그리고 당신은 끝났습니다. 간단한 프로젝트에서 내 makefile 중 하나는 다음과 같습니다.

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

복사하여 붙여 넣을 경우 모든 "↹"를 탭 문자로 바꾸십시오.

편집하다:

Github에서 빌드 시스템으로 저장소를 만들었습니다 .


고마워, 당신의 makefile은 내가 생각해 냈던 것입니다. 그러나 라이브러리를 제거한다는 것은 digitalWrite ()와 같은 함수를 사용할 수 없다는 것을 의미한다고 생각합니다. 이 경우, 평범한 C와 동등한 것을 어디서 배워야합니까?
Ash

1
Arduino 라이브러리에는 해당 기능이 포함되어 있지만 읽기에 약간의 시간이 걸릴 수 있습니다. 다양한 레지스터와 주변 장치를 설명하는 저수준 AVR 자습서를 찾는 것이 좋습니다. 아, 그리고 데이터 시트. 항상 데이터 시트를 받으십시오.
Ignacio Vazquez-Abrams
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.