付録B  メモリ容量


本付録では,メモリ容量について解説しています。

B.1 概  要
RI850V4が使用/管理するメモリ領域は,その用途により,8種類のセクションに大別されます。

表B−1  メモリ領域

セクション名

概要

RI850V4の実行コードが割り付けられる領域

RI850V4の静的データが割り付けられる領域

RI850V4の動的データが割り付けられる領域

RI850V4のカーネル初期化フラグが割り付けられる領域

トレース機能の静的データが割り付けられる領域

トレース機能の動的データが割り付けられる領域

システム・スタック,タスク・スタック,データ・キュー領域,固定長メモリ・プール,可変長メモリ・プールが割り付けられる領域

タスク・スタック,データ・キュー領域,固定長メモリ・プール,可変長メモリ

プールが割り付けられる領域



B.1.1 .kernel_system

.kernel_systemのメモリ容量は,トレース・モードの種類と使用するカーネル・ライブラリの種類に依存しています。

使用するカーネル・ライブラリは,下記の4種類が存在します。

‐ CC-RH版, FPU非対応版

‐ CC-RH版,FPU対応版

‐ CCV850版,FPU非対応版

‐ CCV850版, FPU対応版

なお,トレース・モードの種類は,プロパティ パネル→[タスク・アナライザ]タブ→[トレース]カテゴリ→[トレース・モードの選択]で選択したものとなります。

1 ) CC-RH版,FPU非対応版の場合

トレース・モードの種類

メモリ容量

トレースしない

20.1Kバイト

ハードウエア・トレース・モードで,トレース・チャートを取得

20.4Kバイト

ソフトウエア・トレース・モードで,トレース・チャートを取得

20.9Kバイト

ソフトウエア・トレース・モードで,長時間統計を取得

20.8Kバイト



2 ) CC-RH版,FPU対応版の場合

トレース・モードの種類

メモリ容量

トレースしない

20.3Kバイト

ハードウエア・トレース・モードで,トレース・チャートを取得

20.6Kバイト

ソフトウエア・トレース・モードで,トレース・チャートを取得

21.1Kバイト

ソフトウエア・トレース・モードで,長時間統計を取得

21.0Kバイト



3 ) CCV850版,FPU非対応版の場合

トレース・モードの種類

メモリ容量

トレースしない

19.9Kバイト

ハードウエア・トレース・モードで,トレース・チャートを取得

20.2Kバイト

ソフトウエア・トレース・モードで,トレース・チャートを取得

20.8Kバイト

ソフトウエア・トレース・モードで,長時間統計を取得

20.6Kバイト



4 ) CCV850版,FPU対応版の場合

トレース・モードの種類

メモリ容量

トレースしない

20.2Kバイト

ハードウエア・トレース・モードで,トレース・チャートを取得

20.5Kバイト

ソフトウエア・トレース・モードで,トレース・チャートを取得

21.0Kバイト

ソフトウエア・トレース・モードで,長時間統計を取得

20.8Kバイト



備考 上記の値は,RI850V4が提供している全サービス・コールを利用した場合の最大値であり,処理プログラムの利用するサービス・コールの種類により,該当値は変動します。

B.1.2 .kernel_const

.kernel_constのメモリ容量は,情報(メモリ領域情報タスク情報など)の定義数,および定義内容に依存しています。

以下に,.kernel_constのメモリ容量を見積もる際の計算式(単位:バイト)を示します。

