OS内部資源情報の表示

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

使い方

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

表示項目について

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

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

タスク

タスク を選択すると、ウィンドウ右側のペインにタスクの状態が表示されます。

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

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

ID

タスクID

Core

CPU コア番号

Status

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

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

WaitObject

待ち対象となっている資源の種類とIDが Object:ID の形式で表示されます。

Object として表示される、待ち対象の資源は以下のとおりです。

SLP

自タスクによるslp_tsk/tslp_tsk呼出し

DLY

自タスクによるdly_tsk呼出し

FLG

イベントフラグ待ち

SEM

セマフォ獲得待ち

MTX

ミューテックス待ち

RDTQ

データキュー受信待ち

SDTQ

データキュー送信待ち

RPDQ

優先度データキュー受信待ち

SPDQ

優先度データキュー送信待ち

MPF

固定長メモリプール待ち

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として表示されます。待ち状態と要因がなくなった場合には強制待ち状態として表示されます。

イベントフラグ

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

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

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

Id

イベントフラグID

Attribute

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

PRI:

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

CLR:

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

MUL:

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

Pattern

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

InitialPattern

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

WaitQueue

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

セマフォ

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

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

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

ID

セマフォID

Attribute

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

PRI:

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

InitialCount

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

MaximumCount

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

Count

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

WaitQueue

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

ミューテックス

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

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

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

Id

ミューテックスID

Attribute

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

PRI:

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

CEI:

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

CeilingPriority

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

LockingTaskID

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

WaitQueue

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

参考

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

データキュー

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

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

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

Id

データキューID

Attributes

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

PRI:

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

MaximumCount

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

Count

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

SendWaitQueue

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

ReceiveWaitQueue

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

優先度データキュー

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

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

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

Id

優先度データキューID

Attribute

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

PRI:

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

MaximumCount

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

Count

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

SendWaitQueue

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

ReceiveWaitQueue

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

周期ハンドラ

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

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

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

Id

周知通知ID

Attribute

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

STA:

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

PHS:

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

ExtendInfo

周期通知ハンドラの拡張情報を表します。

HandlerAddress

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

HandlerName

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

CycleTime

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

CyclePhase

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

Status

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

START:

動作中(計時中)

STOP:

停止中

参考

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

アラームハンドラ

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

TOPPERS/ASP3 TOPPERS/FMP

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

Id

アラーム通知ID

Attribute

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

Mode (ASP3のみ)

通知処理モードを表します。 詳細については TOPPERS.ASP3.T_NFYINFO.nfymode を参照してください。

P1 (ASP3のみ), P2 (ASP3のみ)

タイムイベントの通知に関する付随情報を表します。

EP1 (ASP3のみ), EP2 (ASP3のみ)

エラーの通知に関する付随情報を表します。

ExtendInfo (FMP/FMP3のみ)

アラーム通知の拡張情報を表します。

HandlerAddress (FMP/FMP3のみ)

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

HandlerName (FMP/FMP3のみ)

アラーム通知ハンドラ名を表します。

Status

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

START:

動作中(計時中)

STOP:

停止中

LeftTime (ASP3のみ)

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

固定長メモリプール

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

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

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

id

メモリプールID

Attribute

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

PRI:

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

BlockCount

使用されているメモリブロックの数を表します。

BlockSize

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

BlockStartAddress

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

FreeBlockCount

空きメモリブロックの数を表します。

WaitQueue

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

メールボックス

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

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

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

ID

メールボックスID

Attribute

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

TPRI:

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

MPRI:

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

MaximumPriority

メールボックスの最大優先度を表します。

WaitQueue

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

メッセージバッファ

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

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

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

Id

メッセージバッファID

MaximumSize

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

BufferSize

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

FreeBufferSize

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

MessageCount

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

SendWaitQueue

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

ReceiveWaitQueue

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


自動更新の停止

自動更新有効時のステップ実行などの動作は、Version 1.0 と比較して改善されていますが、遅い場合は、 RTOSビューアーを非表示にするか、下記の手順で自動更新を無効にしてください。

  1. RTOSビューアーの設定 setting を開きます。

  2. RTOS ‣ 全般 ‣ RTOS情報の自動更新False に設定してください。

../_images/rtosviewer-disable-autoupdate.png

RTOSビューアーの情報を更新する場合は、更新 ボタン update をクリックしてください。