ラジオ少年の楽しい電子工作、その他

AVRを使った簡単な回路の実験、そして日々のちょっとした出来事を書きます。

USBASPLoader(2)

2013年01月08日 | 日記

http://www.obdev.at/products/vusb/usbasploader.html にあるUSBASPLoaderをATmega1284Pに移植してみましたが、うまく動作しない(USBとしてPCが認識してくれません)為、オリジナルに立ち返りATmega168Pでやってみました。

結果は、やはりUSBとして認識されません。色々やって分かったことをまとめてみました。

1.reset swが必要。

boot pinをショート(PORTD7=GND)にした状態でresetを押すことでUSBとして認識されます。

2.ユーザプログラムの書き込みは avrdude-5.11.1を使います。

DOSプロンプトで

I:\avrdude-5.11.1-bin>avrdude -c usbasp -P usb -p m168 -U flash:w:m168_led_blink.hex

avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e9406
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: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: reading input file "m168_led_blink.hex"
avrdude: input file m168_led_blink.hex auto detected as Intel Hex
avrdude: writing flash (218 bytes):

Writing | ################################################## | 100% 0.03s

avrdude: 218 bytes of flash written
avrdude: verifying flash memory against m168_led_blink.hex:
avrdude: load data flash data from input file m168_led_blink.hex:
avrdude: input file m168_led_blink.hex auto detected as Intel Hex
avrdude: input file m168_led_blink.hex contains 218 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.02s

avrdude: verifying ...
avrdude: 218 bytes of flash verified

avrdude: safemode: Fuses OK

avrdude done.  Thank you.

3.書き込みが終わると直ぐにLEDが点滅を始めます。つまり、boot modeから抜け出ている事になります。

再びbootに入るには boot pinをショートしてresetを押しますとLEDの点滅停止してboot modeになります。

後は項目2.0を再び行えばユーザプログラムを書き込めます。

 

Flash 読み出し:

I:\avrdude-5.11.1-bin>avrdude -c usbasp -P usb -p m168 -U flash:r:-:i > dump.hex

:200000000C9434000C9451000C9451000C9451000C9451000C9451000C9451000C94510075
:200020000C9451000C9451000C9451000C9451000C9451000C9451000C9451000C94510038
:200040000C9451000C9451000C9451000C9451000C9451000C9451000C9451000C94510018
:200060000C9451000C94510011241FBECFEFD4E0DEBFCDBF11E0A0E0B1E0EAEDF0E002C086
:2000800005900D92A030B107D9F711E0A0E0B1E001C01D92A030B107E1F70E9453000C946D
:2000A0006B000C94000015B882E084B9299A8FEF99E6A8E181509040A040E1F700C0000067
:2000C00029988FEF99E6A8E181509040A040E1F700C00000EBCFF894FFCFFFFFFFFFFFFFB2
:2000E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20
:20010000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
:20012000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF

:2037C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09
:2037E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9
:203800005CC000008FC0000073C0000071C000006FC000006DC000006BC0000069C0000029
:2038200067C0000065C0000063C0000061C000005FC000005DC000005BC0000059C0000088
:2038400057C0000055C0000053C0000051C000004FC000004DC000004BC0000049C00000E8
:2038600047C0000045C0000009021200010100803209040000000000000012011001FF003B

:2037E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9

ここからboot section
:203800005CC000008FC0000073C0000071C000006FC000006DC000006BC0000069C0000029
:2038200067C0000065C0000063C0000061C000005FC000005DC000005BC0000059C0000088
:2038400057C0000055C0000053C0000051C000004FC000004DC000004BC0000049C00000E8
:2038600047C0000045C0000009021200010100803209040000000000000012011001FF003B
:203880000008C016DC050201010200010E035500530042006100730070001C037700770016
:2038A00077002E00660069007300630068006C002E00640065000403090411241FBECFEF0F

:203F40001C3041F08FEF8093010104C08FEF809301011EE11093000184E199B1947131F47E
:203F60008150D9F71092240110921E0180910601882321F0CA9411F4DA9411F04F9B1CCE9E
:203F8000E5DDF999FECF92BD81BDF89A992780B50895262FF999FECF1FBA92BD81BD20BD58
:183FA0000FB6F894FA9AF99A0FBE01960895F894FFCF5AFF1E94060025
:00000001FF

Fuse 読み出し:
I:\avrdude-5.11.1-bin>avrdude -c usbasp -P usb -p m168 -U fuse:r:-:h

avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9406
"fuse" memory type not defined for part "ATMEGA168"

avrdude: safemode: Fuses OK

avrdude done.  Thank you.

ATmega168Pのfuse設定は下記のようになっています。

Fl=0xDF, Fh=0xD6, Ex=0xF8(0x00), Lock=0xFF

Lock bitはbootを保護するためには0xEFに設定するべきでしょう。

 

 

コメント (6)    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« エコラジオからストレートラ... | トップ | USBASPLoader(3) »
最新の画像もっと見る

6 コメント

コメント日が  古い順  |   新しい順
Unknown (senshu)
2013-01-08 18:32:09
USBasploaderは、USBaspとの互換が特徴なので、avrdude-GUIからでも
usbaspを指定すれば使えると思います。

なお、USBaspも接続されていると区別がつかないので、場合によっては
「シリアル番号を指定する」なのど工夫が必要になります。

なお Lockbitは、Arduino用のBootLoaderでは0xCFを指定しています。

これを指定しない場合(0xFF)は、BootLoader自体を誤って書き換えてしまう
ことが考えられます。

返信する
Unknown (ラジオ少年)
2013-01-08 19:04:18
>USBasploaderは、USBaspとの互換が特徴なので、avrdude-GUIからでもusbaspを指定すれば使えると思います。

Lock bitがFF以外に設定されていますので、dump、save, verifyは出来ますが当然の事ながらwriteは弾かれます。
多分lock=ffにしてbootloaderを書き込みその後boot-loaderからユーザプログラムを書き込み、その後lock bitを書き換えればできるでしょう。

>なお Lockbitは、Arduino用のBootLoaderでは0xCFを指定しています。
どうも情報ありがとうございます。
bootloader保護の為、Lock bitの設定は必要だと思います。

返信する
Unknown (senshu)
2013-01-08 19:37:09
ラジオ少年さん、今晩は。

ご指摘の通り、avrdude-GUIでは、LockBitがFFの時には、Writeを拒否する
仕様にしていたことを考慮していませんでした。

USBasploaderを利用する場合には、これでは不便なので、avrdude-GUIと
avrdude.conf を修正してみました。

http://www-ice.yamagata-cit.ac.jp/forum/viewtopic.php?t=1013

お試しください。

返信する
Unknown (senshu)
2013-01-09 09:55:32
ラジオ少年さん、おはようございます。

USBasoloaderの利用時は問題無いようですが、usbasp利用時に
不具合を確認したので、GUI-0109.zipに差し替えました。

ご確認いただければ幸いです。
返信する
Unknown (vouvoume)
2013-04-04 23:36:00
https://github.com/baerwolf/USBaspLoader
返信する
Unknown (ラジオ少年)
2013-04-06 21:42:36
vouvoumeさん、どうもURLのご紹介ありがとうございます。
時間が経過して全く白紙状態になってしまいました。時間が出来たらもう一度やってみようと思います。
返信する

コメントを投稿

日記」カテゴリの最新記事