お世話になります。
RXコンパイラcc-rxにおいてプリプロセッサ命令には下記のような物はないと認識したので宜しいですよね?
これらはGCCの場合に有効なプリプロセッサ命令ですよね。
DTERMFCN=1 -DONESTEPFCN=1 -DMAT_FILE=0 -DMULTI_INSTANCE_CODE=0 -DINTEGER_CODE=0 -DMT=0 -DCLASSIC_INTERFACE=0 -DALLOCATIONFCN=0 -DTID01EQ=0 -DMODEL=NassFCM -DNUMST=1 -DNCSTATES=0 -DHAVESTDIO
マイコンの変更に伴うコード移植をしております。前マイコンはTIのRM46 ARM系出会ったため、GCCでした。
どうぞ宜しくお願いします。
とっさん さん、こんにちは。NoMaYです。> ccrxはできても、macrxが実行できない場合って、どんなケースがあるのでしょうか。それを探るために、私の場合、Windowsのコマンドプロンプトウィンドウを開いてMATLAB Embedded Coderが実行しようとしたコマンドを手入力してみると思います。
"C:\Program Files (x86)\Renesas Electronics\CS+\CC\CC-RX\V3.03.00\Bin/ccrx" -isa=rxv2 -fpu -endian=big -dbl_size=8 -signed_char -signed_bitfield -auto_enum -bit_order=left -pack -lang=c99 -output=obj -define=TERMFCN=1 途中省略 -include=C:/PROGRA~1/MATLAB/R2017A~1/rtw/c/ert "AirByp.c"
咄嗟に思い浮かんだ可能性としては以下のものがあります。確度は不明ですが、、、・環境変数PathにCC-RXのパスが追加がされていないといけない?・環境変数Pathが削除されていてはいけない?(MATLABが環境変数Pathを子プロセスに引き継いでいない?)・環境変数TEMPやTMPが削除されていてはいけない?(MATLABが環境変数TEMPやTMPを子プロセスに引き継いでいない?)・(そもそも)AirByp.cが余りに巨大でコンパイル出来ない・(MATLABを起動していると)メモリ不足でコンパイル出来ないなど。
NoMaYさん
御教示ありがとうございます。
Windowsのコマンドプロンプトウィンドウの手法を試してみます。
また、ご示唆頂いた可能性について、Matlab側にも確認してみます。
どうも有難うございます。
とっさん さん、こんにちは。NoMaYです。> また、ご示唆頂いた可能性について、Matlab側にも確認してみます。むしろ、F0553200:Error occurred in executing 'macrx.exe'に関しては先にルネサスさんに問い合わせた方が見通しが良くなるかも知れません。(既に問い合わせているかも知れませんが、、) 私が挙げた可能性は、どちらかというと、CC-RX側に起因する可能性が主、ですので、、、
ルネサスさんに質問してみたのですが、ゴールに近ずく回答は得られませんでした。(質問が悪かったのかもしれませんが、)
環境変数について教えて貰えないでしょうか。
コマンドラインでCC-RXを利用する時は環境変数を下記リンクの様に書くことが必要とありました。
http://csps.hitachi-solutions.co.jp/rx-c/faq/index.html
コンパイラのユーザーズマニュアルを見ても同様な環境変数(PATH, BIN_RX, INC_RX, TMP_RX, CPU_RX)が有るのですが、
これらはcc-rxが参照するものなのでしょうか?環境変数とはCS+の場合にはどの設定が該当するのでしょうか?
また、これらはcc-rxをコールする前に記載しておく必要が有るのでしょうか?
知識が無く教えていただけたらと存じます。
set PATH=C:\Program Files\Renesas Electronics\CubeSuite+\CC-RX\V2.00.00\bin;%PATH% set BIN_RX==C:\Program Files\Renesas Electronics\CubeSuite+\CC-RX\V2.00.00\bin set INC_RX=C:\Program Files\Renesas Electronics\CubeSuite+\CC-RX\V2.00.00\include set TMP_RX=%TEMP% set CPU_RX=RX600どうぞ宜しくお願いいたします。
CC-RXが使う環境変数は、マニュアルに書いてありますね。http://tool-support.renesas.com/autoupdate/support/onlinehelp/ja-JP/csp/latest/CS+.chm/Compiler-CCRX.chm/Output/ccrx02c0300y.htmlCS+で、「ビルド前に実行するコマンド」(ビルド後の方でもいいんだが)に、set コマンド (パラメータなし) を書いておき、ビルドを実行してみればビルド時に設定されている環境変数がコンソールに出力されます。それを参考にすれば良いのではないかと思います。
とっさん さん、こんにちは。NoMaYです。ほやさん指摘のウェブページを見て、BIN_RXという環境変数がlbgrxコマンド利用時は省略不可である、ということを初めて知りました、、、ところで、先日の件、コマンドを手入力したらどうなりましたでしょうか?
とっさん さん、こんにちは。NoMaYです。まだ解決していないのですよね。私の認識は、こんな感じなのですけれども、、、(1) TIのARMマイコンよりルネサスさんのRXマイコンを使った方が、市場競争力の高い自社製品を開発出来そうだと感じている(よって、マイコンを乗り換えたい)が、MATLAB Embedded Coderを使うのが社内では当たり前になっているので、それが使えないのでは社内の賛同を得ることは難しい。(2) MATLAB Embedded Coderが、自身が生成したソースコード中の条件コンパイル文に対して、どういう場合にどんなdefineを有効にしてくるのか分からないので、MATLAB Embedded Coder上でビルドすることを早々に諦める訳にはいかない。(3) 理屈の上では(ドキュメント上は)、MATLAB Embedded Coderのコンパイラ対応機能を活用することでMATLAB Embedded Coder上でビルド出来る筈であるが(出来る筈だと思われるのだけれども)、何故か謎のエラーが発生してCC-RXの実行に失敗してしまう。(なお、まだ、仮にビルド出来るようになったとしても、ちゃんと動作するかどうか、ちゃんと動作するようにするにはどうすれば良いか、といった話は、まだまだ、これからである。) ちなみに、TIのARMマイコンでは、GNUARMがちゃんと実行出来て、ビルドも出来て、動作する物も出来ていた。(4) CC-RXの実行に失敗してしまう原因は、ルネサスさんにも心当たりが無い。(環境変数がどうのこうの話の発端は私のリプライの中の環境変数の話が発端なだけなのかも?、、、)基本的なアプローチは以下なのだとは思うのですが、、、(A) MATLAB Embedded Coderで、動作するかどうかは別問題として、まずは最小限のコードを生成するように設定して、MATLAB Embedded Coder上でビルド(しようと)して、実行される(筈の)ビルドコマンドの一覧 or makefileを入手する。ここで、場合分けがひとつ、発生します。(B-1) そうしたらビルド出来てしまった、とか?(B-2) それでもビルド出来ないことに変わり無し --> たぶん、こちらかな、と仮定しておきます(C) 同じコマンドをコマンドプロンプト上で実行するとどうなるか? --> たぶん、今ここですねここで、場合分けがひとつ、発生します。(D-1) それでもビルド出来ない --> 空のmain()程度のmain.cをコマンドプロンプト上でCC-RXでビルド出来るか?(D-2) そうしたらビルド出来てしまった --> とっさに私が思い付くのは環境変数TEMP/TMPぐらいだったけれども、、、可能性的には、makefileベースのオープンソースソフトウェアでPCを変えたらビルド出来なくなった、というあたりのトピックスと同レベルではないかなぁ、という考えはあるものの、今まで自分は過去どうやってきたのか、いざとなると思い返せないのが申し訳無いですね、、、どうやっていたっけなぁ、、、
ほやさん
ご教示ありがとうございます。CS+の場合で試してみます。
おおよそご推察の通りです。
(A)→(B-2)→(C)←今ここです。
コマンドで実行する場合とEmbeddedCoder上で実行する際のエラーが異なっていました。
InputFileが見つけられないため、E0511134:Input file "AirByp.c" is not found.が発報され、F0553200:Error occurred in executing 'macrx.exe' が判断されているのか?などと思っております。
〇コマンドプロンプトの場合
C:\Users\59692>"C:\Program Files (x86)\Renesas Electronics\CS+\CC\CC-RX\V3.03.00\Bin/ccrx" -isa=rxv2 -fpu -endian=big -dbl_size=8 -signed_char -signed_bitfield -auto_enum -bit_order=left -pack -lang=c99 -define=TERMFCN=1 -define=ONESTEPFCN=1 -define=MAT_FILE=0 -define=MULTI_INSTANCE_CODE=0 -define=INTEGER_CODE=0 -define=MT=0 -define=CLASSIC_INTERFACE=0 -define=ALLOCATIONFCN=0 -define=TID01EQ=0 -define=MODEL=NassFCM -define=NUMST=1 -define=NCSTATES=0 -define=HAVESTDIO -include=C:/Users/59692/Desktop/202102~1/Main -include=C:/Users/59692/Desktop/202102~1/Main/NassFCM_ert_rtw -include=C:/Program -include=C:/Users/59692/Desktop/202102~1/Main/Files -include=C:/Users/59692/Desktop/202102~1/Main/(x86)/Renesas -include=C:/Users/59692/Desktop/202102~1/Main/Electronics/CS+/CC/CC-RX/V3.03.00/bin -include=C:/Users/59692/Desktop/HA11test/src/smc_gen -include=C:/Users/59692/Desktop/202102~1/Main/AppInterface/Nass -include=C:/Users/59692/Desktop/202102~1/Main/AppInterface/Generic -include=C:/PROGRA~1/MATLAB/R2017A~1/extern/include -include=C:/PROGRA~1/MATLAB/R2017A~1/simulink/include -include=C:/PROGRA~1/MATLAB/R2017A~1/rtw/c/src -include=C:/PROGRA~1/MATLAB/R2017A~1/rtw/c/src/ext_mode/common -include=C:/PROGRA~1/MATLAB/R2017A~1/rtw/c/ert "AirByp.c"RX Family C/C++ Compiler V3.03.00 [20 Nov 2020]RX Family Assembler V3.03.00.02 [11 Nov 2020]Renesas Optimizing Linker V3.03.00 [01 Oct 2020]Copyright (C) 2011, 2020 Renesas Electronics CorporationCopyright (C) 2003-2020 University of Illinois at Urbana-Champaign.All rights reserved.E0511134:Input file "AirByp.c" is not found.
〇EmbeddedCoderの場合
...### ツールチェーンの使用: Renesas | gmake makefile (RX64M)### 'C:\Users\59692\Desktop\20210222_Simulink Share\Main\NassFCM_ert_rtw\NassFCM.mk' を作成しています...### 'NassFCM' をビルドしています: "C:\PROGRA~1\MATLAB\R2017A~1\bin\win64\gmake" -f NassFCM.mk postbuild all"C:\Program Files (x86)\Renesas Electronics\CS+\CC\CC-RX\V3.03.00\Bin/ccrx" -isa=rxv2 -fpu -endian=big -dbl_size=8 -signed_char -signed_bitfield -auto_enum -bit_order=left -pack -lang=c99 -define=TERMFCN=1 -define=ONESTEPFCN=1 -define=MAT_FILE=0 -define=MULTI_INSTANCE_CODE=0 -define=INTEGER_CODE=0 -define=MT=0 -define=CLASSIC_INTERFACE=0 -define=ALLOCATIONFCN=0 -define=TID01EQ=0 -define=MODEL=NassFCM -define=NUMST=1 -define=NCSTATES=0 -define=HAVESTDIO -include=C:/Users/59692/Desktop/202102~1/Main -include=C:/Users/59692/Desktop/202102~1/Main/NassFCM_ert_rtw -include=C:/Program -include=C:/Users/59692/Desktop/202102~1/Main/Files -include=C:/Users/59692/Desktop/202102~1/Main/(x86)/Renesas -include=C:/Users/59692/Desktop/202102~1/Main/Electronics/CS+/CC/CC-RX/V3.03.00/bin -include=C:/Users/59692/Desktop/HA11test/src/smc_gen -include=C:/Users/59692/Desktop/202102~1/Main/AppInterface/Nass -include=C:/Users/59692/Desktop/202102~1/Main/AppInterface/Generic -include=C:/PROGRA~1/MATLAB/R2017A~1/extern/include -include=C:/PROGRA~1/MATLAB/R2017A~1/simulink/include -include=C:/PROGRA~1/MATLAB/R2017A~1/rtw/c/src -include=C:/PROGRA~1/MATLAB/R2017A~1/rtw/c/src/ext_mode/common -include=C:/PROGRA~1/MATLAB/R2017A~1/rtw/c/ert "AirByp.c" RX Family C/C++ Compiler V3.03.00 [20 Nov 2020] RX Family Assembler V3.03.00.02 [11 Nov 2020] Renesas Optimizing Linker V3.03.00 [01 Oct 2020] Copyright (C) 2011, 2020 Renesas Electronics Corporation Copyright (C) 2003-2020 University of Illinois at Urbana-Champaign. All rights reserved. AirByp.c: F0553200:Error occurred in executing 'macrx.exe' gmake: *** [AirByp.obj] Error 1 ### 次のモデルに対するビルド プロセス:'NassFCM' はエラーのため中止されました。
とっさん さん、こんにちは。NoMaYです。これは、コマンドプロンプトの場合は、CC-RXのコマンドを実行する前にカレントディレクトリを変更しておく必要がありますね。たぶん、以下のコマンドを実行してからCC-RXを実行する必要があると思います。
C:\Users\59692>cd /d C:\Users\59692\Desktop\20210222_Simulink Share\Main\NassFCM_ert_rtw
たぶんプロンプトが以下のように変わると思います。
C:\Users\59692\Desktop\20210222_Simulink Share\Main\NassFCM_ert_rtw>
その後、dirコマンドを打つとAirByp.cがカレントディレクトリに存在することが表示されると思うのですが、、、、