了解编译/链接/上传过程(因此我不必使用IDE)


10

我最近开始和arduino UNO玩(没有任何微控制器的经验)。我想使用emacs代替IDE,并且我也想知道IDE的功能,以便能够编写自己的makefile。我发现的教程已经过时,或者作为一系列步骤显示,没有任何解释。如果有人可以向我解释使用gcc-avr和avr-dude的整个编译/链接/上传过程以及IDE如何使用它,我将不胜感激。


5
您可以在“文件”→“首选项”下,通过“在以下过程中显示详细输出:☑编译☑上传”来了解情况。
jippie 2014年

几乎重复:通过terminal编译代码。在我对该问题的回答中,请参阅指向arduino-builder和Sudar Muthu'Makefile的链接。
埃德加·博内特

Answers:


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上使用buildsystem创建了一个存储库


谢谢,您的makefile几乎是我想要的。但是我想摆脱这些库意味着我将无法使用诸如digitalWrite()之类的功能?在那种情况下,我应该去哪里学习它们的普通C等效项?
2014年

1
Arduino库将包含它们的等效项,但阅读起来可能有些学识。我建议找到一个低级的AVR教程来学习,该教程将向您解释各种寄存器和外围设备。哦,还有数据表。始终获取数据表。
伊格纳西奥·巴斯克斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.