19.20	 RAM使用量の算出
 RI600V4が使用/管理するRAM領域は,その用途により,以下の6種類のセクションに大別されます。以降で,BRI_RAM,BRI_HEAP,SURI_STACK,およびSIセクションについて説明します。
 
 -	 BRI_RAMセクション:RI600V4の管理データ,データ・キュー領域
 
 -	 BRI_HEAPセクション:デフォルトのメッセージ・バッファ領域,固定長メモリ・プール領域,および可変長メモリ・プール領域
 
 -	 SURI_STACKセクション:デフォルトのユーザ・スタック領域
 
 -	 RRI_RAMセクション:RI600V4の管理データです,サイズは常に4バイトです。
 
 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
 
 | 
| 
 | 
 | 
| 
 | 
 4× VTMAX_SEM + down (  VTMAX_SEM / 8 + 1)
  
 ただし, VTMAX_SEMが0の場合は,セマフォ管理ブロックのサイズは0です。
  
 | 
| 
 | 
 8× VTMAX_FLG + 2×down (  VTMAX_FLG / 8 + 1)
  
 ただし, VTMAX_FLGが0の場合は,イベントフラグ管理ブロックのサイズは0です。
  
 | 
| 
 | 
 6× VTMAX_DTQ+ down (  VTMAX_DTQ / 8 + 1) +  DTQ_ALLSIZE
 
 ただし, VTMAX_DTQが0の場合は,データ・キュー管理ブロックのサイズは0です。
  
 | 
| 
 | 
 8× VTMAX_MBX + 2×down (  VTMAX_MBX / 8 + 1)
  
 ただし, VTMAX_MBXが0の場合は,メールボックス管理ブロックのサイズは0です。
  
 | 
| 
 | 
 VTMAX_MTX + down (  VTMAX_MTX / 8 + 1)
  
 ただし, VTMAX_MTXが0の場合は,ミューテックス管理ブロックのサイズは0です。
  
 | 
| 
 | 
 | 
| 
 | 
 8× VTMAX_MPF + down (  VTMAX_MPF / 8 + 1)
  
 + Σ(down( memorypool[].num_block  / 8 + 1) )
  
 ただし, VTMAX_MPFが0の場合は,固定長メモリ・プール管理ブロックのサイズは0です。
  
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 1592 + 8× (  VTMAX_TSK + 1 )
  
 | 
 
 備考	 メモリ容量計算式のキーワードは,以下に示した意味を持ちます。
 
 DTQ_ALLSIZE:	データ・キュー領域のサイズの合計です。具体的には,以下によって算出されます。
  Σdataqueue[].buffer_size×4
ただし,この計算結果が0になる場合は,
DTQ_ALLSIZEは4です。
 
 BRI_HEAPセクションは,メッセージ・バッファ領域,固定長メモリ・プール領域,および可変長メモリ・プール領域が割り付けられるセクションです。なお,メッセージ・バッファ,固定長メモリ・プール,および可変長メモリ・プールの定義時に,ぞれぞれの領域をユーザ指定のセクションに割り当てることもできます。
 
 BRI_HEAPセクションのサイズは,以下の合計です。
 
 Σmessage_buffer[].mbf_size
 
 Σ(memorypool[].siz_block×memorypool[].num_block)
 
 Σvariable_memorypool[].heap_size
 
 SURI_STACKセクションは,各タスクのユーザ・スタック領域が割り付けられるセクションです。なお,ユーザ・スタック領域は,システム・コンフィギュレーション・ファイルでの定義時にユーザ定義のセクションに割り当てることもできます。
 
 SURI_STACKセクションのサイズは,
タスク情報(task[])で“stack_section”を省略したタスク定義について,以下の式で算出されます。
 
 SIセクションは,システム・スタック領域が割り付けられるセクションです。