µITRON開発環境 µITRON対応RTOSデバッグ・ライブラリは、µITRON仕様のリアルタイム・マルチタスクOSを使用したユーザ・プログラムのデバッグを支援する為のソフトウェアです。オプション・ソフトのRTOSデバッグ・ライブラリ(µITRON-DBGLIB)をCSIDEに追加することで、RTOS用のデバッグ機能を使用することができ、RTOSを使用した、ユーザ・プログラムのデバッグを効率良く行うことができます。

先進のデバッグ機能

ディスパッチ・ブレーク機能 ディスパッチ・ブレーク機能 *4 *6

ディスパッチ・ブレーク機能は、ディスパッチ(タスクの切り替え)を条件としてユーザ・プログラムをブレークさせることができ、次にどのタスクが実行状態になるか、どのタスクがどこで待ち状態に移行しているかなど意識する必要なくデバッグを行うことが可能になります。待ち状態のタスクが複数あり、動作しているタスクが待ち状態を解除させた時に、期待した動きが得られない場合、複数の待ち状態にあるタスクの内どのタスクが動作したかを突き止める必要があります。従来では、待ち状態のタスク全ての解除待ちアドレスにソフトウェア・ブレーク・ポイント(SBP)を設定し、動作しているタスクを実行させて、ブレークしたポイントから、どの待ち状態タスクがwakeしたかを確認するといった作業が必要でした。

この様な時、ディスパッチ・ブレーク機能を使えばタスクの切り替り(ディスパッチ)でユーザ・プログラムをブレークさせることができるため、SBPを設定せずに動作しているタスクでいきなりステップ実行させれば、タスクの切り替りでブレークし簡単にwakeしたタスクが突き止められます。

ディスパッチ・ブレーク機能

エラー・コード・ブレーク機能 エラー・コード・ブレーク機能 *4 *6

エラー・コード・ブレーク機能は、システム・コールのエラー・コードを条件としてユーザ・プログラムをブレークさせることができます。システムコールを発行するとOSは戻り値にエラーコードを付加します。しかし、ユーザプログラムで正しいエラー処理が出来ていない場合や、エラー処理そのものが無く不安定な動作をしている場合には、その不具合の原因を発見することさえ困難な場合があります。

この様な時、エラー・コード・ブレーク機能を使えば、エラーコードでのブレーク指定ができるため、予測外のエラーが発生した場合や、エラー処理のデバッグを容易に行えます。

エラー・コード・ブレーク機能

システム・コール発行機能 システム・コール発行機能 *4 *6

システム・コール発行機能は、デバッガから特定のシステム・コールを発行することができる機能です。待ち状態にあるタスクの待ちを解除させることや、サスペンド状態にすることができます。RTOSを使用したプログラムのデバッグでは、特定のタスクのデバッグをしたいことはよくありますが、他のタスクが頻繁に動作するため、そのタスクのデバッグに集中できない場合、従来はほかのタスクを停止させるようにソースを変更し、再コンパイルするような処理が必要でした。

システム・コール発行機能を使用すれば、このようなタスクをサスペンド状態にすることが簡単にできるため、デバッグのための再コンパイルが不要となり、効率よいデバッグが可能です。

 

RTOSステータス・ウィンドウからシステム・コールを発行することも可能です。

システム・コール発行機能

 

システム・コール発行機能

RTOSメモリ・プロファイラ RTOSメモリ・プロファイラ *4 *6

固定長メモリプールと可変長メモリプールの使用状況の履歴や、メモリブロックを獲得、返却するシステム・コールの呼出し履歴、メモリブロックのダンプ表示を行います。 システム・コールの呼び出し履歴からメモリブロックの解放漏れ(メモリ・リーク)や多重解放、無効なポインタでの解放、システム・コールのエラーなどを検出することも可能です。

RTOSメモリ・プロファイラ

RTOSタスク・スタック表示 RTOSタスク・スタック表示 *4 *6

現在生成中の全タスクのスタック情報を一覧表示します。 スタックの使用量やスタック・ポインタ位置はグラフィカルに表示されますので、各タスクの状況が一目で把握できます。 さらに、スタックの残量が少なくなるとスタックの使用状況に応じてエラーや警告で詳細な状況を通知します。 また、カレント・タスクや休止状態のタスクの背景色を変更することでタスクの状態も把握できます。

RTOSタスク・スタック表示

RTOSタスク・スタック・オーバーフロー・ブレーク RTOSタスク・スタック・オーバーフロー・ブレーク *4 *6

タスクのスタック使用量とスタック・ポインタを監視してスタック・オーバーフローが検出されるとユーザ・プログラムをブレークします。 ブレーク時は、オーバーフローしたタスクIDをエラー・メッセージに表示しますので問題のあったタスクを知ることができます。

RTOSタスク・スタック・オーバーフロー・ブレーク

