ArduinoはIDEでスケッチをコンパイル(ベリファイ)して、TanukinoなどのArduino互換ボードへUSB経由のシリアル通信で書き込んで実行します。
あまり知られていないのですが、コンパイルするとHEXファイルが生成されます。
アップロードすると、このHEXファイルをAVRに書き込まれているブートローダーが受信して、フラッシュメモリに書き込み、実行されます。
ここで、HEXファイルをAVRライタで直接AVRに書き込むとどうなるでしょう?
なんということでしょう。ブートローダー無しでそのまま動いてしまいます。
つまりArduinoの開発環境で、Arduinoのブートローダーが書き込まれていない素のAVRで動作するアプリが作れるのです。
試しに、4x4x4LedCubeのHEXファイルを書き込んでみたところ、無事動作しました。
さすがにシリアル通信はブートローダー内のルーチンを利用しているので、動作しないかもしれません。
ブートローダーのソースを見て見ましたが、追いかけ切れません。
試してみるのが手っ取り早いので、やってみました。
AVRライタで書き込んだATMega168をTanukinoに差し込んで電源を入れてみました。
この通り、問題なくシリアル通信ができました。
というわけで、試用版のコンパイラとは異なりサイズ制限の無い開発環境になりました。
Arduinoの標準や寄贈ライブラリや、山のようにある作例スケッチのオマケ付きです。
AVRはATMega8,168,328などに限られますが、秋月価格で200円、230円、250円なので、I/Oポートも沢山あるし、どんどん利用していこうと思います。
7セグ8桁(16I/O)なんて簡単に実現できますね。配線が大変ですが。
シリアル入力の表示器でも作ろうかな。きっと誰かが作っているでしょうね。
あまり知られていないのですが、コンパイルするとHEXファイルが生成されます。
アップロードすると、このHEXファイルをAVRに書き込まれているブートローダーが受信して、フラッシュメモリに書き込み、実行されます。
ここで、HEXファイルをAVRライタで直接AVRに書き込むとどうなるでしょう?
なんということでしょう。ブートローダー無しでそのまま動いてしまいます。
つまりArduinoの開発環境で、Arduinoのブートローダーが書き込まれていない素のAVRで動作するアプリが作れるのです。
試しに、4x4x4LedCubeのHEXファイルを書き込んでみたところ、無事動作しました。
さすがにシリアル通信はブートローダー内のルーチンを利用しているので、動作しないかもしれません。
ブートローダーのソースを見て見ましたが、追いかけ切れません。
試してみるのが手っ取り早いので、やってみました。
AVRライタで書き込んだATMega168をTanukinoに差し込んで電源を入れてみました。
この通り、問題なくシリアル通信ができました。
というわけで、試用版のコンパイラとは異なりサイズ制限の無い開発環境になりました。
Arduinoの標準や寄贈ライブラリや、山のようにある作例スケッチのオマケ付きです。
AVRはATMega8,168,328などに限られますが、秋月価格で200円、230円、250円なので、I/Oポートも沢山あるし、どんどん利用していこうと思います。
7セグ8桁(16I/O)なんて簡単に実現できますね。配線が大変ですが。
シリアル入力の表示器でも作ろうかな。きっと誰かが作っているでしょうね。