ArduinoISPを汎用AVRライタとして使う(1)

このページをスマホなどでご覧になる場合は、画面を横長にする方が読みやすくなります。
目次へ  前のページへ (1) (2) (3) 次のページへ
2014年11月01日 公開。

目次

1. はじめに … 1ページ
2. ArduinoISPとは … 1ページ
3. AVRISPとは … 1ページ
4. Atmel Stuidoとは … 1ページ
5. avrdudeとは … 1ページ
6. avrdudeによるArduinoISPの使い方 … 1ページ
6-1. avrdudeの入手法 … 1ページ
6-2. WINAVRのインストール … 1ページ
6-3. avrdudeのコマンドラインでの使い方 … 2ページ
6-3-1. avrdudeのコマンドラインオプション … 2ページ
6-3-2. -pオプション(マイコンの型番の指定) … 2ページ
6-3-3. -cオプション(ライタの指定) … 2ページ
6-3-4. -Pオプション(ポート番号の指定) … 2ページ
6-3-5. -bオプション(ボーレートの指定) … 2ページ
6-3-6. -Uオプション(読み書きの実行) … 2ページ
6-4. コマンドラインからavrdudeを呼び出して、ArduinoISPを使う … 2ページ
6-4-1. 機材の準備(Arduino Uno用ブートローダライタシールド)を使う場合 … 2ページ
6-4-2. 機材の準備(Arduino用ブートローダ/スケッチライタを使う場合) … 2ページ
6-4-3. デバイスIDを確認する … 2ページ
6-4-4. ヒューズビット(ヒューズバイト)を読み出す … 2ページ
6-4-5. ロックビット(ロックビットバイト)を読み込む … 2ページ
6-4-6. フラッシュメモリにプログラムを書き込む … 2ページ
6-4-7. ヒューズビット(ヒューズバイト)を書き込む … 2ページ
6-4-8. ロックビット(ロックビットバイト)を書き込む … 2ページ
6-4-9. フラッシュメモリを読み出してファイルに記録する … 2ページ
6-4-10. プログラム書き込み時の注意事項 … 2ページ
6-4-10-1. フラッシュメモリ、EEPROM、ヒューズバイト、ロックビットバイトの書き込み順序に気をつける … 2ページ
6-4-10-2. 不用意にRSTDISBLヒューズビットを0にしない … 2ページ
6-4-10-3. SPIENヒューズビットを1にしない … 2ページ
6-4-10-4. マイコン内部のクロック発振回路を使わない設定の場合は、書き込み時にも外部の発振回路が必要 … 2ページ
7. Atmel StudioでArduinoISPを使う … 3ページ
7-1. 外部ツールとしてArduinoISPを登録する方法 … 3ページ
7-2. ArduinoISPでプログラムを書き込む方法 … 3ページ
7-3. Arduino Uno用ブートローダライタシールドやArduino用ブートローダ/スケッチライタのICSPヘッダを使う … 3ページ

1.はじめに

本家ArduinoのサイトにはUsing an Arduino as an AVR ISP (In-System Programmer)という解説記事があり、そこには「Arduinoを、Arduinoのブートローダの書き込みに使える」と書いてあります。しかしながら、この解説記事で紹介されているArduinoISPファームウェアは、Arduinoのブートローダの書き込みだけではなく、avrdudeというソフトと組み合わせることで、汎用のAVRライタとして使う事ができます。この記事では、ArduinoISPを汎用のAVRライタとして使う方法を解説します。

この記事を読めば、Arduino Uno用ブートローダライタシールドArduino用ブートローダ/スケッチライタなどで、ICSPによる書き込みに対応したAVRマイコンに、プログラムを書き込む事ができるようになります。(ほとんどのAVRマイコンはICSPによる書き込みに対応しています)

Arduino Uno用ブートローダスケッチライタシールドキット 商品名 Arduino Uno用ブートローダスケッチライタシールドキット
税抜き小売価格 1440円
販売店 スイッチサイエンス
サポートページ
Arduino用ブートローダ/スケッチライタキット 商品名 Arduino用ブートローダ/スケッチライタキット
税抜き小売価格 3000円
販売店 スイッチサイエンス
サポートページ

2.ArduinoISPとは

本題に入る前に、まずはいくつか言葉の説明が必要です。最初にArduinoISPの説明をします。

Arduino IDEを起動し、ファイル→スケッチの例→ArduinoISPメニューを選ぶと、ArduinoISPのファームウェアのスケッチが出てきます。

図1、ArduinoISPのスケッチを開く
図1、ArduinoISPのスケッチを開く
図2、開いたArduinoISPのスケッチ
図2、開いたArduinoISPのスケッチ

このArduinoISPスケッチは、Arduino Uno等を、AVRのライタにするためのスケッチです。

ArduinoISPを用いて、ArduinoのブートローダをAVRマイコンに書き込む方法は、本家ArduinoのサイトUsing an Arduino as an AVR ISP (In-System Programmer)という英語の解説記事に詳しく載っていますが、日本語では、当サイトのArduino Uno用ブートローダライタシールドの製作(1)の記事に詳しく載っています。