主な特長

タスク・トレース機能 タスク・トレース機能 *1

タスク・トレース機能は、タスクの状態遷移のグラフィカル表示や、タスク毎のCPU占有率表示を実現した機能です。タスクの状態遷移表示では全体のタスク実行状態を一目で確認でき、タスクの切り替わりポイント、割込み発生ポイント、およびシステム・コール発行ポイントなどを時間軸との関係による解析や、リソースのロックやリリース・タイミングの確認などに有効です。また、CPU占有率の表示では、タスク毎のパフォーマンス比較ができるため、性能アップの確認に有効です。なお、タスクトレースの取り込みタイミングを指定できるトリガ機能もサポートしています。

遷移グラフ表示

タスクの遷移表示をグラフィカルに表示して、タスクの切り替わりや、割り込み発生ポイントを確認することができます。

遷移グラフ表示

CPU占有率表示

表示を切り替えることでタスクごとのCPU占有率をグラフ表示することもできます。

CPU占有率表示

リアルタイム表示機能 *2 *4 *5

ユーザ・プログラム実行中にタスク・トレース表示を一定時間間隔で更新する機能です。実行中にタスク・トレースの取り込みを許可、禁止することもできます。

リアルタイム表示機能

トリガ機能 *4 *5

タスクの切り替わりやシステムコールを条件にタスク・トレースの取り込みを制御することができます。

トリガ機能

ユーザ定義コメント *4 *6

ユーザ・プログラムの任意の位置でユーザ定義のコメント等をタスク・トレース情報として出力することができます。 これにより、タイムスタンプを付加したprintデバッグが可能となります。 また、ミドルウェアやドライバのAPIを埋め込むことも可能となります。

ユーザ定義コメント

コード追跡機能 *4 *6

コード追跡機能によりディスパッチ・グラフ表示(上ペイン)とイベント表示(下ペイン)の連携箇所が追跡ポインタによって示されます。 また、コード・ウィンドウ上にも追跡ポインタが表示されますので、プログラムの実行履歴をソース・レベルで解析することができます。

コード追跡機能

拡張機能 *4 *6

各項目にマウスカーソルを合わせると、その項目の詳細な説明がチップ・ヒントで表示されます。 また、ディスパッチ・グラフ表示をトレースに取得されたタスクだけに限定したり、キー操作でグラフをエッジ移動させることで前後のディスパッチ位置への移動がスムーズに行えるようになりました。

拡張機能

タスク・ブレーク機能 タスク・ブレーク機能 *3 *4 *6

タスク・ブレーク機能は、指定したタスクIDをブレーク条件とすることができるブレーク機能です。複数のタスクから共通に呼び出される関数をデバッグする場合、特定のタスクで呼ばれた時のみブレークさせることができます。

タスク・ブレーク

ステータス表示機能 ステータス表示機能 *1

ステータス表示機能は、タスクの待ち状態や、セマフォ、イベントフラグなどのタスクステータス状態を一覧で表示するRTOSデバッグの基本機能です。SH-2A、SH-4Aなどではユーザ実行中にも一定時間毎にサンプリング表示機能もサポートしています。

ステータス表示

タタスクの待ち状態や、セマフォ、イベントフラグなどの状態を一覧で表示します。

<表示ステータス>

タスク、イベントフラグ、セマフォ、メールボックス、メモリプール、周期起動ハンドラ、アラームハンドラ、レディキュー、可変長メモリプール、ランデブ、メッセージバッファ、など

ステータス表示

リアルタイム表示機能 *2 *4 *5

ユーザ・プログラム実行中にステータス表示を一定時間間隔で更新する機能です。リアルタイム性が要求されるシステムなどユーザ・プログラムを止めることなくステータス状態を参照することができます。

リアルタイム表示機能

拡張機能 *4

ヘッダ部や表示部にマウスカーソルを合わせると、その項目の説明がチップ・ヒントで表示されます。 また、ツール・バーにカレントのタスク名を表示していますので、タスクを意識したデバッグが可能となりました。

拡張機能

RTOSステータスの詳細表示 *4

RTOSステータス・ウィンドウは各種カーネル・オブジェクトの状態を一覧表示しますが、この中から特定のカーネル・オブジェクトに着目して、より詳細な情報を参照することができます。 例えばタスクを指定した場合、そのタスクの詳細な情報が表示され、タスクが待ち状態であれば、さらにその待ち要因となっているカーネル・オブジェクトの詳細な情報も同時に表示されます。 また、各項目ごとに詳細な説明が表示されますのでマニュアルを参照する必要もありません。

RTOSステータスの詳細表示

コール・スタック機能 コール・スタック機能

コール・スタック機能は、タスク毎に関数の呼び出し履歴を表示する機能です。
各タスクの待ち位置が関数レベルで確認でき、どのような経路で現在の関数に到達したか直ぐに把握できます。
また、ダブルクリックにより各タスクの待ち位置のコード表示も簡単に行えます。

