OS内部資源情報の表示

概要

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

使い方

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

Note

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

表示項目について

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

タスク

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

../_images/rtosview_task.png

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

項目

説明

ID

タスクID

Status

Running/Waiting/Dormant などのタスクの状態
Waiting状態の場合はカッコ内に待ち状態になった要因を表しています。
表示される状態とWaiting状態の要因については

Priority

タスクの現在の優先度
BasePriorityは生成時の初期値を表します

Entry

タスクのエントリ関数名とアドレス

PC

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

StackUsage

タスクのスタック消費量 (単位はByte)
表示形式: 現在のスタック消費量/タスクのスタック容量
使用率(%)が緑のゲージで表示されます。

イベントフラグ/セマフォ/ミューテックス

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

../_images/rtosview_event.png

各項目についての詳細は以下のとおりです。

イベントフラグ

項目

説明

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表示をクリックすると該当するタスクの状態に切り替わります。

../_images/rtosview_dataqueue.png

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

データキュー

項目

説明

ID

データキューID

Count

データキュー上にあるデータの数
MaxCountはデータキュー容量(データキュー上に保存可能な数)を表します。

Attributes

データキューの属性
PRI: TA_TPRI属性 ( 待ち行列をタスクの優先度順にする)

Send

データキューに対して送信待ち状態にあるタスクID

Recv

データキューに対して受信待ち状態にあるタスクID

優先度データキュー

項目

説明

ID

優先度データキューID

Count

優先度データキュー上にあるデータの数
MaxCountは優先度データキュー容量(優先度データキュー上に保存可能な数)を表します。

Attributes

優先度データキューの属性
PRI: TA_TPRI属性 ( 待ち行列をタスクの優先度順にする)

Send

優先度データキューに対して送信待ち状態にあるタスクID

Recv

優先度データキューに対して受信待ち状態にあるタスクID

タイムイベント ハンドラ

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

../_images/rtosview_time.png

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

周期ハンドラ

項目

説明

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状態にあるときにアラーム通知が発生するまでの時間(マイクロ秒単位)

メモリプール

../_images/rtosview_mempool.png

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

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

固定長メモリプール

項目

説明

ID

メモリプールID

Attributes

メモリプールの属性
PRI: TA_TPRI属性 ( 待ち行列をタスクの優先度順にする)

BlockCount

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

UsedCount

使用中のメモリプール数

BlockSize

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

BlockStartAddress

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

WaitingTasks

メモリプールを待っているタスクID

タスク状態の一覧

Dormant

stat_dor

休止状態

Running

stat_run

実行状態

Ready

stat_rdy

実行可能状態

Waiting

stat_wai

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

Suspended

stat_sus

強制待ち状態

各タスク状態の定義と状態遷移の詳細については 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)

固定長メモリプール待ち