いつもお世話になっております。
RX231マイコンでCAN通信の学習を試みております。
e2studioを使用しておりスマートコンフィグレータ内のCAN API for the RX200 seriesをダウンロードしました。
アプリケーションノートに従って、rscan_demo_rskrx231_gccをインポートしたのですが、ビルドを行うと r_bsp_config.hがエラーとなります。
何が不足しているのか不明なのですが、わかる方いらっしゃいますでしょうか?
そのままインポートをしただけではソースファイルが不足しているということでしょうか?
初歩的で申し訳ありませんが、よろしくお願いいたします。
rx231can.xlsx
黒枝豆さん、こんにちは。NoMaYです。> そのままインポートをしただけではソースファイルが不足しているということでしょうか?そういうことでは無い筈です。今しがたダウンロードして試してみましたが、私の手元ではビルド出来ました。画面コピーを見て気付いたのですが、エラーメッセージがCC-RXのもののようであり、そちらの状況がそもそも混乱しているように見受けられました。ひとまず余計なプロジェクトをワークスペースから削除して、もう一度クリーン&ビルドして、その後のそちらの状況を教えて頂けませんか?
NoMayさん いつもご丁寧にありがとうございます。
全て閉じて、再度インポートしてみましたがやはりエラーとなります。
r_bsp_config.hが存在しないような表記となりますね。
なかなか難しいですが引き続き調べて見ようと思います。
rs_can設定.xlsx
黒枝豆さん、こんにちは。NoMaYです。r_bsp_config.hはsrc/r_config[訂正15:20]src/smc_gen/r_configフォルダにある筈のファイルですね。セオリー的には次は以下の順番かな、とは思うのです。(1) r_bsp_config.hがあることを確認(2) コンソールウィンドウの内容を確認してrx-elf-gccの-Iオプションにr_configフォルダの指定があるかを確認(3) プロジェクトのプロパティでインクルードディレクトリリストにr_configフォルダの指定があるかを確認(4) ?あと、セオリー的では無いですが、経験値的には以下のようなものもあります。(A) ワークスペースフォルダ(やプロジェクトフォルダ)を浅い深さの全角文字も半角スペースも含まないディレクトリに変えてみる(B) e2 studioの最新版をインストールして試してみる
NoMaYさん こんにちは。
アドバイスありがとうございます。
色々探してこんな感じのマニュアルをみつけました。
おっしゃる通り、r_bsp_config.hがインポートしたものには存在しません。
r_bsp_config_reference.hを変更するように指示がありますが、改善はしませんでした。
NoMaYさんのアドバイスを元に試行錯誤してみようとおもいます。
rs_can設定2.xlsxプラットフォーム設定.xlsx
黒枝豆さん、こんにちは。NoMaYです。ごめんなさい、私、フォルダの階層をひとつ間違えました。すみません。誤)src/r_configフォルダにある筈のファイル正)src/smc_gen/r_configフォルダにある筈のファイルちなみに、マニュアルのその部分は、RXスマートコンフィグレータを使わない人向けの記載ですね、、、
えっ?そーなんですか。
ショックです(笑)無知なばかりに無駄な時間を過ごしました(笑)
インポートの内部を詳しく見ていこうと思います。
r_configの中を再度確認するとr_bsp_config.hが存在しました。
しかしながら何度ビルドしてもエラーとなるのは同じでした。
r_bsp.config.hの名前をr_bsp_config_a.hなど適当な名前に変更して再びr_bsp.config.hに変更するとビルド完了しました。
インポートだけなのにうまくいかないことがあるんだと勉強になりました。
ありがとうございました。
rs_can設定3sxs.xlsx
黒枝豆さん、こんにちは。NoMaYです。ファイル名を一度変えてから元に戻したらOKになった、というのはそうそう無い事例ですね。いや、そうでも無いかも。過去、私はRL78のGCCで、どういうわけなのか、恐らく中間生成ファイルであろうアセンブラソースに文法エラーがあるというアセンブルエラーでコンパイルに失敗する経験をしていますけど、何度かコンパイルを繰り返しているとコンパイルに成功しますし、再現条件が全く不明なこともあって、放置していたのですけど、そういうカテゴリの謎な問題なのかも知れないかも、と現時点では考えるようになりました。(ひょっとすると、GCCが使っているライブラリのどれかにロジック的な不具合が存在している可能性もあるのかも知れないかも。)#脅そうとしているわけではないですけれども、明日、あるいは1週間後、さらには忘れた頃、再発するようになるかも知れないかも。(漠然とですが、そういうタイプのトラブル、なのかも?と考えるようになりました。)[追記]よくよく考えてみると、そういうトラブルがありながら触り続けているなんて、私は度胸がありますよね、、、でも、一般的な事例として、パソコンの調子が悪いというタイプのトラブルはしばしばある話で、単にそちらの系統のことかも知れませんし、、、
ご丁寧に解説いただきありがとうございます。
デスクトップとノートの二台体制で今日見比べていたのですが、同じ結果でした。
私のやり方が間違っているかもしれないし、経験がないのでなんとも言えませんが......
また再発するようであれば怖いですね。悩ましいものですね(笑)
ツールチェインのバージョンです。
ノートは8.3.0.202104でした。
また経験談等、アドバイスいただけると嬉しいです。
ツールチェインバージョン.xlsx
黒枝豆さん、こんにちは。NoMaYです。2台のパソコンで同じ症状でしたか、、、うむむむ、、、
黒枝豆さん、こんにちは。NoMaYです。あっ、このサンプルプロジェクトではHardwareDebugフォルダに丸ごと、ルネサスさんの担当者さんがビルドした時のファイルが、メイクファイルも含めて残っていますね、、、-Iオプションの引数はその担当者さんのパスになっていましたから、ひょっとしたら、私はたまたま何か意識していない手順のせいでメイクファイルが再生成されて、-Iオプションの引数が私の環境のパスに変化してビルド出来たのかも知れません、、、逆に、黒枝豆さんの場合、2台のパソコンともメイクファイルが再生成されていなかったのかも知れません、、、確証を得るとすると、こんな感じかと思いました。(1) プロジェクトフォルダを削除して、もう一度もともとの手順でやってみる(2) 同じ症状になると思われます(3) コンソールウィンドウで-Iオプションのパスを確認する(4) メイクファイルが再生成されていなければ頓珍漢なパスになってしまっていると予想されます
親身になって考えてくださりありがとうございます。
コンソールウィンドウ オプションのパスとはどこで見れますか??
アイコン等完全には把握できておらず、申し訳ございません。(汗)
黒枝豆さん、こんにちは。NoMaYです。> (3) コンソールウィンドウで-Iオプションのパスを確認するすみません、GCCを使われている方で、これで話が通じないことにジェネレーションギャップのショックを受けています。コンソールウィンドウに、以下のような文字列が表示されませんでしたか?その文字列の中の、例えば-I"C:\\Renesas\\GitHubDesktop\\workspaces\\workspace_e2v202201\\rscan_demo_rskrx231_gcc\\src\\demo"という部分のことなのですけれども。あるべき状態では、今ビルドしようとしている環境でのパスになる筈ですが、何らかの原因で、過去ルネサスさんの担当者さんがビルドした時のパスのままになっているのではないだろうか、という可能性を懸念しています。(以下で赤文字になっているのは私が文字色を変更したことによるものです。) (もちろん、そちらではビルドに失敗していますので、そちらでは最後まで実行されていないのですけれども。)
Extracting support files...12:14:00 **** Build of configuration HardwareDebug for project rscan_demo_rskrx231_gcc ****make -j2 all 'rx-elf-gcc -O0 -ffunction-sections -fdata-sections -Wstack-usage=100 -g2 -mcpu=rx230 -misa=v2 -mlittle-endian-data -std=gnu99 -I"C:\\Renesas\\GitHubDesktop\\workspaces\\workspace_e2v202201\\rscan_demo_rskrx231_gcc\\src\\demo" -I"C:\\Renesas\\GitHubDesktop\\workspaces\\workspace_e2v202201\\rscan_demo_rskrx231_gcc\\src\\smc_gen\\r_rscan_rx" -I"C:\\Renesas\\GitHubDesktop\\workspaces\\workspace_e2v202201\\rscan_demo_rskrx231_gcc\\src\\smc_gen\\r_rscan_rx\\src" -I"C:\\Renesas\\GitHubDesktop\\workspaces\\workspace_e2v202201\\rscan_demo_rskrx231_gcc\\src\\smc_gen\\r_bsp" -I"C:\\Renesas\\GitHubDesktop\\workspaces\\workspace_e2v202201\\rscan_demo_rskrx231_gcc\\src\\smc_gen\\r_config" -I"C:\\Renesas\\GitHubDesktop\\workspaces\\workspace_e2v202201\\rscan_demo_rskrx231_gcc\\src\\smc_gen\\general" -I"C:\\Renesas\\GitHubDesktop\\workspaces\\workspace_e2v202201\\rscan_demo_rskrx231_gcc\\src\\smc_gen\\r_pincfg" -Wa,-adlnh="r_rscan_rx.lst" -MMD -MP -MF"src/smc_gen/r_rscan_rx/src/r_rscan_rx.d" -MT"src/smc_gen/r_rscan_rx/src/r_rscan_rx.o" "../src/smc_gen/r_rscan_rx/src/r_rscan_rx.c" -c -o "src/smc_gen/r_rscan_rx/src/r_rscan_rx.o"'途中省略'rx-elf-gcc -O0 -ffunction-sections -fdata-sections -Wstack-usage=100 -g2 -mcpu=rx230 -misa=v2 -mlittle-endian-data -std=gnu99 -I"C:\\Renesas\\GitHubDesktop\\workspaces\\workspace_e2v202201\\rscan_demo_rskrx231_gcc\\src\\demo" -I"C:\\Renesas\\GitHubDesktop\\workspaces\\workspace_e2v202201\\rscan_demo_rskrx231_gcc\\src\\smc_gen\\r_rscan_rx" -I"C:\\Renesas\\GitHubDesktop\\workspaces\\workspace_e2v202201\\rscan_demo_rskrx231_gcc\\src\\smc_gen\\r_rscan_rx\\src" -I"C:\\Renesas\\GitHubDesktop\\workspaces\\workspace_e2v202201\\rscan_demo_rskrx231_gcc\\src\\smc_gen\\r_bsp" -I"C:\\Renesas\\GitHubDesktop\\workspaces\\workspace_e2v202201\\rscan_demo_rskrx231_gcc\\src\\smc_gen\\r_config" -I"C:\\Renesas\\GitHubDesktop\\workspaces\\workspace_e2v202201\\rscan_demo_rskrx231_gcc\\src\\smc_gen\\general" -I"C:\\Renesas\\GitHubDesktop\\workspaces\\workspace_e2v202201\\rscan_demo_rskrx231_gcc\\src\\smc_gen\\r_pincfg" -Wa,-adlnh="main.lst" -MMD -MP -MF"src/demo/main.d" -MT"src/demo/main.o" "../src/demo/main.c" -c -o "src/demo/main.o"''rx-elf-gcc -O0 -ffunction-sections -fdata-sections -Wstack-usage=100 -g2 -mcpu=rx230 -misa=v2 -mlittle-endian-data -o "rscan_demo_rskrx231_gcc.elf" ./src/smc_gen/r_rscan_rx/src/r_rscan_rx.o ./src/smc_gen/r_pincfg/Pin.o ./src/smc_gen/r_bsp/mcu/rx231/mcu_clocks.o ./src/smc_gen/r_bsp/mcu/rx231/mcu_init.o ./src/smc_gen/r_bsp/mcu/rx231/mcu_interrupts.o ./src/smc_gen/r_bsp/mcu/rx231/r_bsp_vbatt.o ./src/smc_gen/r_bsp/mcu/rx231/vecttbl.o ./src/smc_gen/r_bsp/mcu/all/dbsct.o ./src/smc_gen/r_bsp/mcu/all/lowlvl.o ./src/smc_gen/r_bsp/mcu/all/lowsrc.o ./src/smc_gen/r_bsp/mcu/all/mcu_locks.o ./src/smc_gen/r_bsp/mcu/all/r_bsp_common.o ./src/smc_gen/r_bsp/mcu/all/r_bsp_cpu.o ./src/smc_gen/r_bsp/mcu/all/r_bsp_interrupts.o ./src/smc_gen/r_bsp/mcu/all/r_bsp_locking.o ./src/smc_gen/r_bsp/mcu/all/r_bsp_mcu_startup.o ./src/smc_gen/r_bsp/mcu/all/r_bsp_software_interrupt.o ./src/smc_gen/r_bsp/mcu/all/r_rx_intrinsic_functions.o ./src/smc_gen/r_bsp/mcu/all/reset_program.o ./src/smc_gen/r_bsp/mcu/all/resetprg.o ./src/smc_gen/r_bsp/mcu/all/sbrk.o ./src/smc_gen/r_bsp/board/generic_rx231/hwsetup.o ./src/smc_gen/general/r_cg_hardware_setup.o ./src/smc_gen/general/r_smc_cgc.o ./src/smc_gen/general/r_smc_cgc_user.o ./src/smc_gen/general/r_smc_interrupt.o ./src/demo/main.o -T "C:/Renesas/GitHubDesktop/workspaces/workspace_e2v202201/rscan_demo_rskrx231_gcc/src/linker_script.ld" -Wl,--start-group -lm -lc -lgcc -Wl,--end-group -nostartfiles -Wl,-e_PowerON_Reset -Wl,-M=rscan_demo_rskrx231_gcc.map'rx-elf-gcc @"rscan_demo_rskrx231_gcc.elf.in"rx-elf-objcopy "rscan_demo_rskrx231_gcc.elf" -O srec -I elf32-rx-be-ns "rscan_demo_rskrx231_gcc.mot"12:14:26 Build Finished. 0 errors, 2 warnings. (took 26s.53ms)
黒枝豆さん、こんにちは。NoMaYです。先日のビルドに成功した時の画面コピーとして頂いたrs_can設定3sxs.xlsxを見直して気になったのですが、もしかしたら、いきなり Nothing to be done for 'all' が表示されただけで、先ほど私が投稿したようなものはコンソールウィンドウに表示されなかった、ということがあったりしますか?[追記]夜遅くになって気付いたのですけれども、先日「メイクファイルが再生成されていなかったのかも知れません」と書いたのですけれども、何のことかさっぱり分からない、という伝わり方ではなかったかなと気付きました。(これが伝わるためには、メイクというツールの存在とか、メイクが動作する仕組みとか、e2 studioがメイクを使っていることとか、あれこれと分かっていないといけないですものね。)
コンソールウィンドウがどこにあるのか理解できました。
成功パターンの表示をコピーしましたので、今から削除して再度インポートをやり直してみます。
後程、貼り付けしてみますね。
よろしくお願いいたします。
先程、削除して再度インポートしてみました。
エラーがこのようになっているのですが、内部の詳細まで私ではわかりません。(笑)
r_bsp_config.h と r_rscan_rx_config.hを名前を変更して元に戻すとビルド完了となりました。
う~んです。
rs_canビルド例.xlsx
黒枝豆さん、こんにちは。NoMaYです。添付して頂いたファイルを見ました。私は、以下はe2 studioの不具合として、ルネサスさんに調べて貰うしかないかな、と思い始めました。ポイントは、私の場合と黒枝豆さんの場合とで、インポート後の-Iオプションに関して、r_configフォルダのパスの有無が何故か異なる、という問題です。(私の方にはあって、黒枝豆さんの方には無い、のです。何故か、あるべき筈のパスが欠落してしまっているのです。) この後、私に出来ることといったら、そちらのプロジェクトフォルダにある.cprojectファイルを送って頂いて、中を調べることで、e2 studioのプロジェクトの設定として欠落しているかどうか(たぶん欠落していると思うのですが)の確証を取るぐらいかな、と思いました。私の場合:
-I"C:\\Renesas\\GitHubDesktop\\workspaces\\workspace_e2v202201\\rscan_demo_rskrx231_gcc\\src\\demo" -I"C:\\Renesas\\GitHubDesktop\\workspaces\\workspace_e2v202201\\rscan_demo_rskrx231_gcc\\src\\smc_gen\\r_rscan_rx" -I"C:\\Renesas\\GitHubDesktop\\workspaces\\workspace_e2v202201\\rscan_demo_rskrx231_gcc\\src\\smc_gen\\r_rscan_rx\\src" -I"C:\\Renesas\\GitHubDesktop\\workspaces\\workspace_e2v202201\\rscan_demo_rskrx231_gcc\\src\\smc_gen\\r_bsp" -I"C:\\Renesas\\GitHubDesktop\\workspaces\\workspace_e2v202201\\rscan_demo_rskrx231_gcc\\src\\smc_gen\\r_config" -I"C:\\Renesas\\GitHubDesktop\\workspaces\\workspace_e2v202201\\rscan_demo_rskrx231_gcc\\src\\smc_gen\\general" -I"C:\\Renesas\\GitHubDesktop\\workspaces\\workspace_e2v202201\\rscan_demo_rskrx231_gcc\\src\\smc_gen\\r_pincfg"
黒枝豆さんの場合: (ビルド失敗時のものだけでなく、成功時のものもこのままでした)
-I"C:\\Users\\X-XXXXXXX\\e2_studio\\workspace\\rscan_demo_rskrx231_gcc\\src\\demo" -I"C:\\Users\\X-XXXXXXX\\e2_studio\\workspace\\rscan_demo_rskrx231_gcc\\src\\smc_gen\\general" -I"C:\\Users\\X-XXXXXXX\\e2_studio\\workspace\\rscan_demo_rskrx231_gcc\\src\\smc_gen\\r_pincfg" -I"C:\\Users\\X-XXXXXXX\\e2_studio\\workspace\\rscan_demo_rskrx231_gcc\\src\\smc_gen\\r_rscan_rx" -I"C:\\Users\\X-XXXXXXX\\e2_studio\\workspace\\rscan_demo_rskrx231_gcc\\src\\smc_gen\\r_rscan_rx\\src" -I"C:\\Users\\X-XXXXXXX\\e2_studio\\workspace\\rscan_demo_rskrx231_gcc\\src\\smc_gen\\r_bsp"
次に「r_bsp_config.h と r_rscan_rx_config.hを名前を変更して元に戻すとビルド完了となりました。」への仮説ですが、以下の仮説を立てました。(ただし、私の手元では、意図的にr_configのインクルードパスを削除してやると同様なインクルードファイルエラーになりますが、その状態でそのような操作をしても以下のようなソースの変化はありませんでした。この辺りは、e2 studioのバージョンとか過去のワークスペースの設定履歴とかにも依存して挙動が変わるのかも知れません。)(0) 記憶では、e2 studio(というかEclipse)にはe2 studio上でヘッダファイルの位置や名前を変更すると、それに追従してe2 studioが自動的に#include文の内容を修正する、という機能があったと記憶しています。(正直なところ、私にはちょっと敬遠したいような機能、ではありますけれども。)(1) 名前を変更する前、ソース上の元々の#include文は以下の通りです。例) rscan_demo_rskrx231_gcc\src\smc_gen\r_bsp\board\generic_rx231\r_bsp.h
#include "r_bsp_config.h"
(2) それが以下のようなものに自動修正されているかも知れません(他のソースに関しても全て同様にです)例) rscan_demo_rskrx231_gcc\src\smc_gen\r_bsp\board\generic_rx231\r_bsp.h
#include "C:\\Users\\X-XXXXXXX\\e2_studio\\workspace\\rscan_demo_rskrx231_gcc\\src\\smc_gen\\r_config\\r_bsp_config.h"
今確認しましたらおっしゃる通りに名前の変更で#include の後が変更になってますね。
かなり奥深いですねー。ビルド、デバッグは出来てそうなので波形を計測してみようと思います。
もうこうなってくると、ルネサスに直接確認するしか方法がないんですね。
.cprojectがドラッグアンドドロップ出来ません(*_*)
エクセルはドロップ出来るんですけどねー
rs_canファイル.xlsx
黒枝豆さん、こんにちは。NoMaYです。今しがた気になったのですが、インクルードパスの追加方法も分からないですよね。e2 studioの使い方ガイドみたいなものを探して中を見てみたのですが、残念ながら、その辺の説明が無かったです、、、他に何か無いか探してみます、、、統合開発環境 e2 studio 2020-04、e2 studio v7.8 ユーザーズマニュアル 入門ガイドRev.1.00 2020.05ルネサスマイクロコントローラ RX, RL78, RH850 ファミリwww.renesas.com/jp/ja/document/man/e-studio-integrated-development-environment-users-manual-getting-started-guide-rx-rl78-rh850-family「インクルード」や「マクロ」の文字列を検索してもヒットしない、、、[関連リンク]Google検索: e2 studio 入門www.google.com/search?&q=e2+studio+入門[追記]e² studioのチュートリアルがどこにあるかja-support.renesas.com/knowledgeBase/17797685[追記その2]って、これだけですか、、、「e2 studio ユーザーガイド > 全般 > チュートリアル > GCC for Renesas RX チュートリアルGCC for Renesas RX サンプルプログラムCPU Type リンク 説明RX71M RX71M blinky Demo 本サンプルは、LEDの点滅のデモです。本サンプルはコード生成を使用し、RX71M RSKボードで動作します。 サンプル・アプリケーションを実行するには、以下のステップに従ってください。1. アプリケーションをダウンロードしてください。アプリケーションは、*.zip ファイルです。2. 新しいワークスペースを作るか、既存のワークスペースで [ファイル -> インポート -> 一般 -> '既存プロジェクトをワークスペースへ’] を開き、"次へ" をクリックしてください。3. アプリケーションが *.zip ファイルであるため、ダウンロードしたアプリケーションをインポートするためには 'アーカイブ・ファイルの選択' と '参照' をクリックし、ZIPファイルを選択してから、"完了" をクリックしてください。4. ファイルが解凍されていた場合、一つのワーキング・ディレクトリ内で解凍されたことを確認してください。次に、保管したアプリケーションを選ぶために "ルート・ディレクトリーの選択" と "参照" をクリックしてから、"完了" をクリックしてください。詳細については、e2 studioチュートリアルを参照ください。」e2 studioチュートリアルって何?どんな内容?どこにあるのかな?まさかこれのことなのかなぁ、、、「e2 studio ユーザーガイド > 全般チュートリアル内容・LLVM for Renesas RL78 Tutorial・Renesas RL78ファミリ用Cコンパイラパッケージ ツールチェーン チュートリアル・GCC for Renesas RL78 チュートリアル・GCC for Renesas RX チュートリアル・Renesas RXファミリ用C/C++コンパイラパッケージ ツールチェーン チュートリアル」