スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Cygwin(x86_64-w64-mingw32-gcc)でOpenOCD作成(64bit版) その2

既に32bit版ではST-Linkに対応していたのですが、64bit版でST-Linkに対応させようとすると、いつも libusb-win32 の部分でつまずいていました。ようやく解決できましたので、その方法を記載します。

libusb-win32のパッケージにはソフトコンパイル時に使用するライブラリがツール毎に用意されています。bcc, gcc, msvc, msvc_i64, msvc_x64 といった具合にです。で、いままで、32bit版作成時と同じように gcc 用に用意されていた libusb.a を使用していました。が、これがいけなかったようです。gccは基本32bit版として動作するので、このライブラリも32bit版用に作成されていました。

ここまで分かれば、話しは早いです。要は64bit版の libusb.a を作ってやればいい話です。同じようなことを、ftd2xx.lib 作成時にやっていました。ただ、ftd2xx.lib の時は特定の文字にヒットした文字列を ftd2xx64.def として書き出していたのですが、同様の方法を libusb.a にしても良いのか疑問でした。

そこで、色々とググってると "gendef" というソフトがあることが分かりました。それもmingw用として開発されているらしいソフトです。"pexports" というのもあるのですが、 "gendef" の方は .defファイル をより簡単に作成できるみたいです。cygwinのバイナリ提供物には入ってなさそうだったので、自分でコンパイルする事にしました。

gendef が紹介されていたのは mingw-w64 の wiki です。大元は mingw の方にあるみたいですが、今回は wiki にリンクされていた方のソースコード(mingw-w64-gendef.tar.gz)を使用しました。

取得した mingw-w64-gendef.tar.gz を解凍すると gendef というフォルダができます。これを適当な所に置きます(私はcygwin上の /tmp に置きました)。cygwinからそのフォルダに入り、以下を実行します。後々も使えそうなのでそのままインストールしてしまいました。


$ ./configure CFLAGS="-O2" --buidl=i686-pc-cygwin --host=x86_64-w64-mingw32
$ make
$ make install


そして、libusb-win32 のフォルダ内にあるdllを利用して.aファイルを作成します。

$ cd ./libusb-win32-bin-1.2.6.0/bin/amd64/
$ gendef.exe ./libusb0.dll
$ x86_64-w64-mingw32-dlltool.exe -d libusb0.def -l libusb.a

これで作成した libusb.a ファイルを /usr/x86_64-w64-mingw32/sys-root/mingw/lib へコピーします。また、lusb0_usb.h ファイルも usb.h にリネームして /usr/x86_64-w64-mingw32/sys-root/mingw/include に入れます。ヘッダーファイルは元々同じ名前のファイルがあるので念の為、元のファイルはリネームして取っておきました。

これで準備は整いました。後は、オプションを付加して前回のコンパイル方法の手順の沿ってコンパイルします。

$ ./configure --enable-maintainer-mode --disable-werror --disable-shared --enable-ft2232_ftd2xx --with-ftd2xx-lib=static --with-ftd2xx-win32-zipdir=ftd2xx --enable-libusb0 --enable-stlink CFLAGS="-O2" --build=i686-pc-cygwin --host=x86_64-w64-mingw32

$ make

$ cd ./src/

$ x86_64-w64-mingw32-objdump.exe -p ./openocd.exe | grep dll 2>&1 | tee log.txt
DLL Name: ftd2xx64.dll
DLL Name: KERNEL32.dll
DLL Name: msvcrt.dll
DLL Name: msvcrt.dll
16f2ca 78 __dllonexit
DLL Name: libusb0.dll
DLL Name: USER32.dll
DLL Name: WS2_32.dll


実行ファイルが呼び出すDLLに libusb0.dll が加わっています。


実際に STM32VLDISCOVERY に繋いで ST-Linkとその先の STM32F100 に繋がる事を確認しました。簡単な動作確認なので teraterm で telnet 接続してコマンドを少し送ってみただけです。

openocd_06_w64_20120324_2_stlink_1

できあがったOpenOCDは 物置 に置いています。

ST-Link を使用する時は設定ファイル(.cfg)がST-Link用の用意されているので、他のマイコンを使用する時は自分で設定ファイルを作らないとダメそうです。MB9BF506になんとか繋げないかな~。

スポンサーサイト

コメントの投稿

非公開コメント

黒ねこ時計 くろック D02
プロフィール

jujurou

Author:jujurou
運営HP:チャコの部屋
Twitter:jujurou

カレンダー
09 | 2017/10 | 11
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -
最新記事
最新コメント
カテゴリ
ユーザタグ

ぺるけ RaspberryPi Linux トランジスタ式ミニワッター TRminiWatterPart4 MPD OpenOCD イーサネットコンバータ FON2405E DAC buildroot FM3ペリフェラル BeagleBoneBlack FM3評価ボード library OpenGL mingw ODROID-U2 TL-WR700N Edison bitbake KiCad 計測 VMware シングル FM4 ミニワッター 6N6P プリアンプ 

月別アーカイブ
ランキング

FC2 Blog Ranking

カウンター
検索フォーム
リンク
RSSリンクの表示
QRコード
QRコード
ライセンス
クリエイティブ・コモンズ・ライセンス
Twitter
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。