openocd-build
OpenOCDのWindows版をLinux上からクロスビルドする方法。†
実は超簡単です。
- 一応cygwinからexeファイルを作るのには成功していたけれど、cygwin1.dll依存になるのでMinGWベースのOpenOCDが欲しかった。
- cygwin上にはautoconfをはじめとするconfigureに必要なツールがほぼ揃っているけれど、Windows上のMinGWでそれをやるのは難しい。
今回は、Linux(ubuntu 10.04LTS)上で行います。†
- ものの10分もあればexeが出来上がります。
まず、必要そうなパッケージをapt-getで取得します。
# apt-get install git-core # apt-get install gcc-mingw32 # apt-get install mingw32 # apt-get install libconfig8 # apt-get install libtool # apt-get install autoconf # apt-get install automake # apt-get install cmake # apt-get install texinfo
- 次にlibftd2xx(CDM20602.zip)をFTDIサイトから取得して展開します。
$ mkdir libftd2xx-win32 $ cd libftd2xx-win32 $ unzip ../CDM20602.zip $ cd ..
ファイル名はバージョンが変わると変わるかもしれません。
- もしFTDI配布物がzipでなくexeだったら、Windows上で展開して持ってくるか、 wine(Windowsエミュレータ)を使って実行します。
- OpenOCDソースの取得
$ git clone git://openocd.git.sourceforge.net/gitroot/openocd/openocd
- ビルド
$ cd openocd $ ./bootstrap $ ./configure \ --build=i686-pc-linux-gnu \ --host=i586-mingw32msvc \ --enable-maintainer-mode \ --enable-ft2232_ftd2xx \ --with-ftd2xx-win32-zipdir=../libftd2xx-win32 $ make
これでsrc/openocd.exe が出来上がります。
- 拙作hid_blasterやpic18blasterで使う場合は、hid_blaster/openocd_patch/ ディレクトリにあるパッチ修正 を施した後に、
- ./configureのオプションを以下のように指定してからmakeしてください。
$ ./configure \ --build=i686-pc-linux-gnu \ --host=i586-mingw32msvc \ --enable-maintainer-mode \ --enable-dummy $ make
追記:OpenOCD Version 0.5.0ではjimtclが必須になっているようです。†
openocd/jimtclディレクトリが空のままになっていた場合、
(cross-)msysから openocdのjimtclディレクトリにうまくgit できない場合は手動で、
git clone git://repo.or.cz/jimtcl.git
によりjimtclを取得してください。
最近の流行りはD2XXドライバーの代わりに、libftdi+LibUSB(win32)でドライブ。†
- (1)プロプライエタリーなD2XXドライバーを使用するか、
- (2)libFTDIというオープンソースのライブラリを使うか。
この選択は、OpenOCDコンパイル時に決めておく必要があるようです。
- libftdi 、LibUSB-win32の取得方法
libftdiのダウンロード
LibUSB-win32
- http://sourceforge.net/apps/trac/libusb-win32/wiki
- http://sourceforge.net/projects/libusb-win32/files/libusb-win32-releases/
- LibUSB-win32は、Version 0.1.12.2 をインストールします。
libftdi LibUSB-win32のビルド方法†
MinGWを使用してWindows上でビルドします。
ビルドするためには MSys 1.0 にもパスを通してください。
set PATH=C:\MinGW\msys\1.0\bin;%PATH%
ビルド方法は普通に
./configure make
ですが、libftdiは /usr/bin/libusb-config というshellスクリプトが必要です。
- このスクリプトの入手先が分からなかったのですが、ubuntuのlibusb-devパッケージには含まれている ようですので、ubuntuから持ってくるのが一番早道です。
- LibUSB-win32は、ビルド済みのバイナリー(libusb-win32-device-bin-0.1.12.2.tar.gz など)があるならば、 とくにビルドする必要はありません。
両方の出来上がったライブラリとヘッダーを、ubuntuのmingwディレクトリーにコピーすれば、OpenOCDのビルド を通すことが出来るようになります。
# cp libusb.a /usr/i586-mingw32msvc/lib/ # cp libftdi.a /usr/i586-mingw32msvc/lib/ # cp usb.h /usr/i586-mingw32msvc/include/ # cp ftdi.h /usr/i586-mingw32msvc/include/
libusbドライバーの導入†
- libftdiを使用する場合は、下位層ドライバーはLibUSBになります。
- まず、LibUSB-win32-bin-1.2.5.0.zipを入手して展開し、inf-wizard.exeを起動します。
- FT2232のUSBデバイスが(2個)そのVID:PIDとともにGUIに列挙されます。
- それぞれを選択して、infファイルを生成します。
- ついでに、その場でインストールを済ませてしまいます。(インストール・ボタンが出る)
libUSBの導入はたったそれだけです。
- 32bit/64bitのどちらのWindowsでも導入できます。