コール・スタック機能

マルチコア対応

マルチコアを意識したタスクの状態遷移グラフ表示 *6

タスクの遷移状況を各プロセッサ毎に色分けしてグラフィカル表示します。
各プロセッサが実行したタスクを同じ時間軸上で確認することができるため、各プロセッサで共有するリソースのロック状態や、プロセッサ間の同期も一目で確認できます。
また、各プロセッサ毎にタスクの切り替わり、割込み発生ポイント、システム・コールの発行履歴などが簡単に把握でき、マルチコアで複雑になった実行状況を簡単に解析することができます。

マルチコアを意識したタスク・トレース機能

マルチコアを意識したCPU占有率グラフ表示 *6

各タスクのCPU占有時間、CPU占有率を各プロセッサ毎に色分けしてグラフィカル表示します。
各プロセッサ毎にタスク、割込み、アイドルの実行比率を確認することができるため、ボトルネックとなっているプロセッサ、タスクの発見が容易になり、パフォーマンス改善に役立ちます。

CPU占有率グラフ表示

対応RTOS

イー・フォース(株)

OS名 対応機能一覧 対応CPU 対応ICE
µC3/Standard ディスパッチ・ブレーク機能 エラー・コード・ブレーク機能 システム・コール発行機能
RTOSメモリ・プロファイラ RTOSタスク・スタック表示 RTOSタスク・スタック・オーバーフロー・ブレーク
タスク・ブレーク機能 タスク・トレース機能 ステータス表示機能 コール・スタック機能
ARM PALMiCE4 ARM*7
SuperH PALMiCE3 SH*8
µC3/Standard ステータス表示機能  RX PALMiCE3 RX*9
µC3/Standard+M ディスパッチ・ブレーク機能 エラー・コード・ブレーク機能 システム・コール発行機能
RTOSメモリ・プロファイラ RTOSタスク・スタック表示 RTOSタスク・スタック・オーバーフロー・ブレーク
タスク・ブレーク機能 タスク・トレース機能 ステータス表示機能 コール・スタック機能
ARM PALMiCE4 ARM*7
PALMiCE4 ARM64*7
µC3/Compact ステータス表示機能  Cortex-M3 PALMiCE4 CM*7
RX PALMiCE3 RX*9

(株)ミスポ

OS名 対応機能一覧 対応CPU 対応ICE
NORTi Version4 タスク・ブレーク機能 タスク・トレース機能 ステータス表示機能 ARM PALMiCE4 ARM*7
SuperH PALMiCE3 SH*8
H8S PALMiCE3 H8S
RX600 PALMiCE3 RX*9
NORTi Oceans ステータス表示機能 Cortex-M3 PALMiCE4 CM*7
RX600 PALMiCE3 RX*9

ルネサス エレクトロニクス(株)

OS名 対応機能一覧 対応CPU 対応ICE
HI7000/4 タスク・トレース機能 ステータス表示機能 SH-2 PALMiCE3 SH*8
HI7700/4 タスク・トレース機能 ステータス表示機能 SH-3
HI7750/4 タスク・トレース機能 ステータス表示機能 SH-4

■ ICONの説明

ディスパッチ・ブレーク機能:ディスパッチ・ブレーク機能 エラー・コード・ブレーク機能:エラー・コード・ブレーク機能
システム・コール発行機能:システム・コール発行機能 RTOSメモリ・プロファイラ:RTOSメモリ・プロファイラ
RTOSタスク・スタック表示:RTOSタスク・スタック表示 RTOSタスク・スタック・オーバーフロー・ブレーク:RTOSタスク・スタック・オーバーフロー・ブレーク
タスク・ブレーク機能:タスク・ブレーク機能 タスク・トレース機能:タスク・トレース機能
ステータス表示機能:ステータス表示機能 コール・スタック機能:コール・スタック機能
  • *1:対応OSやデバッガソフトのバージョン、製品によって仕様が異なります。
  • *2:CPUがSH-2A,SH-4Aで対応している機能です。
  • *3:CPUがCortex-A8,Cortex-A9の場合に対応している機能です。
  • *4:イー・フォース製µC3/Standardで対応している機能です。
  • *5:ミスポ製NORTi Version4で対応している機能です。
  • *6:イー・フォース製µC3/Standard+Mで対応している機能です。
  • *7:PALMiCE4用CSIDEのVer.7.16.00 以降でデバッグ・ライブラリは標準機能となりました。
  • *8:PALMiCE3用CSIDEのVer.7.05.00 以降でデバッグ・ライブラリは標準機能となりました。
  • *9:PALMiCE3用CSIDEのVer.7.06.00 以降でデバッグ・ライブラリは標準機能となりました。