OS内部資源情報の表示
概要
SOLID-IDEには、Toppers/ASP3の内部資源情報を表示する、RTOSビューア が搭載されています。 RTOSビューアでは、タスクのステータス、優先度、現在のスタック消費量や、各種オブジェクトの状態を 参照できます。
使い方
デバッグ中に、メニューの [デバッグ]-[ウィンドウ]-[RTOSビューアー] をクリックすると、 RTOSビューアーウィンドウが表示されます。
Note
RTOSビューア表示中は、デバッグの実行再開/停止のたびにウィンドウの内容を更新するため、 ステップ実行などの動作が遅くなります。
表示項目について
ウィンドウ左側のペインで選択可能な表示項目について解説します。
タスク
タスク を選択すると、ウィンドウ右側のペインにタスクの状態が表示されます。 選択しているタスクの待ち要因が資源の場合、待ち対象となっている資源の種類とIDが表示されます。 さらに資源のID表示をクリックすると該当する資源の状態表示に切り替わります。
各項目の詳細は以下のとおりです。
項目 |
説明 |
---|---|
ID |
タスクID |
Status |
Running/Waiting/Dormant などのタスクの状態
Waiting状態の場合はカッコ内に待ち状態になった要因を表しています。
表示される状態とWaiting状態の要因については
タスク状態の一覧 と タスク待ち状態の要因一覧 を参照してください。
|
Priority |
タスクの現在の優先度
BasePriorityは生成時の初期値を表します
|
Entry |
タスクのエントリ関数名とアドレス |
PC |
タスクの現在のプログラムカウンタ(PC)
(Running状態のタスク以外は最後のタスク切り替え時のPC)
|
StackUsage |
タスクのスタック消費量 (単位はByte)
表示形式: 現在のスタック消費量/タスクのスタック容量
使用率(%)が緑のゲージで表示されます。
|
イベントフラグ/セマフォ/ミューテックス
イベントフラグ/セマフォ/ミューテックス を選択すると、ウィンドウ右側のペインに イベントフラグ、セマフォ、ミューテックスの状態が表示されます。 選択している資源に待ちタスクがある場合待ち状態にあるタスクのIDが表示されます。 さらにタスクID表示をクリックすると該当するタスクの状態に切り替わります。
各項目についての詳細は以下のとおりです。
イベントフラグ
項目 |
説明 |
---|---|
ID |
イベントフラグID |
Value |
現在のイベントフラグの値を16進数で表します
InitialValueはイベントフラグ生成時の初期フラグ値を表します
|
Attributes |
イベントフラグの属性
CLR: TA_CLR属性 ( タスクの待ち解除時にイベントフラグをクリアする )
MUL: TA_WMUL属性 ( 複数のタスクが待つのを許す)
PRI: TA_TPRI属性 ( 待ち行列をタスクの優先度順にする)
|
WaitingTasks |
このイベントフラグを待っているタスク |
セマフォ
項目 |
説明 |
---|---|
ID |
セマフォID |
Count |
セマフォの現在のカウント値
InitialCountはセマフォ生成時の初期カウント値を表します。
MaxCountはそのセマフォで可能な最大のカウント値を表します
|
Attributes |
セマフォの属性
PRI: TA_TPRI属性 ( 待ち行列をタスクの優先度順にする)
|
WaitingTasks |
このセマフォを待っているタスクID |
ミューテックス
項目 |
説明 |
---|---|
ID |
ミューテックスID |
LockingTaskID |
ロックしているタスクID
(ロックしているタスクが無い場合にはUNLOCKEDと表示されます)
|
CeilingPriority |
優先度上限付きミューテックスの場合の上限タスク優先度
対象が優先度上限付きミューテックスでない場合
(AttriutesにCEIが表示されていない場合)にはこの値は無効です。
|
Attributes |
ミューテックスの属性
PRI: TA_TPRI属性 ( 待ち行列をタスクの優先度順にする)
CEI: TA_CEILING属性 ( 優先度上限ミューテックス/待ち行列をタスクの優先度順)
|
WaitingTasks |
このミューテックスを待っているタスクID |
優先度上限ミューテックスの動作については TOPPERS第3世代カーネル(ITRON系)統合仕様書 の4.4.5 ミューテックスの「使用上の注意」を参照してください。
データキュー
データキュー を選択すると、ウィンドウ右側のペインに データキュー と 優先度付きデータキュー の状態が表示されます。 選択している資源に待ちタスクがある場合待ち状態にあるタスクのIDが表示されます。 さらにタスクID表示をクリックすると該当するタスクの状態に切り替わります。
各項目の詳細は以下のとおりです。
データキュー
項目 |
説明 |
---|---|
ID |
データキューID |
Count |
データキュー上にあるデータの数
MaxCountはデータキュー容量(データキュー上に保存可能な数)を表します。
|
Attributes |
データキューの属性
PRI: TA_TPRI属性 ( 待ち行列をタスクの優先度順にする)
|
Send |
データキューに対して送信待ち状態にあるタスクID |
Recv |
データキューに対して受信待ち状態にあるタスクID |
優先度データキュー
項目 |
説明 |
---|---|
ID |
優先度データキューID |
Count |
優先度データキュー上にあるデータの数
MaxCountは優先度データキュー容量(優先度データキュー上に保存可能な数)を表します。
|
Attributes |
優先度データキューの属性
PRI: TA_TPRI属性 ( 待ち行列をタスクの優先度順にする)
|
Send |
優先度データキューに対して送信待ち状態にあるタスクID |
Recv |
優先度データキューに対して受信待ち状態にあるタスクID |
タイムイベント ハンドラ
タイムイベント ハンドラ を選択すると、ウィンドウ右側のペインに 周期ハンドラ と アラームハンドラ の状態が表示されます。
各項目の詳細は以下のとおりです。
周期ハンドラ
項目 |
説明 |
---|---|
ID |
周知通知ID |
Status |
周期通知の状態
START: 動作中(計時中)
STOP: 停止中
|
Attributes |
周期通知の属性
STA: TA_STA属性 ( 周期通知の生成時に周期通知を動作開始する)
PHS: TA_PHS属性 ( 周期通知を生成した時刻を基準時刻とする)
|
Handler |
周期通知ハンドラの関数名とアドレス |
Cycle |
起動する周期 (単位はマイクロ秒)
()内には設定されている位相(Phase)が表示されます(マイクロ秒単位)
|
周期通知の周期と位相の関係については TOPPERS第3世代カーネル(ITRON系)統合仕様書 の 4.6.2 周期通知 を参照してください。
アラームハンドラ
項目 |
説明 |
---|---|
ID |
アラーム通知ID |
Status |
アラーム通知の状態を表します
START: 動作中(計時中)
STOP: 停止中
|
Attributes |
アラーム通知の属性
TOPPERS/ASP3カーネルの仕様ではTA_NULL以外の設定はできないため、常にNULが表示されます。
|
LeftTime |
START状態にあるときにアラーム通知が発生するまでの時間(マイクロ秒単位) |
メモリプール
メモリプール を選択すると、ウィンドウ右側のペインに 固定長メモリプール の状態が表示されます。 選択している資源に待ちタスクがある場合待ち状態にあるタスクのIDが表示されます。 さらにタスクID表示をクリックすると該当するタスクの状態に切り替わります。
各項目の詳細は以下のとおりです。
固定長メモリプール
項目 |
説明 |
---|---|
ID |
メモリプールID |
Attributes |
メモリプールの属性
PRI: TA_TPRI属性 ( 待ち行列をタスクの優先度順にする)
|
BlockCount |
使用されているメモリブロックの数を表示します
(BlockCount - UsedCount)で空きブロックの数がわかります
|
UsedCount |
使用中のメモリプール数 |
BlockSize |
メモリブロック1個当たりのサイズをバイト単位で表示します(初期化時に固定) |
BlockStartAddress |
メモリブロックとして使用しているメモリ領域の先頭アドレスを表示します |
WaitingTasks |
メモリプールを待っているタスクID |
タスク状態の一覧
Dormant |
休止状態 |
|
Running |
実行状態 |
|
Ready |
実行可能状態 |
|
Waiting |
待ち状態(待ち要因については タスク待ち状態の要因一覧 を参照) |
|
Suspended |
強制待ち状態 |
各タスク状態の定義と状態遷移の詳細については TOPPERS第3世代カーネル(ITRON系)統合仕様書 の 2.6 タスクの状態遷移とスケジューリング規則 及び 図2-2.タスクの状態遷移
Note
二重待ち状態はWaitingとして表示されます。待ち状態と要因がなくなった場合には強制待ち状態として表示されます。
タスク待ち状態の要因一覧
Waiting (SLP) |
自タスクによるslp_tsk/tslp_tsk呼出し |
Waiting (DLY) |
自タスクによるdly_tsk呼出し |
Waiting (FLG) |
イベントフラグ待ち |
Waiting (SEM) |
セマフォ獲得待ち |
Waiting (MTX) |
ミューテックス待ち |
Waiting (RDTQ) |
データキュー受信待ち |
Waiting (SDTQ) |
データキュー送信待ち |
Waiting (RPDQ) |
優先度データキュー受信待ち |
Waiting (SPDQ) |
優先度データキュー送信待ち |
Waiting (MPF) |
固定長メモリプール待ち |