コンパイル/リンク/アップロードプロセスを理解する(IDEを使用する必要がないため)


10

私は最近、Arduino UNOで遊んでいます(これまでにマイクロコントローラーの経験はありませんでした)。IDEの代わりにemacsを使用したいと思います。また、自分のメイクファイルを作成できるようにするために、内部でIDEが何を行うかについても知りたいです。私が見つけたチュートリアルは古くなっているか、説明なしで一連のステップとして提示されています。誰かがgcc-avrとavr-dudeを使用して全体のcompliation / linking / uploadプロセスがどのように機能するか、そしてそれがIDEでどのように使用されるかを誰かに説明していただければ幸いです。


5
「ファイル」→「設定」の下の「次の間に詳細な出力を表示:☑コンパイル☑アップロード」で、内部を確認できます。
ジッピー2014

ほぼ重複:端末を介してコードをコンパイルしています。その質問への私の回答でarduino-builderとSudar Muthu 'Makefileへのリンクを参照してください。
Edgar Bonet 2017年

回答:


12

あなたがしたい場合は、正確な IDEが何の重複をしかし、それは、コマンドラインから駆動したい、それが何井野がためです。完全なArduinoビルドプロセスには、多くの場所から多くのファイルをコピーすることが含まれ、通常、複製するのは簡単ではありません。

.inoファイルとArduinoライブラリを手放す準備ができている場合は、はるかに単純なツールセットが得られます。avr-gccがコンパイルされ、avrdudeがアップロードされ、完了です。簡単なプロジェクトのメイクファイルの1つを次に示します。

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.