スポンサーサイト

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

OpenOCD 0.5.0 (x64)の作成

今まで、WinXP(x86)の時にOpenOCDをCygwin上でコンパイルした物を使っていました。その後、Win7(x64)になっても何とその時のバイナリをコピーして使っちゃってました…。当時は使えるからいいかな的な感覚で使ってましたが、せっかくの64bitマシン(OS)なので64bitネイティブにしようと思ったのが今回の発端です。

64bitのソフトを作るにはCygwinではダメで、MinGW-w64を使う事になります。と分かっていてもいざインストールとなると色々と??だったので、oni-chanさんのblogを参考にチャレンジしてみました。

先ずはダウンロード&インストール


MinGW-w64
http://sourceforge.net/projects/mingw-w64/
mingw-w64-bin_i686-mingw_20110404.zip

MSYS
http://sourceforge.net/projects/mingw/files/MSYS/BaseSystem/msys-core/msys-1.0.11/MSYS-1.0.11.exe/download
MSYS-1.0.11.exe

msysDTK
http://sourceforge.net/projects/mingw/files/MSYS/Supplementary%20Tools/msysDTK-1.0.1/msysDTK-1.0.1.exe/download
msysDTK-1.0.1.exe

D2XX
http://www.ftdichip.com/Drivers/D2XX.htm


実はこの上2つは最新のファイルを自動的に取得する方法があるのですが、oni-chanさんのblogでは意図的に別々にインストールされているのでそれにならってそれぞれをインストールしました。

あと、OpenOCD 0.4.0 の後半から始まった git でのソースコードの取得です。実は git の使い方が未だに理解できていないので、以前同様に私的に実績のある Cygwin の git を使って取得しました。OpenOCD 0.5.0 になりかけのソースコードです。依然作成したJTAGkey2 clone を使用するので、FT2232HのドライバD2XXもダウンロードしてきて、OpenOCDのソースコードのカレントに ftd2xx というフォルダを作り、圧縮物を展開した内容を入れました。

MSYSを起動してOpenOCDのフォルダまで移動し、以下のコマンドを実行。


./bootstrap


……!?、いきなりエラーが出てしまいました。
何と、このコマンド中に git にアクセスするみたいです。MSYSには git を入れていません。というより、MinGW, MSYSのサイトに msys用の git が置いてなかったのです。ググってみると、どうやら msysgit というそのままの名前の物がありました。

msysgit
http://code.google.com/p/msysgit/

これをダウンロードしてインストール……あれっ、MSYSの様なシェルも一緒に入ってきましたし、チョイと望んだ形式ではなかったです。それも、焦っていて見当違いな所にインストールしてしまいました。これ、解答だけじゃなく、いきなり展開したファイルをコンパイルしているみたいです。

インストールされた場所はこんな所。
C:\msysgit\msysgit\bin\git.exe

git.exe意外にも色々と実行ファイルがあったりするので、git.exeだけをコピってくるのは無謀かとおもい、とりあえずパスを通して再度 bootstrap を実行。が、案の定、git を設定していないので、git の部分で止まってしまいます。 bootstrap の中身をみると、2カ所で git を使っているが、これは、どうやら jimtcl というののソースコードをダウンロード使用としているみたいでした。フォルダを見渡すと、jimtcl という空のフォルダが存在しています。jimtcl でググってみると、該当するHPがヒットしました。

jimtcl
http://workware.net.au/jimtcl/JimTcl/Jim_Tcl.html

ダウンロードの項目があったのでクリックしてみると、git でダウンロードする様に記述されていました。またまた懲りずに Cygwin の git で該当のソースコードをダウンロードして、それを空だったフォルダにぶち込みました。

git clone git://repo.or.cz/jimtcl.git

今度こそうまく行ってくれと願いながら bootstrap を実行したところ、妙にあっさりと通りました。怪しさ満点です。が、先に進む事に。次はおきまりのコマンドですが、オプションをいろんなHPを参考にして付け加えました。

[参考HP]
http://d.hatena.ne.jp/oni-chan/20100905/1283677671
http://homepage3.nifty.com/zus/OpenOCD_Build_win32_Flame.html


コマンド
./configure --enable-maintainer-mode --enable-ft2232_ftd2xx --disable-werror --disable-shared --with-ftd2xx-win32-zipdir=ftd2xx --build=x86_64-mingw32 CFLAGS="-O0 -g -Wall"

