Hiểu quy trình biên dịch / liên kết / tải lên (vì vậy tôi không phải sử dụng IDE)


10

Tôi đã bắt đầu chơi với và arduino UNO khá gần đây (không có bất kỳ kinh nghiệm nào trước đây với bộ điều khiển vi mô). Tôi muốn sử dụng emacs thay vì IDE và tôi cũng muốn biết IDE làm gì dưới mui xe, để có thể viết tệp Makefile của riêng tôi. Các hướng dẫn tôi tìm thấy đã lỗi thời hoặc được trình bày dưới dạng một loạt các bước mà không có bất kỳ lời giải thích nào. Tôi đánh giá cao nếu ai đó có thể giải thích cho tôi cách toàn bộ quá trình khiếu nại / liên kết / tải lên hoạt động bằng cách sử dụng gcc-avr và avr-dude và cách IDE sử dụng nó.


5
Bạn có thể xem qua mui xe bằng cách "Hiển thị đầu ra dài dòng trong khi: biên dịch tải lên" Trong Tệp → Tùy chọn.
jippie

Hầu như trùng lặp: Biên dịch mã qua thiết bị đầu cuối . Xem các liên kết đến arduino-builder và Sudar Muthu 'Makefile trong câu trả lời của tôi cho câu hỏi đó.
Edgar Bonet

Câu trả lời:


12

Nếu bạn muốn sao chép chính xác những gì IDE làm nhưng muốn nó được điều khiển từ dòng lệnh, thì đó là những gì Ino dành cho. Quá trình xây dựng Arduino đầy đủ bao gồm sao chép rất nhiều tệp từ nhiều nơi và thường không tầm thường để sao chép.

Nếu bạn đã sẵn sàng để loại bỏ các tệp .ino và các thư viện Arduino, bạn sẽ có một bộ công cụ đơn giản hơn nhiều. biên dịch avr-gcc, tải lên avrdude và bạn đã hoàn tất. Đây là một trong những tệp thực hiện của tôi từ một dự án đơn giản:

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

Nếu sao chép và dán, hãy đảm bảo thay thế tất cả "" bằng các ký tự tab.

BIÊN TẬP:

Tôi đã tạo một kho lưu trữ với hệ thống xây dựng của mình trên Github .


Cảm ơn, makefile của bạn là khá nhiều những gì tôi đã cố gắng đưa ra. Nhưng tôi đoán việc thoát khỏi các thư viện có nghĩa là tôi sẽ không thể sử dụng các hàm như digitalWrite ()? Trong trường hợp đó, tôi nên tìm kiếm học C tương đương ở đâu?
Tro

1
Các thư viện Arduino sẽ chứa tương đương của chúng, nhưng chúng có thể hơi uyên bác để đọc. Tôi khuyên bạn nên tìm một hướng dẫn AVR cấp thấp để thực hiện điều đó sẽ giải thích cho bạn các thanh ghi và thiết bị ngoại vi khác nhau. Oh, và bảng dữ liệu. Luôn lấy bảng dữ liệu.
Ignacio Vazquez-Abrams
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.