なお,下記計算式における“align4(x)”は,数値“x”を4バイト・アラインした結果を意味しています。

 KERNEL_CONST =
     224
     + 8 * MEM_AREA_num
     + 24 * CRE_TSK_num
     + 8 * CRE_SEM_num
     + 8 * CRE_FLG_num
     + 8 * CRE_DTQ_num
     + 4 * CRE_MBX_num
     + align4(2 * CRE_MTX_num
     + 12 * CRE_MPF_num
     + 12 * CRE_MPL_num
     + 20 * CRE_CYC_num
     + 8 * DEF_INH_num
     + 8 * DEF_SVC_num
     + 12 * ATT_INI_num
     + 8 * VATT_IDL_num
     + align4(maxint
     + align4(TA_ACT_num
     + align4(TA_STA_num


備考 上記計算式のキーワードは,以下に示した意味を持ちます。

キーワード

意味

 MEM_AREA_num
 CRE_TSK_num
タスク情報の定義数

 CRE_SEM_num
セマフォ情報の定義数

 CRE_FLG_num
 CRE_DTQ_num
 CRE_MBX_num
 CRE_MTX_num
 CRE_MPF_num
 CRE_MPL_num
 CRE_CYC_num
 DEF_INH_num
 DEF_SVC_num
 ATT_INI_num
 VATT_IDL_num
 maxint
 TA_ACT_num
属性(記述言語,初期起動状態など)tskatrで“タスクの初期起動状態”に“TA_ACT”を定義した数

 TA_STA_num
属性(記述言語,初期起動状態など)cycatrで“周期ハンドラの初期起動状態”に“TA_STA”を定義した数



B.1.3 .kernel_data

.kernel_dataのメモリ容量は,情報(タスク情報セマフォ情報など)の定義数,および定義内容に依存しています。

以下に,.kernel_dataのメモリ容量を見積もる際の計算式(単位:バイト)を示します。

なお,下記計算式における“align4(x)”は,数値“x”を4バイト・アラインした結果を意味しています。

 KERNEL_DATA =
     68
     + 32 * CRE_TSK_num
     + 8 * CRE_SEM_num
     + 8 * CRE_FLG_num
     + 8 * CRE_DTQ_num
     + 12 * CRE_MBX_num
     + 8 * CRE_MTX_num
     + 8 * CRE_MPF_num
     + 8 * CRE_MPL_num
     + 8 * CRE_CYC_num
     + align4(maxtpri


備考 上記計算式のキーワードは,以下に示した意味を持ちます。

キーワード

意味

 CRE_TSK_num
タスク情報の定義数

 CRE_SEM_num
セマフォ情報の定義数

 CRE_FLG_num
 CRE_DTQ_num
 CRE_MBX_num
 CRE_MTX_num
 CRE_MPF_num
 CRE_MPL_num
 CRE_CYC_num
 maxtpri


B.1.4 .kernel_data_init

.kernel_data_initのメモリ容量は,4バイトとなります。

B.1.5 .kernel_const_trace.const

.kernel_const_trace.constのメモリ容量は,トレース・モードの種類に依存しています。

なお,トレース・モードの種類は,プロパティ パネル→[タスク・アナライザ]タブ→[トレース]カテゴリ→[トレース・モードの選択]で選択したものとなります。

また,下表における“align4(x)”は,数値“x”を4バイト・アラインした結果を意味しています。

トレース・モードの種類

メモリ容量

トレースしない

align4(5)バイト

ハードウエア・トレース・モードで,トレース・チャートを取得

align4(61)バイト

ソフトウエア・トレース・モードで,トレース・チャートを取得

align4(74)バイト

ソフトウエア・トレース・モードで,長時間統計を取得

align4(70)バイト



B.1.6 .kernel_data_trace.bss

.kernel_data_trace.bssのメモリ容量は,トレース・モードの種類に依存しています。

なお,トレース・モードの種類は,プロパティ パネル→[タスク・アナライザ]タブ→[トレース]カテゴリ→[トレース・モードの選択]で選択したものとなります。

1 ) トレースしない

.kernel_data_trace.bssのメモリ容量は,0バイトとなります。

2 ) ハードウエア・トレース・モードで,トレース・チャートを取得

.kernel_data_trace.bssのメモリ容量は,4バイトとなります。

3 ) ソフトウエア・トレース・モードで,トレース・チャートを取得

.kernel_data_trace.bssのメモリ容量は,プロパティ パネル→[タスク・アナライザ]タブ→[トレース]カテゴリ→[バッファ・サイズ]の定義内容に依存しています。

以下に,.kernel_data_Trace.bssのメモリ容量を見積もる際の計算式(単位:バイト)を示します。

なお,下記計算式における“align4(x)”は,数値“x”を4バイト・アラインした結果を意味しています。

 KERNEL_DATA_TRACE.BSS =
     24
     + align4(TRC_BUF_size


備考 上記計算式のキーワードは,以下に示した意味を持ちます。

キーワード

意味

 TRC_BUF_size
プロパティ パネル→[タスク・アナライザ]タブ→[トレース]カテゴリ→[バッファ・サイズ]で定義した値



4 ) ソフトウエア・トレース・モードで,長時間統計を取得

.kernel_data_trace.bssのメモリ容量は,タスク情報の定義数,および基本情報の定義内容に依存しています。

以下に,.kernel_data_Trace.bssのメモリ容量を見積もる際の計算式(単位:バイト)を示します。

なお,下記計算式における“align4(x)”は,数値“x”を4バイト・アラインした結果を意味しています。

 KERNEL_DATA_TRACE.BSS =
     24
     + 8 * CRE_TSK_num
     + align4(10 * (intlvl - maxintpri))
     + 8 * maxint


備考 上記計算式のキーワードは,以下に示した意味を持ちます。

キーワード

意味

 CRE_TSK_num
タスク情報の定義数

 intlvl
CPUが提供している割り込みレベルの数

 maxintpri
 maxint


B.1.7 .kernel_work

.kernel_workのメモリ容量は,情報(基本情報タスク情報など)の定義内容に依存しています。

以下に,.kernel_workのメモリ容量を見積もる際の計算式(単位:バイト)を示します。

なお,下記計算式における“align4(x)”は,数値“x”を4バイト・アラインした結果を意味しています。

 KERNEL_WORK =
     116
     + SYSSTK
     + TSKSTK_total
     + DTQ_total
     + MPF_total
     + MPL_total


備考 上記計算式のキーワードは,以下に示した意味を持ちます。

キーワード

意味

 SYSSTK
システム・スタック”で算出された値

 TSKSTK_total
タスク・スタック”で算出した個々のタスクが必要とするメモリ容量の総和

 DTQ_total
データ・キュー領域”で算出した個々のデータ・キューが必要とするメモリ容量の総和

 MPF_total
固定長メモリ・プール”で算出した個々の固定長メモリ・プールが必要とするメモリ容量の総和

 MPL_total
可変長メモリ・プール”で算出した個々の可変長メモリ・プールが必要とするメモリ容量の総和



1 ) システム・スタック

システム・スタックのメモリ容量は,タスク情報の定義内容,およびタスクの処理内容に依存しています。

以下に,RI850V4がシステム・スタック用に必要とするメモリ容量を見積もる際の計算式(単位:バイト)を示します。

なお,下記計算式における“max(a, b, c)”は,候補“a”,“b”,“c”の中から最大値を選び出した結果(max(1, 2, 3)の場合は,3)を意味しています

 SYSSTK =
     max(align4(INT) + align4(CYC), align4(INI), align4(IDL))


備考 上記計算式のキーワードは,以下に示した意味を持ちます。

キーワード

意味

 INT
割り込みハンドラの処理内容に応じた値(割り込みハンドラの処理がネストする場合は,処理内容に応じた値の総和,割り込みハンドラ情報が未定義の場合は0)

 CYC
周期ハンドラの処理内容に応じた値(複数の周期ハンドラが存在する場合は,その中の最大値,周期ハンドラ情報が未定義の場合は0)

 INI
初期化ルーチンの処理内容に応じた値(複数の初期化ルーチンが存在する場合は,その中の最大値,初期化ルーチン情報が未定義の場合は0)

 IDL
アイドル・ルーチンの処理内容に応じた値(アイドル・ルーチン情報が未定義の場合は0)



2 ) タスク・スタック

