« MITOUJTAGのJTAGスクリプトをWindows10x64+VC2019で動かしてみる | トップページ | MITOUJTAGの最終バージョンアップに向けて »

2021.08.07

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ボタンを右クリック」→「システム」→「システムの詳細設定」と操作します。

Mingw1

システムのプロパティが出たら、環境変数のボタンを押します。

Mingw2

そして、ダイアログの上の側のユーザ環境変数のところのPathと書かれた行をクリックします。

Mingw3

ここで新規を押します。

Mingw4

MinGWをインストールしたフォルダのC:\MinGW\binを入力します。

Mingw5

環境変数にMinGWが追加されれば成功です。

Mingw6

これだけで基本的にはOKでした。

では起動しようとしたときに「必要なモジュールが見つかりません」というエラーはなぜ出るのでしょうか。

作られたJSMファイル(DLL)をDependencyで見てみると、MinGWの提供しているlibgccやlibstdc++などのランタイムを必要とするようなDLLになっていることがわかります。

Depends

上記の手順で環境変数を設定していれば、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フォルダに通っていればコンパイルができるようでした。お手軽ですね。

 

|

« MITOUJTAGのJTAGスクリプトをWindows10x64+VC2019で動かしてみる | トップページ | MITOUJTAGの最終バージョンアップに向けて »

コメント

コメントを書く



(ウェブ上には掲載しません)




« MITOUJTAGのJTAGスクリプトをWindows10x64+VC2019で動かしてみる | トップページ | MITOUJTAGの最終バージョンアップに向けて »