OS内部資源情報の表示
概要
SOLID-IDEには、OSの内部資源情報を表示する、 RTOSビューアー が搭載されています。 RTOSビューアーでは、タスクのステータス、優先度、現在のスタック消費量や、各種オブジェクトの状態を参照できます。
使い方
デバッグ中に、メニューの
をクリックすると、 RTOSビューアーウィンドウが表示されます。Note
RTOSビューアー表示中は、デバッグの実行再開/停止のたびにウィンドウの内容を更新するため、 ステップ実行などの動作が遅くなります。自動更新を無効化する方法については 自動更新の停止 を参照してください。
表示項目について
TOPPERS/FMP での表示例になります。
ウィンドウ左側のペインで選択可能な表示項目について解説します。
タスク
タスク を選択すると、ウィンドウ右側のペインにタスクの状態が表示されます。 選択しているタスクの待ち要因が資源の場合、待ち対象となっている資源の種類とIDが表示されます。 さらに資源のID表示をクリックすると該当する資源の状態表示に切り替わります。
各項目の詳細は以下のとおりです。
- ID
タスクID
- Core
CPU コア番号
- Status
Running/Waiting/Dormant などのタスクの状態を表します。
Waiting状態の場合はカッコ内に待ち状態になった要因を表しています。 表示される状態とWaiting状態の要因については タスク状態の一覧 と タスク待ち状態の要因一覧 を参照してください。
- Priority
タスクの現在の優先度を表します。
BasePriority は生成時の初期値を表します
- EntryAddress
タスクのエントリアドレスを表します。
- EntryName
タスクのエントリ関数名を表します。
- PC
タスクの現在のプログラムカウンタ (Running状態のタスク以外は最後のタスク切り替え時のPC)
- StackBase
タスクのスタックアドレスを表します。
- StackUsage
タスクのスタック消費量(単位はByte)を表します。
現在のスタック消費量/タスクのスタック容量で表示します。緑のゲージは使用率(%)を表します。
タスク状態の一覧
Dormant |
休止状態 |
|
Running |
実行状態 |
|
Ready |
実行可能状態 |
|
Waiting |
待ち状態(待ち要因については タスク待ち状態の要因一覧 を参照) |
|
Suspended |
強制待ち状態 |
参考
各タスク状態の定義と状態遷移の詳細についてはTOPPERS第3世代カーネル(ITRON系)統合仕様書の 2.6 タスクの状態遷移とスケジューリング規則 及び 図2-2.タスクの状態遷移
注釈
二重待ち状態は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) |
固定長メモリプール待ち |
イベントフラグ
イベントフラグ を選択すると、ウィンドウ右側のペインにイベントフラグの状態が表示されます。 選択している資源に待ちタスクがある場合待ち状態にあるタスクのIDが表示されます。 さらにタスクID表示をクリックすると該当するタスクの状態に切り替わります。
各項目の詳細は以下のとおりです。
- ID
イベントフラグID
- CurrentValue
現在のイベントフラグの値を16進数で表します。
- InitialValue
イベントフラグ生成時の初期フラグ値を表します。
- Attributes
イベントフラグの属性を表します。
- PRI:
TA_TPRI
属性 ( 待ち行列をタスクの優先度順にする)- CLR:
TA_CLR
属性 ( タスクの待ち解除時にイベントフラグをクリアする )- MUL:
TA_WMUL
属性 ( 複数のタスクが待つのを許す)
- WaitingTasks
このイベントフラグを待っているタスクIDを表します。
セマフォ
セマフォ を選択すると、ウィンドウ右側のペインにセマフォの状態が表示されます。 選択している資源に待ちタスクがある場合待ち状態にあるタスクのIDが表示されます。 さらにタスクID表示をクリックすると該当するタスクの状態に切り替わります。
各項目の詳細は以下のとおりです。
- ID
セマフォID
- CurrentCount
現在のカウント値を表します。
- MaxCount
セマフォで可能な最大のカウント値を表します。
- InitialCount
セマフォ生成時の初期カウント値を表します。
- Attributes
セマフォの属性を表します。
- PRI:
TA_TPRI
属性 ( 待ち行列をタスクの優先度順にする)
- WaitingTasks
このセマフォを待っているタスクIDを表します。
ミューテックス
ミューテックス を選択すると、ウィンドウ右側のペインにミューテックスの状態が表示されます。 選択している資源に待ちタスクがある場合待ち状態にあるタスクのIDが表示されます。 さらにタスクID表示をクリックすると該当するタスクの状態に切り替わります。
各項目の詳細は以下のとおりです。
- ID
ミューテックスID
- LockingTaskID
ロックしているタスクIDを表します。
- CeilingPriority
優先度上限付きミューテックスの場合の上限タスク優先度を表します。 対象が優先度上限付きミューテックスでない場合(Attributes にCEIが表示されていない場合)にはこの値は無効です。
- Attributes
ミューテックスの属性を表します。
- PRI:
TA_TPRI
属性 ( 待ち行列をタスクの優先度順にする)- CEI:
TA_CEILING
属性 ( 優先度上限ミューテックス/待ち行列をタスクの優先度順)
- WaitingTasks
このミューテックスを待っているタスクIDを表します。
参考
優先度上限ミューテックスの動作についてはTOPPERS第3世代カーネル(ITRON系)統合仕様書の4.4.5 ミューテックスの「使用上の注意」を参照してください。
データキュー
データキュー を選択すると、ウィンドウ右側のペインにデータキューの状態が表示されます。 選択している資源に待ちタスクがある場合待ち状態にあるタスクのIDが表示されます。 さらにタスクID表示をクリックすると該当するタスクの状態に切り替わります。
各項目の詳細は以下のとおりです。
- ID
データキューID
- CurrentCount
データキュー上にあるデータの数を表します。
- MaxCount
データキュー上に保存可能な数を表します。
- Attributes
データキューの属性を表します。
- PRI:
TA_TPRI
属性 ( 待ち行列をタスクの優先度順にする)
- Send
このデータキューに対して送信待ち状態にあるタスクIDを表します。
- Recv
このデータキューに対して受信待ち状態にあるタスクIDを表します。
優先度データキュー
優先度付きデータキュー を選択すると、ウィンドウ右側のペインに優先度付きデータキューの状態が表示されます。 選択している資源に待ちタスクがある場合待ち状態にあるタスクのIDが表示されます。 さらにタスクID表示をクリックすると該当するタスクの状態に切り替わります。
各項目の詳細は以下のとおりです。
- ID
優先度データキューID
- CurrentCount
優先度データキュー上にあるデータの数を表します。
- MaxCount
優先度データキュー上に保存可能な数を表します。
- Attributes
優先度データキューの属性を表します。
- PRI:
TA_TPRI
属性 ( 待ち行列をタスクの優先度順にする)
- Send
この優先度データキューに対して送信待ち状態にあるタスクIDを表します。
- Recv
この優先度データキューに対して受信待ち状態にあるタスクIDを表します。
周期ハンドラ
周期ハンドラ を選択すると、ウィンドウ右側のペインに周期ハンドラの状態が表示されます。
各項目の詳細は以下のとおりです。
- ID
周知通知ID
- Status
周期通知の状態を表します。
- START:
動作中(計時中)
- STOP:
停止中
- Attributes
周期通知の属性を表します。
- STA:
TA_STA
属性 ( 周期通知の生成時に周期通知を動作開始する)- PHS:
TA_PHS
属性 ( 周期通知を生成した時刻を基準時刻とする)
- HandlerName
周期通知ハンドラ名を表します。
- HandlerAddress
周期通知ハンドラのアドレスを表します。
- CycleTime
起動する周期(単位はマイクロ秒)を表します。
- CyclePhase
設定されている位相(単位はマイクロ秒)を表します。
参考
周期通知の周期と位相の関係については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
属性 ( 待ち行列をタスクの優先度順にする)
- UsedCount
使用中のメモリプール数を表します。
- BlockCount
使用されているメモリブロックの数を表します。 (BlockCount - UsedCount)で空きブロックの数がわかります。
- BlockSize
メモリブロック1個当たりのサイズ(単位はByte)を表します。(初期化時に固定)
- BlockStartAddress
メモリブロックとして使用しているメモリ領域の先頭アドレスを表します。
- WaitingTasks
このメモリプールを待っているタスクIDを表します。
メールボックス
メールボックス を選択すると、ウィンドウ右側のペインにメールボックスの状態が表示されます。 選択している資源に待ちタスクがある場合待ち状態にあるタスクのIDが表示されます。 さらにタスクID表示をクリックすると該当するタスクの状態に切り替わります。
各項目の詳細は以下のとおりです。
- ID
メールボックスID
- Attributes
メールボックスの属性を表します。
- TPRI:
TA_TPRI
属性 ( 待ち行列をタスクの優先度順にする)- MPRI:
TA_MPRI
属性 ( メッセージキューを優先度順にする)
- WaitingTasks
このメールボックスを待っているタスクIDを表します。
メッセージバッファ
メッセージバッファ を選択すると、ウィンドウ右側のペインにメッセージバッファの状態が表示されます。 選択している資源に待ちタスクがある場合待ち状態にあるタスクのIDが表示されます。 さらにタスクID表示をクリックすると該当するタスクの状態に切り替わります。
各項目の詳細は以下のとおりです。
- ID
メッセージバッファID
- MaxSize
メッセージバッファの最大メッセージサイズ(単位はByte)を表します。
- BufferSize
メッセージバッファ管理領域のサイズ(単位はByte)を表します。
- BufferAvailable
メッセージバッファ管理領域中の空き領域のサイズ(単位はByte)を表します。
- SentMsg
メッセージバッファ管理領域に格納されているメッセージの数を表します。
- Send
このメッセージバッファに対して送信待ち状態にあるタスクIDを表します。
- Recv
このメッセージバッファに対して受信待ち状態にあるタスクIDを表します。
自動更新の停止
タスクの数が多い場合にRTOSビューアーを表示していると、ステップ実行や実行の中断が非常に遅くなる事があります。 その場合は、RTOSビューアーを非表示にするか、下記の手順で自動更新を無効にしてください。
RTOSビューアーの設定 を開きます。
False に設定してください。
を
RTOSビューアーの情報を更新する場合は、更新 ボタン をクリックしてください。