タスク・スタックのメモリ容量は,タスク情報の定義内容,およびタスクの処理内容に依存しています。

以下に,タスク情報で定義された個々のタスクがタスク・スタック用に必要とするメモリ容量を見積もる際の計算式(単位:バイト)を示します。

 TSKSTK =
     ctxsz
     + stksz


備考 上記計算式のキーワードは,以下に示した意味を持ちます。

キーワード

意味

 ctxsz
コンフィギュレータCF850V4の起動オプションとして指定した使用するCコンパイラの種類とデバイス品種(起動オプションの詳細については「18.2.1 コマンド・ラインからの起動」を参照してください),および属性(記述言語,初期起動状態など)tskatrの“プリエンプトの受け付け状態”により,表B−2に示すような値になります。

 stksz
タスクの処理内容に応じた値(スタック・サイズstksz,メモリ領域名sec_namで定義した値)



表B−2  ctxszの値
Cコンパイラ

FPU

プリエンプト許可

プリエンプト禁止

CC-RH版

非搭載

132

88

搭載

136

92

CCV850版

非搭載

128

84

搭載

132

88



3 ) データ・キュー領域

データ・キュー領域のメモリ容量は,データ・キュー情報の定義内容に依存しています。

以下に,データ・キュー情報で定義された個々のデータ・キューがデータ・キュー領域用に必要とするメモリ容量を見積もる際の計算式(単位:バイト)を示します。

 DTQ =
     4 * dtqcnt


備考 上記計算式のキーワードは,以下に示した意味を持ちます。

キーワード

意味

 dtqcnt


4 ) 固定長メモリ・プール

固定長メモリ・プールのメモリ容量は,固定長メモリ・プール情報の定義内容に依存しています。

以下に,固定長メモリ・プール情報で定義された個々の固定長メモリ・プールが必要とするメモリ容量を見積もる際の計算式(単位:バイト)を示します。

なお,下記計算式における“align4(x)”は,数値“x”を4バイト・アラインした結果を意味しています。

 MPF =
     align4(blksz) * blkcnt


備考 上記計算式のキーワードは,以下に示した意味を持ちます。

キーワード

意味

 blksz
 blkcnt


5 ) 可変長メモリ・プール

可変長メモリ・プールのメモリ容量は,可変長メモリ・プール情報の定義内容に依存しています。

以下に,可変長メモリ・プール情報で定義された個々の可変長メモリ・プールが必要とするメモリ容量を見積もる際の計算式(単位:バイト)を示します。

なお,下記計算式における“align4(x)”は,数値“x”を4バイト・アラインした結果を意味しています。

 MPL =
     4
     + align4(mplsz


備考 上記計算式のキーワードは,以下に示した意味を持ちます。

キーワード

意味

 mplsz


B.1.8 .sec_nam(ユーザ定義領域)

.sec_nam(ユーザ定義領域)のメモリ容量は,情報(タスク情報データ・キュー情報など)の定義内容に依存しています。

備考 本セクションは,タスク情報データ・キュー情報などでタスク・スタック,データ・キュー領域などの割り付け先を.kernel_workセクション以外を定義した際に必要となるものです。
したがって,本セクションのメモリ容量については,「B.1.7 .kernel_work」を参考に見積もりを行ってください。