スマートコンフィギュレータにおけるr_bspのStack, Heapサイズ設定

現在RX65N Target Board+e2 Studioで開発を行っています。

スマートコンフィギュレータパースペクティブにて、コンポーネント > Startup > ジェリック > r_bspの設定を見ると

User stack size, Interrupt stack size, Heap size

を設定できると思います。

main.cの中で確保できるメモリの最大値が決定されているのでしょうか?

試しにmain.cの中で大規模配列を確保し、User Stack sizeを小さくしてもプログラムは正常に動作しているように思います。またメモリ使用量ビューでもここの変更が反映されていないように見えます。

シリアル通信などBSPにかかわるコードの中で使用される割り込み処理等のために明示的に確保するような項目なのでしょうか?

大変お手数ですが、

User stack size, Interrupt stack size, Heap sizeは何に使用されるのか

・上記を設定する理由

についてお教えいただけますと幸いです。どうぞよろしくお願いいたします。

  • heap sizeはmallocと連動します。DTCなどでは初期化コード内部でmallocが作業領域確保をするのでheap size設定はデフォルトのままでは足りないんですよね。

    スタックについてはスタック方式を含めて以下の説明がわかりやすいと思います。私は特段理由がないならメモリ効率で1スタック方式にしています。
    www.renesas.com/.../cc-rx-compiler-tutorial-how-set-stack-area

  • さま

    ありがとうございます。大変勉強になります。動画探し当てられていませんでした。勉強させていただきます!

  • ルネサスサイトの動画が見られなかったですか?
    私はFireFoxでしか確認していませんが、ブラウザによってダメなのかもしれませんね。

    コンパイラがヒープ領域を確保し、Cコードで静的確保したメモリ領域を確保し、最後にスタック領域を確保(正確には確保じゃなくて残っている部分が十分かビルド時に判定ですが、2スタック方式の場合は確実に確保です)することになりますが、予めスタックサイズが決まればヒープと静的確保メモリ領域のOK・NG判定ができますね。で、RXは2スタック方式動作も可能なので割り込み用スタックサイズをユーザースタックサイズと分けて確保できるという話になります。動画ではそのスタック方式の動作との領域の関係がまとめられています。

  • すみません。私の書き方が悪かったです。私の検索能力が低く、公式サイトにある解説動画を探せていませんでしたので助かりました。しっかり動画見られています!ありがとうございます。