« Pocket JTAG Cableの再製造(2) | トップページ | JTAGスクリプトのコンパイラでMinGWを使う »

2021.08.06

MITOUJTAGのJTAGスクリプトをWindows10x64+VC2019で動かしてみる

MITOUJTAG ProにはJTAGスクリプトという機能があります。

C++でJTAGバウンダリスキャンを操作できるように拡張したものなのですが、バックグラウンドでは汎用のC++コンパイラを使って動かすようになっています。

汎用のC++コンパイラというのは、Borland C++や、MinGW、Visual C++などですが、もともとこの機能を作ったのが10年以上前なので、今のWindows 10 x64とVisual Studio 2019(Visual C++)でも動くのかどうかを確かめてみました。

まず、新しいマシンを用意する・・のは大変なので仮想マシンにWindows 10x64とVisual Studio (+VC)を入れ、MITOUJTAG Pro 3.4.2をインストールします。

 

Sp6

特電のSpartan-6ボードのデバイスドライバを入れ、USBをつないで認識させてみると、ちゃんと認識して可視化されます。

ここで、チュートリアルにしたがってJTAG Scriptを作成し、コンパイラをVC2019を選択してコンパイルしてみると・・

Js1

どうやらうまくいかないようです。

2021/08/06 17:45:00  ------------------------------コンパイル開始-------------------------------
C:\Program Files (x86)\Tokudenkairo\MJ3Pro\projects>del "C:\Users\user\Documents\MITOUJTAG3\default.jsm"
C:\Users\user\Documents\MITOUJTAG3\default.jsm が見つかりませんでした。
C:\Program Files (x86)\Tokudenkairo\MJ3Pro\projects>call "VsDevCmd.bat"
'"VsDevCmd.bat"' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。
C:\Program Files (x86)\Tokudenkairo\MJ3Pro\projects>cl /LD /I"C:\Program Files (x86)\Tokudenkairo\MJ3Pro\ajfg\sys" /I"C:\Program Files (x86)\Tokudenkairo\MJ3Pro\ajfg\sys\..\lib" /Fe"C:\Users\user\Documents\MITOUJTAG3\default.jsm" "C:\Users\user\Documents\MITOUJTAG3\noname.cpp" "C:\Program Files (x86)\Tokudenkairo\MJ3Pro\ajfg\sys\jsenv_vc.lib"
'cl' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。
2021/08/06 17:45:01 ------------------------------コンパイル終了-------------------------------
2021/08/06 17:45:01 AJFGスクリプトの翻訳でエラーが発生しました

MITOUJTAGはVisual C++のclを起動しようとして環境変数設定用のVsDevCmd.batを実行しようとするのですが、%VS160COMNTOOLS%という環境変数が設定されていないため、デフォルトのインストール状態では起動できないようです。

なお、Visual Studio 2015のころの%VS140COMNTOOLS%や、2017のころの%VS150COMNTOOLS%はシステムの環境変数として登録されていたと思うのですが、VS 2019をインストールしても%VS160COMNTOOLS%は定義されていなかったようです。こういった環境変数がVisual Studioのいつまで使えていたのかどうかはわかりません。

MITOUJTAGが外部ツールを呼び出してJTAGスクリプトをコンパイルするための手順は、C:\Program Files (x86)\Tokudenkairo\MJ3Pro\ajfg\sysにバッチファイルのひな型として用意されています。

Batsrc

この中のcompile.vc2019をメモ帳などで編集します。もともと下記のようなファイルになっているので、

del $TARGET
call "%VS160COMNTOOLS%VsDevCmd.bat"
cl /LD /I"$SYSPATH" /I"$SYSPATH\..\lib" /Fe$TARGET $SOURCES "$SYSPATH\jsenv_vc.lib"

この2行目の%VS160・・%の行を絶対パスで

call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Tools\VsDevCmd.bat"

に書き換えます。

こうするとVsDevCmd.batが呼び出すことができるようになって、コンパイラが起動するようになります。

しかし、permission deniedというエラーメッセージが出て止まってしまいます。

Permission

ログを見ると、起動コマンドとエラーメッセージは以下のとおりです。

cl /LD /I"C:\Program Files (x86)\Tokudenkairo\MJ3Pro\ajfg\sys" /I"C:\Program Files (x86)\Tokudenkairo\MJ3Pro\ajfg\sys\..\lib" /Fe"C:\Users\user\Documents\MITOUJTAG3\default.jsm" "C:\Users\user\Documents\MITOUJTAG3\noname.cpp" "C:\Program Files (x86)\Tokudenkairo\MJ3Pro\ajfg\sys\jsenv_vc.lib"
・・・
C:\Users\user\Documents\MITOUJTAG3\noname.cpp : fatal error C1083: コンパイラの生成した ファイルを開けません。'C:\Program Files (x86)\Tokudenkairo\MJ3Pro\projects\noname.obj':Permission denied

noname.cppというファイルをコンパイルしてnoname.jsmを作るのですが、途中でnoname.objというオブジェクトファイルを作るカレントディレクトリがファイルを作成できないところにあるためと思われます。

BorlandのVCLライブラリのGetCurrentDirを呼び出してしらべてみると、

2021/08/06 18:47:33 GetCurrentDir=C:\Program Files (x86)\Tokudenkairo\MJ3Pro\projects

と、Program Files (x86)の配下の、プログラムをインストールしたディレクトリを指していました。

昔のWindowsのソフトならこれでも動いたのですが、さすがにWindows 10時代にはこのフォルダには一時ファイルは作れないですね。

 

対策方法としては、MITOUJTAGで新しいプロジェクトを始めるときには、「ファイル」メニューの「新規プロジェクトの作成」を行って、

Newproj

プロジェクトのカレントディレクトリを設定することです。

Newproj2

ユーザデータフォルダ、C:\Users\<ユーザ名>\Documents\MITOUJTAG3\ の配下にプロジェクトのフォルダが作られて、そこをカレントディレクトリにするので、permission deniedが出なくなります。

 

|

« Pocket JTAG Cableの再製造(2) | トップページ | JTAGスクリプトのコンパイラでMinGWを使う »

コメント

コメントを書く



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




« Pocket JTAG Cableの再製造(2) | トップページ | JTAGスクリプトのコンパイラでMinGWを使う »