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) |
固定長メモリプール待ち |