How to make

外付けAVRライタ無しでBootloaderなどを書き込む(Arduino UNO Rev. 3 )

  • HOME »
  • Make »
  • Electronic Work »
  • 外付けAVRライタ無しでBootloaderなどを書き込む(Arduino UNO Rev. 3 )

Japanese   English

Arduino UNO Rev.3搭載のATmega16U2をAVRライタAVRISPmk2互換に変身させてブートローダを書いたり他のAVRにスケッチを書き込みます。

0. はじめに

2008年7月上旬にArduino Diecimilaに搭載されているFTDI-FT232RLがbitbangモードでAVRライタになるという事を知り色々実験して,外付けAVRライタ無しでarduinoのブートローダが書き込めることを確認しました。

同年7月27日に「外付けAVR無しでBootloaderを書き込む」方法を公開し,arduino.ccのフォーラム Burning the Bootloader without  AVR-Writer や arduino.ccのplayground Turn your Diecimila into an AVR Writer に掲載したところ,多くのWebサイトやBlogに引用されFTDI-Bitbang法によるブートローダ書き込みは世界中に普及しました。

しかし,Arduino Duemilanoveの後継 Arduino UNO からはFTDIチップがarduinoボードに搭載されなくなりFTDI-Bitbang法は使えなくなりました。

1. Arduino UNO Rev.3

現行のArduino UNO(Rev.3)を入手して基板を見ていたら,usb-serialのATmega16U2の空きピンから配線が引き出されヘッダーピン(JP2)が装着できるようになっています。
ATmega16U2はAVRISPmk2-cloneというAVRライタソフトを走らすことができます。しかも。このライタソフトで使用するI/O線がJP2に引き出されていいます。

さっそく,ATmega16U2にAVRライタソフトを書き込んで動作試験をするとFTDI-Bitbang法よりも簡単にブートローダを書き込んだり,単体のAVRライタとして使う事ができました。

…前置きが長くなりました。以下にArduino UNO Rev.3 ボード上のATmega16U2をAVRライタに変身させ便利に使う方法を紹介します。

2. ソフトウェアの準備

  1. Windows
    Windows環境で作業を行います。
  2. Flipツール
    ATmega16U2にプログラムを書き込むツールです。Atmel社のFlipのページ(下記URL)からダウンロードしてインストールします。
    http://www.atmel.com/tools/FLIP.aspx
  3. AVRISPmk2-Cloneファームウェア
    AVRライタソフトです。AVRISP-MKII_ATmega16u2.zip をダウンロードします。
    ダウンロードしたzipを展開するとAVRISP-MKII_ATmega16u2.hexが生成されます。
  4. usbserial
    ATmega16U2をusbserial変換にもどすHEXファイルです。Arduino IDE に付属しています。Arduinoフォルダの奥底に収容されていますので,扱いやすい場所にコピーしておきます。
    C:\Program Files\Arduino\hardware\arduino\avr\firmwares\atmegaxxu2\UNO-dfu_and_usbserial_combined.hex

3. ヘッダーピンの追加

ATmega16U2の傍にあるJP2と表示されている空きランドのハンダを吸い取り2×2のヘッダーピンを挿入しハンダ付けします。(図1)

図1

4. AVRISPmk2-Cloneにする

  1. ジャンパの配線
    ATmega16U2-ICSPの5番ピン6番ピンをショートします(図2)

    図2

  2. 接続
    Arduino UNO をUSBポートに接続した後,ATmega16U2-ICSPの5番ピン6番ピンのショートを外すと,ATmega16U2はDFUモードで起動します。
  3. ドライバのインストール
    新しいUSBデバイスIOUSBHostDevice (または,ATmega16U2 DFU)が検出され,ドラバのインストールが始まります。ドライバは次のフォルダに収容されています。
    C:\Program Files\Atmel\Flip 3.4.7\usb\
  4. ファームウェアを書き込む
    (1)Flipツールを起動します。
    (2)デバイスにATmega16U2を選択します。(図3)
    (3)USBポートをOpenします。(図4)

    図3 図4

    (4)AVRISP-MKII_ATmega16u2.hex をロードします。(図5)
    (図は古いAVRISP-MKII-avrdude.hexとなっています)
    (5)Runボタンをクリックして書き込みます。(図6)

    図5 図6

     

5. ブートローダを書き込む

  1. 接続
    ATmega16U2-ICSPの5番ピン6番ピンをショートしないでUSBポートに接続します。
    新しいUSBデバイス ATMEL AVRISP mkII が検出されます。
  2. Arduino IDE を起動し次のように設定します。
    (1)「ツール」→「マイコンボード」→「Arduino UNO」(図6)
    (2)「ツール」→「書き込み装置」→「AVRISP mkII」(図7)

    図6 図7
  3. 配線
    ATmega16U2-ICSPとArduino UNO-ISPをジャンパ線で接続します(図8)

    図8
  4. ATmega328Pにブートローダを書き込む
    「ツール」→「ブートローダ書き込む」(図9)

    図9

6. 汎用AVRライタとして使う

  1. Arduino UNO Rev.3でAVRISP mkII クローンを作る
  2. こちらの「Arduino IDEでATtiny他の開発」に掲載した方法で Arduino IDE から各種AVRのプログラム開発が可能となります。

7. usbserialにもどす

  1. ジャンパの配線〜Flipツールの起動
    ATmega16U8をDFUモードにして接続しFlipツールを起動します。
  2. Arduino-usbserial-atmega16u2-Uno-Rev3.hexを書き込む
    前述,2-4で用意したUNO-dfu_and_usbserial_combined.hexを書き込みます。
    これで,ATmega16U8はusbserialとして動作しArduino UNOは元の働きにもどります。

Upload 2013.12.01 Kimio kosaka

Copyright © kosakalab All Rights Reserved.
Powered by WordPress & BizVektor Theme by Vektor,Inc. technology.