概要
Tracealyzer Bare Metal support は、ベアメタル(RTOSなし) のランタイム挙動を可視化するトレース解析ツールです。タスク(スレッド)スケジューリング・割込み・API呼出・ユーザイベントを詳細なタイムラインで表示し、コードが意図通り実行されているかを検証できます。CPU負荷・実行時間・スタック/ヒープなど30以上の相互リンクビューで、ソースコードからは見えない問題を解明します。
RTOSを使わないベアメタル構成(スーパーループ+割込み)は、小規模MCUや制約の厳しい製品で今も広く使われています。一方その実行時挙動の確認は printf やGPIOトグルとオシロスコープに頼りがちで、時間軸での体系的な解析が困難でした。
【ベアメタル(RTOSなし) との連携で特に重要な点】TraceRecorder のベアメタルモード(Tracealyzer 4.7〜)により、RTOSなしのC/C++プロジェクトでも計測できます。割込みハンドラ(ISR)の実行、メインループ内の処理区間・状態、C APIによるユーザイベント(変数値・状態遷移)。インターバル計測とステートマシントレースで、コード区間の実行時間(WCET確認)や状態遷移を統計付きで可視化します。
TraceRecorder(ベアメタルモード)を統合し、スナップショット/ストリーミング(J-Link RTT等)でトレースを取得します。 Tracealyzer は1つのパッケージです。どの対応OS向けにご購入いただいても製品本体は共通で、30以上の解析ビューをすべて利用でき、後からOSを変更・追加しても同じライセンスで継続利用できます。
主要仕様
| 対象RTOS | ベアメタル(RTOS不使用) |
|---|---|
| 可視化 | 25+ ビュー(トレース/CPU負荷/スタック/通信フロー) |
| 計測 | TraceRecorder(Apache 2.0) |
| 取得 | スナップショット/ストリーミング |
| ホスト | Windows / Linux(x86-64) |
主要機能
Tracealyzer Bare Metal support の主要な可視化機能を、実際の解析画面とともにご紹介します。各機能がどんな不具合の発見に役立つかまでを明記しています。これらのビューは全ての対応OSで共通です。

タスク実行トレース
タスク/スレッド・割込み・カーネルAPI呼出・ユーザイベントを時系列のタイムラインで可視化。スケジューリングが意図通りかを一目で確認でき、優先度逆転・想定外のプリエンプション・タスクの取りこぼしを発見できます。

CPU負荷グラフ
タスク/割込みごとのCPU使用率と総負荷を時系列で表示。負荷の高いホットスポットを特定して最適化の的を絞れるほか、負荷スパイクから処理の詰まり・ビジーループ・割込み過多を突き止められます。

カーネル・アウェアネス
セマフォ・ミューテックス・メッセージキュー・イベントフラグなどRTOSオブジェクトの状態遷移(Running/Ready/Blocked/Waiting)を可視化。どのタスクがどの資源で待たされているかが分かり、デッドロック・長時間ブロック・優先度逆転の原因特定に直結します。

ヒープ/スタック解析
動的メモリ確保(malloc/free)とタスク別スタック使用量の推移を表示。右肩上がりのヒープ推移からメモリリークを、スタックの余裕不足からスタックオーバーフローの予兆を早期に発見でき、断片化の傾向も掴めます。

通信フロー/シーケンス
スレッド間のIPC・同期イベントの相互作用をシーケンス図で集約表示。どのタスクが特定のキューやセマフォを介してやり取りしているかを俯瞰でき、想定外の依存関係・過剰なメッセージ往復・同期の取りこぼしを可視化します。

トレース統計・タイミング
実行時間・応答時間・周期などのタイミング指標を統計化し、性能グラフとともに表示。最大・最小の外れ値をクリックすると該当ジョブへドリルダウンでき、ワーストケースのレイテンシやジッタ、周期の乱れといった問題箇所へ即座に到達できます。

システム構成
アプリケーション・カーネル・ドライバ・ハードウェアの階層構造を俯瞰。システム全体の見通しを得られ、各層の関係を把握することで、問題がどの層で起きているかの切り分けを助けます。

