RL78 SmartConfiguratorで気になった点とか改善する案とか報告してみるスレッド

こんにちは。NoMaYです。

いま2つ気になっています。

(1) ICCRL78とLLVM-RL78(とGNURL78)でワーニングレベルを上げるとワーニングがとてもたくさん出る
(2) RL78スマートコンフィグレータGUI上でオンチップデバッグトレースを使用する設定にしても予約RAM領域を空けていない

Parents
  • チョコです。

    RL78のSmartConfiguratorではコンポーネントの割り込みでレジスタ・バンクが指定できるようになりましたが、同じ割り込み優先順位で同じバンクを指定するとワーニングが出ますが、これはおかしいです。異なる優先順位ならレジスタバンクは同じにはできませんが、同じ優先順なら、多重割り込み許可でも同時には受け付けないので同じレジスタ・バンクを用いても問題ありません。

Reply
  • チョコです。

    RL78のSmartConfiguratorではコンポーネントの割り込みでレジスタ・バンクが指定できるようになりましたが、同じ割り込み優先順位で同じバンクを指定するとワーニングが出ますが、これはおかしいです。異なる優先順位ならレジスタバンクは同じにはできませんが、同じ優先順なら、多重割り込み許可でも同時には受け付けないので同じレジスタ・バンクを用いても問題ありません。

Children
  • NoMaYさん、チョコさん

    こんにちは、シェルティです。

    RL78とスマートコンフィグレータをご活用いただきありがとうございます。

    RL78のBSP開発やスマートコンフィグレータ連携などを僭越ながら指揮させていただいております。

    他にはArduino開発やRL78用Amazon FreeRTOS開発も進めております。

    いただいたフィードバックは関係者に展開し改善を図ってまいります。

    いつも有益な情報をいただき、大変助かります。

    以上です

  • NoMaYさん、チョコさん

    こんにちは、シェルティです。

    開発チームと相談しました。

    (1) ICCRL78LLVM-RL78(GNURL78)でワーニングレベルを上げるとワーニングがとてもたくさん出る

     →まずBSPで検討を進めてみます。BSPの次版で修正できるところから直していきます。スマートコンフィグレータで出力するいろんなコンポーネントについても見てみようと思います。具体的に○○を見たほうがよいなどありましたらご指摘いただけると有難いです。

    (2) RL78スマートコンフィグレータGUI上でオンチップデバッグトレースを使用する設定にしても予約RAM領域を空けていない

     →対応を進めます。

    (3) RL78SmartConfiguratorではコンポーネントの割り込みでレジスタ・バンクが指定できるようになりましたが、

      同じ割り込み優先順位で同じバンクを指定するとワーニングが出ます

     →対応を進めます。

    以上です

  • シェルティさん、こんにちは。NoMaYです。

    > (1) ICCRL78とLLVM-RL78(とGNURL78)でワーニングレベルを上げるとワーニングがとてもたくさん出る

    実際のワーニングの事例は以下に投稿したものがあります。

    RL78/G23  Fast Prototyping Boardを買いました
    japan.renesasrulz.com/cafe_rene/f/forum18/7087/rl78-g23-fast-prototyping-board/37997#37997

    プログラムは以下に投稿したものがあります。

    RL78/G23-64p Fast Prototyping Board Blinky sample program
    japan.renesasrulz.com/cafe_rene/m/sample_program/463

    それで、ワーニングレベルを上げるとワーニングがとてもたくさん出る理由ですけど、コード生成側ソースの幾つかでのヘッダファイルのインクルード忘れ、ですね。それによる、プロトタイプ宣言漏れ、のワーニングですね。

    特に大量に出るのが、LLVM-RL78で、未使用の割り込みの割り込みベクタに登録する空の関数がずらりと定義されたファイル r_cg_inthandler.c があるのですけど、インクルード忘れにより、割り込み関数ではなくて単なる関数が生成されていて、それが割り込みベクタに登録されてしまっています、、、(未使用の割り込みですので殆ど実害は無いのですが、本来は割り込み関数でretiであるべきところが誤ってretになっている通常関数が割り込みベクタに登録されてしまっています、、、) 実は、ヘッダファイル自体は r_cg_interrupt_handlers.h というファイル名で存在しています。

    また、LLVM-RL78とICCRL78で共通して、もうひとつ r_cg_sau_common.c というファイルでも r_cg_sau_common.h というヘッダファイルのインクルード忘れ(というのは言い過ぎかも知れませんが)で、ワーニングが多く出ています。こちらは、コードが不正になっているわけでも無く、関数本体記述箇所で出ているだけですので関数呼び出し時と違ってプロトタイプ宣言漏れによってゆくゆく不正なコードが生成されてしまうリスクも無いですので、あまり強く、おかしい、と言えない面もありますけれども。(ちなみに、それ以外のファイルでもインクルード忘れがあります。)

    なお、前者の割り込み関数に関しては手作業でヘッダファイルをインクルードする余地が全く無いのですが、後者のものについては手作業で Start user code ~ End user code の箇所にヘッダファイルをインクルードすることは可能です。

    あと、インクルード忘れ、以外もありますね。BSPモジュールですと、機能の有無(有効無効)を切り替える#defineを#defineされた箇所よりも前で参照している、というものがありました。(BSP_CFG_API_FUNCTIONS_DISABLEです。)