OS内部資源情報の表示

概要

SOLID-IDEには、OSの内部資源情報を表示する、 RTOSビューア が搭載されています。 RTOSビューアでは、タスクのステータス、優先度、現在のスタック消費量や、各種オブジェクトの状態を参照できます。

使い方

デバッグ中に、メニューの デバッグ(D) ‣ ウィンドウ(W) ‣ RTOSビューワー をクリックすると、 RTOSビューアーウィンドウが表示されます。

Note

RTOSビューア表示中は、デバッグの実行再開/停止のたびにウィンドウの内容を更新するため、 ステップ実行などの動作が遅くなります。

表示項目について

Toppers/FMP での表示例になります。

ウィンドウ左側のペインで選択可能な表示項目について解説します。

タスク

タスク を選択すると、ウィンドウ右側のペインにタスクの状態が表示されます。 選択しているタスクの待ち要因が資源の場合、待ち対象となっている資源の種類とIDが表示されます。 さらに資源のID表示をクリックすると該当する資源の状態表示に切り替わります。

../_images/rtosviewer-fmp-task.png

各項目の詳細は以下のとおりです。

ID

タスクID

Core

CPU コア番号

Status

Running/Waiting/Dormant などのタスクの状態を表します。

Waiting状態の場合はカッコ内に待ち状態になった要因を表しています。 表示される状態とWaiting状態の要因については タスク状態の一覧タスク待ち状態の要因一覧 を参照してください。

Priority

タスクの現在の優先度を表します。

BasePriorityは生成時の初期値を表します

EntryAddress

タスクのエントリアドレスを表します。

EntryName

タスクのエントリ関数名を表します。

PC

タスクの現在のプログラムカウンタ (Running状態のタスク以外は最後のタスク切り替え時のPC)

StackBase

タスクのスタックアドレスを表します。

StackUsage

タスクのスタック消費量(単位はByte)を表します。

現在のスタック消費量/タスクのスタック容量で表示します。緑のゲージは使用率(%)を表します。

タスク状態の一覧

Dormant

stat_dor

休止状態

Running

stat_run

実行状態

Ready

stat_rdy

実行可能状態

Waiting

stat_wai

待ち状態(待ち要因については タスク待ち状態の要因一覧 を参照)

Suspended

stat_sus

強制待ち状態

参考

各タスク状態の定義と状態遷移の詳細については 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表示をクリックすると該当するタスクの状態に切り替わります。

../_images/rtosviewer-fmp-eventflag.png

各項目の詳細は以下のとおりです。

ID

イベントフラグID

CurrentValue

現在のイベントフラグの値を16進数で表します。

InitialValue

イベントフラグ生成時の初期フラグ値を表します。

Attributes

イベントフラグの属性を表します。

PRI

TA_TPRI属性 ( 待ち行列をタスクの優先度順にする)

CLR

TA_CLR属性 ( タスクの待ち解除時にイベントフラグをクリアする )

MUL

TA_WMUL属性 ( 複数のタスクが待つのを許す)

WaitingTasks

このイベントフラグを待っているタスクIDを表します。

セマフォ

セマフォ を選択すると、ウィンドウ右側のペインにセマフォの状態が表示されます。 選択している資源に待ちタスクがある場合待ち状態にあるタスクのIDが表示されます。 さらにタスクID表示をクリックすると該当するタスクの状態に切り替わります。

../_images/rtosviewer-fmp-semaphore.png

各項目の詳細は以下のとおりです。

ID

セマフォID

CurrentCount

現在のカウント値を表します。

MaxCount

セマフォで可能な最大のカウント値を表します。

InitialCount

セマフォ生成時の初期カウント値を表します。

Attributes

セマフォの属性を表します。

PRI

TA_TPRI属性 ( 待ち行列をタスクの優先度順にする)

WaitingTasks

このセマフォを待っているタスクIDを表します。

ミューテックス

ミューテックス を選択すると、ウィンドウ右側のペインにミューテックスの状態が表示されます。 選択している資源に待ちタスクがある場合待ち状態にあるタスクのIDが表示されます。 さらにタスクID表示をクリックすると該当するタスクの状態に切り替わります。

../_images/rtosviewer-fmp-mutex.png

各項目の詳細は以下のとおりです。

ID

ミューテックスID

LockingTaskID

ロックしているタスクIDを表します。

CeilingPriority

優先度上限付きミューテックスの場合の上限タスク優先度を表します。 対象が優先度上限付きミューテックスでない場合(AttriutesにCEIが表示されていない場合)にはこの値は無効です。

Attributes

ミューテックスの属性を表します。

PRI

TA_TPRI属性 ( 待ち行列をタスクの優先度順にする)

CEI

TA_CEILING属性 ( 優先度上限ミューテックス/待ち行列をタスクの優先度順)

WaitingTasks

このミューテックスを待っているタスクIDを表します。

参考

優先度上限ミューテックスの動作については TOPPERS第3世代カーネル(ITRON系)統合仕様書 の4.4.5 ミューテックスの「使用上の注意」を参照してください。

データキュー

データキュー を選択すると、ウィンドウ右側のペインにデータキューの状態が表示されます。 選択している資源に待ちタスクがある場合待ち状態にあるタスクのIDが表示されます。 さらにタスクID表示をクリックすると該当するタスクの状態に切り替わります。

../_images/rtosviewer-fmp-dataqueue.png

各項目の詳細は以下のとおりです。

ID

データキューID

CurrentCount

データキュー上にあるデータの数を表します。

MaxCount

データキュー上に保存可能な数を表します。

