プログラムの作成と書き込み win10   

 PCの環境変化とともにAVRのプログラム作法も変わってきました。現在(2016.09.19)の方法を記します。
プログラムを組み立てて、コンパイルして、ターゲットに書き込むという操作を繰り返して意図したプログラムを完成するわけですが、統合環境AVRstudioは儀式が多いので好きではありません。シミュレーションができますが使いこなしができていません。
もっぱら一般エディタで書いて、コマンドプロンプト画面でコンパイルして、同じ画面でターゲットに書き込んでいます。
コンパイル時のエラーがあるときは、コマンドプロンプト画面のエラー(またはワーニング)メッセージで原因が推定されることが多いので修正に手間取ることもありません。コマンドプロンプト画面を編集可能にしておくとタイピングは極端に少なくなります。
このための環境設定と日頃行っている方法をまとめてみます。


コンパイラ avr-toolchain-installer-3.4.2.1573-win32.win32.x86.exe のインストール
最新のavr-gccは avr8-gnu-toolchain-installer-3.5.3.90-win32.any.x86.exe のようですが、実行しても解凍するだけで設定はなにもしないようです。その上に、make.exe を含んでいませんから単独で使用することはできません。少し古くなりますが、表題の avr-toolchain-installer-3.4.2.1573-win32.win32.x86.exe は実行すると必要なpathも設定されます。現在のATOMELの公式HPからはダウンロードできませんが、http://www.atmel.com/images/avr-toolchain-installer-3.4.2.1573-win32.win32.x86.exe や  http://www.mikrocontroller.net/articles/Atmel_Studioからダウンロードできます。
少し古い、という心配はありますが私自身はオーソドックスなAVRしか使いませんので心配していません。

エディタの準備
私の好みで「サクラエディタ」を使っています。
http://sakura-editor.sourceforge.net/download.htmlからダウンロードしてインストールします。このページの注意書き「注意: パッケージが最新版の実行ファイルを含んでいないことがあります.新規にインストールされる場合にはパッケージ版をインストールした後でsakura.exeのみを最新版EXEと差し替えることをおすすめします.」に従います。
なお、このファイルはくせがあって、一度起動すると「使用中」となってしまって次のインストールができません。windowsを再起動するかユーザーのログオフをすると追加インストールができるようになります。(最近は確認していません)
好みの設定ができますので使う内に徐々に変更すると良いでしょう。

プログラムローダ(書き込みソフト)の準備
プログラムローダ(書き込みソフト)はsenshuさんの avrdude-GUI のみを使っています。このサイトの趣旨を承諾してhttp://www-ice.yamagata-cit.ac.jp/forum/index.phpのサイトからavrdude-2014-RC3.zipをダウンロードし、解凍の後に必要なファイルをC:\bin\に移しpathを設定すると便利に使えます。
プログラマ(ハードウェア)は、HIDaspx、pic18spx、FT232RLビットバンライターを使っています。

コマンドプロンプトの準備
コマンドプロンプトはmain.cがあるホルダで開く必要がありますが、win10になって便利になりました。main.cがあるホルダをエクスプローラーで開いて、どのファイルもクリックされていない状態でメニューの「フォルダ」を左クリックするとコンテキストメニューに「コマンドプロンプトを開く」がありますので左クリックで開きます。 ディレクトリ移動の必要がありません。
「0enter」で下記のバッチファイルが走ります。

プログラムファイル類のフォルダの準備
一つのプログラム毎にフォルダを作っています。プログラム名をフォルダ名にしておくと便利です。多くのプログラムを1ケ所に置けるように、例えば c:\prog\ の中に test1 などのホルダ名で準備しています。
この中には コンパイルのためのバッチファイル、makefile、.cファイル、などを置いています。後でわかりやすいように 回路図や写真を置くときもあります。
コンパイルで.hexファイルもここにできます。