さて、運命の瞬間です…… ものの数秒でエラーになりました。なんと autoconf のバージョンが古いらしいです。後で見たのですが README に autoconf >= 2.59 and automake >= 1.9 と書かれていました。更に、m4とかいうのも引っかかっているみたいです。何がどの位古いのか分からなかったので、以下のHPで書かれているツール+m4 を個別に取ってきてバージョンUPしました。

http://homepage3.nifty.com/zus/OpenOCD_Build_win32_Flame.html

http://sourceforge.net/projects/mingw/files/MSYS/

autoconf
automake
libtool
perl
libtool_dll
crypt_dll
m4

で、念の為、bootstrap の実行からやり直し、configure も無事に成功。Makefile ができていたのでそのまま make を実行。時間はかかりますが、意外とすんなりコンパイル終了しました。

src フォルダの中を見ると、openocd.exe ができています。
が、なんとなくいやな予感がして、テキストエディタで強引に openocd.exeを開いて"dll"で検索してみると… "ftd2xx.dll" がヒットします。64bit版は "ftd2xx64.dll"でないと意味がない(本体は64bit動作だが、dllは32bit動作)ので、作り直しです。
この辺の情報が何処かにないかとググってると、以下の掲示板を見つけました。

http://forum.sparkfun.com/viewtopic.php?t=17598

どうやら、DLLの64bit版の ftd2xx.lib に問題があるみたいです。
対処の仕方も書いてあったのでその通りにしました。

cd /usr/src/ftd2xx/amd64
echo "LIBRARY ftd2xx64.dll" > ftd2xx64.def
echo "EXPORTS" >> ftd2xx64.def
strings ftd2xx64.dll | grep FT_ >> ftd2xx64.def
mv ftd2xx.lib ftd2xx.lib.old
dlltool.exe -d ftd2xx64.def -l ftd2xx.lib


念の為、make clean をして、bootstrap の実行からやり直しました。が、今度は configure を実行中にエラーが出ます。それも「ftd2xx64.dllにアクセスできません」といった内容のメッセージが表示されます。しばし考え込みました……。ふと気がついたのが、今コンパイル等をしているベースソフトのMSYSが32bit動作をしているのではないかという疑問です。試しに、MSYS実行時にタスクマネージャで見てみると、MSYSに該当する sh.exe に *32 のマークが付いています。つまり 32bit動作をしているのです。なので、configure 実行中も 32bit動作で、dll参照先は system32 のフォルダです。当然そんなところに ftd2xx64.dll はありません。コンパイルを通すためだけに、一時的に ftd2xx64.dll を置いてみたところ、すんなりと configure を実行できました。後は make です。少し時間はかかりましたが、openocd.exe ができあがりました。中身を検索しても、ftd2xx.dll はなく、ftd2xx64.dll に変わっています。これでようやく一安心です。

make install
として、必要なファイルを所定の場所に集めました。

D:\64bit\msys\1.0\local\bin
D:\64bit\msys\1.0\local\share\openocd\scripts

この2つのフォルダの中身が必要なファイルです。あっ、それと念の為に ftd2xx64.dll を openocd.exe と同じフォルダに入れておきます。これらはもうwin64bit ネイティブなコードになっているので何処で実行してもよく、自分のtoolフォルダに入れておきました。

動作確認は、昔Interfaceに付いてきた NXPのLPC2388とJTAGkey2 cloneを繋いで確認しました。因みにWin7にはデフォルトではtelnetが入っていません。「コントロールパネル」-「プログラム」-「プログラムと機能」-「Windowsの機能の有効化または無効化」よりtelnetクライアントにチェックを入れて「OK」をクリックすることによってインストールされます。まっ、Win7にはハイパーターミナルがなく、TeraTermを入れている私は、TeraTermでtelnet接続しても良いのですがね。


---------------------------------------------------------
作ったファイルを置いておきます。
動作確認は私の環境でのみなので他の環境で動く保証はできません。

OpenOCD_050_20110409_01.zip


スポンサーサイト

コメントの投稿

非公開コメント

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

jujurou

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

カレンダー
05 | 2017/06 | 07
- - - - 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 -
最新記事
最新コメント
カテゴリ
ユーザタグ

ぺるけ 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ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。