openocd-build

hid_blaster

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_blasterpic18blasterで使う場合は、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

  • 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でも導入できます。