Attributes

データキューの属性を表します。

PRI

TA_TPRI属性 ( 待ち行列をタスクの優先度順にする)

Send

このデータキューに対して送信待ち状態にあるタスクIDを表します。

Recv

このデータキューに対して受信待ち状態にあるタスクIDを表します。

優先度データキュー

優先度付きデータキュー を選択すると、ウィンドウ右側のペインに優先度付きデータキューの状態が表示されます。 選択している資源に待ちタスクがある場合待ち状態にあるタスクのIDが表示されます。 さらにタスクID表示をクリックすると該当するタスクの状態に切り替わります。

../_images/rtosviewer-fmp-priority-dataqueue.png

各項目の詳細は以下のとおりです。

ID

優先度データキューID

CurrentCount

優先度データキュー上にあるデータの数を表します。

MaxCount

優先度データキュー上に保存可能な数を表します。

Attributes

優先度データキューの属性を表します。

PRI

TA_TPRI属性 ( 待ち行列をタスクの優先度順にする)

Send

この優先度データキューに対して送信待ち状態にあるタスクIDを表します。

Recv

この優先度データキューに対して受信待ち状態にあるタスクIDを表します。

周期ハンドラ

周期ハンドラ を選択すると、ウィンドウ右側のペインに周期ハンドラの状態が表示されます。

../_images/rtosviewer-fmp-cyclehandler.png

各項目の詳細は以下のとおりです。

ID

周知通知ID

Status

周期通知の状態を表します。

START

動作中(計時中)

STOP

停止中

Attributes

周期通知の属性を表します。

STA

TA_STA属性 ( 周期通知の生成時に周期通知を動作開始する)

PHS

TA_PHS属性 ( 周期通知を生成した時刻を基準時刻とする)

HandlerName

周期通知ハンドラ名を表します。

HandlerAddress

周期通知ハンドラのアドレスを表します。

CycleTime

起動する周期(単位はマイクロ秒)を表します。

CyclePhase

設定されている位相(単位はマイクロ秒)を表します。

参考

周期通知の周期と位相の関係については TOPPERS第3世代カーネル(ITRON系)統合仕様書 の 4.6.2 周期通知 を参照してください。

アラームハンドラ

アラームハンドラ を選択すると、ウィンドウ右側のペインにアラームハンドラの状態が表示されます。

../_images/rtosviewer-fmp-alarmhandler.png

各項目の詳細は以下のとおりです。

ID

アラーム通知ID

Status

アラーム通知の状態を表します。

START

動作中(計時中)

STOP

停止中

Attributes

アラーム通知の属性を表します。 TOPPERS/ASP3カーネルの仕様ではTA_NULL以外の設定はできないため、常にNULが表示されます。

LeftTime

START状態にあるときにアラーム通知が発生するまでの時間(単位はマイクロ秒)を表します。

固定長メモリプール

../_images/rtosviewer-fmp-fixed-memorypool.png

固定長メモリプール を選択すると、ウィンドウ右側のペインに固定長メモリプールの状態が表示されます。 選択している資源に待ちタスクがある場合待ち状態にあるタスクのIDが表示されます。 さらにタスクID表示をクリックすると該当するタスクの状態に切り替わります。

各項目の詳細は以下のとおりです。

ID

メモリプールID

Attributes

メモリプールの属性を表します。

PRI

TA_TPRI属性 ( 待ち行列をタスクの優先度順にする)

UsedCount

使用中のメモリプール数を表します。

BlockCount

使用されているメモリブロックの数を表します。 (BlockCount - UsedCount)で空きブロックの数がわかります。

BlockSize

メモリブロック1個当たりのサイズ(単位はByte)を表します。(初期化時に固定)

BlockStartAddress

メモリブロックとして使用しているメモリ領域の先頭アドレスを表します。

WaitingTasks

このメモリプールを待っているタスクIDを表します。

メールボックス

../_images/rtosviewer-fmp-mailbox.png

メールボックス を選択すると、ウィンドウ右側のペインにメールボックスの状態が表示されます。 選択している資源に待ちタスクがある場合待ち状態にあるタスクのIDが表示されます。 さらにタスクID表示をクリックすると該当するタスクの状態に切り替わります。

各項目の詳細は以下のとおりです。

ID

メールボックスID

Attributes

メールボックスの属性を表します。

TPRI

TA_TPRI属性 ( 待ち行列をタスクの優先度順にする)

MPRI

TA_MPRI属性 ( メッセージキューを優先度順にする)

WaitingTasks

このメールボックスを待っているタスクIDを表します。

メッセージバッファ

../_images/rtosviewer-fmp-messagebuffer.png

メッセージバッファ を選択すると、ウィンドウ右側のペインにメッセージバッファの状態が表示されます。 選択している資源に待ちタスクがある場合待ち状態にあるタスクのIDが表示されます。 さらにタスクID表示をクリックすると該当するタスクの状態に切り替わります。

各項目の詳細は以下のとおりです。

ID

メッセージバッファID

MaxSize

メッセージバッファの最大メッセージサイズ(単位はByte)を表します。

BufferSize

メッセージバッファ管理領域のサイズ(単位はByte)を表します。

BufferAvailable

メッセージバッファ管理領域中の空き領域のサイズ(単位はByte)を表します。

SentMsg

メッセージバッファ管理領域に格納されているメッセージの数を表します。

Send

このメッセージバッファに対して送信待ち状態にあるタスクIDを表します。

Recv

このメッセージバッファに対して受信待ち状態にあるタスクIDを表します。