なんでも作っちゃう、かも。

Arduino/Make/フィジカルコンピューティング/電子工作あたりで活動しています。スタバの空きカップを使ったスタバカップアンプなど製作。最近はもっぱらArduinoと3Dプリンタの自作に興味があります。

Arduinoで遊ぼう - AVRライタを使わないBootloaderの書き込み(2)

Posted by arms22 on 2009年12月28日 0  0

以前、AVRライタを使わないBootloaderの書き込み方法としてArduinoそのものをAVRライタに変えてしまうBoot-Clonerというスケッチを紹介した。

Boot-Clonerはあれから一度も更新されていない。ATmega168以外のAVRマイコンにもBootloaderを書き込む必要が出てきたので、他の方法を試すことにした。

今回、Arduino Duemilanoveに搭載されているUSB-SerialブリッジICであるFT232RLを使ってBootloaderを書き込む方法を紹介する。


接続



arduino_icsp.png
Arduino X3ピンとICSPピン


ft232r_icsp.png
秋月FT232RモジュールとATmega168の接続(via 外付けAVRライタ無しでBootloaderを書き込む


D2XX Direct Driversのインストール


http://www.ftdichip.com/Drivers/D2XX/MacOSX/UniBin/Universal%20D2XX0.1.6.dmg

sudo mkdir /usr/local/lib
sudo mkdir /usr/local/include

sudo cp D2XX/bin/libftd2xx.0.1.6.dylib /usr/local/lib/libftd2xx.0.1.6.dylib
sudo ln -sf /usr/local/lib/libftd2xx.0.1.6.dylib /usr/local/lib/libftd2xx.dylib

sudo cp D2XX/Samples/ftd2xx.h /usr/local/include/ftd2xx.h
sudo cp D2XX/Samples/WinTypes.h /usr/local/include/WinTypes.h


※OSX用のD2XXの最新版は 0.1.7 だが、OSX10.6ではセグメントフォルトでavrdudeが強制終了してしまう。またOSX10.4.11ではavrdudeのconfigureに失敗する。その為、OSX10.4.11+D2XX 0.1.6で動作を確認した。


avrdudeとserjtag04eのインストール


avrdude5.8に対応したserjtagの最新版がリリースされていたので、最新版を利用。
mkdir avrdude-serjtag04e
cd avrdude-serjtag04e

curl -O http://nmj.sumomo.ne.jp/suz-avr/serjtag/avrdude-serjtag04e.zip
curl -O http://ftp.twaren.net/Unix/NonGNU/avrdude/avrdude-5.8.tar.gz

tar xvzf avrdude-5.8.tar.gz
unzip avrdude-serjtag04e.zip

cd avrdude-5.8
patch -p1 < ../avrdude-serjtag04e/src/avrdude-5.8-serjtag.patch
patch -p1 < ../avrdude-serjtag04e/src/avrdude-5.8-ft245r.patch
patch -p1 < ../avrdude-serjtag04e/src/avrdude-5.8-conf.patch

./configure CFLAGS="-g -O2 -DSUPPORT_FT245R" LIBS="-lftd2xx"
make
sudo make install



FTDIシリアルドライバのアンロード

sudo kextunload /System/Library/Extensions/FTDIUSBSerialDriver.kext



ブートローダの書き込み

avrdude -c diecimila -P ft0 -p m168 -B 4800 -U efuse:w:0×00:m -U hfuse:w:0xdd:m -U lfuse:w:0xff:m
avrdude -c diecimila -P ft0 -p m168 -U flash:w:"ATmegaBOOT_168_diecimila.hex":i
avrdude -c diecimila -P ft0 -p m168 -U lock:w:0x0f:m



FTDIシリアルドライバのロード

sudo kextload   /System/Library/Extensions/FTDIUSBSerialDriver.kext






BitBang Mode AVR-Writer on Mac
http://www15.atwiki.jp/arduino/pages/23.html

外付けAVRライタ無しでBootloaderを書き込む
http://www.geocities.jp/arduino_diecimila/bootloader/index.html#top

FTDI BitBang AVR-Writer
http://www.geocities.jp/arduino_diecimila/avr-writer/index.html

FT245R/FT232R で avrdude (2)
http://suz-avr.sblo.jp/category/780472-1.html

FT245R/FT232R で avrdude
http://suz-avr.sblo.jp/article/30760403.html

Arduinoで遊ぼう - AVRライタを使わないBootloaderの書き込み
http://arms22.blog91.fc2.com/blog-entry-219.html


スポンサーサイト



picburn-0.1.32 リリースしました。

Posted by arms22 on 2008年06月15日 0  0

picburn-0.1.32 リリースしました。
主な変更点は次の通りです。

  • デバイス自動検出機能追加
  • PIC16F631のプログラムサイズとデータサイズ修正(TADさん、thx!)
  • PIC16HV785のデバイスID修正(TADさん、thx!)
  • PIC16F916/PIC16F917のラッチサイズ変更(4から8)
  • デバイス定義追加
    12F519
    16F505 16F506 16F54 16F59 16F526
    16F737 16F747 16F767 16F777
    16F722 16F723 16F724 16F726 16F727 16LF722 16LF723 16LF724 16LF726 16LF727
    16F946
これで一通りフラッシュデバイスに対応したかな?デバイスの数が多くなってきたので、デバイスの自動検出機能を追加しました。自動検出に対応しているのはデバイスIDをもつPICのみです。ベースラインのPICはデバイスIDを持たない為、自動検出できません。必ず-cオプションでデバイスを指定してください。

現在の課題
PIC16F716の書き込みに失敗します。原因は調査中。。ソフトは問題なさそう。。20word毎に実際に書き込んだ値と違う値になっている。殆どの場合0x0000。

対応デバイス一覧
http://arms22.blog91.fc2.com/blog-entry-157.html

Windows用バイナリ
http://xfind.hp.infoseek.co.jp/electric/picburn/picburn-0.1.32-i386-mingw.zip

ソースコード
http://xfind.hp.infoseek.co.jp/electric/picburn/picburn-0.1.32.tar.gz

picburn - autoconf/automakeに対応しました。

Posted by arms22 on 2008年06月07日 0  0

picburn-0.1.28リリースしました。このバージョンからautoconf/automakeに対応しました。MacOSX,Cygwin,MinGW+MSYS環境でコンパイル、動作確認しました。また今回からソースコードとは別にWindows用バイナリの配布もはじめました。

Windows用バイナリ
http://xfind.hp.infoseek.co.jp/electric/picburn/picburn-0.1.28-i386-mingw.zip

ソースコード
http://xfind.hp.infoseek.co.jp/electric/picburn/picburn-0.1.28.tar.gz

picburnはFTDIのFT232R,FT245R,FT2232に対応したUSB接続型のPICライタ(PICプログラマ,PIC Writer,PIC Programmer)です。秋月のFT232Rモジュールがあれば数個のトランジスタと抵抗で作ることができます(別途12Vの電源は必要ですが、、)。

Windows用バイナリをダウンロードした方はzipを解凍して適当なディレクトリにコピーして使用してください。picburn.devはpicburn.exeと同じディレクトリに配置してください。
MacOSX/Linux用バイナリは次のビルド手順にしたがってソースコードからコンパイルしてください。

※picburnのビルドにはD2XXドライバ付属のヘッダファイルとライブラリが必要です。D2XXドライバのインストールと同時にヘッダファイルとライブラリをソースと同じディレクトリもしくはパスの通った場所にコピーしてください。
Windows : ftd2xx.h ftd2xx.lib
MacOSX/Linux : ftd2xx.h WinTypes.h

D2XX Direct Drivers
http://www.ftdichip.com/Drivers/D2XX.htm

Installation Guides
http://www.ftdichip.com/Documents/InstallGuides.htm

MacOSX/Linux

./configure
make
make install
Cygwin
./configure --with-ftd2xx=/path/to/d2xx
make
make install
MinGW+MSYS
./configure --with-ftd2xx=/path/to/d2xx
make
make install
Cygwin,MinGW+MSYS環境では--with-ftd2xxオプションでヘッダファイル(ftd2xx.h)とライブラリ(ftd2xx.lib)があるディレクトリを指定してください。

picburn - PIC Programmer for FTDI devices

Posted by arms22 on 2008年05月27日 0  0

FT232R(FT245R, and FT2232C)のSynchronous Bit Bangを使ったPICプログラマ'picburn'を作成しました。プログラマにPICを使わないUSB接続型PICプログラマです(ややこしや~)。
秋月のFT232Rモジュールを使えば、トランジスタ3個と数本の抵抗だけで作ることができます(別途12V電源は必要です)。1Kワードの読み込みに1秒、1Kワードの書き込みに10秒程度とそこそこ早いPICプログラマです。

次の図はpicburnの回路図です。
picburnsch080527.png
FT232R周辺の回路は秋月のモジュールと殆ど同じです。トランジスタ周りの回路はオレンジ電子さんのWriter509を参考にしました。12V電源にはNJM2360を使っています。

制御ソフト
picw509をベースに picburn というソフトを作成しました。picw509と同様にコマンドラインベースでプラットフォームに依存しないコードで書かれています。linux、Windowsでも動作するはずです。開発はMacOSX(10.3.9)+gccで行っています。

D2XXドライバインストール
FTDIデバイスとの通信にD2XXドライバを使用します。次の記事を参考にD2XXドライバをインストールしてください。
http://arms22.blog91.fc2.com/blog-entry-148.html

picburnインストール
次のURLからソースコードをダウンロードしてください。
http://xfind.hp.infoseek.co.jp/electric/picburn/picburn-0.1.0.tar.gz
ダウンロードしたら展開してターミナルから次のコマンドを入力します。

% make dep
% make
% sudo make install
コンパイルが終わると実行ファイルとデバイス定義ファイルが次のディレクトリにコピーされます。
/usr/local/bin
/usr/local/share/picburn

使い方
# PIC16F84Aからの読み込み
% picburn -c PIC16F84A -r -o something.hex

# PIC16F84Aへの書き込み
% picburn -c PIC16F84A -pv -i something.hex

対応デバイス
  • PIC10F206 PIC10F204 PIC10F202 PIC10F200
  • *PIC12F683 *PIC12F675 PIC12F635 PIC12F629 *PIC12F509 PIC12F508
  • PIC16F917 PIC16F916 PIC16F914 PIC16F913 PIC16F877A PIC16F876A PIC16F874A PIC16F873A PIC16F877 PIC16F876 PIC16F874 PIC16F873 PIC16F88 PIC16F87 *PIC16F84A PIC16F84 PIC16F83 *PIC16F819 PIC16F818 PIC16F77 PIC16F76 PIC16F74 PIC16F73 PIC16F688 PIC16F684 PIC16F648A *PIC16F628A PIC16F627A PIC16F628 PIC16F627 PIC16F676 PIC16F630 PIC16F57
*印付きのPICのみ動作確認済み。それ以外のPICはソフトは対応したけど未確認。PIC18Fは未対応。

既知の問題
  • コードプロテクト(CP)をかけたプログラムのベリファイは必ず失敗する

良くある問題
  • ベリファイに失敗する
    CPがかかっている
    →無視する
    PGM端子がちゃんと処理されていない
    →GNDに接続する
  • Eraseできない
    VDD電圧が低い(VBUSからたくさん電流を取り出すとVBUS電圧が下がる)
    →VDD電源を別途設ける
  • 0x0000しか読み出せない
    CPがかかっている
    →EraseしてCPを解除する
    Program/Verify Mode に入れていない
    →VDD電圧、VPP電圧、PGM端子を確認する


PIC Writer 509 for Linux
http://senta.s112.xrea.com/senta/product/picw509/picw509.html

オレンジ電子工作 PIC Writerを作る
http://www.geocities.jp/orange_denshi/writer509.html

該当の記事は見つかりませんでした。