お世話になっております。
初心者です。
開発環境は以下です。
Renesas e² studio: Version: 2024-01.1 (24.1.1)Target Board for RX651N(V1.12)(640kB)
やりたいこと:ヒープサイズを大きくしたい
詳細:
新規作成ー>Renesas Rx C Project->Gcc for renesas Rx C/C++ Executable Project -> Gcc for Renesas Rx (8.3.0.202311), target board = Target Board for RX651N -> HW Debug(E2 Lite)
-> Use Smart Configurator -> Bare Metal Blinky
で新規プロジェクトを作成しました。
その後、
{project_name}.scfgをダブルクリックし、スマートコンフィグレータパースペクティブ→コンポーネント→Startup→ジェネリック→r_bsp
からスタックサイズやHeap Sizeの変更ができることは理解したつもりでおります。
本ボードは640kBのメモリを持っていますが、Heap Sizeを0xFFFFより大きくするとコンパイル時にregion `RAM' overflowed by ** bytes
等のエラーがでます。
メモリ使用量ビューにて確認すると、RAM2が0%となっており、RAM(256kB)の場所にしかアクセスできていないように思います。
何処か他で設定が存在するのでしょうか?
どうぞよろしくお願いいたします。
リーマさん
RX65NはRAMが飛び地で2つあり、これらの合計が640KBなのでエラーが出ているのだと思います。
RAM2にHeapの領域を持って行く必要があります。 .ldファイルを加工してみてください。
> RAM2にHeapの領域を持って行く必要があります。 .ldファイルを加工してみてください。これについてはFAQを参照:FAQ - GCC/LLVMプロジェクトでセクションの配置を定義する方法(リンカスクリプトの記述方法)https://ja-support.renesas.com/knowledgeBase/19549765そんなにたくさんheapを使わないように設計を変えた方が建設的な気がしないでもありませんが。
PONSUKEさま
ご回答ありがとうございます。
linker_script.ldを編集し、メモリ使用量ビューでRAM2が増加することを確認できました。
具体的には
.bss :
{*中略*
} > RAM2 AT>RAM2
とすることでうまくいけた?ように思います。
これから動作確認させていただきます。またお聞きすることもあるかと思いますが、何卒宜しくお願い致します。
ほやさま
ご回答、補足いただき心より感謝いたします。
大変ありがとうございます。
> そんなにたくさんheapを使わないように設計を変えた方が建設的な気がしないでもありませんが。おっしゃる通りです・・・