CCRXに関して

RX66Tの1M版を使ってデバッグしていました。正規の基板を入手したのでROM512K版でコンパイルしなおしたのですが
(E) F0563100 F0563100:Section address overflow out of range : "PB_1"
のエラーがでます。PB_1はどこで設定されているのでしょうか?

  • CS+のリンクオプションで、セクション設定でPの後にPB_1を追加することでエラーは取れました。
    プロジェクト内を検索してもPB_1は見つかりません。コード生成でユーザが認識できない箇所で使用しているのでしょうか?

  • えじ さん、こんにちは。NoMaYと申します。

    > プロジェクト内を検索してもPB_1は見つかりません。

    今回のような場合、リンカオプションでマップファイルを詳細出力に設定して、それを調べていく方が良いと思います。例えば、私の手元のプロジェクトで B_1 とかで以下のような出力がありました。そちらのプロジェクトで PB_1 を探してみると、どのようになっていますでしょうか?

    SECTION=B_1
    FILE=DefaultBuild\RX66T_RIIC.obj
                                      00001404  0000140d         a
      _tx_buf
                                      00001404         5   data ,g         1
      _rx_buf
                                      00001409         5   data ,g         1
    FILE=DefaultBuild\Config_RIIC0.obj
                                      0000140e  00001411         4
      _g_riic0_mode_flag
                                      0000140e         1   data ,g         5
      _g_riic0_state
                                      0000140f         1   data ,g         7
      _g_riic0_dummy_read_count
                                      00001410         1   data ,g         1
      _g_riic0_stop_generation
                                      00001411         1   data ,g         3
    FILE=DefaultBuild\lowsrc.obj
                                      00001412  00001439        28
      _flmod
                                      00001412        14   data ,g         3
      _sml_buf
                                      00001426        14   data ,g         0

     

  • 返信ありがとうございます。
    MAPファイルで見ると、メインルーチンでコールしている関数が対象になっていましたが、
    PB_1はやはり設定されていません。これは勝手に設定されてしまうのでしょうか?

  • えじ さん、こんにちは。NoMaYです。

    > MAPファイルで見ると、メインルーチンでコールしている関数が対象になっていましたが、

    スマートコンフィグレータのソースでは無かった、という理解でいいですか?

    > PB_1はやはり設定されていません。これは勝手に設定されてしまうのでしょうか?

    #pragma sectionの文法を間違えて記述してしまった可能性もあります。

    正(推測):

    #pragma secion B B_1

     
    誤(推測):

    #pragma secion B_1

     

  • スマートコンフィグレータのソースでは無かった、という理解でいいですか?
    =>はい。すみませんコンパイルができた時に確認していませんでした。

    #pragma sectionの文法を間違えて記述してしまった可能性もあります。
    =>その通りBが抜けていたようです。
     正しい記載に変更後、セクション設定でのPB_1を削除してもコンパイルが正常にできました。
     このような時にPB_1が勝手に設定されてしまうのですね?

  • えじ さん、こんにちは。NoMaYです。

    その点に関しては、CS+のオフラインヘルプもしくは以下のオンラインヘルプの#pragma sectionの説明を読んで頂くのが良いかな、と思うのです。推測ですけれども、PB_1 に入ってしまったのは #pragma secion B_1 の記述以降の 関数本体コード かな、と思うのです。

    top > コンパイラ編 > コンパイラ言語仕様 > 拡張言語仕様 > 拡張仕様の使用方法
    4.2.4 拡張仕様の使用方法
    (1) セクション切り替え記述
    tool-support.renesas.com/autoupdate/support/onlinehelp/ja-JP/csp/V8.09.00/CS+.chm/Compiler-CCRX.chm/Output/ccrx04c0204y.html#59329
     

  • 説明ありがとうございました。
    色々検索してもPB_1の記載が見つからなかったので困っていたので助かりました。