openocd-build の変更点


[[hid_blaster]]

*OpenOCDのWindows版をLinux上からクロスビルドする方法。 [#ec2e0ad2]

実は''超簡単''です。

-一応cygwinからexeファイルを作るのには成功していたけれど、cygwin1.dll依存になるのでMinGWベースのOpenOCDが欲しかった。

-cygwin上にはautoconfをはじめとするconfigureに必要なツールがほぼ揃っているけれど、Windows上のMinGWでそれをやるのは難しい。


***今回は、Linux(ubuntu 10.04LTS)上で行います。 [#y1908365]

-ものの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:http://workware.net.au/jimtcl/JimTcl/Jim_Tcl.html]]が必須になっているようです。 [#o124eacb]

openocd/jimtclディレクトリが空のままになっていた場合、

(cross-)msysから openocdのjimtclディレクトリにうまくgit できない場合は手動で、
 git clone git://repo.or.cz/jimtcl.git
によりjimtclを取得してください。

~
~

*最近の流行りはD2XXドライバーの代わりに、libftdi+LibUSB(win32)でドライブ。 [#zb9c7922]

-(1)プロプライエタリーなD2XXドライバーを使用するか、
-(2)libFTDIというオープンソースのライブラリを使うか。

この選択は、OpenOCDコンパイル時に決めておく必要があるようです。

~


-libftdi 、LibUSB-win32の取得方法

libftdiのダウンロード
-http://www.intra2net.com/en/developer/libftdi/download.php

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のビルド方法 [#lea87f6b]

MinGWを使用してWindows上でビルドします。
-http://www.mingw.org/

ビルドするためには 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ドライバーの導入 [#k233216a]

-libftdiを使用する場合は、下位層ドライバーはLibUSBになります。
-まず、LibUSB-win32-bin-1.2.5.0.zipを入手して展開し、inf-wizard.exeを起動します。
-FT2232のUSBデバイスが(2個)そのVID:PIDとともにGUIに列挙されます。
-それぞれを選択して、infファイルを生成します。
-ついでに、その場でインストールを済ませてしまいます。(インストール・ボタンが出る)

libUSBの導入はたったそれだけです。
-32bit/64bitのどちらのWindowsでも導入できます。