19.20 RAM使用量の算出
RI600V4が使用/管理するRAM領域は,その用途により,以下の6種類のセクションに大別されます。以降で,BRI_RAM,BRI_HEAP,SURI_STACK,およびSIセクションについて説明します。

- BRI_RAMセクション:RI600V4の管理データ,データ・キュー領域

- BRI_HEAPセクション:デフォルトのメッセージ・バッファ領域,固定長メモリ・プール領域,および可変長メモリ・プール領域

- SURI_STACKセクション:デフォルトのユーザ・スタック領域

- SIセクション:システム・スタック領域

- RRI_RAMセクション:RI600V4の管理データです,サイズは常に4バイトです。

- BRI_TRCBUFセクション:本セクションは,[タスク・アナライザ]タブで[ソフトウェア・トレース・モードでトレース・チャートを取得]および[カーネルのバッファ]を選択した場合にのみ生成されます。サイズは,[タスク・アナライザ]タブで指定します。

19.20.1 BRI_RAMセクション

BRI_RAMセクションは,RI600V4の管理データが割り付けられるセクションです。

表19−11に,BRI_RAMセクションのメモリ容量計算式(単位:バイト)を示します。なお,実際のサイズは,境界調整のために表19−11で算出される値よりも大きくなります。

表19−11  BRI_RAMセクションのメモリ容量計算式

種別

メモリ容量計算式(単位:バイト)

システム管理ブロック

36 + 4×down( ( TMAX_TPRI - 1) / 32 + 1) + TMAX_TPRI + VTMAX_SEM + 2×VTMAX_DTQ + VTMAX_FLG + VTMAX_MBX + VTMAX_MTX + 2×VTMAX_MBF + VTMAX_MPF + VTMAX_MPL

タスク管理ブロック

24×VTMAX_TSK

セマフォ管理ブロック

VTMAX_SEM + down ( VTMAX_SEM / 8 + 1)

ただし,VTMAX_SEMが0の場合は,セマフォ管理ブロックのサイズは0です。

イベントフラグ管理ブロック

VTMAX_FLG + 2×down ( VTMAX_FLG / 8 + 1)

ただし,VTMAX_FLGが0の場合は,イベントフラグ管理ブロックのサイズは0です。

データ・キュー管理ブロック

VTMAX_DTQ+ down ( VTMAX_DTQ / 8 + 1) + DTQ_ALLSIZE

ただし,VTMAX_DTQが0の場合は,データ・キュー管理ブロックのサイズは0です。

メールボックス管理ブロック

VTMAX_MBX + 2×down ( VTMAX_MBX / 8 + 1)

ただし,VTMAX_MBXが0の場合は,メールボックス管理ブロックのサイズは0です。

ミューテックス管理ブロック

VTMAX_MTX + down ( VTMAX_MTX / 8 + 1)

ただし,VTMAX_MTXが0の場合は,ミューテックス管理ブロックのサイズは0です。

メッセージ・バッファ管理ブロック

16×VTMAX_MBF

固定長メモリ・プール管理ブロック

VTMAX_MPF + down ( VTMAX_MPF / 8 + 1)

+ Σ(down( memorypool[].num_block / 8 + 1) )

ただし,VTMAX_MPFが0の場合は,固定長メモリ・プール管理ブロックのサイズは0です。

可変長メモリ・プール管理ブロック

208×VTMAX_MPL

周期ハンドラ管理ブロック

VTMAX_CYH

アラーム・ハンドラ管理ブロック

VTMAX_ALH

[タスク・アナライザ]タブで「ハードウェア・トレース・モードでトレース・チャートを取得」を選択

4

[タスク・アナライザ]タブで「ソフトウェア・トレース・モードでトレース・チャートを取得」を選択

28

[タスク・アナライザ]タブで「ソフトウェア・トレース・モードで長時間統計を取得」を選択

1592 + 8× ( VTMAX_TSK + 1 )



備考 メモリ容量計算式のキーワードは,以下に示した意味を持ちます。

TMAX_TPRIシステム情報(system)タスク優先度の最大値(priority)設定値です。
cfg600は,システム情報ヘッダ・ファイルkernel_id.hにこの名称のマクロを出力します。


VTMAX_TSKタスク情報(task[])の定義総数です。
cfg600は,システム情報ヘッダ・ファイルkernel_id.hにこの名称のマクロを出力します。


