こんにちは。
ハギと申します。
RX Simulatorでコマンドラインからプロジェクトを実行することは可能なのでしょうか。
最終的にやりたいことは、「Github Actionsを使ってGithubにpushをしたら、self hosted環境でユニットテストを自動で実行する」というようなことです。
現在、GUIのe2studioのRX Simulator環境でユニットテストを行い、Renesas Debug Virtual Consoleに結果を表示するということはできています。
また、コマンドラインでビルドは以下のページによると可能とのこと。
https://ja-support.renesas.com/knowledgeBase/17797621
よって、後はコマンドラインからテストの実行さえできればやりたいことができそうな気がしていますが、このようなことは可能なのでしょうか。
ハギさん、こんにちは。NoMaYです。e2 studioに同梱されているrx-elf-gdb.exe+e2-server-gdb.exe+Renesas RX Simulatorのコマンドラインからの実行が出来るかどうか、今夜にでも試してみようと思いました。(実は以前から気になっていて今回が何かの契機のような気がしましたので。)その一方で、CS+にコマンドライン版というものがあり、以下のことが出来ます。また、コンパイラにCC-RXを使用しているのであれば、e2 studioでビルドしたabsファイルはCS+のRenesas RX Simulatorでも読み込めます。あと、GUI版にしろコマンドライン版にしろ、デバッグ専用プロジェクトというものが作れるようになっていてビルド時のプロジェクトとは独立した簡素なプロジェクトで済ませることも出来ます。(以下は昔の話ですが今でも大丈夫だと思うのですけれど。)(1) mtpjファイルを読み込んでビルドする(2) mtpjファイル+absファイルを読み込んでRenesas RX Simulatorを実行すること実行結果のPass/Fail/それらに限らずMessage文字列の表示は、Debug Virtual Consoleでなくても、以下の方法でも出来ると思うのです。(これは実はまだコマンドライン版では試してませんけれど。)(A) GDBであればDynamic Printfでコマンドプロンプトへメッセージを表示する(B) CS+コマンドライン版であればAction Eventでコマンドプロンプトへメッセージを表示するなお、どうも今のところCS+でしか使えないようですが、CS+のRenesas RX Simulatorでは以下のことも出来ます。(これも実はまだコマンドライン版では試してませんけれど。)(C) ファイル入出力今のところ頭に思い浮かんでいるのは、こういったところです、、、
NoMaYさん
ハギです。
いつもお世話になってます。
情報ありがとうございます。
いただいた情報をもとに私の方でも試してみたいと思います。
ハギさん、こんにちは。NoMaYです。途中経過です。rx-elf-gdb.exe+e2-server-gdb.exe+Renesas RX Simulatorでコマンドラインから起動後、GDBとGDBSERVERを接続するところまでが出来ました。(以下の画面コピー) これから、ダウンロード、実行、Pass/Failの表示、など試してみます。以下、参考にした資料です。統合開発環境 e² studio を使用したリモートデバッグの方法R20AN0630JJ0100 Rev.1.00 Sep.01.21www.renesas.com/jp/ja/document/apn/how-use-remote-debugging-integrated-development-environment-e-studiolaunch rx-elf-gdb.exe without e2 studiohttps://www.google.com/search?q=renesasrulz.com/the_vault/f/archive-forum/8621/launch-rx-elf-gdb-exe-without-e2-studioNon-Stop Mode (Debugging with GDB)sourceware.org/gdb/current/onlinedocs/gdb/Non_002dStop-Mode.html以下、画面コピーです。GDBSERVER側 ([追記] 2021/11/06 00:00 すみません。環境変数設定は余分でした。ごめんなさい。)GDB側 ([追記] 2021/11/06 00:00 すみません。環境変数設定が抜けています。ごめんなさい。)以下、入力したコマンドです。GDBSERVER側 ([追記] 2021/11/06 00:00 すみません。環境変数設定を削除しました。)cd /d C:\Renesas\e2studio64\SupportFiles\.eclipse\com.renesas.platform_1643561029\DebugComp\RXe2-server-gdb -p 60916 -g SIMULATOR -t R5F572NN -uPeripheralClkRatio= 4 -uCpuClkFreq= 240 -uRegisterSetting= 0 -uModePin= 0 -uCacheDecode= 1 -uIOModule= IodllForCMT.dll -uIOModule= IodllForICU_dpfpu.dll -n 0 -uWorkRamAddress= 0 -uEmStopInt= 0 -uEmStopInterrupt= 0 -uEmStopFPexp= 0 -l -uCore= SINGLE_CORE^|enabled^|1^|main -uSyncMode= async -uFirstGDB= main GDB側 ([追記] 2021/11/06 00:00 すみません。環境変数設定を追加しました。)cd /d C:\Renesas\e2studio64\SupportFiles\.eclipse\com.renesas.platform_1643561029\DebugComp\RXset Path=C:\Renesas\e2studio64_v202110\eclipse\runtimes\python\2.7.12_x86;%Path%set PYTHONPATH=C:\Renesas\e2studio64_v202110\eclipse\runtimes\python\2.7.12_x86\librx-elf-gdb -rx-force-isa=v3 -rx-force-double-fpu set pagination offset non-stop ontarget extended-remote-rx localhost:60916
ハギさん、こんにちは。NoMaYです。途中経過その2です。ダウンロード、実行、Pass/Failの表示、など試してみました。それで気付いたのですけれど、Pass/Failはプログラム内から敢えて表示しようとしなくても、GDBがブレーク時に表示するメッセージだけでも区別出来そうですね、、、この後、ブレークしたらGDBを終了させるという方法を調べてみます。ただ、これも気付いたことですけれど、決められた時間内にPass/Failで終了しなかった場合に強制終了するフェールセーフも本当はあった方が良さそうですけど、そこまでは手が回りそうにないです、、、以下、画面コピーです。以下、コマンドとソースです。
file C:/Renesas/GitHubDesktop/workspaces/workspace_e2v202110/TestProgRun/HardwareDebug/TestProgRun.xset pagination offset non-stop ontarget extended-remote-rx localhost:60916monitor enable_execute_on_connectmonitor enable_stopped_notify_on_connect# wait for a notificationloadb Passb Faili bc
#include "r_smc_entry.h"#include "rpbrx72ndef.h"#pragma noinline Pass#pragma noinline Failvoid Pass(void);void Fail(void);int main(void){ Pass(); //Fail(); for (;;) ;}void Pass(void){ for (;;) ;}void Fail(void){ for (;;) ;}
ハギさん、こんにちは。NoMaYです。ひとまずそれっぽいことが出来ました。以下のコマンド入力ファイルを作成し、標準入力をリダイレクトしてGDBに実行させてみました。(実は他にも試してみたのですが、どうも何かしらデリケートなタイミング案件があるようで、何とか動いたのが標準入力をリダイレクトする方法でした。) 週明け、コマンドライン版CS+もやってみます。以下、画面コピーです。([追記] 2021/11/06 00:00 すみません。環境変数設定が抜けています。ごめんなさい。)以下、コマンドとコマンド入力ファイルです。([追記] 2021/11/06 00:00 すみません。環境変数設定を追加しました。)cd /d C:\Renesas\e2studio64\SupportFiles\.eclipse\com.renesas.platform_1643561029\DebugComp\RXset Path=C:\Renesas\e2studio64_v202110\eclipse\runtimes\python\2.7.12_x86;%Path%set PYTHONPATH=C:\Renesas\e2studio64_v202110\eclipse\runtimes\python\2.7.12_x86\librx-elf-gdb -rx-force-isa=v3 -rx-force-double-fpu --silent C:/Renesas/GitHubDesktop/workspaces/workspace_e2v202110/TestProgRun/HardwareDebug/TestProgRun.x < C:\Renesas\GitHubDesktop\workspaces\workspace_e2v202110\TestProgRun\TestProgRun.gdbcmdTestProgRun.gdbcmd
set pagination offset non-stop ontarget extended-remote-rx localhost:60916monitor enable_stopped_notify_on_connectmonitor enable_execute_on_connect# wait for a notificationloadb Passb Failcq
[追記] 2021/10/30 13:00すみません、うっかり試行錯誤中にやっていたコマンドが紛れ込んだまま投稿してしまいました。以下のコマンドは削除しました。TestProgRun.gdbcmd
set pagination offset non-stop onset target-async ontarget extended-remote-rx localhost:60916monitor enable_stopped_notify_on_connectmonitor enable_execute_on_connect# wait for a notificationloadb Passb Failcq