OpenOCDをビルドする
出典: Wikimura
「ARM開発環境構築手順 」でOpenOCDのインストールについて書いたのですが、少し困ったことになりました。 OpenOCDのバージョンが0.1.0から0.2.0に上がったことに伴って、0.1.0のWindowsインストーラが入手できなくなってしまったようです。 何でもライセンスの都合だとかで...
OpenOCDは頻繁に修正が加えらているため、どうせなら自分でビルドできた方が都合が良さそうです。 ちょうどSVNクライアントを持っていたので、SVNでデータを持ってくることにしました。
目次 |
資料1: README.Win32
SVNから持ってきたソース「README.Win32」というファイルが添付されていました。 まずはこれから読んでみます。訳はもちろん適当です。
OpenOCDをWindows用にビルドする
Windows上でビルドするには、Cygwinが必要となる。 PATH環境変数が他のUnixユーティリティ(UnxUtils等)を含まないことを確認すること。 こうしたツールはCygwinパス(cygdriveなどのことだと思われる)を取り扱うことができないため、obscure dependancyエラーを引き起こす。 これはあるユーザのログを下にまとめられたものであるため、間違っていたら訂正していただきたい。
下記のURLはOpenOCDをCygwin上でビルドする際に役立つ参考資料である。
他にも、WindowsバイナリをLinux上で、MinGWクロスコンパイラを使用することでビルドすることもできる。 下記の文書は、クロスビルドをする上でのコツも含んでいる。
libusb-win32
libusb-win32バイナリ配布は、SourceForgeのページから選ぶことができる。 この文書が書かれた時点での最新バージョンは、0.1.12.2である。 FTDIチップを使用したJTAGデバッガで重要なUSB composite deviceに関する問題を修正していることから、このバージョンの使用が推奨される。
- libusb-win32-device-bin-0.1.12.2.tar.gzパッケージをダウンロードし、テンポラリディレクトリに展開する。
- libusb-win32-device-bin-0.1.12.2\include\usb.hをMinGWのインクルードディレクトリにコピーする。
- libusb-win32-device-bin-0.1.12.2\lib\gcc\libusb.aをMinGWのライブラリディレクトリにコピーする。
なお、異なるLinuxディストリビューションは、MinGWインストールディレクトリが異なる場合がある。 更に、ライブラリとインクルードディレクトリが別々のsys-rootディレクトリに入っていることもある。
以下はlibusb-win32 Makefile に載っている手順である。
クロスコンパイルを行うとき、mingw32ツールにi586-mingw32msvc-gccを使用する場合、 libusb-win32は以下を実行することでコンパイルすることができる。make host_prefix=i586-mingw32msvc all
libftdi
この作者はWindowsバイナリを提供していない。 これはtarballやgitツリーからリリースされているソースからビルドすることができる。
gitツリーを使う場合、手順はREADME.mingwに載っている以下のようになる。 なお、これにはcmakeユーティリティがインストールされていることが必要となる。
- Toolchain-mingw32.cmakeを正しいMinGWインストールを指すように編集する
- mkdir build-win32のように、ビルドディレクトリを作成する(例えば../libftdi/)
- 作成したディレクトリに移動し、以下のコマンドを実行する
- cmake -DCMAKE_TOOLCHAIN_FILE=../Toolchain-mingw32.cmake ..
- src/ftdi.hをMinGWインクルードディレクトリへコピーする
- build-win32/src/*.aをMinGWライブラリディレクトリへコピーする(ディレクトリ名は[2]の例を使用)
libftd2xx
Cygwin/Win32 ZIPファイルにはftd2xx.win32というディレクトリが入っている。 これを展開すると、ディレクトリは以降の準備では不要となる。 その代わり、以降の節で示すように、このファイルへのパスは--with-ftd2xx-win32-zipdirコンフィギュレーションオプションで提供されなくてはならない。
OpenOCD
これでOpenOCDをMinGWを使ってLinux上でビルドすることができるようになる。 --buildと--hostオプションを使用すること。
libftdiを使う場合
./configure --build=i686-pc-linux-gnu --host=i586-mingw32msvc \
--enable-ft2232_libftdi \
... other options ...
ftd2xxを使う場合
./configure --build=i686-pc-linux-gnu --host=i586-mingw32msvc \
--enable-ft2232_ftd2xx \
--with-ftd2xx-win32-zipdir=/path/to/libftd2xx-win32 \
... other options ...
資料2: How to build OpenOCD for windows
Windows用のビルドについて必要なものはわかりましたが、少し足りないようです。付属のREADMEは少し重いので、SparkFun Electronicsの記事を先に読みます。 TBD

