Arduino-IDE から FTDI Bitbang method を実行する

Kimio Kosaka

 


外付けAVRライタ無しでBootloaderを書く方法(FTDI Bitbang method)をWindows-XP上のArduino-IDEから実行させることができました。


Japanese    English


2008年7月に外付けAVRライタを用いずにArduino Diecimila自身でブートローダを書込む方法を発表しましたが,これはArduino-IDE(統合開発環境)と連携することはできませんでした。しかし,今回ここに紹介する方法でArduino-IDEの[Tools]-->[Burn Bootloadr]からFTDI Bitbang でブートローダを書けるようになりました。


  1. Arduino-IDEとの統合

    最初に試みたのが,Arduino-IDEのavrdude.exe,avrdude.conf を avrdude-serjtag のものと差し替えることでした。しかし,Arduino-IDE から serjtag の avrdude.exe にbitbangポートのパラメータなどを渡すことができず FTDI Bitbang を実行することができませんでした。また,serjtag の avrdude.exe は IDE からのスケッチ書き込みコマンドを実行することができませんでした。

    次に試みたのが Arduino-IDE のソースコードを修正して,FTDI Bitbang ポートのパラメータなどを渡すようにすることでした。しかし,ソースコードを入手することができず断念しました。たとえ,入手できたとしても Arduino-IDE の頻繁なアップデートには追いつけず現実的方法では無いと思います。

    そして,今回試み成功したのが avrdude_wrapper を作って Arduino-IDE 付属の avrdude.exe と serjtag の avrdude.exe を必要に応じて切り替える方法です。その働きを説明しましょう。

    通常,IDE からのスケッチ書き込みコマンドやブートローダ書き込みコマンドは,下図(Fig.1)のように IDE 付属の avrdude.exe に送られます。今回の方法は右図(Fig.2)のように IDE からのコマンドを一旦 avrdude_wrapper で受けてコマンドラインを調べ FTDI Bitbang によるブートローダ書込みの場合は serjtag の avrdude.exe にコマンドを渡し,他のものは IDE 付属の avrdude.exe に渡します。


    avrdude_wrapper

  2. 動作環境の設定とavrdude_wrapperのインストール
    1. avrdude-serjtagのインストール

      外付けAVRライタ無しでBootloaderを書き込む に従ってavrdude-serjtagをインストールしてavrdude-serjtagが動作するようにしてください。 このとき,avrdude-serjtagフォルダはC:\Program Filesフォルダの直下に置いてください。


    2. Arduino-IDEのフォルダ(arduino-0015)はC:\Program Filesフォルダの直下に置いてください。

    3. Arduino-IDE付属のavrdude.exeを移動

      C:\Program Files\arduino-0015\hardwear\tools\avr\bin\avrdude.exeを

      C:\Program Files\arduino-0015\hardwear\tools\avr\etc\フォルダ配下に移動します。


    4. C:\Program Files\arduino-0015\hardware\programmers.txtの編集

      programmers.txtに次の記述を追加します。

      bitbang.name=FTDI Bitbang
      bitbang.protocol=diecimila -Pft0 -B4800

    5. avrdude_wrapperのインストール

      avrdude_wrapper.zipをダウンロードして展開します。生成されたavrdude.exeを

      C:\Program Files\arduino-0015\hardwear\tools\avr\bin\フォルダ配下にコピーします。


  3. ブートローダの書き込み
    1. Bitbangブートローダ書き込みの配線をします

      connecting


    2. Arduino-IDEを起動し[Tools]-->[Burn Bootloader]とクリックします

      「FTDI Bitbang」が表示されるはずです

      bibang_on IDE


    3. 書き込み

      [w/ FTDI Bitbang]をクリックしてブートローダの書き込みを開始します。書き込みの終了まで数分かかります。

      書き込みが終了したときArduino-IDEのメッセージエリアに下のように表示されますがエラーではありません。

      avrdude.exe: BitBang OK
      avrdude.exe: pin assign miso 3 sck 5 mosi 6 reset 7
      avrdude.exe: drain OK
      ft245r: bitclk 4800 -> ft baud 2400
      ft245r: bitclk 4800 -> ft baud 2400
      avrdude.exe: BitBang OK
      avrdude.exe: pin assign miso 3 sck 5 mosi 6 reset 7
      avrdude.exe: drain OK
      ft245r: bitclk 4800 -> ft baud 2400
      ft245r: bitclk 4800 -> ft baud 2400

  4. 動作テスト
    1. 一旦,Dicimila,DuemilanoveからUSBケーブルを外します。
    2. ブートローダ書き込み配線を外します。
    3. 再度,DicimilaにUSBケーブルを接続します。
    4. スケッチをアップロードします。

  5. デモビデオ

avrdude_wrapperのソース・コード(avrdude.c)を見ていただくと分かるとおり,avrdude_wrapperはArduino-IDEが発行するコマンドラインの一部を書き換えてsystem()関数に渡しているだけです。(C言語の初級者レベルのプログラミングです)

UNIX系であればsedとかawkを使ったシェルスクリプトで実現できると思います。


avrdude_wrapperはGPLにて提供します。

[もどる]

upload 2009.05.05

Creative Commons License