外付け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 でブートローダを書けるようになりました。
最初に試みたのが,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 に渡します。
外付けAVRライタ無しでBootloaderを書き込む に従ってavrdude-serjtagをインストールしてavrdude-serjtagが動作するようにしてください。 このとき,avrdude-serjtagフォルダはC:\Program Filesフォルダの直下に置いてください。
C:\Program Files\arduino-0015\hardwear\tools\avr\bin\avrdude.exeを
C:\Program Files\arduino-0015\hardwear\tools\avr\etc\フォルダ配下に移動します。
programmers.txtに次の記述を追加します。
avrdude_wrapper.zipをダウンロードして展開します。生成されたavrdude.exeを
C:\Program Files\arduino-0015\hardwear\tools\avr\bin\フォルダ配下にコピーします。
「FTDI Bitbang」が表示されるはずです
[w/ FTDI Bitbang]をクリックしてブートローダの書き込みを開始します。書き込みの終了まで数分かかります。
書き込みが終了したときArduino-IDEのメッセージエリアに下のように表示されますがエラーではありません。
avrdude_wrapperのソース・コード(avrdude.c)を見ていただくと分かるとおり,avrdude_wrapperはArduino-IDEが発行するコマンドラインの一部を書き換えてsystem()関数に渡しているだけです。(C言語の初級者レベルのプログラミングです)
UNIX系であればsedとかawkを使ったシェルスクリプトで実現できると思います。
upload 2009.05.05