付録B メモリ容量
B.1 概 要
RI850V4が使用/管理するメモリ領域は,その用途により,8種類のセクションに大別されます。
|
|
|
|
|
|
|
|
|
RI850V4のカーネル初期化フラグが割り付けられる領域
|
|
|
|
|
|
システム・スタック,タスク・スタック,データ・キュー領域,固定長メモリ・プール,可変長メモリ・プールが割り付けられる領域
|
|
タスク・スタック,データ・キュー領域,固定長メモリ・プール,可変長メモリ
|
.kernel_systemのメモリ容量は,トレース・モードの種類と使用するカーネル・ライブラリの種類に依存しています。
使用するカーネル・ライブラリは,下記の4種類が存在します。
なお,トレース・モードの種類は,プロパティ パネル→[タスク・アナライザ]タブ→[トレース]カテゴリ→[トレース・モードの選択]で選択したものとなります。
|
|
|
|
ハードウエア・トレース・モードで,トレース・チャートを取得
|
|
ソフトウエア・トレース・モードで,トレース・チャートを取得
|
|
ソフトウエア・トレース・モードで,長時間統計を取得
|
|
|
|
|
|
ハードウエア・トレース・モードで,トレース・チャートを取得
|
|
ソフトウエア・トレース・モードで,トレース・チャートを取得
|
|
ソフトウエア・トレース・モードで,長時間統計を取得
|
|
|
|
|
|
ハードウエア・トレース・モードで,トレース・チャートを取得
|
|
ソフトウエア・トレース・モードで,トレース・チャートを取得
|
|
ソフトウエア・トレース・モードで,長時間統計を取得
|
|
|
|
|
|
ハードウエア・トレース・モードで,トレース・チャートを取得
|
|
ソフトウエア・トレース・モードで,トレース・チャートを取得
|
|
ソフトウエア・トレース・モードで,長時間統計を取得
|
|
備考 上記の値は,RI850V4が提供している全サービス・コールを利用した場合の最大値であり,処理プログラムの利用するサービス・コールの種類により,該当値は変動します。
.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
|
|
TA_STA_num
|
|
.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
|
|
.kernel_data_initのメモリ容量は,4バイトとなります。
B.1.5 .kernel_const_trace.const
.kernel_const_trace.constのメモリ容量は,トレース・モードの種類に依存しています。
なお,トレース・モードの種類は,プロパティ パネル→[タスク・アナライザ]タブ→[トレース]カテゴリ→[トレース・モードの選択]で選択したものとなります。
また,下表における“align4(
x)”は,数値“
x”を4バイト・アラインした結果を意味しています。
|
|
|
|
ハードウエア・トレース・モードで,トレース・チャートを取得
|
|
ソフトウエア・トレース・モードで,トレース・チャートを取得
|
|
ソフトウエア・トレース・モードで,長時間統計を取得
|
|
B.1.6 .kernel_data_trace.bss
.kernel_data_trace.bssのメモリ容量は,トレース・モードの種類に依存しています。
なお,トレース・モードの種類は,プロパティ パネル→[タスク・アナライザ]タブ→[トレース]カテゴリ→[トレース・モードの選択]で選択したものとなります。
.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
|
|
maxintpri
|
|
maxint
|
|
.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
|
|
システム・スタックのメモリ容量は,
タスク情報の定義内容,およびタスクの処理内容に依存しています。
以下に,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
|
|
タスク・スタックのメモリ容量は,
タスク情報の定義内容,およびタスクの処理内容に依存しています。
以下に,
タスク情報で定義された個々のタスクがタスク・スタック用に必要とするメモリ容量を見積もる際の計算式(単位:バイト)を示します。
備考 上記計算式のキーワードは,以下に示した意味を持ちます。
以下に,
データ・キュー情報で定義された個々のデータ・キューがデータ・キュー領域用に必要とするメモリ容量を見積もる際の計算式(単位:バイト)を示します。
備考 上記計算式のキーワードは,以下に示した意味を持ちます。
以下に,
固定長メモリ・プール情報で定義された個々の固定長メモリ・プールが必要とするメモリ容量を見積もる際の計算式(単位:バイト)を示します。
なお,下記計算式における“align4(
x)”は,数値“
x”を4バイト・アラインした結果を意味しています。
MPF =
align4(blksz) * blkcnt
|
備考 上記計算式のキーワードは,以下に示した意味を持ちます。
以下に,
可変長メモリ・プール情報で定義された個々の可変長メモリ・プールが必要とするメモリ容量を見積もる際の計算式(単位:バイト)を示します。
なお,下記計算式における“align4(
x)”は,数値“
x”を4バイト・アラインした結果を意味しています。
備考 上記計算式のキーワードは,以下に示した意味を持ちます。