ユーザイベント/ライブ
ユーザイベントで記録した任意データを時系列で表示し、J-Link RTT・ITM・TCP/IP・UDP等で長時間トレースをリアルタイム表示(printfの数百倍高速)。スナップショット方式にも対応し、再現性の低い間欠不具合を長時間ストリーミングで捕捉できます。
可視化・解析
| トレースビュー | タスク・割込み・ベアメタル(RTOS不使用) API・ユーザイベントのタイムライン |
|---|---|
| CPU負荷 | タスク/ISR別・総CPU使用率(ホットスポット特定) |
| タイミング | 実行時間・応答時間・周期の統計(ジョブ単位) |
| メモリ | スタック余裕プロット・ヒープ割当時系列 |
ベアメタル(RTOSなし) と Tracealyzer — 採用ポイント
RTOSを使わないベアメタル構成(スーパーループ+割込み)は、小規模MCUや制約の厳しい製品で今も広く使われています。一方その実行時挙動の確認は printf やGPIOトグルとオシロスコープに頼りがちで、時間軸での体系的な解析が困難でした。
ベアメタル(RTOSなし) 連携の特別事項
| ベアメタル正式対応 | TraceRecorder のベアメタルモード(Tracealyzer 4.7〜)により、RTOSなしのC/C++プロジェクトでも計測できます |
|---|---|
| 計測対象 | 割込みハンドラ(ISR)の実行、メインループ内の処理区間・状態、C APIによるユーザイベント(変数値・状態遷移) |
| 区間・状態の定量化 | インターバル計測とステートマシントレースで、コード区間の実行時間(WCET確認)や状態遷移を統計付きで可視化します |
こんな課題に
- printf・GPIOトグルによる場当たり的な確認から、時系列データに基づく体系的なデバッグへ移行できる
- 割込み負荷・処理区間の実測により、周期割れ・取りこぼしの原因を特定できる
- 将来RTOSへ移行する場合も、同じツール・同じ計測手法をそのまま継続できる
計測できるもの・統合手順(7ステップ)
計測できるもの
| ISR | xTraceISRBegin/xTraceISREnd を割込みハンドラに追加(trcISR.h)。未計測の場合、ISR時間は実行中タスクに合算される点に注意 |
|---|---|
| ユーザイベント | trcPrint API(xTracePrintF等)でデバッグメッセージ・データロギング。User Event Signal Plot でプロット可能 |
| Runnable | trcRunnable.h でトップレベル関数・サブタスク区間の実行時間を計測(車載のRunnable概念だが汎用に有効) |
| 区間・状態変数 | trcInterval.h/trcStateMachine.h の高効率APIでカスタム区間・ステートマシンを計測 |
| オーバーヘッド | 1イベントあたり数µs程度。ISRトレースはデバッグ用途向け(µs精度のISRプロファイリング用ではない) |
統合手順(RingBuffer 推奨)
| ① stream port 選定 | まずは RingBuffer(RAM循環バッファのスナップショット)を推奨。Percepio Detect/DevAlert 併用時も RingBuffer |
|---|---|
| ② ソース追加 | TraceRecorder 本体・kernelports/BareMetal・選択した streamports の .c をプロジェクトへコピー |
| ③ ヘッダ追加 | config/include(本体・BareMetal・streamport)をインクルードパスに追加 |
| ④ ハードウェアポート | trcConfig.h で TRC_CFG_HARDWARE_PORT をデバイスに合わせて設定 |
| ⑤ プロセッサヘッダ | 必要に応じ trcConfig.h にプロセッサのヘッダを include(例:stm32f4xx.h) |
| ⑥ 開始 | main() の初期化後に xTraceEnable(TRC_START)。初期化のみは xTraceInitialize() |
| ⑦ MAIN/IDLE パターン | 「メイン」と「アイドル」の2タスクを登録し xTraceTaskSwitch/xTraceTaskReady でループを区切ると、Actor系ビューと統計でメインループをプロファイル可能 |
取得・連携
| モード | スナップショット(RAM)/ストリーミング |
|---|---|
| 転送 | J-Link RTT / ITM / SWO / TCP/IP / UDP / USB CDC |
| IDE | STM32CubeIDE / Keil MDK / IAR / Eclipse-GDB / Lauterbach |
| ライブラリ | Percepio TraceRecorder(GitHub・Apache 2.0) |
主な用途
- ベアメタル(RTOSなし) 上のタスク切り替え・割込みの実行順序と所要時間を可視化する
- ベアメタル(RTOSなし) を用いた機器で、優先度逆転・デッドロック・応答遅れの原因を特定する
- まれにしか再現しない不具合を、記録から追跡する
導入メリット
- ベアメタル(RTOSなし) 向けに用意されており、計装の実装工数が小さい
- ソースコードを読むだけでは分からない実行時の挙動が見える
- 止めると消えるタイミング不具合を、動かしたまま追える
よくある質問
Tracealyzer Bare Metal support の見積もり・技術相談はできますか?
関連製品
お問い合わせ
対象MCU・数量・安全要件などをお聞かせください。最適な構成と概算をご提案します。
Tracealyzer — ランタイム可視化のリーダー
Percepio の全製品を見る →