スマートコンフィグレータでコード生成したらコンパイルエラーが発生してしまった時に試してみると良いかも知れないこと

こんにちは。NoMaYです。

ひとつ立ててみました。

すみません、幾つか事例を拾ってから、何か後で書き加えます。

[関連リンク]

サンプルプログラム/デモプログラムがビルド出来ない事例を集めてみるスレッド
community-ja.renesas.com/cafe_rene/forums-groups/beginners/f/002-2095199602/7925/thread
 

  • 幾つかの事例です。

    スマートコンフィグレータにてコード生成するとコンパイルエラーが発生する
    community-ja.renesas.com/cafe_rene/forums-groups/tools/f/forum21/9706/thread

    RX65N I2C サンプルプログラムエラーについて
    community-ja.renesas.com/cafe_rene/forums-groups/beginners/f/002-2095199602/6666/rx65n-i2c

    スマート・コンフィグレータ(CS+)でコード自動生成すると、r_bsp内のファイルが消える
    community-ja.renesas.com/cafe_rene/forums-groups/tools/f/forum21/6065/cs-r_bsp
     

  • 関連リンクです。

    壊れてしまったAmazon FreeRTOS Renesas RX OTA e2 studioプロジェクトを直してみるスレッド
    community-ja.renesas.com/cafe_rene/forums-groups/tools/f/forum21/8192/amazon-freertos-renesas-rx-ota-e2-studio/42321#42321

    一体、どこで、数値定数が文字列定数に置き換わる、なんてことが起きたのだろう、、、


    RX SmartConfiguratorで気になった点とか改善する案とか報告してみるスレッド
    community-ja.renesas.com/cafe_rene/forums-groups/mcu-mpu/rx/f/forum5/7536/rx-smartconfigurator/42553#42553

    今日、RX72Mの件でr_bsp_config.hを見る機会があって、以前のAmazon FreeRTOS Renesas RX OTA e2 studioプロジェクトのスレッドで疑問を感じていた件の理由が分かったような気がしました。最近のBSPモジュールでは、以下の定義が数値定数⇒文字列定数へ変更されているのですね。


    RX SmartConfiguratorで気になった点とか改善する案とか報告してみるスレッド
    community-ja.renesas.com/cafe_rene/forums-groups/mcu-mpu/rx/f/forum5/7536/rx-smartconfigurator/42128#42128

    これは、たぶん、SCFGファイルを更新せずにBSPモジュールのファイルのみ手作業でアップデートしていることにより、整合性が失われていて、この2つのファイルがソースを再生成すると削除されてしまうせいですかね。


    RL78 SmartConfiguratorで気になった点とか改善する案とか報告してみるスレッド
    community-ja.renesas.com/cafe_rene/forums-groups/mcu-mpu/rl78/f/forum18/7253/rl78-smartconfigurator/38908#38908

    e2 studio 2021-07のRL78スマートコンフィグレータGUI上からBSPモジュールをアップデートしたのですけど、以下の障害が発生しました。(詳細は画面コピーを参照して下さい。) CS+と単体RL78スマートコンフィグレータも同様です。

    (1) アップデート操作は正常終了したけれどBSPモジュールのソースがアップデートされていない

    (2) アップデート操作は正常終了したけれどプロジェクトを削除して再インポートするとBSPモジュールのバージョンが古いまま



    FITの割込みハンドラの実装について
    community-ja.renesas.com/cafe_rene/forums-groups/mcu-mpu/rx/f/forum5/8212/fit/42424#42424

    RXスマートコンフィグレータに実はFITのコード生成(というかソース生成)の規則を制御する設定画面があるのです。以下の1枚目の画面コピーの [コード生成設定]→[生成条件] なのですが、以下の通りの意味なのです。(記憶違いの可能性もありますけれども、昔はFITモジュールの設定であることが分かり易かったような気もするのですけれども。)


    [コード生成設定]→[生成条件]

    選択肢
    ・コンポーネントが存在する場合は何もしない ⇒ FITモジュールのソースが生成済みならそのソースは上書きしない
    ・既存のコンポーネントに上書きする ⇒ FITモジュールのソースが生成済みでもそのソースを上書きする


    なお、脱線しますけれども、FITモジュールをバージョンアップする時、もしくは.scfgファイルと実際に生成されているFITモジュールのソースのバージョンが不一致だった時、などに、何か直感に反する挙動が見受けられた、ように記憶しています。(バージョンアップ時にも設定が効いていて古いままソースが残る、とか、新規追加されたソースのみ新しいソースが追加される、とか、新バージョンで削除されたソースに関しては取り残されたソースで必要でも削除されてしまう、とか、そんな経験をした記憶があります。)


  • スマートコンフィグレータでコード生成したらコンパイルエラーが発生してしまうのは、RXマイコンであれば生成済みFITモジュールのバージョンとスマートコンフィグレータの設定ファイルである○○○.scfgファイルに出力されているFITモジュールのバージョンの不整合が原因であり、同様に、RL78マイコンでは生成済みBSPモジュールのバージョンとスマートコンフィグレータの設定ファイルである○○○.scfgファイルに出力されているBSPモジュールのバージョンの不整合が原因である、と考えられるケースがありますね。そして、不整合なままコード生成した結果、両バージョンのソースが混在してしまってコンパイルエラーが発生する、と考えられます。

    他方、CGコンポーネントのみであるRH850マイコンではそのようなことは起きないと考えられます。なぜなら、ソースが混在してしまう原因としては、その他に、スマートコンフィグレータの仕様としての、生成済みのFITモジュールやBSPモジュールのソースは生成しない(ようにすることが出来る(デフォルト))、というのも関係していますけれども、RH850マイコンでは無関係であるからです。

    不整合が起きてしまう引き金として、CS+⇔e2 studioのプロジェクト変換とか、スマートコンフィグレータGUI上での、RXマイコンではFITモジュールのバージョン変更とか、RL78マイコンではBSPモジュールのバージョン変更とか、そんなことが挙げられます。(スマートコンフィグレータGUI上でのバージョン変更で不整合が発生することには困惑せざるを得ないですけれども、その辺りは、スマートコンフィグレータの最新バージョンでは対処されているかも知れません。) あと、スマートコンフィグレータがGitHubからソースを引っ張ってくる場合、GitHubに登録された時点で既に不整合を起こしている事例もあるように見受けられました。(これはルネサスさんの手違いといったところでしょうかね。)

    昨日の夜は、以下のフォルダやファイルを削除してから再びコード生成すれば良さそう、と考えていましたけれども、十中八九、生成済みのソースが正しく、○○○.scfgファイルが間違っている、という状態になっていると思われますので、この対処方法は良くないような気がしてきました。(間違っている○○○.scfgファイルに従ってソースが丸ごと生成されてしまうことになるだけなのだから。)

    ・ FITの各モジュールのフォルダを削除する
    ・ r_configフォルダの各config.hを削除する

    う~ん、、、

  • 不整合が起きてしまう引き金として、もうひとつありそうなのが(あるかも知れないのが)、○○○.scfgファイルに出力されているFITモジュールのバージョンと同じものが、コード生成しようとしているパソコンにインストールされていなくて、スマートコンフィグレータの内部実装の何らかのデフォルトバージョンの選択処理が発動してしまった、とかも考えられます。

    今のスマートコンフィグレータでは、○○○.scfgファイルに出力されているFITモジュールのバージョンと同じものがコード生成しようとしているパソコンにインストールされていない場合は、スマートコンフィグレータ上でウェブからダウンロードすることが出来るようになっていますが、FITのBSPモジュールに関しては、過去、RX Driver Packageには含まれていなくてスマートコンフィグレータ内部に抱え込んでいるバージョンが幾つかあったのですが、暫く前に古いバージョンのもので抱え込むのをやめてしまったものがあり、そのあたりの事情が関係するかも知れないです。つまり、かなり古いサンプルプロジェクトは今のスマートコンフィグレータでは正しく扱えなくなっている、かも知れません。

    う~ん、、、

  • こんにちは。NoMaYです。

    以下の通知も関係が無くは無いように思います。

    【注意事項】e² studio Smart Configurator for RL78 プラグイン, RL78 スマート・コンフィグレータ
    www.renesas.com/jp/ja/document/tnn/notes-e-studio-smart-configurator-rl78-plug-smart-configurator-rl78

    1.3 内容

    BSPまたはRL78 SISモジュールの [バージョンの変更] を実行後、[概要] ページのコンポーネントバージョンが正常に変更されたように見えますが、実際には一部のソースコードファイルは旧バージョンのまま変更されません (図1-1)。その結果、バージョンが変更されていないことを認識できず、場合によってはビルドエラーが発生します。


    [関連リンク]

    Renesas ツールニュース > ツールニュースの分類
    www.renesas.com/jp/ja/renesas-tool-news#ツールニュースの分類