WinAVRのインストールとコンパイル  05.12.29
私のWinAVR使用環境は何もわからなかったところから試行錯誤で組み立てられたものでした。その中で、「こうしたら動いた」という報告でページが構成されてきました。 したがって、はじめての方がトレースするには不親切だったかもしれません。そこで初心に帰って、今までのE:\にインストールしていた環境を白紙に戻し、C:\にインス トールするところから実行し直してみました。ここで簡単なプログラムをコンパイルするまでの過程を書いてみようと思います。

WinAVRのインストール:ダウンロードしたWinAVR-20050214-install.exeをダブルクリックします。条件を聞いてきますがデフォルトのままで インストールを続けます。程なく完了するでしょう。デスクトップに多くのアイコンができますが、私は使わないのでとりあえずデスクトップの一つのフォルダに 入れてしまいます(デスクトップがうるさいからです)。 なお、giveio.sys、INSTDRV まで入っているのにはびっくりしました。

パスの確認:環境変数PATHにフォルダを登録するとOSは必要なファイルを環境変数PATHに書かれたフォルダから探します。WinAVRの実行の ための多くのファイルが入っているフォルダが登録されていないといけません。インストーラはこの登録も行います。
コマンドプロンプトで黒いDOS窓を開けて、path とタイプします。その中に AVR 関係のフォルダ名があるでしょうか。私の場合はありませんでした。OSは起動時に登録する ことが多いので再起動します。私のOSはWinXPです。
再起動した後のpathを調べると、
 PATH=C:\WinAVR\bin;C:\WinAVR\utils\bin;C:\JUST\JSLIB32;C:\WINDOWS\system32;
 C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\borland\bcc55\bin

となっています。赤字の部分にAVR関係のフォルダがあるのが分かります。これらのフォルダには「パスが通っている」といいます。

プログラムを格納するフォルダの準備:ここでは C:\ にフォルダ prog を作り、この c:\prog の中にここのプログラムを入れるフォルダを 作ります。一つのプログラムに関係する多くのファイルができますからプログラム毎に別のフォルダにしないと同じファイル名のものができて整理できなくなります(と思っ ています)。例えば led1.c、led2.c、pwm1.c という3つのプログラムがあれば、 c:\prog の中に led1、led2、pwm1 という3つのフォルダをつくるわけです。フォルダ名と プログラム名は同じにしておくと便利だと思います。

一つのプログラムフォルダに含まれるファイル:一つのプログラムフォルダ、例えば led1 の中には少なくとも 0cc.bat makefile led1.c の3つのファイルを作らねばなりません。 0cc.bat の「0cc」の部分は何でもかまいません。0を付けると上の方に表示されるから、そうしています。 このバッチファイルはカレントディレクトリの変更をして、make.exeを走らせる手順書です。 次のmakefileはmake.exeの指示書です。この中にコンパイルするプログラム 名やMPUデバイスの名前を書きます。プログラム毎に部分的に違った内容になります。 最後の xx.c ファイルはプログラムそのものです。

0cc.bat バッチファイルの作り方:エディタを使って、半角文字で、次のように改行して書きます。
c:
cd c:\prog\led1
c:\winavr\utils\bin\make clean
c:\winavr\utils\bin\make all
del *.o *.lst *.eep *.lss *.map *.sym *.elf
1行目は、カレントドライブをCドライブに変更します。OSがc:にあるときは無くてもよいのですが、c:\以外のときは必要です。
2行目は、カレントディレクトリ(カレントフォルダ)を led1 フォルダに決めています。プログラムがあるフォルダを指定します。
3行目は、古いコンパイル済みを削除しています。あるといたずらをすることがあるので削除した方がよいでしょう。
4行目は、コンパイルの実行です。
なお、3,4行目にc:\winavr\utils\bin\を付けてフルパスリストとしてあるのは、私のように他のCコンパイラ(borland)があるとそのmakeが走る可能性があるからです。 他のCコンパイラと同居しているときはフルパスを書くべきです。
5行目は、さしあたって要らないファイルを削除しています。makefileで指定できるようですが不勉強で知りません。DOSのコマンドでできてから消しています。ファイルが 必要なときはこの行を編集します。
プログラムが変わったときはアンダーラインのフォルダ名だけを変えればよいことがわかるでしょうか。

makefileの作り方:C:\WinAVR\sample\Makefileの一部を変更して使用します。このファイルを順に見ていくと、
MCU = atmega128
F_CPU = 8000000
TARGET = main
SRC = $(TARGET).c

という部分があります。
1行目はMCUを書きます。 atmega8, attiny2313 など。 2行目はクロックを書きます。1MHzなら 1000000 です。3行目はコンパイルする.cファイルの拡張子(.c)を 除いたものを書きます。led1.cならled1です。 4行目は同時にコンパイルする他のxx.cファイルがある時に、この後に半角空白に続けて書きます。
(実は、makefile はほとんど知らないのです。試行錯誤でここまできました。makefileの中には数十行のものもあるようですが、内容が理解できないのでこの大きなファイル の一部を変えて実行しています。Cをまともに勉強していないのでこの峠は厳しそうです。越えられるのはいつのことやら。そんなわけで、Webには私のmakefileが無いの です。MFile [WinAVR]の使い方もまったく分かっていません。)
自分で使うものには変更すべき部分の次の行に #########...################# の行を追加して目に付きやすくしています。

xx.cファイルの作り方はここでは書きません。

コンパイルする:プログラムフォルダを開けて、小さくして画面に置きます。0cc.bat makefile xx.cがあることを確認します。 次に、DOS窓を開けます。そして、この中に 0cc.bat をドラッグ&ドロップ(DD)します。黒い窓の中でクリックしてカーソルをDOS窓に移し(点滅していればよい)、 enterキーを叩いてください。 正しければプログラムフォルダに xx.hex ファイルが作られます。

ATTiny26Lで始めるAVRの基礎 の 「実験1 LED1個の点滅」に出てくる led01.c プログラムファイルを、0cc.bat Makefile とともに圧縮して ここにおいて あります。解凍して実行してみて下さい。フォルダの位置関係がずれるとダメなので、わかるまで以上のフォルダ関係を守ってください。

    わからない点はどしどしご質問下さい。そしたら、私も少しずつ賢くなります。  



TOPページへもどる




inserted by FC2 system