2013年8月28日水曜日

AVR 新開発環境の構築


本業の事情(?)により、PCを買い換えることになったため、この機会に、AVRの開発環境も更新することにしました。
今回は、Ni-MH充電器の製作を一回お休みして、上記更新結果を報告致します。


1 開発環境の選定

1.1 ライター

これまでは、秋月電子製 AE-UM232R をライティングデバイスとして用い、ライティングソフトは、avrdude-serjtag  を使用してきました。

AE-UM232R は、AVRと接続するだけで書き込み出来るようになり、また、TXD/RXDも接続しておけば、シリアルモニタでデバッグも可能(arduinoライク)です。
現状、使い勝手として申し分ありませんので、そのまま流用します。

AE-UM232R ⇔ AVR の接続は、Kimio Kosaka さまのページ で説明されている通りに結線しています。
私事環境では、これも定番となった、秋月電子製 ATMEGA168/328用マイコンボード に以下の通り実装して使用しています。


実装箇所の回路は、このページをご参照ください。

一方、ライティングソフトは、AE-UM232R に対応したもうひとつの avrdude で、複数種類のAVRを使用するときに便利な、MPU自動検出機能を持つ、YCIT版 avrdude を使用してみます。


1.2 統合開発環境(IDE)

これまでは、Windows XP + RAM 512MB!という貧弱な環境であったため、AVR Studio 4(+AVR Toolchain)を使用してきました。今回は、Windows 7 + RAM 2GB と、能力面でやや改善?されましたので、AVR Studio 5 以降の新世代開発環境の導入を検討します。

現状での最新の開発環境「Atmel Studio 6」は、AVRTinyシリーズがサポートから外れてしまい、また、要求スペックが高く(最低RAM2GB)、今回のPCでも苦しいと予想されましたので、今回は、AVR Studio 5 の最終版 AVR Studio 5.1.208 を導入することにします。

※ AVRTiny サポート外の記述は誤りでした。Atmel社の公式サイトにおいて、サポートされていることを確認致しました。お詫びして訂正致します。


2 開発環境の導入

現在ログインしているユーザーが、管理者権限を有していることを前提とします。
管理者権限があれば、「コントロールパネル」 ⇒ 「ユーザーアカウント」を開くと、カレントユーザーの権限が「Administrator」になっています。



2.1 USBドライバ

AE-UM232R を、PCに接続します。
これで、自動的にドライバがインストールされる旨の情報もありましたが、私事環境では導入できませんでした。
よって、FTDI社のサイトから、ドライバを入手して解凍しておき※、「コントロールパネル」 ⇒ 「デバイスマネージャ」を開き、「USB Serial Port」「USB Serial Converter」夫々のドライバの更新を行いました。

※ 32bit/64bitの区別はありません。また、「VCP」のドライバをダウンロードすれば、「D2XX」のドライバは内含されています。





2.2 YCIT版 avrdude

山形県立産業技術短期大学校(YCIT) 千秋研究室さま のサイト(以下校名・敬称略)から、現状の最新版 avrdude-2013-RC15b.zip を入手します※。

※ 同研究室サイトへのログイン及び投稿が必要です。

任意のフォルダに展開します。bin/setup.bat は、インストールフォルダが c:/bin 固定であるため、実行せずに展開フォルダの場所で使用することにします。

このとき、必須とされている「libusb」ライブラリは、readme.txt [2](2)項において、AE-UM232Rでは不要との由だったので、インストールしませんでした。


2.3 AVR Studio 5.1

直前バージョンの AVRStudio 5 の導入結果は、『昼夜逆転』工作室さま 「AVR Studio 5のインストールと留意点」(以下敬称・サイト名略)に詳細に説明されています。

同記事に比肩する秀逸な説明はとてもできませんので、ここでは、AVRStudio 5.1 を Win7に導入した場合の相違点・注意点に絞って報告します。


2.3.1 パッケージの選択

AVRStudio 5.1 は、.NET Framework 4 および VisualStudio 2010 Shell 上で動作します。
一方、インストールパッケージは、上記ミドルウエアを含むもの(Full版)と含まないもの(Small版)が用意されています。

『昼夜逆転』工作室によれば、Full版を使用すると、同時にインストールされた英語版ミドルウエアを、日本語版に置き換える必要がある由だったので、今回は、先に .NET Framework 4 および VisualStudio 2010 Shell の日本語版をインストールした状態で、Small版をインストールしてみます。

