20.23 RAM使用量の算出
RI600PXが使用/管理するRAM領域は,その用途により,以下の4種類のセクションに大別されます。
- BRI_RAMセクション:RI600PXの管理データ,システム・コンフィギュレーション・ファイルで生成されたデータ・キュー領域,システム・コンフィギュレーション・ファイルでセクション指定を省略して生成されたメッセージ・バッファ領域
- RRI_RAMセクション:RI600PXの管理データ(動的生成使用時)
- BURI_HEAPセクション:システム・コンフィギュレーション・ファイルでセクション指定を省略して生成された固定長メモリ・プール領域および可変長メモリ・プール領域
- SURI_STACKセクション:システム・コンフィギュレーション・ファイルでセクション指定を省略して生成されたタスクのユーザ・スタック領域
20.23.1 BRI_RAM,RRI_RAMセクション
BRI_RAMおよびRRI_RAMセクションは,RI600PXの管理データが割り付けられるセクションです。
表20−11に,BRI_RAMおよびRRI_RAMセクションのメモリ容量計算式(単位:バイト)を示します。なお,実際のサイズは,境界調整のために
表20−11で算出される値よりも大きくなる場合があります。
表20−11 BRI_RAMおよびRRI_RAMセクションのメモリ容量計算式
|
|
|
|
|
28 + 4×down( ( TMAX_TPRI - 1) / 32 + 1) + TMAX_TPRI
+ VTMAX_SEM + VTMAX_FLG + 2× VTMAX_DTQ + VTMAX_MBX
+ VTMAX_MTX + 2× VTMAX_MBF + VTMAX_MPF + VTMAX_MPL
|
|
4 + VTMAX_SEM + VTMAX_FLG + 2× VTMAX_DTQ + VTMAX_MBX
+ VTMAX_MTX + 2× VTMAX_MBF + VTMAX_MPF + VTMAX_MPL
|
|
|
|
|
|
|
|
4× VTMAX_SEM + down ( VTMAX_SEM / 8 + 1)
|
|
|
|
|
8× VTMAX_FLG + 2×down ( VTMAX_FLG / 8 + 1)
|
|
|
|
|
6× VTMAX_DTQ+ down ( VTMAX_DTQ / 8 + 1) + DTQ_ALLSIZE
|
|
|
|
|
8× VTMAX_MBX + 2×down ( VTMAX_MBX / 8 + 1)
|
|
|
|
|
VTMAX_MTX + down ( VTMAX_MTX / 8 + 1)
|
|
|
|
|
16× VTMAX_MBF + MBF_ALLSIZE
|
|
|
|
|
8× VTMAX_MPF + down ( VTMAX_MPF / 8 + 1)
+ Σ (memorypool[].num_block / 8 + 1)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3
VTAX_SEMが0の場合,これらの領域は生成されません。
5
VTMAX_FLGが0の場合,これらの領域は生成されません。
7
VTMAX_DTQが0の場合,これらの領域は生成されません。
9
VTMAX_MBXが0の場合,これらの領域は生成されません。
11
VTMAX_MTXが0の場合,これらの領域は生成されません。
13
VTMAX_MBFが0の場合,これらの領域は生成されません。
15
VTMAX_MPFが0の場合,これらの領域は生成されません。
17
VTMAX_MPLが0の場合,これらの領域は生成されません。
19
VTMAX_CYHが0の場合,これらの領域は生成されません。
21
VTMAX_ALH が0の場合,これらの領域は生成されません。
|
備考 メモリ容量計算式のキーワードは,以下に示した意味を持ちます。
DTQ_ALLSIZE: システム・コンフィギュレーション・ファイルで生成したデータ・キュー領域のサイズの合計です。具体的には,以下によって算出されます。
Σdataqueue[].buffer_size×4
ただし,この計算結果が0になる場合は,
DTQ_ALLSIZEは4です。
MBF_ALLSIZE: システム・コンフィギュレーション・ファイルで,“mbf_section”を省略して生成したメッセージ・バッファ領域のサイズの合計です。具体的には,以下によって算出されます。
Σmessage_buffer[].mbf_size
BURI_HEAPセクションは,固定長メモリ・プール領域および可変長メモリ・プール領域が割り付けられるセクションです。なお,固定長メモリ・プールおよび可変長メモリ・プールの定義時に,ぞれぞれの領域をユーザ指定のセクションに割り当てることもできます。
BURI_HEAPセクションのサイズは,以下の合計です。なお,アプリケーション側でBURI_HEAPセクションにデータを生成した場合は,そのサイズも加算してください。
Σ(memorypool[].siz_block×memorypool[].num_block)
Σvariable_memorypool[].heap_size
SURI_STACKセクションは,各タスクのユーザ・スタック領域が割り付けられるセクションです。なお,ユーザ・スタック領域は,システム・コンフィギュレーション・ファイルでの定義時にユーザ定義のセクションに割り当てることもできます。
SURI_STACKセクションのサイズは,
タスク情報(task[])で“stack_section”を省略したタスク定義について,以下の式で算出されます。なお,アプリケーション側でSURI_STACKセクションにデータを生成した場合は,そのサイズも加算してください。
SIセクションは,システム・スタック領域が割り付けられるセクションです。