ページ 11

メモリ容量の見積もり方法について

Posted: 2017年12月06日(水) 13:22
by Kumiko
NXP社LPC17XXシリーズ用を使用しています。
コンフィグレーション時のタスク毎のスタック容量を決定するために、タスク数、使用するサービスコール、周期ハンドラなどにより、どれくらいRAMやスタックを消費するのか知りたいのですが、算出式など教えてもらえないでしょうか?
某社のOSの場合、Webページから所定項目を入力することで算出できました。

Re: メモリ容量の見積もり方法について

Posted: 2017年12月18日(月) 20:00
by eForce技術担当
下記のスタックサイズ見積もりの資料を参照してください。

**********スタックの見積もり**********
タスクのスタック領域以外にも、周期ハンドラ、割込みサービスルーチンなどで使用さ
れるスタック領域が必要になります。μC3/Compact では、タスクのスタック以外のスタッ
クを総称してシステムスタックと呼んでいます。Cortex-M3 用カーネルでは、2 種類の
システムスタックを使い分けます。

1.CSTACK
アイドルと周期ハンドラで使用されるスタック領域です。
次の1), 2)の手順で必要とされるサイズを見積もります。

1)各周期ハンドラのスタックサイズ概算値

  周期ハンドラで使用する自動変数とレジスタ待避領域
+)システムコールを使う場合はそのスタックサイズ(※)
----------------------------------------------------
合計  スタックサイズ

※各システムコールのスタック使用量に関する資料はファイル添付します。


2)1)で求めた一番大きいサイズにコンテキスト退避領域を
 加算した値が最低限必要サイズとなります。

・ コンテキスト退避領域72バイト

最終的なサイズは余分を持った値を設定することをお勧めします。


2.HSTACK
例外発生時に使用されるスタックで、割込みサービスルーチンで
使用されるスタック領域です。
次の1), 2)の手順で必要とされるサイズを見積もります。

1)各割込みサービスルーチンのスタックサイズ概算値

  割込みサービスルーチンで使用する自動変数とレジスタ待避領域
+)システムコールを使う場合はそのスタックサイズ
----------------------------------------------------
合計  スタックサイズ


2)上記、1)についてですが、複数の割込みサービスルーチン処理を
 利用している場合は、以下の計算方法となります。
a)各割込みレベルに対して一番サイズの大きい値を算出します。
b) それぞれのレベル毎の算出値を加算します。
c) 最後に、コンテキスト退避領域72バイト
を加算します。

最終的なサイズは余分を持った値を設定することをお勧めします。


3.各タスクのスタック
次の手順でタスクで必要とされるサイズを見積もります。

  タスクで使用する自動変数とレジスタ待避領域
  コンテキスト退避領域72バイト
+)システムコールを使う場合はそのスタックサイズ
----------------------------------------------------
合計  スタックサイズ

最終的なサイズは余分を持った値を設定することをお勧めします。