JTAGスクリプトのコンパイラでMinGWを使う
MITOUJTAG ProにはJTAGスクリプトという機能が備わっています。
JTAGスクリプトを使うとC++で簡単にバウンダリスキャンの手順を書くことができるのですが、その実体は、裏で汎用のCコンパイラが動いてスクリプト(C++のプログラム)からDLLを作成するという仕組みになっています。
CコンパイラにはBorland C++、Visual C++、MinGWなどが使えるのですが、ここではWindows 10の環境でMinGWを使う方法を説明します。MinGWはオープンソースであり自由に使えるので、今後のJTAGスクリプトの標準にしようかと思っています。
このたび、MITOUJTAG Proをお買い上げいただいたお客様から、「JTAGスクリプトを起動するとJSMファイルが見つかりませんと一瞬表示されて起動しない」というお問合せがあったので、Windows10とMinGWでの動作を検証してみました。
まず、MinGWのダウンロードとインストールは基本的には「AJFGをMinGWで使う場合の導入方法」のページに書いたとおりです。ただ、書いた当時と少し変わっていて、PCの環境変数の設定が、Windows 10では「Windowsボタンを右クリック」→「システム」→「システムの詳細設定」と操作します。
システムのプロパティが出たら、環境変数のボタンを押します。
そして、ダイアログの上の側のユーザ環境変数のところのPathと書かれた行をクリックします。
ここで新規を押します。
MinGWをインストールしたフォルダのC:\MinGW\binを入力します。
環境変数にMinGWが追加されれば成功です。
これだけで基本的にはOKでした。
では起動しようとしたときに「必要なモジュールが見つかりません」というエラーはなぜ出るのでしょうか。
作られたJSMファイル(DLL)をDependencyで見てみると、MinGWの提供しているlibgccやlibstdc++などのランタイムを必要とするようなDLLになっていることがわかります。
上記の手順で環境変数を設定していれば、JTAGスクリプトの実行時にこれらのMinGWのランタイムを見つけることができるのですが、環境変数を設定しなくてもMinGWのコンパイルだけはできるように、MITOUJTAGの側で設定されていたのです。
それが、MITOUJTAGをインストールしたフォルダの C:\Program Files (x86)\Tokudenkairo\MJ3Pro\ajfg\sys にあるcompile.mgwというファイルです。
C:\MinGW\bin\g++ -I"$SYSPATH" -I"$SYSPATH\..\lib" -L"$SYSPATH" -shared -o $TARGET $SOURCES "$SYSPATH\jsenv_mingw.a"
という内容が書かれていて、MinGWでコンパイルするときにはC:\MinGW\bin\g++を実行することが明示的に書かれています。このファイルに絶対パスでC:\MinGW\bin\g++と書かれていたので、環境変数の設定をしなくてもコンパイルは通ってしまうけど、実行時のDLLが見つからないという事態になってしまうようでした。
なお、g++の設定でオプション -static を指定すると、上記のランタイムが埋め込まれるようです。
そのため、compile.mgwの2行目を絶対パスなしの
g++ -I"$SYSPATH" -I"$SYSPATH\..\lib" -L"$SYSPATH" -static -shared -o $TARGET $SOURCES "$SYSPATH\jsenv_mingw.a"
に書き換えるとさらに良さそうです。
なお、MinGWはダウンロードしてインストーラからインストールしなくてもよく、環境変数のpathがMinGW\binフォルダに通っていればコンパイルができるようでした。お手軽ですね。
| 固定リンク









コメント