RL78 CS+ for cc セクションわりつけについて

こんにちは、ちくわともうします。

RL78 CS+ for cc 下記エラーがでて困っています。

(E) F0563100 F0563100:Section address overflow out of range : "BOOT_COD_f" 

BOOT_COD_f でのセクションでオーバーフローが起きていることなので

セクションの割り当て変更したりしているのですが上記エラーが回避できません。

試しに一旦自動でセクションをわりてるとコンパイルは通ります。

ただどうしてもセクションの自動配置をやめたいので手動で設定したい場合の

上記エラーの回避方法をどなたかご存知ないでしょうか?

または"BOOT_COD_f"について調べる方法をご教授願います。

  • > 試しに一旦自動でセクションをわりてるとコンパイルは通ります。

    それで .MAP ファイルも出力すれば BOOT_COD_f の正体もわかるんでは?
  • fujita nozomuさんリプライありがとうございます。

    ご指摘の通り.MAP ファイルを出力
    した通り設定してみたのですが
    下記エラーがでてしまいました。

    (E) E0562321 E0562321:Section ".RLIB" overlaps section ".textf"
    (E) E0562321 E0562321:Section "BOOT_COD_f" overlaps section ".textf"

    自動で設定したセクションを参考に。
    セクションの割り付け漏れ、間違いがないか確認したのですが
    どこが違うかわかりません。

    上記エラーがでる手動割り付け
    .vect/00000,.callt0:.constf:.data/00080,BOOT_CNS_f/000A6,.sdata/000AA,.option_byte/000C0,.security_id:.SLIB/000C4,.monitor1/000CE,.text/000D8,BOOT_COD_n/002C8,FSL_FCD/0083E,FSL_RCD/008F6,FSL_BCD/0099A,FSL_BECD/00A9A,.textf/00B1A,.RLIB/00CAA,BOOT_COD_f/00CCB,.const:BOOT_CNS_n/03000,.monitor2/1FE00,.bss:.dataR:BOOT_DAT_n/FCF00,.sbss:sdataR/FFE20,BOOT_DAT_s/FFE28

    自動生成した時のMapファイル
    *** Mapping List ***

    SECTION START END SIZE ALIGN
    .vect
    00000000 0000007f 80 0
    .callt0
    00000080 000000a5 26 2
    .constf
    00000080 00000080 0 2
    .data
    00000080 00000080 0 2
    BOOT_CNS_f
    000000a6 000000a8 3 2
    .sdata
    000000aa 000000b1 8 2
    .option_byte
    000000c0 000000c3 4 1
    .security_id
    000000c4 000000cd a 1
    .SLIB
    000000c4 000000c4 0 1
    .monitor1
    000000ce 000000d7 a 1
    .text
    000000d8 000002c7 1f0 1
    BOOT_COD_n
    000002c8 0000083d 576 1
    FSL_FCD
    0000083e 000008f4 b7 2
    FSL_RCD
    000008f6 00000999 a4 2
    FSL_BCD
    0000099a 00000a99 100 2
    FSL_BECD
    00000a9a 00000b19 80 2
    .textf
    00000b1a 00000ca9 190 1
    .RLIB
    00000caa 00000cca 21 1
    BOOT_COD_f
    00000ccb 00000cdc 12 1
    .const
    00003000 00003000 0 2
    BOOT_CNS_n
    00003000 00003013 14 2
    .monitor2
    0001fe00 0001ffff 200 1
    .bss
    000fcf00 000fcf00 0 2
    .dataR
    000fcf00 000fcf00 0 2
    BOOT_DAT_n
    000fcf00 000fd0ff 200 2
    .sbss
    000ffe20 000ffe20 0 2
    .sdataR
    000ffe20 000ffe27 8 2
    BOOT_DAT_s
    000ffe28 000ffe28 1 2


    間違っている部分・ご指摘をお願いいたします。
  • ちくわさん.vect/00000に対して.vect 00000000 0000007fになってますよ、とりあえず全部自動生成した時のものを
    手動割り付けにして少しずつエラーを確認しながら変更はできないのですか?

  • IKUZOさんリプライありがとうございます。

    >ちくわさん.vect/00000に対して.vect 00000000 0000007fになってますよ、
    これは.vect/0007fが正しいということでしょうか?

    >手動割り付けにして少しずつエラーを確認しながら変更はできないのですか?
    (E) E0562321 E0562321:Section ".RLIB" overlaps section ".textf"
    (E) E0562321 E0562321:Section "BOOT_COD_f" overlaps section ".textf"

    上記エラーのセクションの割り付けを変更したらエラーは出ずに、とりあえずビルドできるようになりました。
  • ちくわ さん、こんにちは。NoMaYです。

    このセクション設定ですが、リンカのセクションオーバーレイ機能が使われていますが、意図して使われていますか?それとも、CS+ for CCでCS+ for CA,CXのCA78K0Rプロジェクトを変換したら(読み込んだら)こうなったというものでしょうか?(このリンカ機能を知っているCC-RLユーザさんは極僅かしかいないと思うのです。RL78マイコンではまず使われることのない機能だと思うのです。)

    > 上記エラーがでる手動割り付け
    > .vect/00000,.callt0:.constf:.data/00080,BOOT_CNS_f/000A6,.sdata/000AA,.option_byte/000C0,.security_id:.SLIB/000C4,.monitor1/000CE,.text/000D8,BOOT_COD_n/002C8,FSL_FCD/0083E,FSL_RCD/008F6,FSL_BCD/0099A,FSL_BECD/00A9A,.textf/00B1A,.RLIB/00CAA,BOOT_COD_f/00CCB,.const:BOOT_CNS_n/03000,.monitor2/1FE00,.bss:.dataR:BOOT_DAT_n/FCF00,.sbss:sdataR/FFE20,BOOT_DAT_s/FFE28

    CS+ for CC画面コピー (画面は英語表示になっていますが、それは気にしないで下さい。)

     

  • ちくわ さん、こんにちは。NoMaYです。

    ひょっとして、.constfや.dataや.SLIBなどのサイズが0で同一アドレスに割り付けられていた状態を、(試行錯誤した顛末として)このようにセクション設定するものだろうと誤解されてのセクションオーバーレイ機能かも知れない気がしてきました、、、

    となると、私としては、最初に投稿された時点のエラーが出る手動割り付けの詳細が知りたいです。(でも、予感として、ミラー領域とオーバーラップしている、のかなぁ、と、、、[訂正] いや、違うかな、、、BOOT_COD_fは12hバイトのようですし、、、)

    > (E) F0563100 F0563100:Section address overflow out of range : "BOOT_COD_f"
    > BOOT_COD_f でのセクションでオーバーフローが起きていることなので セクションの割り当て変更したりしているのですが上記エラーが回避できません。

    [追記]

    ちなみに、以下と関連があるかは分かりませんが、'.sdataR'であるべきところが'sdataR'になっているのではありませんか、、、

    > 下記エラーがでてしまいました。
    > (E) E0562321 E0562321:Section ".RLIB" overlaps section ".textf"
    > (E) E0562321 E0562321:Section "BOOT_COD_f" overlaps section ".textf"

    > 上記エラーがでる手動割り付け
    > .vect/00000,.callt0:.constf:.data/00080,BOOT_CNS_f/000A6,.sdata/000AA,.option_byte/000C0,.security_id:.SLIB/000C4,.monitor1/000CE,.text/000D8,BOOT_COD_n/002C8,FSL_FCD/0083E,FSL_RCD/008F6,FSL_BCD/0099A,FSL_BECD/00A9A,.textf/00B1A,.RLIB/00CAA,BOOT_COD_f/00CCB,.const:BOOT_CNS_n/03000,.monitor2/1FE00,.bss:.dataR:BOOT_DAT_n/FCF00,.sbss:sdataR/FFE20,BOOT_DAT_s/FFE28

  • チョコです。

    もしかしたら、ベクタ領域が全面的に確保されてしまっているのが原因ですかね。

    そうだとすると、CC-RLのプロパティの「リンク・オプション」にある「出力コード」

    「ベクタ・テーブル・セクションの分割生成」を「はい」に変更してみたらどうでしょう。

    CA78K0Rでは、特に指定しなくてもベクタ領域はある程度自由に使えたのですが、CC-RLでは、

    標準では、どこかでベクタ領域を使うと他のところでは、たとえ、そのアドレスが使われて

    いなくても、使えなくなりました。Renesasにクレームをつけたところ、このオプションが

    追加されて、ある程度自由に使えるようになりました。試してみてください。