Renesas Synergy™

FAQ 3000276 : RAM容量エラー(CC-RX)

Q: 質問

RXコンパイラCC-RXを使用しています。
CS+でコンパイルを実行すると、以下のセクション"B_2"に関するエラーが出力されます。

E0562321:Section "$ADDR_C_120040" overlaps section "B_2"
E0562321:Section "$ADDR_C_120048" overlaps section "B_2"
E0562321:Section "$ADDR_C_120050" overlaps section "B_2"

回避方法を教えてください。


A: 回答

このメッセージは2つのセクションのアドレスが重なっている場合にリンカが出力します。
今回の場合は、$ADDR_C_120040、$ADDR_C_120048、$ADDR_C_120050とB_2セクションが重なっています。

B_2セクション、或いはより前に配置している B_1または R_1セクションが大きくなりすぎて、アドレス固定である$ADDR_C_120040、$ADDR_C_120048、$ADDR_C_120050の領域を上書きしようとしている可能性が高いと考えられます。

  • B_1及び B_2セクションは、初期値なし静的変数の領域です。
    B_1はアライメントが1、B_2はアライメントが2の変数群を格納しています。
  • R_1セクションは、初期値あり静的変数の領域です。
    R_1はアライメントが1の変数群を格納しています。
    ※上記のセクションは RAMです。
     従いまして、巨大な変数定義によりRAM容量を超えている可能性があります。

以下の方法で、リンケージ・リスト・ファイルを生成して、セクション配置をご確認ください。

  1. CS+の以下設定により、リンケージ・リスト・リストファイル(拡張子 .map)を生成できます。
    「ビルドツール→リンク・オプション→リスト→リンケージ・リスト・ファイルを出力する」を「はい」に設定。
  2.  ビルドすると、.absファイルと同じ位置に、リンケージ・リスト・ファイルが生成されます。
  3. リンケージ・リスト・ファイルをテキストエディタで開くと、各セクションの
    サイズと、配置アドレスが記載されています。これを元に大きすぎるセクションの再配置をご検討ください。

参考FAQ
FAQ 1011149 : E0562321 メッセージ(CC-RX)

適用製品

RXファミリ用C/C++コンパイラパッケージ
他にご質問がございましたら、リクエストを送信してください