2012年05月05日

guidude: Arduinoに任意のHEXファイルを書き込む。 AVRライタ不要

guidude: Arduinoに任意のHEXファイルを書き込む。 AVRライタ不要
* はじまり
* AVRライタ不要でArduinoに任意のHEXファイルを書き込める
* guidude
* インストールと実行
* 使い方

* ダウンロード
* バージョンアップ方法
* 4つの画面
* 動作確認環境
* Windows XPのみ:.NET Framework 2.0のインストール
* guidudeの持つ機能
   TeraTerm自動終了機能:
   日本語メニュー/メッセージ対応:
   英語/日本語モード切り換え機能:
* アンインストール
* ライセンスと再配布

* Windows7で実行してみた
* Windows8(RP)で実行してみた

* はじまり
実は、Arduinoというのは全部含めてArduinoなんだけど、:D
例えば、Arduino DuemilanoveやUnoボードだけを観察してみれば、
AVRマイコン(ATmega328p) + 基板や部品など
という構成になっている。
そうすると、ArduinoというのはArduinoIDEからAVRマインコンにHEXファイルを書く
システムと見ることができる。(注3)

じゃあ、任意のHEXファイルをArduinoIDE経由でArduinoボードに書けるかというと、
今のところそうはなっていない。

任意のHEXファイルが書き込めれば
Arduinoボードを「一般的なAVRマインコンボード」(注2)としても使える様になるのだ。

* AVRライタ不要でArduinoに任意のHEXファイルを書き込める
追加配線や改造も不要。
ArduinoさえあればOK。

HEXファイル:
HEXファイルの入手方法は、例えば
ここに書いた方法とか、
WinAVR環境、(注4)
AVR Studio環境
http://www34.atpages.jp/avrwiki/wiki.cgi
mikroC, mikroBasic, mikroPascalの無料版
http://www.mikroe.com/eng/product_downloads/download/
等でコンパイル、生成することが可能。

原理:
Arduino IDE(開発環境)が内部的に使っている「avrdude」というソフトにHEXファイルを渡せば
Arduino IDEと同じ原理でHEXファイルをArduinoボード上のAVRマイコンに書き込めるんです。
従って、この方式ならAVRライタは必要ないのだ。(注1)

改造や追加配線も一切不要で、
当然、そのままで元のArduinoシステムでも問題なく使えるのだ。
メリットだけがある話なんです。:D

