#topicpath ** ブートローダを仕込む [#zd5239dd] -- 概要~ ここでは、AVRISP mkII と AVR Studio を用いてブートローダを書き込みます。 *** AVR Studio とドライバの導入[#h66d9ac3] ++ AVR Studio 4 --- AVR Studio 4 を AVRISP mkII に付属のCD から導入。~ --- あるいは、[[Atmel のホームページ>http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2725]]で取得して導入。~ 最新バージョンは 4.18 SP2 。 (2010-06-18 (金) 20:30:00 時点) ++ ドライバ~ よく覚えていません。あったとしても苦労なく入ったと思います。多分 CD に入っています~ ~ ++ 参考URL --- 導入については http://nano-studio.com/avr/sub2.htm の (1) が参考になりました。 *** 接続準備 [#p428c9a4] ++ 接続用のワイヤーハーネスを作る。~ いちいちジャンパーワイヤーを刺すのは面倒なので、ワイヤーハーネスのようなものを自作します。~ ~ [[武蔵野電波のデジタル式FMラジオ>http://pc.watch.impress.co.jp/docs/column/musashino_proto/20090806_307235.html]]を参照して、AVRISPmkIIと本体とを接続するようにします。~ [[この図>http://pc.watch.impress.co.jp/img/pcw/docs/307/235/html/09_s6.png.html]]を参照してわかるように、リセットピン以外は片側に集められます。~ AVRISP mkII のケーブルのピンは、2番を基準にして調べます。 #style(class=table_left){{ |AVRISPmkII|Arduino本体|h | | | |1番(ケーブルからみて2番の向こう側)|18番 d12| |2番(赤いケーブルに一番近いピン)|20番 Vcc| |3番|19番 d13| |4番(ケーブルに沿って2番のとなり)|17番 d11| |5番|1番 rst| |6番|22番 gnd | }}~ &ref(sany0150.jpg,,320x240); &ref(sany0147.jpg,,320x240); &ref(sany0149.jpg,,320x240); ~ ~ *** ブートローダの書き込み ++ 接続する。~ AVRISPmkIIとは別に電源を確保する必要があります。上の写真のように電源供給用に USB ケーブルを接続します。 ~ なお、パソコン本体を保護するために、2ポートのUSBハブをかませるといいかもしれません。~ &ref(sany0151.jpg,,320x240); ~ ++ AVR Studio を起動と接続の確認 +++ 起動直後に立ち上がる Window は Cancel で消去する。~ +++ 小さなチップに "Con" と書かれたアイコンをクリック。Platform-> AVRISP mkII と Port-> USB を設定して Connect。~ 初回はいろいろと言われますが、適当に処理します。 +++ 開いた Window の左上のタブの Main をクリック。つづいて、"Read Signature" をクリックします。ATmega168P が正しく表示されればうまくつながっています。~ マイコン内のプログラムを消去する場合は "Erase" をクリックします。 ~ ~ ++ ブートローダの書き込み +++ 引き続き、左上のタブの Program をクリック。 +++ Flashの欄のファイル選択メニューから、ブートローダを選びます。ブートローダは hex という拡張子がついています。~ ここで説明している [[USB 直結タイプ>../USBTYPE]]なら[[V-USB>http://www.obdev.at/products/vusb/usbasploader.html]]から取得した圧縮ファイル内にある~ USBaspLoader.2009-03-20/firmware/hexfiles/mega168_16mhz.hex です。~ ここで説明している [[Duemilanoveタイプ>../DuemilanoveTYPE]]なら Arduino 本体の中にある~ arduino-018/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168_diecimila.hex です。 +++ Program をクリックしてブートローダを書き込みます。 +++ Verify をクリックすれば、マイコン内のブートローダが指定したファイルの中身と一致するか確かめることができます。 ~ ~ ++ ヒューズビットの書き込み +++ 引き続き、左上のタブの Fuses をクリック。 +++ EXTENDED, HIGH, LOW の欄に書かれた 16進数を編集します。 実際どのような設定にするかは、マイコンATmega168Pのマニュアルを読むことをお勧めします。以下は参考にしてください。~ ~ &color(red){拡張ヒューズ};について変更する可能性があるのはブートローダのサイズです。これを最大(2Kbyte, 1024ワード)にするならば &color(red){0xF8}; です。~ ~ &color(red){上位ヒューズ};について変更する可能性があるのは、BOD(電圧が低下したときに何Vで停止するか)の設定です。設定しないなら &color(red){0xDF}; 2.7Vで停止するなら &color(red){0xDD}; 4.3V で停止するなら &color(red){0xDC}; です。~ ~ &color(red){下位ヒューズ};について変更する可能性があるのは、クロックの設定です。水晶発振器を使って 8-16MHz に設定するならば、&color(red){0xFF}; マイコン内臓の発振回路を使うなら &color(red){0xF2}; だと思います。~ ~ +++ 編集を終えたら Program をクリックして書き込みます。 +++ Verify をクリックすれば、マイコンに記録されたフューズビットが、画面に表示されているものと一致するか確かめることができます。 ~ ~ ++ ロックビットの書き込み +++ 引き続き、左上のタブの Lock bits をクリック。 +++ 16進数を編集して Program をクリック。 +++ Verify をクリックして確かめることができます。 ~ ~ ++ 作業の様子~ 以上の作業の様子を([[ビデオ(YouTube)>http://www.youtube.com/watch?v=wH61pA0ZQIs]])にしてみました。~ #u2b(id=wH61pA0ZQIs) ++ ブートローダを書き込む~ 再び[[武蔵野電波のデジタル式FMラジオ>http://pc.watch.impress.co.jp/docs/column/musashino_proto/20090806_307235.html]]を参照して、ブートローダを書き込む。~ ただし、上の記述は内臓のクロックを使うものである。そこで、 Program : ATmegaBOOT_168_diecimila.hex Fuses : Extended 0xF8 High 0xDD Low 0xFF Lock bits : 0xEF とする。(ちゃんと確かめていない…)~ ※ なお、未使用ビットの表し方が arduino と AVR Studio とで異なるという重大な事実がある([[参考URLはこちら>http://roshiago.blog.so-net.ne.jp/2009-08-23]])。~ ~ }}