ArduinoISPを用いて、Arduinoのブートローダを書き込む情報は比較的ネット上に多くあるのですが、実はArduinoISPはブートローダを焼くためのファームウェアではなく、ArduinoをAVRISPという汎用のAVRライタの互換機にするためのファームウェアです。そのため、ブートローダ以外にスケッチも焼けますし、Atmel Studio(Atmel純正のAVR開発環境)と組み合わせて、ICSP書き込みに対応したAVRマイコンのプログラムの開発にも使えます。ArduinoISPファームウェアを用いてArduinoを汎用のAVRライタとして使うための情報は少ないため、このページにまとめようと思いました。

3.AVRISPとは

Atmel社のAVRマイコン(Arduino Unoに使われているATmega328PもAVRマイコンの一種)を使ってプログラム開発をされている方の中には、Atmel社純正のAVRISP mkIIというAVRライタを使っていらっしゃる方も多いでしょう。Atmel社純正のライタなので安心して使えますし、秋月電子ではたった3,200円で購入できます。(2014年10月現在)

商品名に"mkII"と付けているということは、先行機種がありました。それがAVRISPという訳なんですが、単にAVRISPと呼ぶとAVRISP mkIIと紛らわしいので、Mature AVRISPとか、AVRISP mkIとか呼ばれたりもします。(ちなみにmatureは成熟したとか、熟成したとか、満期になったというような意味ですが、個人的にはLegacy AVRISPと呼びたいような気がします。legacyは遺産とか遺物という意味です)

現行品のAVRISP mkIIは、パソコンとのインターフェースがUSBです。それに対して、先行品のMature AVRISPは、パソコンとはシリアルポート(RS-232C)接続でした。現在ではシリアルポートがついているパソコンが少ないためか、Mature AVRISPは製造中止になっています。

ただ、シリアルポート接続というのは、互換品を作る面では都合がいいのです。USB接続の場合は、AtmelのVID(ベンダーID)を書き込まないと、ドライバが互換機を認識してくれません。AtmelのVIDを勝手に使うことは、法的問題、倫理的問題を伴います。一方でシリアルポート接続の場合は、VIDの問題が元々存在しません。

Arduinoは、パソコンとはUSBで接続していますが、仮想シリアルポートを使っているため、ソフトウェア側から見ればシリアルポートに見えます。よって、適切なファームウェア(ArduinoISP)を載せれば、ArduinoはAtmel純正のMature AVRISPの互換機になるのです。

4.Atmel Stuidoとは

Atmel Studioは、Atmel社純正のAVRマイコンのプログラム開発環境です。無償でダウンロードでき、IDEもCコンパイラも、AVRライタのドライバも全て揃っています。Arduinoに使われているATmega328P等以外のAVRマイコンのプログラムを作ったり、あるいはATmega328Pの潜在能力を最大限に発揮するプログラムを作ろうとすると、Arduino IDEでは無理ですので、Atmel Studio等を使ってプログラムをすることになります。

Atmel Studioを使って開発するには、Arduino IDEで開発するよりも高度な知識が要求されます。しかし一方で、Arduino IDEを使って開発すると、Arduinoの環境がAVRマイコンの種類や使い方をある程度限定ししまっているので、AVRマイコンの選択肢が限られ、マイコンの能力を最大限に発揮する事もできません。良く使う機能に限定して対応している点がArduinoのお手軽さの一因なので、痛し痒しです。

なお、Atmel StudioではAVRISP mkIIには対応しているものの、Mature AVRISP(およびArduino ISP)には対応していません。Atmel Studioの前身の、AVR Studio 4ならMature AVRISPによるプログラムの書き込みに対応していたのですが、今となってはかなり古い開発環境になってしまいました。Atmel StudioがMature AVRISPによるプログラムの書き込みに対応していないので、プログラムの書き込みには後述するavrdudeというソフトを使う事になります。

5.avrdudeとは

avrdudeは、AVRマイコンにプログラムを書き込むための、オープンソースのソフトです。これを使えば、各種ライタを使って、AVRマイコンにプログラムを書き込めます。Arduinoの開発環境も、スケッチの書き込みにはavrdudeを使っています。avrdudeはMature AVRISP(およびArduino ISP)にも対応しています。

avrdudeはGUIを持っておらず、コマンドラインからオプションを打ち込んで使います。

広告

6.avrdudeによるArduinoISPの使い方

6-1.avrdudeの入手法

avrdudeを入手するには、Windows環境の方はWinAVRをダウンロードすると、その中にavrdudeが付いてきます。WinAVRは、avr-gcc(AVRマイコン用のCおよびC++のGNU GCCコンパイラ)を中心とした、AVRマイコンの開発ツール群をパッケージにしたものです。WinAVRの最新版は、こちらのページからダウンロードできます。

