イベントトラッカー

概要

タスク、割り込み、タイマハンドラの実行時間や遷移を、 時間軸に沿って記録し、グラフィカルに表示する機能です。

../_images/ScreenImage1.png

イベントトラッカーが記録する状態遷移イベントの種類

  • タスクの状態遷移

  • 割り込みハンドラの起動/終了

  • アラームハンドラの起動/終了

  • 周期起動ハンドラの起動/終了

使い方

イベントトラッカーを使用するための準備

イベントトラッカーが記録するイベントデータはターゲットの RAM 上に保存します。 その領域を確保するコードを IMPL_EVTTRK_Init() として実装してください。

イベントトラッカーの有効化

イベントトラッカーを有効にするためには、 ソリューションプロパティファイルに記述されているSOLID-OSの コンフィグレーション中で LibEventTrackertrue に変更します。

ソリューションプロパティの修正箇所
...
<PropertyGroup Label=”UserMacros”>
...
<LibEventTracker>true</LibEventTracker>
...
</PropertyGroup>
...

Note

ソリューションプロパティファイルを変更した場合は、ソリューションを読み直し、 リビルドしてください。

イベントトラッカーの API

イベント記録の開始/停止を制御や、記録から除外するイベントの指定ができます。

#include "solid_evttrk.h"

指定できる操作

SOLID_EVTTRK_CTRL_ON
SOLID_EVTTRK_CTRL_OFF
SOLID_EVTTRK_CTRL_CLR

定数

名前

説明

SOLID_EVTTRK_CTRL_ON

1

イベントトラッカーの記録を開始する

SOLID_EVTTRK_CTRL_OFF

2

イベントトラッカーの記録を停止する

SOLID_EVTTRK_CTRL_CLR

3

イベントトラッカーの記録をクリアする

SOLID_EVTTRK_Ctrl

int SOLID_EVTTRK_Ctrl(int control)

イベントトラッカーの操作(記録開始, 記録停止, 記録クリア)

パラメータ
  • control -- 実行したい操作

戻り値


実行

  1. イベントトラッカー有効でビルドして実行します。

  2. 確認したいタイミングで実行ブレークします (メニューの デバッグ(D) ‣ すべて中断(K))

  3. メニューの デバッグ(D) ‣ ウインドウ(W) ‣ イベント トラッカー を選択

../_images/EventTrackerOpen.png
  1. イベントトラッカーの画面にマウスカーソルを移動し、右クリックで表示されたメニューから DLLのロード(D) を選ぶとダイアログが開きます

  2. EvtFilterSOLID_TOPPERS.dll とSOLID-OS のコア数の値を設定したら、 OK をクリックします

../_images/EventTrackerDialog.png

Note

EvtFilterSOLID_TOPPERS.dll は以下の場所にインストールされています

  • StarterKit の環境 C:\ProgramData\KMC\SOLID\tools\eventtracker\

  • 製品版環境 インストール先フォルダ\tools\eventtracker\dll\

  1. イベントトラッカーの画面にマウスカーソルを移動し、右クリックで表示されたメニューから 解析(P) を選び、イベントログ領域の Start AddressSize を設定しますが、通常はデフォルトのままで OK を押します

../_images/EventTrackerAnalysis.png
  1. 正常に記録できていれば、イベントログがグラフィカルに表示されます

表示例(ASP3の場合)

../_images/EventTrackerASP3.png

表示の線・マークの見方

モジュールの状態を示す線の意味

線種・色

状態

明るい緑実線

CPU実行状態 (Running) ※FMPの場合 Core0実行状態

黒破線

CPU実行権獲得可能 (Ready)

赤破線

待ち状態 (Wait, Suspend, Suspend-wait)

オレンジ実線

FMPのみ Core1 実行状態 (Running)

明るい紫実線

FMPのみ Core2 実行状態 (Running)

淡い水色実線

FMPのみ Core3 実行状態 (Running)

暗い緑実線

FMPのみ Core4 実行状態 (Running)

明るい茶実線

FMPのみ Core5 実行状態 (Running)

暗い紫実線

FMPのみ Core6 実行状態 (Running)

濃い水色実線

FMPのみ Core7 実行状態 (Running)

イベントを示す四角の意味

四角形の色

イベントの種類

待ち状態イベント (Wait に遷移)

強制待ちイベント (Suspend に遷移)

二重待ちイベント (Suspend-wait に遷移)

メールボックス送信イベント

主な操作

  • 右クリックのポップアップメニューらからIDの表示順を選択(例:IDでソート)できます。

  • マウスのホイールを回すと、時間軸を Zoomin, Zoomout できます。

../_images/EventTrackerZooming.png
  • グラフの下、空白領域でダブルクリックするとタイムバーが表示されます。タイムバーを2個表示してタイムバー間の経過時間を表示できます

../_images/EventTrackerTimebar.png

要実装関数

int IMPL_EVTTRK_Init(SOLID_EVTTRK_INFO *pInfo)
IMPL_EVTTRK_Init() の実装例
#include "impl_evttrk.h"
#define MAX_EVENT_NUM 0x400 // 保存できるイベント数。必ず 2^n の数を指定してください
#define BUFFER_SIZE ((24 * MAX_EVENT_NUM) + 32) // 各イベントログ 24byte, イベントログ領域のヘッダ 32byte
static uint8_t __kmc_eventlog_buffer[BUFFER_SIZE] __attribute__ ((aligned (8)));

int IMPL_EVTTRK_Init(SOLID_EVTTRK_INFO* pInfo)
{
    pInfo->pBuffer = __kmc_eventlog_buffer;
    pInfo->bufSize = sizeof(__kmc_eventlog_buffer);

    return 1;
}

Warning

保存できるイベント数 MAX_EVENT_NUM は必ず、2のn乗の値にしてください。 2のn乗以外の値を指定するとイベントが記録されたりされなかったりという状態になります。