(57)【要約】【課題】  本発明の課題は、マルチタスクＯＳ上で動作するタスク毎のタスク状態の時間や割合をオペレータの手間をかけずに測定し、その結果を統計的かつグラフィカルに表示することを目的とする。【解決手段】  上記課題は、リアル・タイム・オペレーティング・システムに、プロセッサが実行するタスクを切替えるディスパッチを実現する機構であり、該ディスパッチの際に該タスクの状態変化を検出するディスパッチャを備え、前記ディスパッチャは、前記タスクの状態変化を検出すると、複数のタスク各々のタスク状態を所定記憶領域で管理するサブルーチンを呼び出して、該タスクの状態を変化後の状態に変更させることにより達成される。【選択図】  図１
2010039695.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサが実行するタスクを切替えるディスパッチを実現する機構であり、該ディスパッチの際に該タスクの状態変化を検出するディスパッチャを有し、
前記ディスパッチャは、前記タスクの状態変化を検出すると、複数のタスク各々のタスク状態を所定記憶領域で管理するサブルーチンを呼び出して、該タスクの状態を変化後の状態に変更させるリアル・タイム・オペレーティング・システム。
【請求項２】
前記ディスパッチャ内で呼び出された前記サブルーチンによって、変化した前記タスクの状態と該タスクの状態が変化した時の時間とが該タスクのタスクＩＤに対応させて前記所定記憶領域にバッファリングする機能が実行されることにより、前記記憶領域には前記複数のタスクがタスク単位でその状態が管理される請求項１記載のリアル・タイム・オペレーティング・システム。
【請求項３】
カーネルの機能を呼び出すために使用される機構であり、呼び出された際に前記プロセッサが実行するタスクの状態変化を検出するシステムコールを有し、
前記システムコールは、前記タスクの状態変化を検出すると、前記サブルーチンを呼び出して、該タスクの状態を変化後の状態に変更させる請求項１記載のリアル・タイム・オペレーティング・システム。
【請求項４】
前記システムコール内で呼び出された前記サブルーチンによって、変化した前記タスクの状態と該タスクの状態が変化した時の時間とが該タスクのタスクＩＤに対応させて前記所定記憶領域にバッファリングする機能が実行されることにより、前記記憶領域には前記複数のタスクがタスク単位でその状態が管理される請求項３記載のリアル・タイム・オペレーティング・システム。
【請求項５】
前記サブルーチンによって、前記所定記憶領域から前記タスクＩＤに対応させて記憶されている前記タスクの状態が変化した時の前回の時間を取得して該状態の累積時間を算出し、該算出した値で前記所定記憶領域内の前記タスクＩＤに対応する該状態の累積時間を更新する請求項２又は４記載のリアル・タイム・オペレーティング・システム。
【請求項６】
前記サブルーチンによって、前記所定記憶領域にタスク毎に複数の状態の累積時間が管理され、該複数の状態には、実行状態、実行可能状態、待ち状態などの状態が含まれる請求項１乃至５のいずれか一項記載のリアル・タイム・オペレーティング・システム。
【請求項７】
ターゲットの所定記憶領域にメモリアクセス可能なデバッガと、
オペレータによるトレース取得の操作に応じて前記デバッガにメモリアクセスを行わせることによって前記所定記憶領域に格納されている複数のタスクの状態変化に係るトレース情報を取得し、該トレース情報を用いてタスク毎の状態変化を統計的に表す表示画面を作成するアナライザとしてコンピュータに機能させるデバッグ装置。
【請求項８】
前記アナライザは、タスク毎に、複数の状態各々の累積時間を統計情報として示し、全体の累積時間に対する各状態の累積時間の割合をグラフ表示させた前記表示画面を作成する請求項７記載のデバッグ装置。
【請求項９】
前記アナライザは、前記オペレータによるトレース開始の操作に応じて前記デバッガに前記ターゲットのユーザメモリ領域に格納されているタスク情報を読み出させ、該タスク情報を用いて該デバッガに前記所定記憶領域を初期設定させる請求項８記載のデバッグ装置。
【請求項１０】
前記タスク情報には、前記複数のタスク各々を識別するタスクＩＤとタスクの現在の状態とが含まれる請求項９記載のデバッグ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のタスクの状態に係るトレース情報の取得及び表示を簡単な操作で任意に行えるようにしたマルチタスク・オペレーティング・システム及びデバッグ装置に関する。
【背景技術】
【０００２】
従来より、マルチタスク・オペレーティング・システム（以下、マルチタスクＯＳという）上で動作するアプリケーション・ソフトウェアや、マルチタスクＯＳを利用した組み込みシステムのデバッグ作業において、各タスクが設計通りに動作しているか、効率良く動作しているかを、マルチタスクＯＳ内で保持しているトレース情報からタスク毎のタスク状態をオペレータが取得して検証していた。
【０００３】
例えば、プログラム内のタスク状態が格納してあるアドレスとタスク番号とをオペレータが入力し、そのアドレスに書き込みがあった場合にタスク状態を取得して表示させたり、タスクが停止時間の許容値を超えた場合に停止原因毎に表示したり、オペレータによって設定された時間以上で指定されたタスクが指定された状態であるか否かを検出したりするようにしてデバッグ作業を支援する技術が知られている。
【特許文献１】特開昭６０−０３７０４３号公報
【特許文献２】特開平９−１７９７５４号公報
【特許文献３】特開２０００−２１５０８４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述したような従来技術では、オペレータが検証したいタスク、タスク状態、検出するための条件などを設定する場合はオペレータによる種々の操作が必要となり、タスクの停止状態を監視する場合はタスクの実行状態と停止状態しか評価することができない。
【０００５】
従って、トレース中のタスクがどのような状態にあったのか、動作全体における複数のタスクの状態は全体の動作バランスとして効率的であったのかを検証することができなかった。
【０００６】
よって、本発明の目的は、マルチタスクＯＳ上で動作するアプリケーション・ソフトウェアや、マルチタスクＯＳを用いた組込みシステムにおいて、タスク毎のタスク状態の時間や割合をオペレータの手間をかけずに測定し、その結果を統計的かつグラフィカルに表示することによりシステムの評価を容易に行えるようにすることである。
【課題を解決するための手段】
【０００７】
上記課題を解決するため、リアル・タイム・オペレーティング・システムに、プロセッサが実行するタスクを切替えるディスパッチを実現する機構であり、該ディスパッチの際に該タスクの状態変化を検出するディスパッチャを備え、前記ディスパッチャは、前記タスクの状態変化を検出すると、複数のタスク各々のタスク状態を所定記憶領域で管理するサブルーチンを呼び出して、該タスクの状態を変化後の状態に変更させるように構成する。
【０００８】
また、デバッグ装置に、ターゲットの所定記憶領域にメモリアクセス可能なデバッガと、オペレータによるトレース取得の操作に応じて前記デバッガにメモリアクセスを行わせることによって前記所定記憶領域に格納されている複数のタスクの状態変化に係るトレース情報を取得し、該トレース情報を用いてタスク毎の状態変化を統計的かつグラフィカルに表す表示画面を作成するアナライザとしてコンピュータに機能させるように構成する。
【発明の効果】
【０００９】
マルチタスクＯＳを用いた組込みシステムのタスクプログラムで、複数のタスク各々のタスク状態に係る情報を、オペレータの手間をかけずに取得及び表示させることが可能になる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の実施の形態を図面に基づいて説明する。
【００１１】
マルチタスク・オペレーティング・システム（以下、マルチタスクＯＳという）において管理されるタスクの状態は、大きく、
・ＲＵＮ状態（実行状態）：プロセッサによって処理されている状態
・実行以外の状態：プロセッサによって処理されていない状態
とに分けられる。
【００１２】
更に、この実行以外の状態として、
・ＲＥＡＤＹ状態（実行可能状態）：いつでも実行することが可能な状態
・ＷＡＩＴＩＮＧ状態（待ち状態）：一定時間停止している状態
・ＷＡＩＴＩＮＧ−ＳＵＳＰＥＮＤ状態（二重待ち状態）：ＷＡＩＴＩＮＧ状態とＳＵＳＰＥＮＤ状態の二つの待ち条件を満たしている状態
・ＳＵＳＰＥＮＤ状態（強制待ち状態）：他のタスクによって強制的に待ちにされた状態
・ＤＯＲＭＡＮＴ状態（休止状態）：タスクとして実行開始できる状態
などがある。
【００１３】
本実施例では、動作中のマルチタスクＯＳにおける複数のタスクの各々の状態を所定の記憶領域（後述されるトレースメモリ）で管理し、タスクの状態が変化するタイミングでタスクの状態を取得して随時更新する。タスクの状態が変化するタイミングとして、ディスパッチャが呼ばれる時とカーネルの機能を呼び出すためのシステムコールが行われる時とに着目し、例えば、図１に示すような処理フローが実行される。図１は、タスクの状態の変化に応じた処理フローを示す図である。
【００１４】
図１において、タスクのディスパッチャが発生し、ディスパッチャが呼ばれると（ａ）、ディスパッチャ内でタスク状態に変化があるか否かをチェックする（ｂ）。一方で、システムコールが呼ばれた場合（ｃ）にも、システムコール内でタスク状態に変化があるか否かをチェックする（ｄ）。
【００１５】
タスク状態に変化を検出した場合、タスク状態の変更を通知するために備えられたサブルーチンにジャンプする（ｅ）。そのタスク状態変更通知用のサブルーチン内で、タスク毎のタスク状態、システム時間などのデータをバッファリングする（ｆ）。そして、バッファリングされたデータを、ターゲットのプロセッサをエミュレートするエミュレータを経由して取得し、デバッグ装置でデータの解析及び統計情報、それら結果に基づくグラフ表示などを行う（ｇ）。エミュレータとして、例えばＩＣＥ（登録商標）（InCircuit Emulator）等が用いられる。
【００１６】
このような処理を、マルチタスクＯＳを用いたアプリケーション・ソフトウェアや、マルチタスクＯＳを用いた組み込みシステムにおいて、タスク毎のタスク状態に係る情報表示をマルチタスクＯＳとデバッグ装置とを連携して行う。
【００１７】
図２は、開発環境を実現する組み込みシステムの構成例を示すブロック図である。図２に示す組み込みシステム１０は、プロセッサ１と、入力装置２と、モニタ３と、メモリ４と、デバッグ装置５とを有し、互いにバスで接続される。プロセッサ１は、メモリ４からプログラムコードを読み出して組み込みシステム１０全体を制御する。入力装置２は、オペレータにタスク毎のタスク状態を取得するかどうかを選択させる。モニタ３は、デバッグ装置５で解析したデータから統計情報またはグラフを表示する。メモリ４は、マルチタスクＯＳ、タスクプログラムなどが格納され、プロセッサ１に読み出されて実行される。デバッグ装置５は、マルチタスクＯＳでバッファリングしたトレース情報を解析し、タスク毎のタスク状態を取得する。
【００１８】
図３は、デバッグ装置の構成例を示すブロック図である。図３において、デバッグ装置５は、言語ツール２１と、ロードモジュールファイル２２と、統合開発環境（ＩＤＥ：Integrated Development Environment）２３と、アナライザ２４と、ＲＩＭ（RTOS Interface Module）２５と、デバッガ２６として機能する種々のプログラムを有し、これらプログラムがメモリ４に読み出され、プロセッサ１によって実行される。
【００１９】
言語ツール２１には、マルチタスクＯＳとして動作するＲＴＯＳ（Real Time Operating System）７ａと、ターゲット１ａを検証するためのデバッグモジュール７ｂと、ターゲット１ａに組み込まれたユーザアプリケーション７ｃとが与えられる。そして、データ処理プログラムとしてのロードモジュールファイル２２が作成される。ＲＴＯＳ７ａが用いられる理由は、本実施例における開発環境を実現する組み込みシステム１０では、例えば、オペレータがボタンを押した時点でオペレーティング・システム（ＯＳ）が処理する必要があり、そのためＲＴＯＳ７ａが用いられる。
【００２０】
ロードモジュールファイル２２は、開発処理を進めるための統合開発環境（ＩＤＥ）２３に与えられる。このＩＤＥ２３の内部には、アナライザ２４とデバッガ２６とが備えられ、その中間にはＲＴＯＳインターフェース・モジュール（ＲＩＭ）２５が備えられ、アナライザ２４とＲＩＭ２５とはＲＴＯＳアクセス・インターフェース（ＲＩＦ）８ａによって接続され、またＲＩＭ２５とデバッガ２６とはターゲット・アクセス・インターフェース（ＴＩＦ）８ｂによって接続されている。アナライザ２４、ＲＩＭ２５、デバッガ２２６は、例えばＤＬＬ（Dynamic Link Library）ファイルで備えられる。デバッガ２６は、デバッガ２６に備えられたメモリアクセス部によってＩＣＥ６を介してターゲット１ａの内部のトレースメモリ７ｄにアクセスすることができる。
【００２１】
ターゲット１ａは、例えば開発中のプロセッサであり、ターゲット１ａに備えられたメモリ９内部にはＲＴＯＳ７ａ、デバッグモジュール７ｂ、ユーザアプリケーション７ｃ、トレースメモリ７ｄ等を格納するためのプログラム領域及びユーザメモリ領域を備えている。ターゲット１ａは、所定のインターフェースによってＩＣＥ６と接続され、ＩＣＥ６は更に所定のインターフェースによって組み込みシステム１に接続されデバッガ２６と通信する。
【００２２】
次に、オペレータによるトレース開始要求に応じて、デバッグ装置５がターゲット１ａのトレースメモリ７ｄを初期化するためのシーケンスフローについて説明する。図４は、トレースメモリを初期化するためのシーケンスフローを示す図である。
【００２３】
図４において、アナライザ２４によってモニタ３に表示される画面３１からオペレータが入力装置２を用いてトレース開始ボタン３２を選択することによってトレース開始要求が発生すると、アナライザ２４は、ターゲット１ａのユーザメモリ領域にあるタスク情報などを読み出すために、ＲＩＭ２５にメモリ参照要求を発行する（Ｓ１）。メモリ参照要求に応じて、ＲＩＭ２５は、メモリ９の内容を読み出す指示がデバッガ２６に与えられ（Ｓ２）、デバッガ２６からメモリアクセス部によってＩＣＥ６を介してターゲット１ａのメモリ９が制御され、タスク情報などのデータを読み出すためにメモリ９に対するデータリードアクセスが成される（Ｓ３）。
【００２４】
読み出されたメモリ９の内容、すなわちタスク情報などのデータは、ＩＣＥ６によってメモリアクセス部を介してデバッガ２６に通知され（Ｓ４）、デバッガ２６からＲＩＭ２５に通知される（Ｓ５）。そして、ＲＩＭ２５によってアナライザ２４が必要とするタスク情報などのデータがアナライザ２４に通知されて（Ｓ６）、ターゲット１ａのメモリ９に格納されているタスク情報などのデータの取得が完了する。
【００２５】
アナライザ２４は、取得したタスク情報などのデータを初期化情報としてターゲット１ａのトレースメモリ７ｄに書き込むために、ＲＩＭ２５にメモリ書き込み要求を行う（Ｓ７）。ＲＩＭ２５は、初期化情報をトレースメモリ７ｄに書き込む指示をデバッガ２６に行い（Ｓ８）、デバッガ２６からメモリアクセス部によってＩＣＥ６を介してターゲット１ａのトレースメモリ７ｄへのデータライトアクセスがなされて、トレースメモリ７ｄの初期化が終了する。トレースメモリ７ｄに書き込まれる初期化情報には、複数のタスク各々を識別するタスクＩＤとトレース開始時点のタスク状態とが対応させて示される。
【００２６】
トレースメモリ７ｄに初期化情報が設定されると、トレース中は、図１に示すディスパッチャ又はシステムコールが呼ばれる毎に変化したタスク状態がトレースメモリ７ｄに格納され、タスク情報が逐次更新される。トレースメモリ７ｄの内容は、トレース取得要求によって読み出され、画面３１にグラフ表示３４にデータ処理されて表示される。
【００２７】
図５は、トレース開始後にトレースを取得するシーケンスフローを示す図である。図５において、アナライザ２４によってモニタ３に表示される画面３１からオペレータが入力装置２を用いてトレース取得ボタン３３を選択することによってトレース取得要求が発生すると、アナライザ２４は、ターゲット１ａのユーザメモリ領域にあるトレースメモリ９の内容を読み出すために、ＲＩＭ２５にトレースログの取得が要求される（Ｓ１１）。
【００２８】
そして、ＲＩＭ２５によってトレースメモリ７ｄの内容を読み出す指示がデバッガ２６に与えられ（Ｓ１２）、デバッガ２６からメモリアクセス部によってＩＣＥ６を介してターゲット１ａのトレースメモリ７ｄの内容を読み出すためにメモリ９に対するデータリードアクセスが成される（Ｓ１３）。
【００２９】
読み出されたトレースメモリ７ｄの内容、すなわちトレース情報は、ＩＣＥ６を介してメモリアクセス部によってデバッガ２６に通知され（Ｓ１４）、デバッガ２６からＲＩＭ２５に通知される（Ｓ１５）。そして、ＲＩＭ２５によってアナライザ２４が必要とするトレース情報がアナライザ２４に通知されて（Ｓ１６）、ターゲット１ａのトレースメモリ７ｄに格納されているトレース情報の取得が完了する。
【００３０】
次に、ターゲット１ａのＲＴＯＳ７ａによって提供される各種処理について説明する。図６は、ディスパッチャ処理のフローチャート図である。図６に示すディスパッチャ処理は、図１の（ａ）、（ｂ）及び（ｅ）に対応する。図６において、タスクのディスパッチャが発生し、ディスパッチャが呼び出され、ディスパッチ処理を行うディスパッチャに処理が移る（Ｓ２１）。ディスパッチャ内でタスクの状態が変化するか否かをチェックし（Ｓ２２）、タスクの状態が変化している場合は、タスク変更通知用のサブルーチンが呼び出される（Ｓ２３）。一方、タスクの状態が変化しない場合はタスク変更通知用のサブルーチンを呼び出すことなく処理を終了する。ディスパッチャは、切り替える前のタスクのタスクＩＤ及びタスク状態と、切り替えた後のタスクのタスクＩＤ及びタスク状態とを、タスク変更通知用のサブルーチンを呼び出す際に通知する。
【００３１】
図７は、システムコール処理のフローチャート図である。図７に示すシステムコール処理は、図１の（ｃ）、（ｄ）及び（ｅ）に対応する。図７において、システムコールが呼び出されると（Ｓ３１）、システムコール内でタスクの状態が変化するか否かをチェックし（Ｓ３２）、タスクの状態が変化している場合は、タスク変更通知用のサブルーチンが呼び出される（Ｓ３３）。一方、タスクの状態が変化しない場合はタスク変更通知用のサブルーチンを呼び出すことなく処理を終了する。システムコールは、処理対象となったタスクのタスクＩＤ及びタスク状態を、タスク変更通知用のサブルーチンを呼び出す際に通知する。
【００３２】
図８は、タスク状態通知用のサブルーチンが行う処理のフローチャート図である。図８に示すサブルーチンによる処理は、図１の（ｅ）、（ｆ）及び（ｇ）に対応する。図８において、ディスパッチが発生した場合又はシステムコールが呼び出された場合で、かつ、タスクの状態が変更された場合、タスク状態変更通知用のサブルーチンが呼び出され、サブルーチンに処理が移る（Ｓ４０）。
【００３３】
タスク状態変更通知用のサブルーチンは、トレースメモリ７ｄを参照して、呼び出された際に通知されたタスクＩＤに対応する変更前のタスク状態とシステム時刻とから、変更前のタスク状態の経過時間を計算し、そのタスク状態の累積時間としてトレースメモリ７ｄにバッファリングする（Ｓ４１）。また、呼び出された際に通知されたタスク状態を変更後のタスク状態として現在のシステム時刻と共にそのタスクＩＤに対応させてトレースメモリ７ｄにバッファリングを行う（Ｓ４２）。そして、サブルーチンでの処理を終了する。
【００３４】
上述したようなタスク状態通知用のサブルーチンをシステムコール及びディスパッチャから呼び出すように構成することで、タスクの状態変化を随時トレースメモリ７ｄに保存し管理することができる。このようなサブルーチンは、ＲＴＯＳ７ａに備えるようにしてもよいし、例えば、システムコール及びディスパッチャから関数コール可能なライブラリに備えるようにしてもよい。また、上述したサブルーチンによって複数のタスクの状態変化が逐次管理されるため、アナライザ２４からのトレース取得要求に応じて、トレース開始からの現在の複数のタスクの各々の状態を示すトレース情報を提供することが可能となる。
【００３５】
図９は、トレースメモリに格納されるトレース情報の例を示す図である。図９において、トレースメモリ７ｄ内に格納されるトレース情報は、タスクＩＤに対応させて、現在のタスク状態、タスク状態が変更された時のシステム時刻、ＲＵＮ状態の累積時間、ＲＥＡＤＹ状態の累積時間、ＷＡＩＴＩＮＧ状態の累積時間、ＷＡＩＴＩＮＧ−ＳＵＳＰＥＮＤ状態の累積時間、ＳＵＳＰＥＮＤ状態の累積時間、ＤＯＲＭＡＮＴ状態の累積時間などの項目で構成される。
【００３６】
例えば、トレース情報として、タスクＩＤ「ＩＤＬＥ」に対応させて、現在のタスク状態「ＲＥＡＤＹ」、タスク状態が変更された時のシステム時刻「２０」、ＲＵＮ状態の累積時間「１０」、ＲＥＡＤＹ状態の累積時間「９０」、ＷＡＩＴＩＮＧ状態の累積時間「０」、ＷＡＩＴＩＮＧ−ＳＵＳＰＥＮＤ状態の累積時間「０」、ＳＵＳＰＥＮＤ状態の累積時間「０」、ＤＯＲＭＡＮＴ状態の累積時間「０」のように項目値が格納される。
【００３７】
また、このトレース情報では、タスクがタスクＩＤ「ＴＡＳＫ−１」、「ＴＡＳＫ−２」、「ＴＡＳＫ−３」のように存在する場合を示している。従って、タスクＩＤ「ＴＡＳＫ−１」に対応させて、現在のタスク状態「ＲＵＮ」、タスク状態が変更された時のシステム時刻「８０」、ＲＵＮ状態の累積時間「５０」、ＲＥＡＤＹ状態の累積時間「２０」、ＷＡＩＴＩＮＧ状態の累積時間「１０」、ＷＡＩＴＩＮＧ−ＳＵＳＰＥＮＤ状態の累積時間「０」、ＳＵＳＰＥＮＤ状態の累積時間「０」、ＤＯＲＭＡＮＴ状態の累積時間「２０」のように項目値が格納される。
【００３８】
また、タスクＩＤ「ＴＡＳＫ−２」に対応させて、現在のタスク状態「ＲＥＡＤＹ」、タスク状態が変更された時のシステム時刻「５０」、ＲＵＮ状態の累積時間「０」、ＲＥＡＤＹ状態の累積時間「５０」、ＷＡＩＴＩＮＧ状態の累積時間「４０」、ＷＡＩＴＩＮＧ−ＳＵＳＰＥＮＤ状態の累積時間「０」、ＳＵＳＰＥＮＤ状態の累積時間「０」、ＤＯＲＭＡＮＴ状態の累積時間「１０」のように項目値が格納される。
【００３９】
更に、タスクＩＤ「ＴＡＳＫ−３」に対応させて、現在のタスク状態「ＲＥＡＤＹ」、タスク状態が変更された時のシステム時刻「５０」、ＲＵＮ状態の累積時間「１０」、ＲＥＡＤＹ状態の累積時間「１０」、ＷＡＩＴＩＮＧ状態の累積時間「１０」、ＷＡＩＴＩＮＧ−ＳＵＳＰＥＮＤ状態の累積時間「１０」、ＳＵＳＰＥＮＤ状態の累積時間「１０」、ＤＯＲＭＡＮＴ状態の累積時間「５０」のように項目値が格納される。
【００４０】
図１０は、アナライザによって表示されるトレース情報のグラフ表示例を示す図である。図１０において、アナライザ２４は、図５に示すシーケンスによって図９に示すようなトレース情報をターゲット１ａのトレースメモリ７ｄから取得すると、そのトレース情報で示されるタスク毎のトレース開始からトレース取得までの各タスク状態の累積時間に基づいて、タスク状態の割合を算出して、グラフ表示３４のような表示画面を作成してモニタ３に表示する。
【００４１】
グラフ表示３４では、複数のタスクのトレース情報が示され、各タスクのタスクＩＤに対応させて、グラフで示した算出したタスク状態の割合と、各タスク状態の累積時間とが示される。タスク状態には、図９に示すトレースメモリ７ｄ内のトレース情報のタスク状態の累積時間の項目に応じた、ＲＵＮ状態、ＲＥＡＤＹ状態、ＷＡＩＴＩＮＧ状態、ＷＡＩＴＩＮＧ−ＳＵＳＰＥＮＤ状態、ＳＵＳＰＥＮＤ状態、そしてＤＯＲＭＡＮＴ状態があり、各々の累積時間が示される。
【００４２】
ターゲット１ａを検証するオペレータは、タスク毎に操作することなく、簡単な操作で複数のタスクの状態に係るトレース情報の取得を任意に行うことができる。また、複数のタスクの状態を示すグラフ表示３４によって、開発中のユーザアプリケーション７ｂの全体的な動作状況を検証することができる。例えば、タスク「ＴＡＳＫ−２」のＲＥＡＤＹ状態が、他のタスク「ＴＡＳＫ−１」の２０％及び「ＴＡＳＫ−３」の１０％と比べて５０％と高い割合を示すことから、何らかの要因でタスク「ＴＡＳＫ−２」の実行が延期されている可能性があるため、プログラムを最適化することにより性能の向上を見込むことができる。
【００４３】
以上の説明に関し、更に以下の項を開示する。
（付記１）
プロセッサが実行するタスクを切替えるディスパッチを実現する機構であり、該ディスパッチの際に該タスクの状態変化を検出するディスパッチャを有し、
前記ディスパッチャは、前記タスクの状態変化を検出すると、複数のタスク各々のタスク状態を所定記憶領域で管理するサブルーチンを呼び出して、該タスクの状態を変化後の状態に変更させるリアル・タイム・オペレーティング・システム。
（付記２）
前記ディスパッチャ内で呼び出された前記サブルーチンによって、変化した前記タスクの状態と該タスクの状態が変化した時の時間とが該タスクのタスクＩＤに対応させて前記所定記憶領域にバッファリングする機能が実行されることにより、前記記憶領域には前記複数のタスクがタスク単位でその状態が管理される付記１記載のリアル・タイム・オペレーティング・システム。
（付記３）
カーネルの機能を呼び出すために使用される機構であり、呼び出された際に前記プロセッサが実行するタスクの状態変化を検出するシステムコールを有し、
前記システムコールは、前記タスクの状態変化を検出すると、前記サブルーチンを呼び出して、該タスクの状態を変化後の状態に変更させる付記１記載のリアル・タイム・オペレーティング・システム。
（付記４）
前記システムコール内で呼び出された前記サブルーチンによって、変化した前記タスクの状態と該タスクの状態が変化した時の時間とが該タスクのタスクＩＤに対応させて前記所定記憶領域にバッファリングする機能が実行されることにより、前記記憶領域には前記複数のタスクがタスク単位でその状態が管理される付記３記載のリアル・タイム・オペレーティング・システム。
（付記５）
前記サブルーチンによって、前記所定記憶領域から前記タスクＩＤに対応させて記憶されている前記タスクの状態が変化した時の前回の時間を取得して該状態の累積時間を算出し、該算出した値で前記所定記憶領域内の前記タスクＩＤに対応する該状態の累積時間を更新する付記２又は４記載のリアル・タイム・オペレーティング・システム。
（付記６）
前記サブルーチンによって、前記所定記憶領域にタスク毎に複数の状態の累積時間が管理され、該複数の状態には、実行可能状態、待ち状態、二重待ち状態、停止状態、及び休止状態が含まれる付記１乃至６のいずれか一項記載のリアル・タイム・オペレーティング・システム。
（付記７）
ターゲットの所定記憶領域にメモリアクセス可能なデバッガと、
オペレータによるトレース取得の操作に応じて前記デバッガにメモリアクセスを行わせることによって前記所定記憶領域に格納されている複数のタスクの状態変化に係るトレース情報を取得し、該トレース情報を用いてタスク毎の状態変化を統計的かつグラフィカルに表す表示画面を作成するアナライザとしてコンピュータに機能させるデバッグ装置。
（付記８）
前記アナライザは、タスク毎に、複数の状態各々の累積時間を統計情報として示し、全体の累積時間に対する各状態の累積時間の割合をグラフ表示させた前記表示画面を作成する付記７記載のデバッグ装置。
（付記９）
前記アナライザは、前記オペレータによるトレース開始の操作に応じて前記デバッガに前記ターゲットのユーザメモリ領域に格納されているタスク情報を読み出させ、該タスク情報を用いて該デバッガに前記所定記憶領域を初期設定させる付記８記載のデバッグ装置。
（付記１０）
前記タスク情報には、前記複数のタスク各々を識別するタスクＩＤとタスクの現在の状態とが含まれる付記９記載のデバッグ装置。
（付記１１）
前記複数の状態には、実行可能状態、待ち状態、二重待ち状態、停止状態、及び休止状態が含まれる付記８乃至１０のいずれか一項記載のデバッグ装置。
【００４４】
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【図面の簡単な説明】
【００４５】
【図１】タスクの状態の変化に応じた処理フローを示す図である。
【図２】開発環境を実現する組み込みシステムの構成例を示すブロック図である。
【図３】デバッグ装置の構成例を示すブロック図である。
【図４】トレースメモリを初期化するためのシーケンスフローを示す図である。
【図５】トレース開始後にトレースを取得するシーケンスフローを示す図である。
【図６】ディスパッチャ処理のフローチャート図である。
【図７】システムコール処理のフローチャート図である。
【図８】タスク状態通知用のサブルーチンが行う処理のフローチャート図である。
【図９】トレースメモリに格納されるトレース情報の例を示す図である。
【図１０】アナライザによって表示されるトレース情報のグラフ表示例を示す図である。
【符号の説明】
【００４６】
１          プロセッサ
１ａ        ターゲット
２          入力装置
３          モニタ
４          メモリ
５          デバッグ装置
６          ＩＣＥ
７ａ        ＲＴＯＳ
７ｂ        デバッグモジュール
７ｃ        ユーザアプリケーション
９          メモリ
１０        組込みシステム
２１        言語ツール
２２        ロードモジュール
２３        ＩＤＥ
２４        アナライザ
２５        ＲＩＭ
２６        デバッガ
【図１】
2010039695.tif 000003
【図２】
2010039695.tif 000004
【図３】
2010039695.tif 000005
【図４】
2010039695.tif 000006
【図５】
2010039695.tif 000007
【図６】
2010039695.tif 000008
【図７】
2010039695.tif 000009
【図８】
2010039695.tif 000010
【図９】
2010039695.tif 000011
【図１０】
2010039695.tif 000012