あーさん日記

https://akkera102.sakura.ne.jp/gbadev/ の中の人

Arduboy 実験3

自作makefile とROM焼きに成功。ただ、かなり大変で1日潰しました・・・。
Arduino IDEコンパイルログから推測して構築したのですが、
これがそもそもの落とし穴です。見た目はコマンドログっぽいのですけど
実は全部網羅されているわけではありませんでした。


■1
inoファイルは、cppに変換される前にIDEに編集され、
ログには出てこないようです。詳しく解説されている方のページを引用します。
スケッチのコンパイルプロセス

.inoファイル内で定義されている関数のプロトタイプが自動で付加されるため,
自分で書く必要はありません。C++/C言語を使い慣れない人向けの措置だとは思いますが,
Arudino以外でC++/Cを利用する場合は注意する必要があります。

ということでinoをavr-g++に掛ける前に自分で加工する必要がありますが、
面倒なら自分でプロトタイプ宣言を書けば解決です。


■2
avr-g++ のオプションに「-DUSB_PRODUCT="Arduino Leonardo"」をつけるとコンパイルエラーになります。
ログの通りに作っても出るので謎。ソースを追いかけると大したことをしていないので
削って対応しました。


■3
焼く前の前処理。ログには日本語のみで以下のように出てきます。

シリアルポート「COM3」を1200bpsで開いて閉じる事によって、リセットを行っています。

自作の場合、tera termでもpython(pyserial)でもいいのですけれど、1200bpsで開いて閉じる必要があります。
リセット後の1~2秒間が書き込み監視期間で、その間にavrdude.exe(焼くツール)を実行すると
うまくいきます。


リセットをかけないでavrdude.exeのオプションばかり見ていると
ハマるので注意してください。

Connecting to programmer: .avrdude: butterfly_recv(): programmer is not responding