もう少し書くと、以下の様なコマンドを発行すればArduinoボードにHEXファイルを書込み可能。
avrdude.exe -c arduino -P COM6 -p m328p -b 115200 -u -e -U flash:w:"blink.hex":a
上はOptiboot化したDuemilanoveにHEXファイルを書き込むコマンド。 このコマンドをバッチファイル化すれば、ひとまずOKなもののメンドクサイので、 GUI化してみました。 * guidude yuki-labさんのavrdude-GUI(以下、avrdude-GUI) http://yuki-lab.jp/hw/avrdude-GUI/ というのがあって、これのソースコードを利用させていただいて作ったのが 「guidude」 ベタな名前でアレだけど、 まぁ、名前はぶっちゃけ何でもいいんだけどね、識別できればいいわけで (爆 guidude-main.gif avrdude-GUIに「Arduino簡単HEX書き込みモード」と言うのを追加してみました。 (外見はちょっと違うけど。かなりか。) (^^; 上は、Optiboot化したDuemilanoveにHEXファイルを書き込むときの設定。 リストからArduinoボードを選ぶだけでHEXファイルを書き込み可能です。 簡単、簡単 (^^)/ * インストールと実行 1,ダウンロードしたzipファイルを空白や漢字を含まないフォルダに解凍します。   例えば、c:\guidudeに解凍します。 2,上記フォルダ内の「guidude.exe」をダブルクリックで実行します。 以上です。 デスクトップにショートカット作っておくのが良いかも。 Windows XPの場合は後述の.Net Framework 2.0のインストールが必要です。 * 使い方 用意する物:   例として以下のArduinoボードを使います。   Arduino Duemilanove (atmega328p) または、互換ボード AE-ATmega(atmega328p/16MHz) http://arduino.cc/en/Main/ArduinoBoardDuemilanove COMポート番号の確認:   まずは、Arduino IDEを使って正常に動作していることが前提です。   ArduinoボードとパソコンをUSBケーブルで接続します。   arduino-ide-port.png ArduinoIDEを起動して、上図の様に「COMポート番号」(Port)を確認しておきます。 この場合、「COM6」となります。 (普段Arduinoで使っているCOMポートなので、人によって番号が変わります) Arduino IDEは念のため終了しておきます。(COMが競合しないように) guidudeを起動する: 上で調べた「COM6」を下図のマル1の「Port」のところに設定、 (マル1のすぐ右の部分をクリックすれば選択できます) マル2をクリックして「led_blink_atmega328p_16MHz.hex」を選択します。 guidude-startup.png 「Arduino 簡単 HEX 書込みモード」を設定する 初回起動時は設定済みです。 無改造のArduino Duemilanove (atmega328p) 16MHz/5V、及び互換ボードなら次へ進んでください。 Optiboot化改造がしてある場合、「Arduino 簡単 HEX 書込みモード」のリストから、 適切な物を選択してください。 今の時点では1種類しかないです。(^^; AVRライタなしでArduino DuemilanoveにHEXファイルを書く: これで準備完了です。 下図の「書込み」ボタンで書き込みを開始します。 guidude-write.gif 書き込みが終われば自動でリセットがかかります。 Arduino Duemilanoveボード上のLEDがドキドキすれば成功です。(^^)/ TeraTermなどのターミナルツールで「COM6」に38400bps, s1/np で接続すると以下の様に ゆっくり文字列が表示されます。 1から9の数字を押せばLEDの点滅速度が変化します。 guidude-teraterm.gif * ダウンロード 現在、制作途中のデモバージョン、Development demo 略して「DD版」を制作中。 バージョンや動作仕様、外観、使い方等はこのページの説明と異なる可能性があります。 実行に必要なファイル:  実行には「libusb0.dll」というファイルが必要になりますが、同梱し忘れたので (汗  Arduinoのインストールフォルダにある「libusb0.dll」を、guidudeの「avrdude」フォルダにコピーしてください。  あるいは、「Libusb-win32」をインストールすることでも同様の効果があります。  この問題は次のバージョンで修正予定です。 ver.0.2.3.32 (2012/06) guidude-v0.2.3.32-201206.zip 変更点: (1) ファイルオープン時のヒストリー機能追加。 (2) Arduino Leonard を簡単リストに追加。(動作は未確認) 古い版: ver.0.1.2.31 (2012/05) 最初の版 guidude-v0.1.2.31-201205.zip TODO: いっぱい。(オイ 認識済みの不具合: Arduinoモード中にavrdude.exeを切り換えると設定が乱れる。 (Arduinoモードのチェックをし直せば直るはず。又は再起動) * バージョンアップ方法 新しいバージョンのguidudeを使う時の方法が3つあります。 1,新しいほうで、古いファイルを上書きする方法。   以前の設定項目を保つことが出来ますが、不調な場合は「2,」を実行してください。 2,別フォルダに解凍して使う方法。   複数バージョンのguidudeを使うことが出来ますが設定は個々に初期化されます。 3,古いフォルダを削除して、同じ名前で新しい方を使う。   「2,」と同じ結果になります。(たぶん) * 4つの画面 使用状況に応じて4つの画面(上と合わせて)に素早く切り換えることが出来ます。 guidude-small.gif guidude-tiny.gif guidude-vtl.gif これは、実行過程の出力画面 guidude-output.gif 上図は見やすいように加工してあります。実際はパス情報が付加されるのでもっと見にくいです。(^^; * 動作確認環境 Windows XP でしか確認していませんが、XPより後のWindowsでもそれなりに動くと思われます。 またWindowsの画面設定の諸条件により文字が全部読めなかったりするかもしれません。 1、Windows XP SP3 デスクトップスタイル:  Windows XP スタイル 配色: 青 画面のDPI: 96DPI フォントサイズ: 標準 注意:Windowsデスクトップのフォントサイズは標準以外だと画面が微妙に変になるので、    フォントは標準を使って下さい。 画面のDPIも同様です。 2、画面解像度 1280x1024 * Windows XPのみ:.NET Framework 2.0のインストール Windows XP では、guidudeを動作させるために.NET Framework 2.0のインストールが必要です。 以下の2つをインストールするか、 Microsoft .NET Framework Version 2.0 再頒布可能パッケージ(x86) Microsoft .NET Framework 2.0 日本語 Language Pack (x86) 或いは、「Microsoft update」を実行し選択肢から2つを選択して下さい。 * guidudeの持つ機能 外観は大きく違いますが、内部機能的には元になったyuki-labさんのavrdude-GUIと だいたい同じというか、ほぼ同じです。(^^; avrdude-GUIでできることは、guidudeでも同様に出来ます。 以下は、guidudeに固有の機能です。 TeraTerm自動終了機能: ArduinoIDEが書込み時(アップロード時)に自動でシリアルモニタを閉じるのと同様な機能ですが、 guidudeは「TeraTerm」を自動終了させます。 この機能はUARTとアップロードを同じUARTライン(USB-CDC含む)で使うシステムでは、 非常に便利、と言うか、ほぼ必須の機能と言えると思います。 残念ながらWindows10の場合,TeraTermの終了が1度空振ります。 もう一度書き込みボタンを押せば終了後書き込み開始します。 でも1回でうまく行く時もある。 終了させたら今度は起動ボタンが欲しくなりますが、今後のバージョンで追加予定。 日本語メニュー/メッセージ対応: 現在、各種メッセージは大部分がavrdude-GUIと同じ物が出ますが、徐々に日本語化対応していきます。 英語/日本語モード切り換え機能: 英語メニュー(メッセージ)に切り換えることが出来ます。 初回起動時は、表示言語を自動判別します。 * アンインストール 次の手順です。 1,guidudeを終了します。 2,guidudeフォルダごと削除します。 3, C:\Documents and Settings\[ユーザ名]\Local Settings\Application Data\guidude というフォルダを削除します。(Windows XPの場合) 以上です。 * ライセンスと再配布 現在guidude自身(実行ファイル)はBSDライセンスです。 従って、BSDライセンスに従って自由に転載、再配布することが可能です。 その他の同梱ツールについては「License.*」ファイルに記載してあります。 内容物の個別再配布も個々のライセンスに従うことで可能となりますが、 ややこしいので、まとめた方が無難と思われます。 guidudeの使用や再配布は自己責任でお願いします。 * Windows7で実行してみた Windows7上で実行してみました。 画面解像度1280x1024、後はデフォルト。 本当はメニューの一番左に「Help」が見えるハズ。 あとは問題なさそうな感じ。 guidude-win7.gif * Windows8で実行してみた Windows8 Release Preview(RP版)上で実行してみました。 画面解像度1280x1024、後はデフォルト。 Windows7と違い設計通りメニューの一番左に「Help」がちゃんと見える。 よ??く見るとフォントの大きさが微妙に違うのがわかる。 あとタイトルフォントがWin7より大きくてタイトル文字の一部が欠けている。orz あとは問題なさそうな感じ。 guidude-win8.gif めんどくさいので次の版では「Help」を「ツール」の中に移動することにする。:D タイトル文字はもう一ランク小さくと。 * Windows10で実行してみた 大丈夫なので省略 (オイ (注1)書き込み可能なFlashサイズについて、     書き込もうとするFlashサイズはコンパイル時に確認してください。(HEXファイルのサイズではないです)     例えば、Arduino Duemilanove(atmega328p)の場合、書き込もうとするFlashサイズは30Kbyte以内にしておくのが     無難です。(Bootloaderやavrdude側にリミッタがあるかどうか未確認なので)(あるとは思うけど) (注2)ブートローダ付のボードね。 (注3)正確にはHEXファイルに含まれているマイコン用のFlashデータ。 (注4)WinAVRはArduinoの中に一式含まれているのだ。 参考リンク: avrdude-GUI (yuki-lab.jp Version) http://yuki-lab.jp/hw/avrdude-GUI/ 外付けAVRライタ無しでBootloaderを書き込む http://www.geocities.jp/arduino_diecimila/bootloader/index.html 外付けAVRライタ無しでBootloaderを書き込む old http://www.geocities.jp/arduino_diecimila/bootloader/index_old.html 秋月ATMEGA168/328用IOボードでArduino http://www.geocities.jp/arduino_diecimila/make/ae-atmega/index.html 千秋ゼミ avrdude00
posted by Copyright (C) avrin All Rights Reserved. at 00:00| Comment(2) | duino系 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
はじめまして。

貴方様の製作された、Arduinoボードを、
私も、製作したと、思っています。

USB部分の小基板の製作方法が、解りませんので、
教えて頂けませんか。

以上です。 川内
Posted by 川内英樹 at 2014年03月26日 20:38
こんばんわ、
USB部分は作ったものではなく、
以下の完成品を載せています。
akizukidenshi.com/catalog/g/gK-01977/
Posted by audin at 2014年03月26日 20:55
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。