Counter: 5466,
today: 1,
yesterday: 5
教材作成に有用な情報や組込み技術の情報が共有できればと考えています.
※ 本サイトの掲載内容を利用して発生した損害,障害の責は負いませんので悪しからず.
AVRdude関係の「掲示板-2」 †
海外からのリンク... †
senshu (2009-04-28 (火) 20:30:30)
以下のページで、このサイトで以前公開していたアーカイブがリンクされていました。
(ということは、海外バージョンのWindowsでも機能する、ということですね?!)
http://arduinofun.com/blog/tag/bootloader/
旧版が直接リンクになっていたので、最新を使ってもらうため旧ファイルを削除しました。
avrdude-GUI(YCIT版)を公開 †
senshu (2009-04-20 (月) 12:12:03)
hidspx-GUIの成果を反映した、avrdude-GUIを作成しました。
FuseのReadでAVRマイコンを自動認識します。また、avrdude-GUIの原作者の意向を
反映し、YCIT ver 1.2.1としました。
画面レイアウトは以下のように変更しました。一度設定すれば変更しない部分を
下部に移動し、modeをチェックすることで下部を隠すことができます。
この工夫により、コンパクトな画面を実現し誤操作を低減できると考えました。
■ シンプルモード
■ 通常モード
このavrdude-GUIを機能させるには、私の修正したavrdude.exeとペアで使う必要が
ありますので、注意してください。
Fuseの「Read」ボタンをクリックすると、自動検出を行ない、FUSEやLock bitを読み
出します。自動認識のテストは、Deviceコンボボックスで適当な(該当しないもの)に
変更した後、Device欄の[Read]ボタンを押してみてください。
また、Logテキストボックスの追加により内部の動作が良くわかります。この変更で
内部の透明性が向上したと思うのですが、ご意見をいただければ幸いです。
単にhidspx-GUIの成果を反映しただけですが、変更が多岐にわたるので、数時間
の作業が必要でした。ちょっとだけですが、C#のツールの使い方を理解できた気が
します。
利用上の注意点
このツールを利用するには、avrdude.exeが正しく動作する必要があります。
avrdudeは、USB接続で動作する場合には、libusb-win32の導入が必要です。
Vistaにはインストールしてはいけませんので、Windows 2000/XPに限定して
利用してください。
追記(2010-7-20)
libusb-win32 ver 1.2.0はVista/Windows 7にもインストール可能です。
最新のlibusb-win32をインストールしてください。
■ ver 1.2.0からの改善点
1. 標準出力は、中間ファイルを介して得ていますが、長大なファイル名になるため、
これを含むコマンド業をLogテキストボックスで見ると、読みにくく感じます。
そこで、「"中間ファイル"」を「"-"」に置き換えて、表示します。
2. AVRマイコンを自動認識している部分の処理が表示されませんが、これをLog窓に
表示するように変更しました。
3. 現在のHEX dump は、インテルHEXフォーマットで表示を行うのみですが、これを
hidspx-GUIと同等の表示形式に変更にします。
お名前:
avrdude-GUI ver 1.1.0にて、自動認識機能を実現 †
senshu (2009-04-07 (火) 17:49:46)
audinさんのリクエストに応え、avrdude-GUIにAVRマイコンチップの自動認識機能を実現しま
した。昨日の夜の段階では、実現にはかなりの手間が必要と思ったのですが、audinさんとの
やり取りするうちに、AUTO検出ボタンを追加すれば簡単に実現できることに気づきました。
短時間で作成したので不備も予想されますが、私のテストした限りでは問題ありませんでした。
このavrdude-GUIを機能させるには、私の修正したavrdude.exeとペアで使う必要が
ありますので、注意してください。
「AUTO」ボタンをクリックすると、自動検出を行ない、FUSEやLock bitを読み出します。
自動認識のテストは、Devieコンボボックスで該当しないものに合わせた後、AUTOボタン
を押してみてください。
なお、FUSEを持たないDEVICEでは以下のメッセージが表示されます。チップ名は正しくセット
されるので、FlashやEEPROMの操作には影響ありませんが、改善も可能です。途中まで作業し
ましたが、面倒になったので中止しました。何方か改良してくれませんか?
要望があれば、ソースも開示します。
使用しての感想などをいただければ幸いです。
senshu
hidspx-GUIを改定し、実行の様子が確認できるようになりました。それに比べると、
avrdude-GUIでは動きが見えず、やや不安に感じました。時間が取れたら、このGUIも
ブラッシュアップしたいと思います(当分、このままになりそうですが、、)。
同時に2つのソフトを改良するのは無駄がありすぎるので、hidspx-GUIを改良し、
その成果をavrdude-GUIに反映する、という手順で進めたいと思います。
senshu
hidspx-GUIの成果を反映したバージョンを作成しました。
同時の変更は行わず、短期集中で作業しました。このツールの完成により、
AVRISP-mkII も復活です。
お名前:
AVRminiprogの紹介 †
senshu (2009-04-01 (水) 17:35:41)
2007年 11月ごろから AVRminiprog を紹介していますが、私の製作した
AVRminiProg を紹介します。これとほぼ同じモノを 5台作り、トラブルなく動作しています。
AVRminiprog は USBasp とほぼ同じ回路であり、WsNAK#172 基板を修正し製作しました。
AVR ライタ無しで内蔵ファーム更新を可能にする為、ブートローダを組み込んでいます。
SW(橙) はブートローダ起動用です。また、デバッグ用にRESET スイッチ (SW-A) も実装して
いますが、通常の利用なら、これらの SW は不要です。USBasp とほぼ同じ部品構成ですが、
AVRISPmkII 互換ライタなのでavrspx では操作は出来ません。目的より使い分けが必要です。
AVRminiporg のソースを適切に設定すれば、ATmega88でも動作します。
下の写真ではmega168と16MHzクリスタルで作成しましたが、今なら安価なmega88と12MHz
クリスタルの構成をお薦めします。16MHzはやや不安定な動作をする場合がありました。
※ ↑ 21ピン(AREF)のソケットピンを抜いて実装している点に注目!
この変更(ジャンパとパターンカットに注意して作成の事)により、
D- PD4
D+ PD2
LED_RED PC1
LED_Green PC0
電圧計測 PC3
BootMode PC4
の結線になります。
この変更にあわせ、HIDbootとAVRminiprogのヘッダファイルを設定し、
FUSEは、ブートローダを利用する場合にはm88/m168共に
REM ### hidspx command line example ###
hidspx -d10 -fL0xF7 -fH0xDD -fX0xF8
のように書き込んでください。HIDbootを書き込めば、後はライタ無しでもファーム
更新が可能になります。
私は、asdやavrdudeの機能が充実してきたことから、AVRminiprogの有用性が増して
いると感じます。
お名前:
rubyとC#による開発環境の感想 †
senshu (2009-03-31 (火) 21:56:49)
avrdude-GUIは、MS社のC#(2005)で開発されています。
こうしたツールを使って思うのは、画面デザインに関しては、非常に上手くデザインされ
ていると感じました。C#の開発経験が無くとも、何となく?使える点にも感心しました。
例えば、HelpボタンでWebページを開くボタンのコードの中身は、なんと!一行 です。
private void Help_Click_1(object sender, EventArgs e)
{
System.Diagnostics.Process.Start("http://yuki-lab.jp/hw/avrdude-GUI/index.html");
}
Fuse Calcを開くボタンも、40数行のコードで実現できました。他にも細かな修正箇所は
ありますが、コンパイルも速く、エラーの個所も特定でき、生産性は良いと思います。
また、rubyはAWKよりも機能が豊富でシステム記述も可能です。配列の大きさを気にする必要も
なく、文字列を柔軟に操作できます。perlで書くよりもC言語との表現が類似していて、読み易く
記述できます。
こうしたツールを利用すれば、使い勝手に難があるツールを快適に使えるツールに変身
することも可能に思えます。
こうしたツールが無償で使える今、開発言語を特定することなく、適材適所で効果的に
利用するという方針を推進していきたいと思います。
avrdude-GUIを参考にhidspx-GUIも気が向いたら作ろうと思っていますが、CUIが大好きな
ので、どうなることやら、、、。
お名前:
avrdude-GUIをhidspx-GUIと同等に機能強化(4/7版) †
senshu (2009-03-31 (火) 13:19:05)
AVRマイコン用のプログラマ(ライタ)は、自作・市販品ともに多くの種類があり、それぞれに
特徴があります。
優れたGUI指向のツールもあれば、コマンドレベルでの使い勝手の向上に努めたものもあります。
私の公開しているツールは、ソースが公開されたソース自体を改良していますが、もう一つ
の方法として、自作のツールでラップ(間接的に利用)するものも登場しています。
AVRライタ関連ではavrdude-GUIやasdもその種のツールです。どちらも、直接利用する場合
に比較し、格段に敷居が低く、使いやすいものとなっています。
オープンソースの利点を活かし、avrdude-GUIを私なりに改良を行ってみました。
avrdude-GUIのページ ⇒ http://yuki-lab.jp/hw/avrdude-GUI/index.html
avrdude-GUIはFUSE設定ヒントが得られないので、hidspxと同様の機構を追加しました。
Visual C#でのコードの作成に慣れてきたので、以下の機能強化を行いました。
※ 起動直後の画面(Deviceをフォーカスし、過去に使ったファイルが表示されている)
■ 変更点
1. Fuse ViewをFuse Calc(web)に変更し、Help(web)ボタンを追加しました。
Helpのリンク先は、ゆきの研究室です(このサイトにはavrdude-GUIに関する
説明はほとんどありません)。
2. 利用頻度を考慮し、ボタンの大きさを調整しました。消去せずに書き込むと、
意図しないエラーになる場合があるので、Writeボタンは小さめにし、
Ext Fuseの設定も注意が必要なので(*)を付け、注意を喚起しています。
(このボタンは削除を検討しています。Eraseせずに書き込むメリットは
理解できますが、経験の少ない方に正しく使ってもらうのは困難です。)
3. FuseをFuse Calcサイトでの表記にあわせ、Low, High, Extの順にしました。
(窓の位置が変わりましたので、Fuse名に注意して設定してください)
4. AT90S4433のように、FUSEが1個のみのデバイスにも使えるように修正
(複数のFUSEを持つAVRマイコンでは処理速度が低下しますが許容範囲です)
5. FUSEが1個の場合には、新のFUSE Calcサイトでは上手く扱えないので、
選択して接続する
6. avrdude のターミナルモード起動ボタンを「Terminal mode」に変更
(Terminalソフトの起動ボタンと誤解されるのを避けるため)
7. コマンドラインからのファイル名指定と、ファイルのD&Dに対応
(hidspx-GUIの成果を反映しました)
8. 120DPIでの利用を考慮し、FUSEの配置を修正
9. 最後に指定したFlash, EEPROMのファイルを記憶
10. EEPROM のVerifyボタンを追加
11. エラー窓のフォントを日本語表示可能なものに変更
12. Write(Erase無し)を廃止し、代わりにCMDPrompt起動ボタンを追加
(HEXファイルのある場所で、CMD promptを起動する)
13. 起動直後は、Deviceコンボボックスをフォーカス
追加したHelpボタンで「ゆきの研究室」をブラウズしたところ、このページもリンクされて
いました。yuki-labさん、どうもありがとうございます。
かなり仕様を変更した関係で、混乱を避ける為にバージョンを変更しました。
(ゆきの研究室さん、ご容赦を!)
senshu
私が修正したコードは百行程度の僅かなものですが、ソース公開を希望する方には
公開する予定です。
当初はHIDaspx用のhidspx GUIフロントエンド用に修正したいと考えていましたが、
毎日のようにhidspxコマンドを使っていたら、全くGUIの必要性はないことに気づきました。
しかし、avrdudeコマンドにはGUIフロントエンドが必要です。そこで、avrdude 用の
改良に着手したわけです。
私はC#の使用経験はほとんどありませんが、何とか当初予定した機能を実現できました。
利用された方は、ご意見やアドバイスをいただければ、幸いです。
senshu
C#での経験がほぼゼロのsenshuが作業していますので、問題もあると思います。
改善の提案やアドバイスをいただければ幸いです。
※ C#は初心者ですが過去にDelphiを触った経験はあり、それ程の違和感はありません。
senshu
コマンドオプションにて、ファイル名を渡せない、という不具合があったので、
一時公開を中止します。対策は完了しているので、近々、修正版を公開します。
audin?
audinです。
以前のバージョンを初めて使った時に一番に探したのは「Device」欄の
「auto」選択でした。(^^;
オリジナルを使ったときにエラーになりますがそれを大きく上回る使いやすさになると
思いました。
senshu
audinさん、こんばんは。
autoをメニューに追加するのは難しくはありませんが、Fuseの書き込みにはAVRマイコン名を
指定する必要があります。私は、avrdudeは時々使う程度なので、コードを書くコストを考え
るとこの程度の手間は容認しています。hidspx-GUIが採用したように、一行で必要なデータ
の全てが得られる仕組みをavrdudeに追加すれば、もっとキビキビと動作するようになると
思います。
現状では、「簡便な使い方をしたい方はHIDaspxをお使いください」ということですね。
実際にavrdude-GUIとhidspx-GUIを使ってみると、hidspx-GUIが劣るのは広範なライタ
のサポートのみです。ハードウェアの価格、エラー時の表示、使い勝手、いづれもhidspxが
優れていると思います。
今後の発展は、これらを支える方々の熱意によると思います。羨ましいことにavrdudeは
多くの開発者に支えられています。しかし、遠慮があるのか劇的な進化は見られません。
コードを読んでみると、玉石混交のバラエティーに富んだ内容になっています。
一方、HIDaspxは、hidspx用のコードを提供していただける可能性はあまりありません。
私が開発を中止すれば、機能の強化は停止するかもしれません。多くの協力者を求めて
いるのは、そうした不安を払拭するためでもあります。
senshu
avrdude-GUIにautoボタンを追加するのも面白いと考えました。今の作りだと、
Deviceの欄は、avrdudeが -p ? で出力するリストそのものです。
したがって、そのままではautoを表示することはありません。
また、Fuseの設定には、avrdudeではAVRマイコン名の指定が必須です。
この状況で改良するなら、auto detect ボタンを追加することだと思います。
このボタンを押下すれば、選択が必要なものを自動で設定を行うわけです。
これが実現できれば、使い勝手は向上するでしょう。
ただし、この手間の削減の代わりに私のコードを書くための時間が必要です。
ゼロサム社会ということが、よく理解できます。
senshu
yuki-labさんから、オリジナルとの区別を行うため、メジャーバージョンとタイトルの
変更をして欲しいとのことでしたので、次回の公開から、バージョンを変えます。
内容の変更は不明ですが、不具合などやお気づきの点があれば、ご一報ください。
お名前:
ゆきの研究室(avrdude-GUIの作者)さんに報告 †
senshu (2009-03-31 (火) 01:21:07)
ゆきの研究室さんに「avrdude-GUI」の改良版を公開していることを伝えました。
http://yuki-lab.jp/diary/diar0903.html
avrdude-GUIを修正したという報告は初めてだったようで、公開に関し快諾を得ました。
ここで公開している「avrdude-GUI」に関し、色々なご意見をいただきたいと思っています。
お名前:
helpメッセージに修正が必要(asd) †
senshu (2009-03-30 (月) 17:14:20)
asdでは、avrdudeを直接使う場合とは異なる指定が必要です。
> asd -p m88 -fX0xf8
と指定して、何故エラーが起きるかと(一瞬?)考えましたが、
> asd -q m88 -fX0xf8
と書く必要があるわけです。
asd ver.0.1.3-alpha : stk500/avrdude command line wrapper
mode: avrdude
AVR Serial Programming support tool
Flash=*.hex/EEPROM=*.eep (* = filename )
Write : *.hex or/and *.eep
Verify : -v *.hex or/and *.eep
Read Flash : -rp[h] [-o OutFilename] / -rph = only HEX dump
Read EEPROM : -re[h] [-o OutFilename] / -reh = only HEX dump
Read Fuses : -rf [-o OutFilename]
Read Lockbit : -rl [-o OutFilename]
Read Calibrations : -rc
Get AVR Information(Web) : -ri
Write fuse bytes : -fL<Hex> -fH<Hex> -fX<Hex>
Write Lockbit : -l[<Hex>] / -l = set all lock / Hex=0x3E or 0x3C
Erase device : -e
Control port : -pd{<n>|u} (n=1..9 COM Port No., u:user spec.)
SPI control delay : -d<n> (n>=4 ,SPI Clock is clock[MHz]/n[usec])
Help (this page) : -h or --help
Supported Devices List : -?
Supported Adapters
AVRISP STK500(v2) / USBasp AVR-Doper,etc COM port ,(USB)
このヘルプをみても気づきませんでした。ヘルプにも追記が必要だと思います。
senshu
「asd -!」や「asd -rF」などは指定できないので、希望する場合には自分でasd.rbを
修正する必要があります。rubyの柔軟性を考えると、自由に機能を追加できますが、
自分だけで使えるのでは困るので、議論の場が必要だと感じます。
お名前:
avrdude-GUIにFUSE設定参照機能(efuseの注意点) †
senshu (2009-03-30 (月) 13:28:15)
yuki-LABさんのavrdude-GUIにFUSE View機能(下段、左から2番目のボタン)を追加しました。
ターゲットマイコンのFUSE設定をWeb browser で表示する機能です。
C#に慣れていないのですが動作はします。お気づきの点があれば、コメントください。
FUSEが1個のみのデバイスの扱い †
senshu
avrdude-GUIでは、AT90S4433のように、FUSEが1個のみのデバイスには対応していないことが
わかりました。現在は、この手のデバイスは少数派ですが、このような制限があることを
理解した上で利用してください。
追記
この問題は修正しました。
EFUSEの扱いの違い(stk500 VS avrdude) †
stk500モードでFUSE表示 †
>asd -rf -psu
Detected device is ATmega88.
Device: ATmega88
Low: 01100010
||||++++-- CKSEL[3:0] システムクロック選択
||++-- SUT[1:0] 起動時間
|+-- CKOUT (0:PB0にシステムクロックを出力)
+-- CKDIV8 クロック分周初期値 (1:1/1, 0:1/8)
High:11011111
|||||+++-- BODLEVEL[2:0] (111:無, 110:1.8V, 101:2.7V, 100:4.3V)
||||+-- EESAVE (消去でEEPROMを 1:消去, 0:保持)
|||+-- WDTON (1:WDT通常動作, 0:WDT常時ON)
||+-- SPIEN (1:ISP禁止, 0:ISP許可) ※Parallel時のみ
|+-- DWEN (On-Chipデバッグ 1:無効, 0:有効)
+-- RSTDISBL (RESETピン 1:有効, 0:無効(PC6))
Ext: -----001
||+-- BOOTRST ※データシート参照
++-- BOOTSZ[1:0] ※データシート参照
Fuse Low=0x62 High=0xDF Ext=0xF9 ← 正しいデータを表示
avrdudeモードでFUSE表示 †
>asd -rf
Detecting ...
******************
reading Fuses ...
******************
Detected device is ATmega88.
Low: 01100010
||||++++-- CKSEL[3:0] システムクロック選択
||++-- SUT[1:0] 起動時間
|+-- CKOUT (0:PB0にシステムクロックを出力)
+-- CKDIV8 クロック分周初期値 (1:1/1, 0:1/8)
High:11111111
|||||+++-- BODLEVEL[2:0] (111:無, 110:1.8V, 101:2.7V, 100:4.3V)
||||+-- EESAVE (消去でEEPROMを 1:消去, 0:保持)
|||+-- WDTON (1:WDT通常動作, 0:WDT常時ON)
||+-- SPIEN (1:ISP禁止, 0:ISP許可) ※Parallel時のみ
|+-- DWEN (On-Chipデバッグ 1:無効, 0:有効)
+-- RSTDISBL (RESETピン 1:有効, 0:無効(PC6))
Ext: -----001
||+-- BOOTRST ※データシート参照
++-- BOOTSZ[1:0] ※データシート参照
Fuse Low=0x62 High=0xFF Ext=0x01 ← Extの上位5ビットは0として扱われている
Cal 0xAA
avrdudeを更新(avrdude.confの修正) †
senshu (2009-03-30 (月) 11:54:06)
avrdudeは、テキストファイルavrdude.conf に各種の定義を格納し、このファイルを
修正することで、多くのマイコンに対応できる柔軟な設計になっています。
そこで、hidspxがサポートしている定義を追加しました。(逆に、avrdude.confを元に、
hidspxの機能を強化することも可能かもしれません)
asdでefuseのデータが表示されない件を対策しました(0x1ではなく、0x01を返す必要がある)。
なお、追加チップは手元にないので、お持ちの方はぜひ結果を教えていただければ幸いです。
お名前:
asd(avrsdd-013-alpha)の使用レポート †
senshu (2009-03-30 (月) 10:05:02)
audinさんが開発に取組んでいる「asd」を使ってみました。
audinさんのページから引用
入手先 ⇒ http://avr.paslog.jp/article/1079594.html
asdは、avrdudeやstk500.exeをhidspx等に近い使い方ができるようにするツールです。
USBaspのように、hidspxがサポートしているライタはhidspxを使った方がシンプルな書き込みが
可能ですが、hidspxがサポートしていない多くのライタでもhidspx的な利用可能にします。
hidspxはコマンドプロンプト上で使用するツールですが、コマンド指定がシンプルで理解
しやすく、これに準拠した使い方が可能なら、操作性の向上が期待できます。
asdは自動認識機能を実現するために実行に1秒程度のタイムラグがありますが、コマンド指定が
容易であり、使い勝手を改善できます。
その理由は、avrdude やstk500 本来のコマンドを入力するには確実に1秒以上の追加が
必要と考えられる為です。私の場合はhidspxの利用に慣れているのを別にしても、stk500と
avrdudeを使う多くの利用者に好感を持って使ってもらえるツールだと思います。
メッセージの配慮や接続ポートの検出は、オリジナルのツールにはない工夫です。
>asd -ps?
STK500 command line programmer, v 2.2 Atmel Corp (C) 2004-2005.
Scanning ports:
COM1 ... Port busy or STK500 not connected
COM2 ... Port busy or STK500 not connected
COM3 ... Port busy or STK500 not connected
COM4 ... Port busy or STK500 not connected
COM5 ... Port busy or STK500 not connected
COM6 ... Port busy or STK500 not connected
COM7 ... Port busy or STK500 not connected
COM8 ... Port busy or STK500 not connected
COM9 ... Port busy or STK500 not connected
Could not connect to STK500 V2 on COM9
現状の版はalpha版としていますが、asdが使えるなら、ツールを直接使う必要は感じない と
いう完成度です。
asdの目指している「avrdudeやstk500でhidspx流の利用を可能にする」取り組みは、大いに意味
があることが確認できました。ただし限られた時間の利用での判断は早計で、今後も継続した改良
に取組んでいただけることを期待しています。
avrdudeでAVRマイコンを確認する †
>timeit asd -r
Detecting ...
Detected device is ATmega88.
Device Signature = 1E-93-0A
Flash Memory Size = 8192 byte
EEPROM Size = 512 bytes
Elapsed Time: 0:00:01.375
参考:HIDaspxでAVRマイコンを確認する †
>timeit hidspx -r
Detected device is ATmega88.
Device Signature = 1E-93-0A
Flash Memory Size = 8192 bytes
Flash Memory Page = 64 bytes x 128 pages
EEPROM Size = 512 bytes
Elapsed Time: 0:00:00.125
STK500で読み出す(AVRminiprog) †
>timeit asd -psu -rp -omega88.hex
STK500 command line programmer, v 2.2 Atmel Corp (C) 2004-2005.
Connected to STK500 V2 on port USB:00A20000011E
Setting ISP frequency to 125.0 kHz (0x06)
Device parameters loaded
Programming mode entered
Reading FLASH... FLASH read
FLASH output file written
Programming mode left
Connection to STK500 V2 closed
Elapsed Time: 0:00:08.953
STK500で読み出す(AVRISP-mkII) †
>timeit asd -psu -rp -omega88.hex
STK500 command line programmer, v 2.2 Atmel Corp (C) 2004-2005.
Connected to STK500 V2 on port USB:0000B0044887
Setting ISP frequency to 125.0 kHz (0x06)
Device parameters loaded
Programming mode entered
Reading FLASH... FLASH read
FLASH output file written
Programming mode left
Connection to STK500 V2 closed
Elapsed Time: 0:00:05.281
avrdudeで読み出す(AVRminiprog) †
>timeit asd -rp -omega88.hex
Detecting ...
**********************
reading... FLASH data
**********************
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.02s
avrdude: Device signature = 0x1e930a => ATmega88 (m88)
Reading | ################################################## | 100% 6.16s
avrdude: writing output file "mega88.hex"
avrdude: Check to make sure Fuses are still correct.
avrdude: safemode: Fuses OK
avrdude done. Thank you.
Elapsed Time: 0:00:07.656
avrdude(AVRminiprog)で書き込む(ベリファイ有り) †
> timeit asd mega88.hex
Detecting ...
************
Writing ...
************
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.02s
avrdude: Device signature = 0x1e930a => ATmega88 (m88)
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "mega88.hex"
avrdude: input file mega88.hex auto detected as Intel Hex
avrdude: writing flash (8154 bytes):
Writing | ################################################## | 100% 1.39s
avrdude: 8154 bytes of flash written
avrdude: verifying flash memory against mega88.hex:
avrdude: load data flash data from input file mega88.hex:
avrdude: input file mega88.hex auto detected as Intel Hex
avrdude: input file mega88.hex contains 8154 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 2.25s
avrdude: verifying ...
avrdude: 8154 bytes of flash verified
avrdude: Check to make sure Fuses are still correct.
avrdude: safemode: Fuses OK
avrdude done. Thank you.
Elapsed Time: 0:00:05.328
avrdude(AVRminiprog)で書き込む(ベリファイ有り) †
> timeit asd -psu mega88.hex
STK500 command line programmer, v 2.2 Atmel Corp (C) 2004-2005.
Connected to STK500 V2 on port USB:00A20000011E
Setting ISP frequency to 125.0 kHz (0x06)
Device parameters loaded
Programming mode entered
Device erased
FLASH input file read
Programming FLASH... FLASH programmed
Reading FLASH... FLASH read
FLASH verified successfully
Programming mode left
Connection to STK500 V2 closed
Elapsed Time: 0:00:12.656
avrdude(AVRISP-mkII)で書き込む(ベリファイ有り) †
Detecting ...
************
Writing ...
************
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.03s
avrdude: Device signature = 0x1e930a => ATmega88 (m88)
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "mega88.hex"
avrdude: input file mega88.hex auto detected as Intel Hex
avrdude: writing flash (8154 bytes):
Writing | ################################################## | 100% 1.59s
avrdude: 8154 bytes of flash written
avrdude: verifying flash memory against mega88.hex:
avrdude: load data flash data from input file mega88.hex:
avrdude: input file mega88.hex auto detected as Intel Hex
avrdude: input file mega88.hex contains 8154 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 2.36s
avrdude: verifying ...
avrdude: 8154 bytes of flash verified
avrdude: Check to make sure Fuses are still correct.
avrdude: safemode: Fuses OK
Elapsed Time: 0:00:05.546
stk500(AVRISP-mkII)で書き込む(ベリファイ有り) †
C:\Documents and Settings\senshu>timeit asd -psu mega88.hex
STK500 command line programmer, v 2.2 Atmel Corp (C) 2004-2005.
Connected to STK500 V2 on port USB:0000B0044887
Setting ISP frequency to 125.0 kHz (0x06)
Device parameters loaded
Programming mode entered
Device erased
FLASH input file read
Programming FLASH... FLASH programmed
Reading FLASH... FLASH read
FLASH verified successfully
Programming mode left
Connection to STK500 V2 closed
Elapsed Time: 0:00:07.156
参考:HIDaspxで書き込む(ベリファイ有り) †
>timeit hidspx mega88.hex
Detected device is ATmega88.
Erase Flash memory.
Flash memory...
Writing [##################################################] 8154, 3.08s
Verifying [##################################################] 8154, 5.19s
Passed.
Total read/write size = 16308 B / 8.42 s (1.89 kB/s)
Elapsed Time: 0:00:08.437
この結果を見ると、同じ書き込みハードウェアでは、stk500よりもavrdudeの方が高速に
処理していることがわかります。(-p autoによるの自動認識が効果的に機能しているの
かもしれません)。
また、参考のために付記したHIDaspx は、転送に時間を要していますが、コマンドの
発行のオーバーヘッドが無いので、-dの値を適切に選べば、遜色ない利用が可能です。
senshu
原因は不明ですが、一度だけですが、asdコマンドの発行でエラーを発生しました。
asd -r
の再発行で正常接続を確認すれば正常に動作を確認しました。コネクタの抜差し直後は、
上記のコマンドで認識できるかを確認しましょう。
senshu
avrdudeに手を入れることも検討していましたが、asdが使えるなら問題は無いと考えて
います。今後、時間が確保できた時に考えることにします 。
senshu
asdとは、変わった名前だと思っていましたが、キーの並び順であることがわかります。
audinさんは、おそらくキーの打ち易さを重視してこの名前を付けたのだと想像します。
類似の名前に、FD がありました。
ただし、リズムから判断すると、左右の指の移動のバランスを考えると、他の組合せも
あると思います。
audin?
こんばんわ
asdの大変詳しい使用レポートありがとうございます。
「-q」コマンドのヘルプや「-rF」「-!」コマンド、「Fuse」読出し等は徐々に対応して
いきたいと思います。「asd」の名前についてはご指摘のとおり「キーの並び順」になって
います(^^;
お名前:
AWKによる簡易avrdude用ラッパ †
senshu (2009-03-28 (土) 19:47:55)
audinさんが取り組んでいる「asd」が公開されました。
凝った造りのため、内部の仕組みの全てを理解するのは容易ではありません。
私はavrdude自体に組み込むための試作品をawkで書いてみました。
# avrdude.awk
func usage ()
{
print "help message";
exit 0;
}
func hexcheck(p, h)
{
h = substr(p, 4, 2)
if (h == "0x"|| h == "0X") {
return substr(p, 4);
} else {
return 256;
}
}
BEGIN {
debug = 0;
prog_cmd = "avrdude -c avrisp2"
for (i=1; i<ARGC; i++) {
s = ARGV[i];
if (s ~ /^-z$/) {
debug++;
} else if (s ~ /^-r$/) {
cmd = "-U signature:r:-:h";
break;
} else if (s ~ /^-rf/) {
cmd = "-U signature:r:-:h -U lfuse:r:-:h -U hfuse:r:-:h -U xfuse:r:-:h";
break;
} else if (s ~ /^-help/) {
usage();
break;
} else if (s ~ /^-f[lLhHxX]/) {
r = hexcheck(s, 4)
ftype = tolower(substr(s, 3, 1));
if (r >= 256) {
print "Hex format error"
exit 1;
}
cmd = cmd sprintf(" -U %sfuse:w:%s:m", ftype, r)
} else if (s ~ /.hex$/) {
cmd = cmd " -U flash:w:" s ":i"
} else if (s ~ /.eep$/) {
cmd = cmd " -U eeprom:w:" s ":i"
} else {
cmd = cmd s
}
}
if (debug) {
print prog_cmd cmd
exit 0;
} else {
exit system(prog_cmd cmd)
}
}
このファイルをavrdude.awk で保存し、以下のように利用します。
gawk -f avrdude.awk -- をBATファイルすると便利に使えます。-z はデバッグ用
です。-zを付けなければ、コマンドを実際に実行します。
>gawk -f avrdude.awk -- -p m88 -fL0xff -fH0xdd -z
avrdude -c avrisp2 -p m88 -U lfuse:w:0xff:m -U hfuse:w:0xdd:m
短時間で書いたためエラーチェックが不十分ですが、入力の省力化に有効です。
私の書いたscriptはavrdude-GUIを超える部分は何もなく、このスクリプトよりも
avrdude-GUIの方が気楽に使えるので、「書いてみました」の域を出ていません。
AVRマイコン別のFUSEビットのチェックや認識結果の表示、危険なFUSE指定の検出
などが必要と思っています。
senshu
audonさんのasdは、rubyで書かれていますが、1000行を超える大作です。
非常に興味深いものとなっていますので、一読をお勧めします。
お名前: