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