Generic Content

かふぇるね“ はルネサス製品に対して自由に会話をするツールとなります。(回答者はルネサス社内外の方たちとなります) その為ルネサス製品やソリューションに対して正式な回答をご希望の場合はMyRenesasのTicketシステムを使用するようにお願いいたします。 

スマートコンフィグで出力されるコードのパスを変更したい

e2Studio, でスマートコンフィグを使用しています。

コード生成のロケーションは PROJECT_LOC\src\smc_gen になっていますが、

これをPROJECT_LOC から変更したいと思っています。

出力されるコードをworkspaceに依存しない場所にしたいのです。

e2Studioの環境変数として、PROJECT_LOCがあるのですが、変更できませんでした。

なにか良いアイデア等ありましたら、お教えいただきたく。

お願いいたします。

  • ka.makiharaさん、こんにちは。NoMaYです。

    > 出力されるコードをworkspaceに依存しない場所にしたいのです。

    念の為、確認したいのですけど、御自身が記述されたソースはワークスペースフォルダのプロジェクトフォルダの下に置き、スマートコンフィグレータが生成するソースだけはワークスペースフォルダともプロジェクトフォルダともいずれとも関係の無いフォルダ(絶対パスで指定される特定の固定のフォルダ)に出力されたいのでしょうか?

    よくあるのは以下のケースだと思うのですけど、それとは異なるという理解で良いですか?(念の為の確認です。)

    (1) プロジェクトフォルダの下で良いがsrc/smc_genフォルダ以外に生成したい
    (2) プロジェクトフォルダの隣のフォルダ(で伝わるかな)に生成したい
    (3) プロジェクトフォルダを何階層か遡ってその幾つか下のフォルダ(で伝わるかな)に生成したい

    (11) プロジェクトフォルダのsrc/smc_genフォルダ下で良いがプロジェクトフォルダをワークスペースフォルダ以外に置きたい
    (12) 上記(1)~(3)で良いがプロジェクトフォルダをワークスペースフォルダ以外に置きたい

    ちなみに、 プロジェクトフォルダとも相関の無いフォルダに生成したいということであれば、目的は何ですか?(私には心当たりが思い浮かば無かったですので、お聞きしたいです、、、)

  • NoMaYさん、こんにちは。

    プロジェクトと関係のないフォルダに生成する亊はそもそも、スマートコンフィグレーターのコンセプトと異なるような気がするのですが、今までの経緯もありまして。

    今の場合、最終実行プロジェクト(Executable)の下に各ペリフェラルのコードが生成されます。

    弊社の開発環境の場合、最終プロジェクト(executable)がアプリケーション層となってしまっているので、

    アプリからペリフェラルのコードを切り離したいのです。

    アプリケーション開発者に、ペリフェラルのコードを気にしてほしくない(見られたくない)。

    アプリケーション(executable)+OS(lib) という形式が取られているため、executable に生成コードが出来てしまうと

    アプリケーション開発者に触ってほしくないペリフェラルのコードが存在してしまう。

    本来なら

    Executable = アプリ(lib) + OS(lib) になっていたら良いと思うのですが、過去のしがらみがありまして。。。

    できるだけ今のスタイルを変更したくないという要望があり、簡単にできる方法があればと思い、お尋ねさせていただいた次第です。(PROJECT_LOC)のマクロを修正するだけ、とか、src/smc_gen の項目に直接入力できるようにする、とか)

    ですので、(簡単に)できないのであれば、開発の構造を変革する機会ととらえても良いと思っています。

  • ka.makiharaさん、こんにちは。NoMaYです。

    > 本来ならExecutable = アプリ(lib) + OS(lib) になっていたら良いと思うのですが、過去のしがらみがありまして。。。

    過去のしがらみ、という文面が気掛かりですが、以下の構成も可能ですけれど、それは社内の事情で避けたいということになりますか?

    アプリ( src形式 ) + OS/BIOS( バイナリlib形式( BSP + FIT + CG + ユーザ記述ソース(lib外からは見えない) ) )

    (BSP内のソースの幾つかはアプリ側になるかも知れません)

    > アプリケーション開発者に、ペリフェラルのコードを気にしてほしくない(見られたくない)。

    たぶん、そういうことであっても、e2 studio(というかEclipse)側の事情として、ソースファイルが(少なくともソースファイルへのリンクが)プロジェクトエクスプローラウィンドウのソースツリーに含まれていなければならない筈でして、ファイルシステム上でプロジェクトフォルダと無関係の場所に生成させたとしても、e2 studio上にてソースファイルを見えないようにすることは難しいと思います。(Renesas Synegyはライセンスの事情でRTOS部分のソースをe2 studio上でも非公開にするという手法が取られていますので出来ない訳ではないですけれど。)一応、ソースツリーから隠すことは出来ますけれど、そうしてしまうとビルドされなくなってしまいまして、、、

  • こんにちは、NoMaYさん。

    >アプリ( src形式 ) + OS/BIOS( バイナリlib形式( BSP + FIT + CG + ユーザ記述ソース(lib外からは見えない) ) )

    コードとして見えなければ、この方式でも良いと思います。

    e2Studio でできる設定でしょうか?

    いままではCS+ を使用していまして、コード生成はPDG2を使用していました。

    コード解析の充実度からe2Studioへの乗り換えも考えているところで

    最近はほとんどe2Studioを使用しています。関数ジャンプや、ブレークポイントも正しく動作するし、

    最近はやりのVsCodeでビルド、デバッグもできる(フォーラム、参考にさせていただきました)し、

    移行自体に障害は無いと思っています。

  • ka.makiharaさん、こんにちは。NoMaYです。

    すみません、さきほど、e2 studioのプロジェクトウィザードで素朴にCC-RXライブラリプロジェクトを作ろうとしたところ、素朴にRXスマートコンフィグレータが使える状態のプロジェクトを生成してくれないことに気付きました。とはいえ、やりようはありますので、手間が掛からなさそうなのを、週末まとめてみようと思います。

  • ka.makiharaさん、NoMaYさん

    こんにちは。シェルティです。ルネサスの中の人です。

    素朴にRXスマートコンフィグレータが使える状態のプロジェクトを生成してくれないことに気付きました」

     →これ、盲点ですね。直してもらうようツール部門と相談してみたいと思います。

    それから、大本のご質問(smc_genをプロジェクト外に置きたい)ですが、普通にあり得るユースケースと思います。実はFreeRTOSのようなオープンソースと組み合わせる場合も、以下のようにペリフェラルのドライバがプロジェクト外部参照となっております。

    ①プロジェクト:https://github.com/aws/amazon-freertos/tree/main/projects/renesas/rx65n-rsk/e2studio/aws_demos

    ②ペリフェラルのドライバ:https://github.com/aws/amazon-freertos/tree/main/vendors/renesas/rx_driver_package

    この形に対応(①から②を参照)できるよう、実はFreeRTOSベースのプロジェクトにおいてスマートコンフィグレータの出力先を任意に変更できる機能を追加しています。ただ、ベアメタルの場合はまだこれができないですね。

    このあたりも議論して改善できないものかツール部門と相談してみます。

    あと似たような話で別スレッドでNoMaYさんと進めさせていただいているCMake対応もありますね。

    こちらも鋭意議論中です。なかなか歩みが遅く、すみません。

    以上です

  • さきほど、e2 studioのプロジェクトウィザードで素朴にCC-RXライブラリプロジェクトを作ろうとしたところ、素朴にRXスマートコンフィグレータが使える状態のプロジェクトを生成してくれないことに気付きました。

    一旦Executableでプロジェクトを作ってから、Linker→出力の形式を「ユーザライブラリファイルを出力する」に変更すれば良いのでは。

    > 出力されるコードをworkspaceに依存しない場所にしたい
    単純にスマートコンフィグレータでソースを出力するプロジェクトと、
    ソースを使うプロジェクトを別々にするのではダメなのですかね?

    (参考) FAQ - 複数のプロジェクトから共通のファイルを利用する方法
    https://ja-support.renesas.com/knowledgeBase/18454498

  • ほや さん、こんにちは。NoMaYです。

    それは「素朴に」とは言わないと思う、、、(でも、アドバイスありがとうございます。後で試してみます。)

    ところで、このFAQは合ってるのかな、、、以下の点で自分の認識と合わないのですけれど、、、

    ・linked folderの内容はプロジェクトエクスプローラビューから見える筈では?

    FAQには以下のように書かれていますけれども、、、

    workspace (ワークスペースフォルダ)

    | ↓ プロジェクトエクスプローラ上では見えない
    +-common (共通に使うファイル群)
    | |
    | +-inc ヘッダファイルのフォルダ
    | |
    | +-src ソースフォルダ

    +-prj_a
    | |
    | +-common (リンクフォルダ)
    | | |
    | | +-inc
    | | |
    | | +-src
    | |
    | +-src

    +-prj_b
    | |
    | +-common (リンクフォルダ)
    | | |
    | | +-inc
    | | |
    | | +-src
    | |
    | +-src

     
    って、あぁ、ファイルシステム上のcommonフォルダのフォルダの存在自体は表示されない、ということか、、、

  • プロジェクトに所属するものは見えますが、そうでないものは見えません。
    見えないものはドラッグ&ドロップした後でリソースのパスをワークスペース相対などに修正するか、
    ”.project” ファイルでまとめて編集してください。

  • ka.makiharaさん、こんにちは。NoMaYです。

    以下のスレッドにて、e2 studioで、RXスマートコンフィグレータで生成したソースを使ってCC-RXのライブラリファイル(libファイル)を作るやり方とか気を付けないといけない点とか、まとめてみました。

    SmartConfiguratorでlibraryを作るやり方を試してみた
    japan.renesasrulz.com/cafe_rene/f/forum21/7839/smartconfigurator-library
     

  • NoMaY さん、ほやさん、色々ご助言ありがとうございます。

    NoMaYさんのご助言は、本来行いたかった亊以外でも役にたちそうで、ありがとうございます。

    ほやさんのアイデアはシンプルでしたね、なるほど~でした。

    現在、パスを変更したい、という要望は依然としてあるものの、スマートコンフィグを使うので我慢して、とするようにしています。ソースはあるけど気にしないで、ただし触らないでね。と。

    頂いたアイデアを使う事で、実現はできそうなのですが、設定がより複雑そう、手順が増える、などで

    メンバーに周知するのも大変そうなので・・・

    アイデア、ありがとうございました。