なお、Arduinoもavrdudeを利用しているため、Arduinoのインストールフォルダにもavrdudeの実行ファイルがあります。例えば、Arduino IDE 1.0.5をデフォルトのフォルダにインストールした場合、C:\arduino-1.0.5\hardware\tools\avr\binの中にavrdude.exeというファイルがあるはずですが、それがavrdudeの実行ファイルです。また、C:\arduino-1.0.5\hardware\tools\avr\etcの中にavrdude.confというファイルがあるはずですが、それがavrdudeの設定ファイルです。ただし、avrdudeを使って本格的に開発をするなら、これらのファイルを使うより、WINAVRをダウンロードする方がいいでしょう。

6-2.WINAVRのインストール

先ほど紹介したsourceforge上のWinAVRのダウンロードページに行くと、"Looking for the latest version? Download WinAVR-********-install.exe"と書かれた部分があります。(********の部分はリリースの日付が入るので、新しいバージョンがリリースされたら変わる) このファイル名のところをクリックすると、しばらくして、WinAVRのインストール用ファイルのダウンロードが始まります。(なお、この記事を書いている2014年11月時点では、WinAVRの最新バージョンは、2010年01月10日リリースのもので、これに含まれているavrdudeのバージョンは5.10です)

図3、WinAVRのダウンロードリンクのクリック
図3、WinAVRのダウンロードリンクのクリック
図4、ダウンロードオプションの選択画面
図4、ダウンロードオプションの選択画面

適当な作業用フォルダにWinAVR-********-install.exe(********はリリースの日付)をダウンロードした後、実行してください。

図5、ダウンロードしたWinAVRのインストールファイルを実行
図5、ダウンロードしたWinAVRのインストールファイルを実行

そうすると、言語を尋ねられますので、Japaneseを選んで、OKボタンをクリックしてください。

図6、言語をJapaneseに設定
図6、言語をJapaneseに設定

そうすると、セットアップウィザードが表示されますので、次へをクリックします。

図7、セットアップウィザードの起動画面
図7、セットアップウィザードの起動画面

次にライセンス誓約書が表示されるので、(一通り読んで内容を確認した後に)「同意する」をクリックします。

図8、ライセンス契約書に同意する
図8、ライセンス契約書に同意する

次にWinAVRをインストールするフォルダを尋ねてきますので、指定した後、「次へ」をクリックしてください。ここではデフォルトのフォルダのC:\WinAVR-********(********はリリースの日付)のままインストールする事にします。

図9、インストール先フォルダの指定
図9、インストール先フォルダの指定

次にインストールオプションの指定になります。全てチェックした状態で「インストール」をクリックするといいでしょう。

なお、"Add Directories to PATH"というのは、WinAVRの実行ファイルが置かれているフォルダにパスを通す設定の事です。パスを通すと、実行したいコマンドをコマンドラインから打ち込むときに、実行ファイルの名前をフルパスで入力しないで済むので、便利です。Recommended(推奨)とも書かれていますし、このチェックは外さないようにしましょう。

図10、インストールオプションを選択してインストール開始
図10、インストールオプションを選択してインストール開始

インストール後、C:\WinAVR-********\binというフォルダ(********はリリースの日付)を見てください。avrdude.conf(設定ファイル)とavrdude.exe(実行ファイル)が見つかるはずです。

図11、インストール先フォルダの中のavrdude.confとavrdude.exe
図11、インストール先フォルダの中のavrdude.confとavrdude.exe

ここで、avrdudeが正常に起動するか確認してみます。Windows7の場合は、スタートボタン→全てのプログラム→アクセサリ→コマンド プロンプトを選択し、コマンドプロンプトを起動してください。(他のOSの場合は、それぞれのOSの方法でコマンドプロンプトを起動してください)

図12、コマンドプロンプトの起動
図12、コマンドプロンプトの起動

コマンドプロンプトが起動したら、avrdudeと打ち込んで、Enterキーを押してください。

図13、avrdudeのテスト起動
図13、avrdudeのテスト起動

そうすると、avrdudeのオプション一覧が表示されるはずです。

図14、表示されたavrdudeのオプション一覧
図14、表示されたavrdudeのオプション一覧

これで、WinAVR内のavrdudeが正しくインストールされている事が確認できました。

コマンドプロンプトを閉じるには、ウィンドウ右上のX印をクリックするか、exitと打ち込んでEnterキーを押します。(exitはコマンドプロンプト終了のコマンド)

次のページではavrdudeでArduinoISPを使う方法を説明します。

目次へ  前のページへ (1) (2) (3) 次のページへ

このページで使われている用語の解説

関連ページ

関連製品

Arduino Uno用ブートローダスケッチライタシールドキット 商品名 Arduino Uno用ブートローダスケッチライタシールドキット
税抜き小売価格 1440円
販売店 スイッチサイエンス
サポートページ
Arduino用ブートローダ/スケッチライタキット 商品名 Arduino用ブートローダ/スケッチライタキット
税抜き小売価格 3000円
販売店 スイッチサイエンス
サポートページ
Arduino 電子工作
このサイトの記事が本になりました。
書名:Arduino 電子工作
ISBN:978-4-7775-1941-5
工学社の書籍の内容の紹介ページ
本のカバーの写真か書名をクリックすると、Amazonの書籍購入ページに移動します。