C言語(WinAVR)で開発する

AVRの大きなメリットはフリーなC言語(gcc)を使用して開発することが出来ることです。
最近のAVRはクロックも高速になり、プログラム容量も大きくなっています。昔のようにアセンブラを使用してカリカリと開発する必要はあまりないはずです。

WinAVRと呼ばれるパッケージを導入することで、Windows環境で手軽にgccを使用することが出来ます。
WinAVRにはCygWin、gcc、binutils、gdbなどのAVRを開発するための様々なツールが組み込まれています。


インストール

WinAVRはこちらからダウンロードすることが出来ます。
(2005/5/21時点で最新のWinAVR-20050214-install.exeに変更しました)

このインストールプログラムを実行すると


言語を聞いてきますのでJapanese(日本語)を選択して”OK”をクリック


セットアップが開始されますので”次へ”をクリック


インストール先はデフォルトのC:\WinAVRで良いですので”次へ”をクリック


インストールコンポーネントは"Install Files"を選んでおけばOKです
PATHはバッチファイルで個別に設定したほうが他の環境と整合性がとれて良いと思います
”インストール”をクリックでファイルのコピーが開始されます


これでインストールは終了です ”完了”をクリック


Programmers NotePadなるエディタのようなものが立ち上がるかもしれませんが、無視して終了させます


インストールの確認

とりあえず無事にインストールされているか確認しておきましょう。
AVR Butterfly用のテストプログラムをダウンロードして、適当な場所に解凍してください。
(とりあえず今回はC:\WinAVR\examples\の下に展開しました)

DOS窓を開いて、WinAVR用のPATHを設定するためのコマンドファイル(バッチファイル)setenv.cmdを実行します。
(Win98/Meの場合はsetenv.batにリネームする必要あり)
そして引き続きmakeを実行するとコンパイルとリンクが行われます。

このように表示されればOKです。
これでATmega169用のバイナリmain.hexが作成されます。


ターゲットデバイスに合わせてmakefileを書き換える

AVRはデバイス(AT90S2313やATmega169など)によってI/Oポートのアドレスが異なったり、周辺機器の種類なども異なります。またデバイスによって使用できるCPUの命令なども異なります。

この違いにコンパイラが対応するために、WinAVRではmakefileに使用するデバイス名を明記します。

例えば上の例のATmega169用のテストプログラムではmakefileの3行目で
「MCU_TARGET = atmega169」と指定しています。
これを「MCU_TARGET = at90s2313」と書き換えることでAT90S2313用にコンパイルすることが出来ます。

また、makefileの2行目の
「OBJ = main.o uart.o print.o」にオブジェクトを追加することでコンパイルするソースを追加できます。