VTMAX_SEMセマフォ情報(semaphore[])の定義総数です。
cfg600は,システム情報ヘッダ・ファイルkernel_id.hにこの名称のマクロを出力します。


VTMAX_FLGイベントフラグ情報(flag[])の定義総数です。
cfg600は,システム情報ヘッダ・ファイルkernel_id.hにこの名称のマクロを出力します。


VTMAX_DTQデータ・キュー情報(dataqueue[])の定義総数です。
cfg600は,システム情報ヘッダ・ファイルkernel_id.hにこの名称のマクロを出力します。


DTQ_ALLSIZE: データ・キュー領域のサイズの合計です。具体的には,以下によって算出されます。
Σdataqueue[].buffer_size×4
ただし,この計算結果が0になる場合は,DTQ_ALLSIZEは4です。



VTMAX_MBXメールボックス情報(mailbox[])の定義総数です。
cfg600は,システム情報ヘッダ・ファイルkernel_id.hにこの名称のマクロを出力します。


VTMAX_MTXミューテックス情報(mutex[])の定義総数です。
cfg600は,システム情報ヘッダ・ファイルkernel_id.hにこの名称のマクロを出力します。


VTMAX_MBFメッセージ・バッファ情報(message_buffer[])の定義総数です。
cfg600は,システム情報ヘッダ・ファイルkernel_id.hにこの名称のマクロを出力します。


VTMAX_MPF固定長メモリ・プール情報(memorypool[])の定義総数です。
cfg600は,システム情報ヘッダ・ファイルkernel_id.hにこの名称のマクロを出力します。


VTMAX_MPL可変長メモリ・プール情報(variable_memorypool[])の定義総数です。
cfg600は,システム情報ヘッダ・ファイルkernel_id.hにこの名称のマクロを出力します。


VTMAX_CYH周期ハンドラ情報(cyclic_hand[])の定義総数です。
cfg600は,システム情報ヘッダ・ファイルkernel_id.hにこの名称のマクロを出力します。


VTMAX_ALHアラーム・ハンドラ情報(alarm_hand[])の定義総数です。
cfg600は,システム情報ヘッダ・ファイルkernel_id.hにこの名称のマクロを出力します。


19.20.2 BRI_HEAPセクション

BRI_HEAPセクションは,メッセージ・バッファ領域,固定長メモリ・プール領域,および可変長メモリ・プール領域が割り付けられるセクションです。なお,メッセージ・バッファ,固定長メモリ・プール,および可変長メモリ・プールの定義時に,ぞれぞれの領域をユーザ指定のセクションに割り当てることもできます。

BRI_HEAPセクションのサイズは,以下の合計です。

- メッセージ・バッファ領域の合計サイズ
メッセージ・バッファ情報(message_buffer[])で“mbf_section”を省略したメッセージ・バッファ定義について,以下の式で算出されます。


Σmessage_buffer[].mbf_size

- 固定長メモリ・プール領域の合計サイズ
固定長メモリ・プール情報(memorypool[])で“section”を省略した固定長メモリ・プール定義について,以下の式で算出されます。


Σ(memorypool[].siz_block×memorypool[].num_block)

- 可変長メモリ・プール領域の合計サイズ
可変長メモリ・プール情報(variable_memorypool[])で“mpl_section”を省略した可変長メモリ・プール定義について,以下の式で算出されます。


Σvariable_memorypool[].heap_size

19.20.3 SURI_STACKセクション

SURI_STACKセクションは,各タスクのユーザ・スタック領域が割り付けられるセクションです。なお,ユーザ・スタック領域は,システム・コンフィギュレーション・ファイルでの定義時にユーザ定義のセクションに割り当てることもできます。

SURI_STACKセクションのサイズは,タスク情報(task[])で“stack_section”を省略したタスク定義について,以下の式で算出されます。

Σtask[].stack_size

備考 スタック使用量の見積りについては,「付録D スタック使用量の算出」を参照してください。

19.20.4 SIセクション

SIセクションは,システム・スタック領域が割り付けられるセクションです。

SIセクションのサイズは,システム情報(system)システム・スタック・サイズ(stack_size)です。

備考 スタック使用量の見積りについては,「付録D スタック使用量の算出」を参照してください。