Atmel社公式サイトでは、上記バージョンの公開を終了しています(Atmel Studio 6.1のページに移動)ので、有志のアーカイブサイトから入手しました。


2.3.2 導入手順

インストールは、Windows 7 のセキュリティを考慮して、念のため「管理者として実行」を選択して実行しました。


『昼夜逆転』工作室の指摘にあった、「Small版のインストール時にエラーとなる」現象は、今回発生しませんでした。

しかし、予想と異なり、VisualStudio 2010 Shell がネット上から強制的にダウンロードされ、英語版がインストールされる結果となりました。
対して、.NET Framework 4 は、新たにダウンロード(=インストール)されませんでした。





この後、AVRStudio5.1本体のインストールが実行されます。
特別な操作はありませんでした。



最後に、『昼夜逆転』工作室の説明に従って、VisualStudio 2010 Shell(英語版)をアンインストールしました。


3 開発作業

3.1 IDEの操作

AVRStudio5.1を起動します。



新規プロジェクトを作成します。
このとき、『昼夜逆転』工作室の指摘にあった、「AVRGCCテンプレートが選択できない」現象は、5.1 では発生しませんでした。

「ソリューション」は、Visual Studioの機能の一つで、複数のプロジェクトをまとめて取り扱う単位です。
例えば、プログラム本体と、専用のライブラリを並行して開発する場合などです。
今回はチェックを外して未使用にします。



(プロジェクト名).c ファイルが生成されて表示されます。
必要に応じて、「ソリューションエクスプローラ」画面から、ファイル名を変更します。
また、VisualStudio の機能である「ビルド構成」を、「Release」に設定します。本項目も、『昼夜逆転』工作室に判りやすく説明されています。



動作クロックを宣言します。これも『昼夜逆転』工作室の説明通り、「プロジェクト」-「(プロジェクト名)のプロパティ」を選択して設定します。



3.2 ライターの操作

3.2.1 起動・設定

avrdude-GUI.exe を起動します。
「Programmer」を、使用しているライターに設定します。AE-UM232Rは、そのものズバリの名称が選択できます。



3.2.2 MPU検出・ヒューズビット

YCIT版の特徴のひとつである、MPU自動検出を行います。
「Device Read」ボタンを押下すると、MPU名が検出され、同時にヒューズビットを読み取ります。
このとき、ステータスにエラーが無いことを確認しておきます。


Extend Bit の値は、未使用ビットを「1」としたときの値が表示されます(AVR仕様書通り)。なお、括弧内の値が、同ビットを「0」としたときの値のようです。

ヒューズビットの書き換えは、Low / High / Extend の何れかを編集し、「Set」ボタンを押下します。
(20130926追記)未使用ビットの取り扱いが柔軟になっています。例えば、Extend Bit に「03」を明示的に書き込んでも、AVRには「FB」と反映され、結果は「FB(03)」と表示されます。

「Fuse Calc」ボタンを押下すると、ヒューズビットの計算を行ってくれるサイトが表示されます。
このサイトは、AVRのマニュアルと睨めっこしないで直感的に計算できるので、非常に便利です。

3.2.3 バイナリ書き込み

「flash」欄のコンボボックスから、書き込むバイナリファイルを選択し、「Write」ボタンを押下して書き込みます。
書き込み結果はステータス表示されます。
また、「Verify」ボタンを押下して、ファイルとROMの内容を比較できました。


書き込みが終了すると、MPUが自動リセットされ、速やかに動作に移行しました(arduinoライクで快適)。
avrdude-serjtag で使っていた、-E reset オプションを明示して適用する必要は、ありませんでした。


3.2.4 課題

AE-UM232Rのシリアルポート機能を利用して、「Debugging Tools」機能が使用できるはずですが、現状グレーアウト状態で使用できていません。

引き続き調査して、分かり次第報告します。


次回予定

永らく中断していました、Ni-MH充電器のソフトウエア制御の検討に戻る予定です。

最後に、今回報告の参考とさせて頂きました、

Kimio Kosakaさま
山形県立産業技術短期大学校 千秋研究室さま
『昼夜逆転』工作室さま

に感謝申し上げます。