WinAVRメモ                     TOPページへもどる

WinAVR 2つのバージョンを切り換えて使う ’08.01.25
WinAVRのダウンロード 


WinAVR 2つのバージョンを切り換えて使う
発端:新しいバージョンが発表されていることは承知していたのですが当初はバグが多いこと、情報がないこと、旧版が安定していることから20060421版を使い続けていました。ところがAVRminiProgをコンパイルしようとしたところ、最新版のものは20060421版ではコンパイルできませんでした。仕方なく20071221版に切り換えると無事コンパイルできました。AVRstudio4での作業です。
「これからは新版と付き合わねばならないか…」と書いていたところsenshuさんから、junctionコマンドを使うと簡単に切り換えられることを教えていただきました。教えていただいたとおりのことに少し自我を加えて自分のしたことをまとめておきます。自分一人でしたような書き方になりますが、ごめんなさい。

まず、junctionコマンドを用意します。MicrosoftTecNetからjunctionをダウンロードします。zipファイルを解凍するとjunction.exeができます。コマンドプロンプトを立ててその中にこのjunction.exeをドラッグ&ドロップして実行しますとインストールされます。これでjunctionコマンドを使う準備ができました。
  休憩:MSの日本語訳を考えた人は日本語が好きな人だろうか。じゃまくさくなるとカタカナにしておしまいにしているような。ここで良く出てくるコマンドプロンプトの語は私には
  極めてなじみにくい。書こうとすると読んでしまうが、何とも発音しにくい語ではある。めんどうなので「cp」でごまかすことにしたいと思う。申し訳ないが。

cp上で junction を実行すると使用法が現れます。
このコマンドは、フォルダに別名を付けて、別名で使用できる環境を作るものです(senshuさんが掲示板で詳しく説明しておられます)。
いま仮に、C:\に AA1 と AA2 という2つのフォルダがあるとします。このとき、
 >junction C:\A C:\AA1 --@
とすると A はAA1を参照します。
 >junction C:\A C:\AA2 --A
とすると A は違ったフォルダ AA2 を参照します。
Aを使用するプログラムは、@を実行すればAA1を使うことになりますし、Aを実行すればAA2を使うことになります。

WinAVRがjunctionで切り換えられる。 WinAVRは珍しくレジストリをほとんど使わないプログラムだそうです。フォルダにファイルを置くだけの素直なものです。したがって、このフォルダを切り換えれば複数のWinAVRを使い分けることができます。(作者に感謝!)
二つのバージョンのWinAVRを WinAVRxx、WinAVRyyというフォルダ名で準備して置いて、必要に応じてどちらかをWinAVRの別名で使うことで使い分けます。

WinAVRのインストール:ここでは20060421版と20071221版をインストールすることにします。前者をWinAVR06、後者をWinAVR07という名で今後使おうと思います。もちろんこれらの名前は自由です。
インストール時に-06、-07を付けてインストールしますとPATH設定などに-06、-07が残って不都合ができますので、両方ともWinAVR名でインストールして、リネームします。

まず、WinAVR20060421のインストールです。場所を聞いてきますがデフォルトの C:\WINAVR にインストールします。完了したら、C:\WINAVR を WINAVR06 に改名しておきます。

次に、WinAVR20071221をインストールします。デフォルトではC:\WINAVR-2007となりますのでC:\WINAVRに変更してインストールします。これも完了後 WINAVR07 に改名します。

ここでcpで path を実行してみます。 C:\WINAVR\… があればよろしい。WinAVRxx\… は困ります。

これでjunctionコマンドを実行すると切り換えられるのですが、タイピングの不得手な私はバッチファイルを作りました。
エディタを立てて、
  junction C:\winavr C:\WINAVR06  と1行書いたものを WinA6.bat でデスクトップに保存して、
  junction C:\winavr C:\WINAVR07  と1行書いたものを WinA7.bat でデスクトップに保存しました。
cpにこれらのバッチファイルをドラッグ&ドロップ&してenterキーを押すとWinAVRがそれそれを指し示していることがわかります。
(私はバッチファイルをエディタに関連づけていますので間違ってクリックしてもエディタが立つだけで誤動作はしません。)

cp上で切り換えておくと、コマンドラインでのmakeによるコンパイルはもちろん、AVRstudioでも望みのバージョンが使えます。
注意:WinAVR使用中(コンパイル動作中)は決して切り換えないでください。安全弁はありません。
     junctionフォルダを消去すると元のフォルダも内容が消える(WinXPのとき)ので、-d で消去すること。
       >junction -d c:\winavr
     扱いに細心の注意が要るようです。自己責任でお願いします。

senshuさんの掲示板に junction の詳しい解説が書かれていますので是非お読みください。
現在のバージョンは >junction c:\winavr cr でわかりますが、希望するbatファイルのドラッグ&ドロップが簡単です。
もちろん3個以上のWinAVRを切り換えることも可能です。

(2008.01.26追記) 上記のjunctionフォルダをエクスプローラで消去すると元のファイルが消えてしまうのを回避する方法があるとkkkさんが教えてくれました。「リンク作成シェル拡張for Windows 2000/XP」をインストールするとjunctionフォルダのアイコンのデザインが変わる上に消去しても元のフォルダは消えないそうです。 vectorのものは古いので、http://www4.point.ne.jp/~numa/lnhdr/index.htmlからダウンロードしてくださいとのことです。
ダウンロードした lnhdr-1.52-x86-ja.msi を実行するとインストールされます(再起動が必要です)。

(2008.07.21)新しいバージョンを追加するときは、C:\WINAVR をdeleteして(junction -d C:\WINAVR を実行)、新バージョンを C:\WINAVR フォルダを指定してインストールします(C:\WINAVR-xxにインストールするとpath登録で支障があります)。インストールされたC:\WINAVRをC:\WINAVRxxにファイル名を変更します
新しいbatファイルをコピー・変更で作ります(junction C:\winavr C:\WINAVRxx の1行です)。バッチファイルを実行するとC:\WINAVRが作られます。 

                                                  



WinAVRのダウンロード
 最新版の WinAVR は http://sourceforge.net/projects/winavr/ からダウンロードできます。
 このページからダウンロードするのが正当と思いますが、次のサイトの下の方にある一覧表からDLする方が簡単でしょう。
   http://sourceforge.net/project/showfiles.php?group_id=68108&package_id=66543
 上の行ほど新しいのですが、新しいものが常によいとは限らないので評判を見ながら使うのがいいようです。ちなみに私は 20060421 を愛用しています。これで不自由はしていないし、次の版でバグがあったという報告があったように思います。やがては変えると思いますが.....

  WinAVR20080610 (新しい) 
  WinAVR20071221  
  WinAVR20070525
  WinAVR20070122
  WinAVR20060421 (現在使用中です。2007.12)
  WinAVR20060125 (文字化けします。)
  WinAVR20060119 (バグが報告されています。)
  WinAVR20050214 (長く使いました。)
  WinAVR20040720 (私が使い始めた頃のバージョンです。)

(2008.08.26) 新しいものほど生成コードは大きくなる傾向にあるようです。メモリ容量ぎりぎりで書かれたものはバージョンが新しくなると納まらなくなるケースがあると報告されています。

                                           












TOPページへもどる


inserted by FC2 system