コンパイルのためのバッチファイル
このバッチファイルを置かなくても make.exe を実行すればよいのですが、 他のコンパイラの make.exe が実行されるのを防ぐためと、通常は使わないその他のファイルが生成されるのでそれを削除するために使っています。内容は、
echo off
"C:\Program Files (x86)\Atmel\AVR Tools\AVR Toolchain\bin\make" clean
"C:\Program Files (x86)\Atmel\AVR Tools\AVR Toolchain\bin\make" all
rm *.elf *.lst *.map *eeprom.hex *.o *.bin *.srec
echo on
と書いています。""はホルダ名に空白が含まれるために必要です。その他のファイルが必要なときは REM で rm を消しています。
バッチファイル名は 0.bat としていますが、上方に表示されるように0にしています(enterキーにも近い)。

makefileの修正
makefileは avr toolchain に含まれるサンプルプログラムを少し変更したものを使っています。変更点は、@TARGET名の入力は1回だけに、gccのバージョンを表示する、プログラムのメモリ使用量を表示する、の3点です。

プログラムごとの変更が必要なのは次の行です。
MCU = atmega128 ・・・ cpu名
F_CPU = 8000000 ・・・ クロック
TARGET = main ・・・ .cファイル名
SRC = $(TARGET).c ・・・ その他の.cファイルを同時にコンパイルするとき
OPT = s ・・・ オプションを変更するとき(変更していない)
いずれも次の行に
"########################################################"
を入れて注意する行が見やすいように工夫しています。
次のプログラムを作るときはこれをコピーした後、変更しています
アセンブラソースには対応していません(ASRC = ・・・ で良いかも?)。
makefileの例です。落書きゴミが入っています。 makefile   表示の都合で.txtをつけています。

コンパイルする
ソースファイルが必要ですから サクラエディタ を使って .c ファイルを作ります。このとき画面にプログラムのフォルダを小さく開けて置きます。
.cファイルの最小機能が書けたら保存してコンパイルのテストを行います。
プログラムフォルダのメニューバーにある「ファイル」を左クリックして コマンドプロンプト を開きます。ディレクトリがカレントを示していますから 0 を実行するとコンパイラが走ります。エラーがなければhexファイルができます。ワーニングはあってもコンパイルは正常に行われますので注意が必要です。
エラーがあればソースを開いて変更し、上書き保存をして再コンパイルをしますが、コマンドプロンプト窓では「上向き矢印キー↑」でバッチファイルを実行するコマンドが再表示されますからタイプの必要はありません。

ターゲットへ書き込み
部分的なプログラムができたらターゲットに書き込んでいます。
しかし、その前に、私の癖ですが、ターゲットボードに電源回路、プログラム書き込み回路、(クロック発振回路)、ができた時点でライタを繋ぎ デバイス情報を読みとる習慣があります。電源回路の誤配線と書き込み回路の正常を確認する習慣です。(いくつ作っても最初に電源を入れるときは緊張します。電源に保護抵抗を入れて電流計を見ながら電源をつなぎます。異常電流が流れなければほっとします。)

ターゲットへの書き込みはavrdude-GUIを実行して、hexファイルをドラッグアンドドロップした後、 ENTER を押します。

部分的プログラム実行
例えばLEDの点灯が確認されれば成功ですから次へ進みます。

プログラムの完成へ
追加のプログラムを少し書いては コンパイル → 書き込み → 実行 を繰り返しています。
初めてのケースでは最終的には関係のないプログラムを書いて、実験しながら進めるのが常になっています。
必要な時期に ヒューズ を設定しています。
思うように動作しないときは適当なルーチンに LEDの点灯や点滅、UART使用のときは適当なメッセージがPCに送られるように設定してプログラムの完成を目指します
「ひと月経てば赤の他人」という言葉もあるのでコメントはできるだけ入れるように心がけていますが、思うようにはなっていないようです。


読んでいただいた方に参考になるかどうか・・・    おしまいです。




inserted by FC2 system