JP2006099755A - マルチタスクシステムをデバッグするためのデバッグシステム - Google Patents

マルチタスクシステムをデバッグするためのデバッグシステム Download PDF

Info

Publication number
JP2006099755A
JP2006099755A JP2005254017A JP2005254017A JP2006099755A JP 2006099755 A JP2006099755 A JP 2006099755A JP 2005254017 A JP2005254017 A JP 2005254017A JP 2005254017 A JP2005254017 A JP 2005254017A JP 2006099755 A JP2006099755 A JP 2006099755A
Authority
JP
Japan
Prior art keywords
task
program
multitask
interrupt
processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2005254017A
Other languages
English (en)
Inventor
Shinichi Kimura
晋一 木村
Giichi Yamamoto
義一 山本
Motoyuki Itou
基志 伊藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2005254017A priority Critical patent/JP2006099755A/ja
Publication of JP2006099755A publication Critical patent/JP2006099755A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】 マルチタスクシステムのデバッグを容易とするデバッグシステムとデバッグ方法、および、そのようなデバッグ方法を採用できる回路等を提供する。
【解決手段】 デバッグシステムは、デバッガプログラムを実行するホストコンピュータと、デバッガプログラムによってデバッグされる第1マルチタスクシステム、および、非デバッグ対象の第2マルチタスクシステムを有する複合システムが構築された回路とを含む。回路は、プログラムが読み込まれたメモリ、および、メモリ上のプログラムを実行可能な処理部を備えている。メモリは、第1マルチタスクシステムの1以上のタスクプログラムを管理する第1オペレーティングシステムと、第1オペレーティングシステムを第1タスクプログラムとして管理し、かつ、第1タスクプログラムとは異なる1以上の第2タスクプログラムを管理する第2オペレーティングシステムとを格納する。
【選択図】図4

Description

本発明は、マルチタスクシステムをデバッグするためのデバッグシステムおよびその方法に関する。より具体的には、本発明は複数のタスク処理と割込み処理で構成されるマルチタスクシステムのプログラムをデバッグするためのデバッグ方法、および、そのデバッグ方法を用いてデバッグを行うことが可能なシステム、回路等に関する。
従来のコンピュータシステムでは、1つのジョブを1つのタスクとして管理するシングルタスクプログラムを1つのプロセッサで処理していた。しかし近年は、一連の独立した複数のタスクで構成されるマルチタスクプログラムを1つのプロセッサ上で処理するマルチタスクシステムも多く開発されている。マルチタスクプログラムによれば、コンピュータ上で複数のタスクを見かけ上同時に(並列的に)実行させることが可能であり作業効率を向上させることができる。
コンピュータシステムの例として、光ディスクを利用して情報の記録および/または再生を行う光ディスクシステムが知られている。図20は、従来の光ディスクシステムの概略的な構成を示す。光ディスクシステムは、光ディスク8が装填可能なドライブ装置91およびホストコンピュータ92から構成され、ホストインタフェースバス93を介して接続されている。
この光ディスクシステムは、システムコントローラ94および光ディスクコントローラ95を含んでいる。システムコントローラ94および光ディスクコントローラ95は独立したLSIとして実装されており、各々が別個のマルチタスクシステムとして機能している。
システムコントローラ94は、内蔵されたホスト制御タスク1711とドライブ制御タスク1722に従って、ドライブ装置91の全体の動作を制御する。例えば、システムコントローラ94のCPU96は、第1OSによって管理されるホスト制御タスク1711、ドライブ制御タスク1712を処理している。
一方、光ディスクコントローラ95は、各タスクに従って、光ディスク8への情報の記録と再生のためのアクセスを制御している。例えば、光ディスクコントローラ95のCPU97は、第2OSによって管理されるサーボ制御タスク1721、ディスク制御タスク1722を処理している。
システムコントローラ94および光ディスクコントローラ95の各タスクは、連携しながらドライブ装置91を動作させる。
例えば、システムコントローラ94のドライブ制御タスク1712は、光ディスクコントローラ95のディスク制御タスク1722に対してデータのリード要求またはライト要求を出す。すると、ディスク制御タスク1722はデータの読み出しまたは書き込みを実行する。読み出されたデータまたは書き込み完了/失敗の通知は、ドライブ制御タスク1712に返される。
マルチタスクプログラムの開発とともに、マルチタスクプログラムをデバッグする技術が種々開発されている。例えば特許文献1は、オペレーティング・システム(以下、「OS」と記す)上で動作するタスクの中から複数のタスクを指定し、指定されたタスクの何れかの実行が停止され、またはブレークポイントによって停止された場合に、デバッグ対象である他の指定されたタスクも同時に停止するタスクデバッグ方法を開示している。
また特許文献2は、デバッグのために、マルチタスクジョブを構成する任意のタスクが予め設定されたブレークポイントに到達し、または例外が発生した時点で、そのタスクと同一マルチタスクジョブグループ内のすべてのタスクの実行を停止させるマルチタスク制御方法を開示する。このマルチタスク制御方法によれば、任意の時点でそのマルチタスクジョブグループ内のすべてのタスクの実行を再開させることができる。
特開平2−300942号公報 特開平4−314141号公報
図20に示すような独立したマルチタスクシステムが複数含まれるコンピュータシステムにおいて、従来のデバッグ方法を用いて特定のマルチタスクシステムをデバッグすると、以下の2つの問題を生じる。
すなわち、第1の問題はシステムコントローラ94および光ディスクコントローラ95の各々に対して、個々のハードウェアに依存した第1OSおよび第2OSを開発し、さらに各OS上で実行されるタスクプログラムを作成する必要が生じる。これでは各コントローラのLSIの部品コストだけでなく、OSおよびタスクの開発コストが莫大にかかる。
また第2の問題は、従来のマルチタスクシステム用デバッグ方法では、割込み処理プログラムなどのデバッグができないことである。これは、従来のデバッグ方法が、デバッグ機能をタスクレベルで実現していることに起因する。すなわち、割込み処理を行うプログラムはタスクとして管理されておらず、独立したプログラムとして存在する。したがって割込み処理プログラムのデバッグをタスクのデバッグと同様に行うことができないため、割込み処理を含めたマルチタスクシステム全体のデバッグはできない。他のコントローラからの割込み要求を受け入れるためには、割込み処理プログラムのデバッグ環境も整える必要がある。
本発明の目的は、マルチタスクシステムのデバッグを容易とするデバッグシステムとデバッグ方法、および、そのようなデバッグ方法を採用できる回路等を提供することにある。
本発明によるデバッグシステムは、デバッガプログラムを実行するホストコンピュータと、前記デバッガプログラムによってデバッグされる第1マルチタスクシステム、および、非デバッグ対象の第2マルチタスクシステムを有する複合システムが構築された回路とを含む。前記回路は、プログラムが格納されたメモリ、および、前記メモリ上のプログラムを実行可能な処理部を備えている。前記メモリは、前記第1マルチタスクシステムの1以上のタスクプログラムを管理する第1オペレーティングシステムと、前記第1オペレーティングシステムを第1タスクプログラムとして管理し、かつ、前記第1タスクプログラムとは異なる1以上の第2タスクプログラムを管理する第2オペレーティングシステムとを格納する。
前記メモリには、前記第1マルチタスクシステムの実行を制御するためのモニタプログラムがさらに格納されていてもよい。前記処理部は、前記デバッガプログラムを実行した前記ホストコンピュータからのコマンドに応答して前記モニタプログラムを実行し、前記コマンドに応じた処理を実行して、前記ホストコンピュータに応答を返してもよい。
前記メモリは、前記第2オペレーティングシステムおよび前記1以上の第2タスクプログラムを、前記第2マルチタスクシステムとして格納してもよい。
前記メモリは、前記1以上の第2タスクプログラムとして、第3オペレーティングシステムおよび前記第3オペレーティングシステムによって管理される第3タスクプログラムを格納し、前記第3オペレーティングシステムおよび前記第3タスクプログラムを、前記第2マルチタスクシステムとして格納してもよい。
前記回路はスタックをさらに備え、前記処理部は、前記第1マルチタスクシステムの実行環境を前記スタックに退避し、その後、前記モニタプログラムに基づいて、前記第1マルチタスクシステムに含まれる1以上のタスクプログラムの実行を停止してもよい。
前記処理部は、前記第1マルチタスクシステムに含まれるタスクプログラムの実行を停止する際に、前記第1オペレーティングシステムを停止状態に遷移させてもよい。
前記処理部は、処理が予め設定されたブレークポイントに到達すると、前記第1オペレーティングシステムを停止状態に遷移させて、前記第1マルチタスクシステムに含まれるタスクプログラムの実行を停止してもよい。
前記処理部は、処理に例外が発生すると、前記第1オペレーティングシステムを停止状態に遷移させて、前記第1マルチタスクシステムに含まれるタスクプログラムの実行を停止してもよい。
前記処理部は、前記第1オペレーティングシステム上で、前記第1マルチタスクシステムの割込み処理を実行可能であり、前記割込み処理を前記第1マルチタスクシステムのいずれのタスクプログラムよりも優先して実行してもよい。
前記処理部は、前記第1オペレーティングシステム上で、前記第1マルチタスクシステムの割込み処理を実行可能であり、前記処理部は、前記割込み処理を前記複合システムのいずれのタスクプログラムより優先して実行してもよい。
前記処理部によって実行される前記第1オペレーティングシステムは、前記割込み処理を割込みタスクプログラムとして管理しており、前記処理部は、前記割込みタスクプログラムを前記第1マルチタスクシステムのいずれのタスクプログラムより優先して実行してもよい。
前記処理部によって実行される前記第1オペレーティングシステムは、前記割込み処理を割込みタスクプログラムとして管理しており、前記処理部は、前記割込みタスクプログラムを前記複合システムのいずれのタスクプログラムより優先して実行してもよい。
本発明による回路は、デバッガプログラムを実行するホストコンピュータと接続され、前記デバッガプログラムによってデバッグされる第1マルチタスクシステム、および、非デバッグ対象の第2マルチタスクシステムを有する複合システムが構築されている。前記回路は、プログラムが格納されたメモリと、前記メモリ上のプログラムを実行可能な処理部とを備えている。前記メモリは、前記第1マルチタスクシステムの1以上のタスクプログラムを管理する第1オペレーティングシステムと、前記第1オペレーティングシステムを第1タスクプログラムとして管理し、かつ、前記第1タスクプログラムとは異なる1以上の第2タスクプログラムを管理する第2オペレーティングシステムとを格納してもよい。
本発明による回路は、デバッガプログラムを実行するホストコンピュータと接続され、前記デバッガプログラムによってデバッグされる第1マルチタスクシステム、および、非デバッグ対象の第2マルチタスクシステムを有する複合システムを構築することが可能である。前記回路は、プログラムが格納されたメモリと、前記メモリ上のプログラムを実行可能な処理部とを備えている。前記メモリは、第1オペレーティングシステムと、前記第1オペレーティングシステムを第1タスクプログラムとして管理し、かつ、前記第1タスクプログラムとは異なる1以上の第2タスクプログラムを管理する第2オペレーティングシステムとを格納しており、前記第1オペレーティングシステムは、前記メモリに1以上のタスクプログラムが読み込まれたとき、前記1以上のタスクプログラムを前記第1マルチタスクシステムのタスクプログラムとして管理してもよい。
本発明のデバッグシステムによれば、デバッグ対象の第1マルチタスクシステムを第1OSによって管理し、さらに、その第1OSをタスクとして第2OSで管理し、さらに第2マルチタスクシステムを第2OSによって管理する。第2OSは1つのタスクとして第1OSを管理しているため、第1マルチタスクシステムのタスクの影響を受けることなく、タスクの優先度を決定できる。
例えば、第1マルチタスクシステムのタスクにバグ等が存在し、そのバグに起因して第2OSの各タスクの優先度を変更することはない。優先度の変更の影響は第1OSで管理される他のタスクにのみ及び、第2OSの各タスクが変更されることはないからである。
さらに第2OSは、第1マルチタスクシステムのタスクを管理する必要がないため、第2OSの実行に必要な処理負荷を抑えることができる。
以下、添付の図面を参照しながら、本発明の実施形態を説明する。
(実施形態1)
以下の説明では、まず本実施形態によるデバッグ方法によってプログラムがデバッグされたあとの集積回路(例えばLSI、VLSI)の構成およびその特徴を説明する。その後、プログラムのデバッグを実現するための構成およびデバッグ方法を説明する。
図1は、本実施形態によるデバッグ機能によって開発された第1の光ディスクシステムの構成を示す。光ディスクシステムは、光ディスク8が装填可能なドライブ装置1およびホストコンピュータ2から構成され、ホストインタフェースバス3を介して接続されている。ドライブ装置1がDVD−ROMドライブ等のコンピュータ周辺装置として使用される場合には、ドライブ装置1はSCSI(Small Computer System Interface)等のホストインタフェースバス3を介して、ホストコンピュータ2との間でデータを授受する。
ドライブ装置1は、ディスクモーター5と、光ピックアップ6と、サーボ回路7と、光ディスクコントローラ107とを備えている。なお、図1には光ディスク8も記載されているが、これは説明の便宜のためである。光ディスク8はドライブ装置1から着脱可能であるため、ドライブ装置1の構成要素ではない。
光ディスクコントローラ107は、ドライブ装置1の動作を制御するLSIである。光ディスクコントローラ107は、少なくともCPU9および実メモリ10を含む。光ディスクコントローラ107による制御は、主として実メモリ10に読み込まれたプログラムをCPU9が実行し、その実行結果としての命令がドライブ装置1の各構成要素に出力されることによって実現される。
ディスクモーター5は、光ディスク8を所定の回転速度で回転させる。光ピックアップ6は、レーザ光を放射してその反射光を検出し、反射光の光量に対応する光量信号を出力する。サーボ回路7は、光ピックアップ6からの光量信号に基づいてフォーカシング制御やトラッキング制御を実行する。
本実施形態によるデバッグ機能が採用されたことを示す主要な特徴は、ドライブ装置1には1つのLSI(光ディスクコントローラ107)のみが実装され、システムコントローラの機能と光ディスクコントローラの機能が同一CPUで実行されていることである。これは、従来のドライブ装置94(図20)におけるシステムコントローラの機能が光ディスクコントローラに組み込まれたことを意味する。LSIを1つにすることにより、複数のLSIを実装する場合よりも部品コストが低減される。
光ディスクコントローラ107のCPU9は、実メモリ10上に構築された1つのOSを介して複数のプログラム(複数のタスク)を実行する。複数のタスクとは、具体的にはホスト制御タスク1711、ドライブ制御タスク1712、サーボ制御タスク1721、ディスク制御タスク1722等である。
各タスクの具体的な処理は以下のとおりである。ホスト制御タスク1711は、ホストコンピュータ2とのインタフェース、および、スイッチ(図示せず)の押下等に関連するユーザとのインタフェースの動作を制御する。ドライブ制御タスク1712は、ドライブ装置1の起動・停止処理と、データのバッファリング処理等を制御する。サーボ制御タスク1721は、サーボ回路7の動作を制御する。ディスク制御タスク1722は、データの再生等を制御する。
図1に示す光ディスクシステムを実現するためには、1つのCPU9において実行可能なOSを開発し、すべてのタスクをそのOSが管理する必要がある。LSIベンダーは、正常に動作するOS、サーボ制御タスク1721およびディスク制御タスク1722を予め組み込んだ状態で、LSIをドライブメーカーに販売する。そのドライブメーカーは、すでに組み込まれたOS上で実行可能なホスト制御タスク1711、ドライブ制御タスク1712等を作成し、デバッグすることにより、光ディスクコントローラ107を完成させればよい。OSを改めて開発する必要はないので、少なくともOS開発のためのコストを削減できる。
ただし、このような光ディスクコントローラ107を開発するためには、これまで別のOS上で動作可能であったタスクを1つのOSに適合するように修正しなければならない。
また、あるマルチタスクシステムのタスクに対して、別のマルチタスクシステムのタスクなどによってシステムコールが発行されると、マルチタスシステムのタスクの状態が変化してしまい、マルチタスシステムの動作が不正となる問題がある。このシステムコールは、例えばタスクのスケジューリングに関するシステムコール(レディキューの回転、タスクの優先度の変更)である。
例えば、図1のドライブ装置1において、光ディスクコントローラ107の開発中のドライブ制御タスク1712がバグを含んでいるとする。ドライブ制御タスク1712の誤った処理結果によって、ディスク制御タスク1722の優先度がサーボ制御タスク1721の優先度よりも下げられてしまうと、データの再生ができない等の不具合を生じることがある。
そこで、以下の説明においては、図1の構成をさらに改良した構成、および、そのような構成を実現するためのデバッグ機能、デバッグ方法を詳細に説明する。
図2は、本実施形態によるデバッグ機能によって開発された第2の光ディスクシステムの構成を示す。図1と同一構成部分には同一符号を付し、その説明は省略する。
第2の光ディスクシステムのドライブ装置11もまた、第1の光ディスクシステムのドライブ装置1と同様、1つのLSI(光ディスクコントローラ107)のみが実装されている。システムコントローラの機能は光ディスクコントローラに組み込まれている。
図2に示す光ディスクシステムと図1に示す光ディスクシステムとの相違点は、光ディスクコントローラの実メモリ113上に構築されたプログラムの管理構造にある。
具体的には、図2の光ディスクコントローラ108に示すように、ホスト制御タスク1711およびドライブ制御タスク1712は第1OSで管理される。これらは全体で1つのマルチタスクシステムを構成する。また、サーボ制御タスク1721、ディスク制御タスク1722および第1OSは、第2OSで管理される。これらもまた、別のマルチタスクシステムを構成する。なお、第1OSはタスクの1つとして第2OSによって管理される。その意味を明確にするために、以下では第1OSを「第1OSタスク」と記述する。
光ディスクコントローラ108のCPU111は、すべてのタスクを第2OS上で直接的にまたは間接的に管理できる。このように複数のマルチタスクシステムが構築された包括的なシステムを、複合型マルチタスクシステムと呼ぶ。
次に、本実施形態による複合型マルチタスクシステムの構成、および、複合型マルチタスクシステムのデバッグ方法を説明する。
図3は、複合型マルチタスクシステムが構築された大規模半導体集積回路(LSI)109の構成を示す。LSI109の一例が、図2に示す光ディスクコントローラ108である。
LSI109は、CPU111と、割り込み制御装置112と、実メモリ113とを有する。実メモリ113には、第2OS130、マルチタスクシステム140、150、および第1OSタスク160が読み込まれ、配置されている。これらはCPU111により実行されるソフトウェア(コンピュータプログラム)である。このシステムは、独立した複数のマルチタスクシステム140および150を含んでおり、これらは1つのCPU111上で処理される。
マルチタスクシステム140はタスク141およびタスク142から構成され、第2OS130によって管理されている。デバッグ対象マルチタスクシステム150は、タスク151およびタスク152から構成され、第1OSタスク160によって管理される。
図3に示される複合型マルチタスクシステムを構築すると、LSI109の開発を容易化できるという利点がある。具体的には以下のとおりである。
まず第1に、第1OSタスク160を第2OS130で管理することにより、独立した2つのマルチタスクシステム140および150は異なるOSで管理される。その結果、すべてのタスクを1つのOS上で動作するように設計する必要はなくなる。従来のOSで動作していたタスクをそのまま利用することも可能となる。このときは、第1OSタスク160のみを第2OS130に適合させ、かつ、従来のOSの仕様を実装するように開発しなおせば足りる。よって、開発に必要なコストを低減できる。
第2に、第2OS130によって管理されるタスクは、タスク141、タスク142および第1OSタスク160の3つである。図示されているタスク141、142、151および152を第2OS130によって管理する場合と比較すると、第2OS130が管理すべきタスクの数は少なくなる。その結果、タスク間の優先度を決定する際に、考慮すべきタスクが少なくなり、開発が容易になる。この利点は、第1OSタスク160によって管理されるタスクの数が増えるほど顕著になる。
さらに第3には、複合型マルチタスクシステムにおいては、一方のマルチタスクシステムのタスクが他方のマルチタスクシステムのタスクに与える影響を遮断できるという利点がある。例えば、マルチタスクシステム150のタスク151がレディキューの回転のシステムコールを発行したとする。しかし、このときの影響は第1OS160で管理される他のタスク152にのみ及び、他のマルチタスクシステム140のタスク141、142および第1OSタスク160には及ばない。
以下、本実施形態によるデバッグシステムの構成およびデバッグ方法を説明する。以下のデバッグシステムを利用してプログラムをデバッグすることにより、図3に示すLSI109を得ることができる。例えば光ディスク用途のLSIのプログラムをデバッグすると、図2に示す光ディスクコントローラ108を得ることができる。
図4は、本実施形態によるデバッグシステムの全体構成を概略的に示す。このデバッグシステムは、インタフェースバス190を介して接続されたターゲットシステム110とホストコンピュータ170とを有している。
ターゲットシステム110は、中央処理ユニット(CPU)111と割込み制御装置112と実メモリ113から構成される。
実メモリ113には、モニタプログラム120、第2OS130、マルチタスクシステム140、デバッグ対象マルチタスクシステム150および第1OSタスク160が読み込まれ、配置されている。これらはCPU111により実行されるソフトウェア(コンピュータプログラム)である。このシステムは、独立した複数のマルチタスクシステム140および150を含んでおり、これらは1つのCPU111上で処理される。よって、このシステムは複合型マルチタスクシステムといえる。
マルチタスクシステム140はタスク141およびタスク142から構成され、第2OS130によって管理されている。デバッグ対象マルチタスクシステム150は、タスク151およびタスク152から構成され、第1OSタスク160によって管理される。第1OSタスク160は、第2OS130によって管理されるタスクのひとつである。CPU111および割込み制御装置112の構成および動作は図5を参照しながら後述する。
また、ホストコンピュータ170には、デバッガ180が配置される。デバッガ180とは、プログラムの誤り(バグ)を発見してその修正を支援するソフトウェアであり、ホストコンピュータ170の図示しない実メモリに読み込まれ、そのCPUによって実行される。
ターゲットシステム110はインタフェースバス190を介してホストコンピュータ170と接続される。
モニタプログラム120はデバッガ180からの通信による割込みにより起動される。起動されたモニタプログラム120は、デバッガ180からのデバッグコマンドを受信し、受信したコマンドに対応した処理を実行し、デバッガ180に応答を返す。これにより、デバッグ対象マルチタスクシステム150のデータの参照および変更、ブレークポイントの設定などを行うと共に、デバッグ対象マルチタスクシステム150の実行を制御する。例えば、モニタプログラム120がデバッガからデータの参照を要求するコマンドとともに、参照されるデータのアドレスを受信する。そして指定されたアドレスからデータを取得し、デバッガ180に取得したデータを返す。これにより、ユーザはデータを確認することができる。なお、上述の「ブレークポイント」とは、プログラムの実行を中断するプログラムの特定の行(プログラム上の位置)を意味する。
図5は、CPU111および割込み制御装置112の構成を詳細に示す。図5に示す構成のうち、図4に示す構成と同一の部分には同一符号を付している。図5は、n個の割込みグループの割込みを受け付け可能なシステムの例である。CPU111と接続される周辺装置からの割込み(例えばキー入力を受けたキーボード(図示せず)からの割込み)は、割込み制御装置112を介してCPU111に送出される。割込みを受理したCPU111は、現在実行中のプログラムを中断して、割込み処理プログラムの実行を開始する。割込み制御装置112は、割込みグループ制御部200(1)〜200(n)を備え、CPU111に送出する割込みを制御している。また、各割込みグループ制御部(200(1)〜200(n))は割込み制御レジスタ(図示せず)を備え、割込みグループごとに割込み優先レベル、割込みの許可/禁止の設定をすることができる。
次に、図6を参照しながら、予め設定されたブレークポイントあるいは例外を発した時点で、デバッグ対象マルチタスクシステム150のタスク151を停止する処理を説明する。図6は、デバッグ対象マルチタスクシステム150を停止するモニタプログラム120の処理手順の例を示すフローチャートである。上述のように、モニタプログラム120はCPU111において実行される。デバッグ対象マルチタスクシステム150のタスク151のプログラムがブレークポイントに到達する、あるいは例外が発生すると、制御がモニタプログラム120のマルチタスクシステム停止処理に切り替えられる。
まず、ステップS301において前処理が行われる。前処理とは、現在実行中のタスク151のレジスタ群、プログラムカウンタ、ステータスレジスタ等の値をメモリ113に構築されたスタック(図示せず)等に退避する処理である。この処理により、デバッグ対象マルチタスクシステム150のタスクの実行環境が保持される。なお、退避先はスタックに限られず、スタック以外のメモリ113またはその他のメモリ(図示せず)であってもよい。
ステップS302において、CPU111は第2OS130に対し、第1OSタスクを強制待ち(サスペンド)状態へ遷移させるシステムコールを発行する。その結果、第1OSタスク160の実行を停止させる。このとき、第2OS130は、システムコールを受けて第1OSタスクを強制待ち状態へ遷移させる処理を実行する。
次のステップS303では、CPU111は、デバッグ対象マルチタスクシステム150のすべての割込みを禁止する。割込みの禁止は、例えば、割込み制御装置112の割込み制御レジスタのうちの、デバッグ対象マルチタスクシステム150の割込みを制御するレジスタを割込み禁止に設定にすることによって実現される。
そしてステップS304において、CPU111は、第2OS130のタスクディスパッチ処理を実行する。タスクディスパッチ(以下、単に「ディスパッチ」と記述する)処理とは、第2OS130がタスクの優先度を基準にタスクの実行順序をスケジューリングし、最高優先度のタスクをCPU111が実行する対象として切り替える処理である。ここではディスパッチ処理により、第1OSタスク160から、他の最優先のタスク(タスク141または142)にタスクの切り替えが行われる。これによりデバッグ対象マルチタスクシステム150の複数タスク(タスク151および152)の実行が抑制される。
その後、ステップS305において、切り替え後の最優先タスク(タスク141または142)のレジスタ復帰等の後処理が行われ、モニタプログラム120の処理が終了する。
次に、図7を参照しながら、停止したデバッグ対象マルチタスクシステム150の再開処理を説明する。この処理は、デバッグ対象マルチタスクシステム150のデバッグが終了した後に行われる。
図7はデバッグ対象マルチタスクシステム150の処理を再開するモニタプログラム120の処理例を示すフローチャートである。まず、任意の時点で、ユーザがデバッガ180経由でデバッグ対象マルチタスクシステム150の処理の再開を指示する。すると、制御はモニタプログラムのマルチタスクシステム再開処理に切り替えられる。
ステップS401において、CPU111は現在実行中のタスクのレジスタ退避等の前処理を行う。これはステップS301と同様の処理である。ステップS402では、CPU111は、第2OS130に対し、第1OSタスク160の実行を再開させるためのシステムコールを発行する。システムコールに応答して、第2OS130は第1OSタスク160を強制待ち状態から実行可能状態にする。
次にステップS403において、CPU111は、デバッグ対象マルチタスクシステムの割込み禁止を解除する。これ以降、上述のステップS303において禁止されていた割込みが許可される。
ステップS404では、CPU111は、第2OS130のディスパッチ処理を実行する。その後、第1OSタスク160の実行再開が許可されると、タスクのレジスタ復帰等の処理が行われ、実行環境が復元される。
以上の処理の結果、デバッグ対象マルチタスクシステム150の複数タスク(タスク151および152)の実行を再開することができる。
本実施形態によれば、デバッグ対象マルチタスクシステム150を第1OSタスク160で管理し、デバッグ対象マルチタスクシステム150の任意のタスク(タスク151またはタスク152)がブレークポイントに到達した時点あるいは例外が発生した時点で、第1OSタスク160の実行を停止する。これにより、デバッグ対象マルチタスクシステム150を構成するすべてのタスク(151および152)について、その実行環境を保持した状態で実行を抑制することが可能となる。
また、デバッグ対象マルチタスクシステム150の停止中に他の実行中のタスクなどによる、タスクの状態を変化させるようなシステムコールが第2OS130に対して発行されても、第1OSタスク160で管理されているデバッグ対象マルチタスクシステム150のタスク151および152には影響を与えず、マルチタスクシステムのデバッグを容易化できる。
一方、デバッグ対象マルチタスクシステム150のタスク151および152からタスクの状態を変化させるようなシステムコールが発行されても、このとき影響は第1OS160で管理されるタスクにのみ及び、他のマルチタスクシステム140のタスク141、142および第1OSタスク160には及ばない。
OSや基本的なタスクが組み込まれたLSIの購入者は、タスク151および152として、例えばドライブ制御タスクおよびホスト制御タスクを開発し、デバッグして組み込むことにより、ドライブ装置11(図2)の光ディスクコントローラ108を得ることができる。
なお、本実施形態では、ブレークポイントに到達した時点あるいは例外が発生した時点で第1OSタスク160を強制待ち状態に遷移させるシステムコールで第1OSタスク160の実行を停止している。しかし、第1OSタスク160の実行を抑制することができるのであれば、例えば、待ち(ウエイト)状態に遷移させるシステムコールを用いて第1OSタスク160の実行を停止させてもよい。
本実施形態では、ターゲットシステム110が2つのマルチタスクシステム140と150で構成される例で説明したが、上述の処理は3つ以上のマルチタスクシステムで構成されていても適用できる。また、各マルチタスクシステム140と150が各2つのタスクで構成される例を挙げて説明したが、各マルチタスクシステム140および150の一方、または、双方が3つ以上のタスクで構成される場合にも適用できる。
本実施形態では、第2OS130が第1OSタスク160および非デバッグ対象のマルチタスクシステム140をタスクとして管理し、さらに第1OSタスク160がデバッグ対象のマルチタスクシステム150を管理するとして説明した。しかし、デバッグ対象および非デバッグ対象の各マルチタスクシステムをそれぞれ管理するOSを設け、さらにそれらのOSをタスクとして有する包括的なOSを設けて管理を行ってもよい。例えば、図14は、本実施形態の変形例によるシステムの管理構造を示す。このシステムでは、第1OSタスク160によってデバッグ対象のマルチタスクシステム150を管理し、第3OS1110によってデバッグ対象のマルチタスクシステム140を管理している。そして、第2OS130が、第1OS160および第3OS1110をタスクとして有し、その処理を管理している。このような管理構造をとると、非デバッグ対象のマルチタスクシステムが2つ以上ある場合においても、各非デバッグ対象のマルチタスクシステムをOSタスクで管理し、各OSタスクを第2OS130で管理できるため、画一的な処理が可能であり、汎用性の高いシステムを構築できる。また、第2OS130は各OSタスクのみを管理するよう設計すればよいので、開発に要するコストを低減できる。
なお、本実施形態においては、図1に示す光ディスクコントローラ107のマルチタスクシステムを得るためのデバッグシステムを説明していない。しかし、そのようなデバッグシステムは、例えば図4に示すターゲットシステム110の構成から第1OSタスク160を省くことによって得ることができる。なお、先に述べたように、1つのOSに適合するように各タスクを開発する必要等が生じることに留意されたい。
(実施形態2)
図8は本実施形態によるデバッグシステムの全体構成を概略的に示す。図8に示す構成のうち、図4に示す構成と同一の部分には同一符号を付している。図8の構成要素のうち、実施形態1において説明した要素の説明は省略する。
本実施形態によるデバッグシステムにおいては、実施形態1で説明したデバッグシステム(図4)の構成に加えて、実メモリ中113に仮想割込み制御プログラム510が配置されている。また、デバッグ対象マルチタスクシステム150は、タスク151、タスク152および割込み処理500から構成される。
以下、仮想割込み処理を説明する。本実施形態による仮想割込み処理は、デバッグ対象マルチタスクシステムの割込み処理500をタスクとして第1OSタスク160で管理する。そして、仮想割込み制御プログラム510により、他のタスク(タスク141、142、151,152)より優先して割込み処理タスクを実行させる。以下では、このような割込み処理タスクを「割込み処理タスク」と記述する。
まず、図8の各タスクの優先度を以下に示すとおりとする。すなわち、第1OSタスク160が管理する各タスクの優先度を、
割込み処理タスク500>割込み処理タスク以外のタスク(タスク151および152)
とする。また、割込み処理タスク500の起動時には、第2OS130が管理する各タスクの優先度を、
第1OSタスク160>第1OSタスク以外のタスク(タスク141および142)
とする。
また、デバッグ対象マルチタスクシステム150において、割込み処理が複数ある場合は、割込み処理タスクの優先度を異ならせて、レベル割込みの機能を仮想割込み処理で実行することが可能である。例えば、デバッグ対象マルチタスクシステム150の割込み1、割込み2があり(ただし、割込みレベルの優先度は、割込み1>割込み2とする)、各割込みに対応する割込み処理タスクをそれぞれ、割込み処理タスク1、割込み処理タスク2とする。このときのタスクの優先度を
割込み処理タスク1>割込み処理タスク2
とすることにより、レベル割込みに対応した仮想割込み処理を実現することが可能である。
次に、仮想割込み制御プログラム510の割込み処理タスク500の起動および終了処理を説明する。
図9は割込みを判定する処理の例を示すフローチャートである。ステップS601において、まず、割込みが発生すると、制御は仮想割込み制御プログラム510の割込み判定処理に切り替えられる。CPU111はレジスタ退避、スタックの切替などの前処理を行う。次に、ステップS602において、その割込みが、デバッグ対象マルチタスクシステム150の割込みに該当するか否かを判定する。該当するときは、処理はステップS605に進み、しないときはステップS603に進む。
ステップS603では、CPU111は通常の割込み処理と同様に割込み処理プログラムを実行し、ステップS604においてレジスタの復帰、ディスパッチ処理などの後処理を実行し、割込みから復帰する。
一方、ステップS605では、CPU111は、割込み処理タスク500の起動処理を行う。この処理の詳細を、以下、図10を参照しながら詳述する。
図10は、割込み処理タスク500を起動する処理の例を示すフローチャートである。まずステップS701において、CPU111は、第2OS130に対して第1OSタスク160の優先度変更のシステムコールを発行し、第1OSタスク160の優先度を最高(最優先)に変更する。そしてステップS702において、CPU111は第2OS130のディスパッチ処理を実行する。この結果、実行の対象が、最高優先度のタスクである第1OSタスク160に切り替えられる。
次のステップS703では、CPU111は、割込み処理タスク500を起動するために、第1OSタスク160に割込み処理タスク500のタスク起動のシステムコールを発行する。そしてステップS704において、CPU111は、第1OSタスク160のディスパッチ処理を実行する。これにより、最高優先度である割込み処理タスク500がディスパッチされる。
さらにCPU111は、ステップS705において、デバッグ対象マルチタスクシステム150のすべての割込みを禁止する。そして、割込みから復帰し、割込み処理タスク500を実行する。
次に、図11を参照しながら、割込み処理タスクの終了時の処理を説明する。図11は、割込み処理タスク500終了時の処理の例を示すフローチャートである。ステップS801において、CPU111は、割込み処理タスク500を第1OSタスク160のレディキューから外し、休止状態に遷移させる。なお、「レディキュー」(Ready Queue)とは、実行可能状態のタスクを管理するために使用する行列である。タスクはレディ状態になると、優先度毎に待ち行列に配置される。この待ち行列のことをレディキューと呼ぶ。
次のステップS802では、CPU111は、他の割込み処理タスクが起動されているか否かをチェックする。起動されていないときはステップS803に進み、起動されているときはステップS804に進む。
ステップS803では、第1OSタスク160の優先度を元に戻すために、CPU111は、第2OS130に第1OSタスク160の優先度変更のシステムコールを発行する。
ステップS804では、CPU111は、第1OSタスク160のディスパッチ処理を実行する。これにより、実行対象が最高の優先度をもつタスクに切り替えられる。
ディスパッチ処理により実行状態となったタスクに対応した割込み許可および禁止の状態にするために、ステップS805において、CPU111は、デバッグ対象マルチタスクシステムの割込み許可/禁止設定処理を実行する。例えば、ステップS804の第1OSタスク160へのディスパッチ処理後に、実行状態となったタスクが割込み禁止状態の割込み処理タスクなどである場合には、デバッグ対象マルチタスクシステム150の割込みを割込み禁止に設定する。また、割込み許可状態のタスクなどである場合には、禁止したデバッグ対象マルチタスクシステム150の割込みを割込み許可に設定する。
割込み許可/禁止設定処理は、以下の処理によって実現される。すなわち、第1OSタスク160は、各タスク(タスク151、タスク152および割込み処理タスク500)の割込み許可および禁止の状態を管理する情報(以下、「割込み管理情報」という)を保持する。例えば第1OSタスク160は、タスク・コントロール・ブロック(TCB)にタスクの割込み許可状態であるかの割込み許可フラグ、および、受付可能な割込みレベルを設定するための割込みマスクレベルを保持する。その後、第1OSタスク160のディスパッチ処理によって実行状態となったタスクの割込み管理情報を参照し、デバッグ対象マルチタスクシステム150の割込みの割込み許可および禁止を設定すればよい。例えば、割込み制御装置112の割込み制御レジスタのうち、デバッグ対象マルチタスクシステム150の割込みを制御する割込み制御レジスタの設定を割込み許可および禁止に設定する。
次のステップS806において、CPU111は、第2OS130のディスパッチ処理を実行する。これにより、この時点での最優先のタスクが実行される。
以上のように、割込み処理を1つのタスクとして第1OSタスク160で管理し、仮想割込み制御プログラム510によって、他タスク(タスク141、142、151,152)より優先的に割込み処理タスク500を実行する。優先度を設定できるため、通常の割込み処理同様に割込み処理タスク150を優先して実行することが可能となる。
次に、デバッグ対象マルチタスクシステム150のタスク(タスク151および152)および割込み処理タスク500の停止処理を説明する。
デバッグ対象マルチタスクシステム150のタスク(タスク151またはタスク152)の停止処理は、実施形態1と同様に、マルチタスクシステムを構成する任意のタスクがブレークポイントに到達した時点、あるいは例外が発生した時点で行われる。この時点において、CPU111は第1OSタスク160の実行を停止する。デバッグ対象マルチタスクシステム150の割込み処理においても割込み処理タスク500として第1OSタスク160でタスクとして管理されるので、通常のタスク(タスク151またはタスク152)同様にブレークポイントに到達した時点あるいは例外が発生した時点で、第1OSタスク160の実行を停止することにより、デバッグ対象マルチタスクシステム150が停止する。停止したデバッグ対象マルチタスクシステム150の再開処理は、実施形態1で説明した再開処理と同様である。
次に仮想割込み処理の動作例を説明する。この例は、タスク141が実行中であり、割込み処理タスクは起動していないときの仮想割込み処理の動作例である。また、第2OS130が管理しているタスクの優先度を
タスク141(優先度2)>タスク142(優先度3)>第1OSタスク160(優先度4)
とする。割込み処理タスクの起動処理のために第1OSタスク160の優先度を最優先にした時には、各タスクの優先度を
第1OSタスク160(優先度1)>タスク141(優先度2)>タスク142(優先度3)
とする。また、第1OSタスク160が管理するタスクの優先度を
割込み処理タスク500(優先度1)>タスク151(優先度2)>タスク152(優先度3)
とする。
図12(a)は、デバッグ対象マルチタスクシステムの割込みが発生したときのタスクの遷移のタイミングを示す。図12(b)は、非デバッグ対象のマルチタスクシステムの割込みが発生したときの、タスクの遷移のタイミングを示す。図13は、割込み処理タスクの起動処理および終了処理における、第1OSタスク160および第2OS130のレディキューの状態を示す。
まず、デバッグ対象マルチタスクシステム150の割込みが発生したときの動作を説明する。
図12(a)の901および図13(a)に示すように、デバッグ対象マルチタスクシステム150の割込みが発生すると、CPU111は制御を仮想割込み制御プログラム510の割込み判定処理に切り替える。レジスタ退避、スタックの切替などの前処理(ステップS601)を行う。次に、デバッグ対象マルチタスクシステム150の割込みであるか否かを判定する(ステップS602)。ここではデバッグ対象マルチタスクシステム150の割込みであるから、割込み処理タスクの起動処理を実行する(ステップS605)。
次に図13(b)に示すように、第1OSタスク160の優先度を最高優先度にするシステムコールを第2OS130に対して発行し(ステップS701)、第2OS130のディスパッチ処理を実行する(ステップS702)。これにより、タスク141から最高優先タスクである第1OSタスク160への切り替えが行われる。次に図13(c)に示すように、第1OSタスク160に割込み処理タスクの起動に関するシステムコールが発行され(ステップS703)、第1OSタスク160のディスパッチ処理を実行する(ステップS704)。これにより、最高優先度である割込み処理タスク500が実行対象に割り当てられる。次に、デバッグ対象マルチタスクシステム150のすべての割込みを禁止し(ステップS705)、割込みから復帰し、割込み処理タスク500の実行が開始される(図12(a)の902)。
割込み処理タスク500が終了すると(図12(a)の903)、図13(d)から理解されるように、割込み処理タスク500を第1OSタスク160のレディキューから外して休止状態に遷移させる(ステップS801)。次に、他の割込み処理タスクが起動されていないかがチェックされる(ステップS802)。
起動されていないので、第1OSタスク160の優先度を元に戻すために、図13(e)に示すように、第2OS130に第1OSタスク160の優先度変更のシステムコールを発行する(ステップS803)。そして、第1OSタスク160のディスパッチ処理を実行することにより(ステップS804)、タスク151が実行状態となり、タスク151の割込み状態に応じてデバッグ対象マルチタスクシステムの割込み設定が行われる(図11ステップS805)。さらに、第2OS130のディスパッチ処理を実行する(ステップS806)。これにより、この時点での最優先のタスク141が実行される(図12(a)の904)。
次に、非デバッグ対象のマルチタスクシステムの割込みが発生した場合の動作を説明する。
割込みが発生すると(図12(b)の905)、CPU111は制御を仮想割込み制御プログラム510の割込み判定処理に切り替える。そしてレジスタの退避、スタックの切替などの前処理(ステップS601)を行う。その後、その割込みがデバッグ対象マルチタスクシステム150の割込みであるかが判定される(ステップS602)。ここではデバッグ対象マルチタスクシステム150の割込みでないので、割込み処理プログラムへ分岐する(図9のステップS603、図12(b)の906)。割込み処理プログラムの実行後、仮想割込み処理に戻る(図12(b)の907)。レジスタの復帰、ディスパッチ処理などの後処理を実行し(ステップS604)、割込みから復帰する(図12(b)の908)。
本実施形態によれば、実施形態1において説明した効果とともに、さらに以下の効果が得られる。すなわち、割込み処理同等の動作をさせる仮想割込み処理によって、デバッグ対象マルチタスクシステムの割込み処理を第1OSタスク160で管理し、ブレークポイントに到達した時点あるいは例外が発生した時点で、第1OSタスク160の実行を停止する。これにより、デバッグ対象マルチタスクシステム150を構成するすべてのタスク(タスク151およびタスク152)および割込み処理500に関し、その実行環境を保持した状態で実行を抑制できる。これにより、割込み処理を含むマルチタスクシステム全体のデバッグが可能となり、デバッグを容易化できる。
なお、本実施形態では、ターゲットシステム110が2つのマルチタスクシステム140と150で構成される例で説明したが、3つ以上のマルチタスクシステムで構成される場合にも本発明は適用可能である。また、各マルチタスクシステム140と150においてもタスク数をそれぞれ2つで構成される例で説明したが、各マルチタスクシステム140と150の一方、または、双方が3つ以上のタスクで構成される場合にも本発明は適用可能である。また、デバッグ対象マルチタスクシステム150の割込み処理数が1つで構成される例で説明したが、2つ以上の割込み処理で構成される場合にも本発明は適用可能である。
なお、本実施形態では、非デバッグ対象のマルチタスクシステム140は第2OS130で管理されるが、第2OS130で管理されるOSタスクで管理してもよい。また、非デバッグ対象のマルチタスクシステムが2つ以上ある場合においても、各非デバッグ対象のマルチタスクシステムをOSタスクで管理し、各OSタスクを第2OS130で管理してもよい。
なお、本実施形態では、割込み処理タスクの起動処理の割込み禁止処理(図10のステップS705)、および、割込み処理タスク終了処理の割込み許可/禁止処理(図11のステップS805)において、デバッグ対象マルチタスクシステム150のすべての割込みを許可および禁止する例で説明したが、デバッグ対象マルチタスクシステム150およびマルチタスクシステム140のすべての割込みを許可および禁止してもよい。
(実施形態3)
本実施形態のデバッグシステムの全体構成は、図8を参照して説明したデバッグシステムの構成と同一である。よって、特に改めて説明しない構成要素および動作については、先の実施形態で説明したとおりとする。
以下、本実施形態による仮想割込み処理を説明する。本実施形態の仮想割込み処理は、デバッグ対象マルチタスクシステムの割込み処理500をタスク(割込み処理タスク)として第1OSタスク160で管理し、仮想割込み制御プログラム510により、デバッグ対象マルチタスクシステムのタスク(タスク151,152)より優先に割込み処理タスクを実行させる処理として実現する。以下、その処理を説明する。
まず、図8の各タスクの優先度を以下に示すとおりとする。すなわち、第1OSタスク160が管理する各タスクの優先度を、
割込み処理タスク500>割込み処理タスク以外のタスク(タスク151および152)
とする。また、第2OS130が管理する各タスクの優先度に関しては、優先度の制約はない。
また、デバッグ対象マルチタスクシステム150に、割込み処理が複数存在する場合は、実施形態2と同様に、割込み処理タスクの優先度を異ならせることにより、レベル割込みの機能を仮想割込み処理で実行することが可能である。
次に、本実施形態の仮想割込み制御プログラム510の割込み処理タスク500の起動および終了処理を説明する。なお、割込みを判定する処理は図9に示す手順で行われる。
まず、割込みが発生すると、CPU111は制御を仮想割込み制御プログラム510の割込み判定処理に切り替える。そしてレジスタ退避、スタックの切替などの前処理(図9のステップS601)を行う。次に、デバッグ対象マルチタスクシステム150の割込みであるか否かを判定する(図9のステップS602)。
デバッグ対象マルチタスクシステム150の割込みでない場合は、通常の割込み処理と同様に、割込み処理プログラムを実行し(図9のステップS603)、レジスタの復帰、ディスパッチ処理などの後処理を実行し(図9のステップS604)、割込みから復帰する。
デバッグ対象マルチタスクシステムの割込みの場合は、割込み処理タスクの起動処理を実行する(図9のステップS605)。この処理は図15に示されている。
図15は、本実施形態の割込み処理タスク500を起動する処理の例を示すフローチャートである。
まずステップS1201において、CPU111は割込み処理タスク500を起動するために第1OSタスク160にタスク起動のシステムコールを発行し、ステップS1202において、第1OSタスクが実行中であるか確認する。実行中のときはステップS1203に進み、実行中でないときはステップS1205に進む。
ステップS1203では、CPU111は第1OSタスク160のディスパッチ処理を実行する。これにより、最高優先度である割込み処理タスク500がディスパッチされる。さらにステップS1204では、デバッグ対象マルチタスクシステム150のすべての割込みを禁止し、その後、割込みから復帰し、割込み処理タスク500を実行する。
一方、ステップS1205では、CPU111は第1OSタスク160がディスパッチされた後に、割込み処理タスク500をディスパッチするために、割込み処理タスクの起動要求を設定する。この起動要求の設定は、例えば、割込み処理タスクの起動要求フラグをセットすることにより行う。次に、ステップS1206において、レジスタの復帰などの後処理を実行し、割込みから復帰する。
続いて、第2OSにおいて、第1OSタスク160がディスパッチされた後に、第1OSタスクにおいて割込み処理タスク500をディスパッチする処理を説明する。図16は、第2OSのディスパッチ処理の例を示すフローチャートである。
まず、ステップS1301において、CPU111は第2OSのタスクスケジューリングを実行し、実行状態のタスクが第1OSタスクであり、かつ、割込み処理タスクの起動要求があるかどうかを判定する。条件を満たすときはステップS1303に進み、満たしていないときはプログラムにリターンし、第2OSのタスクスケジューリングで実行状態となったタスクを実行する。
ステップS1303において、CPU111は、第1OSタスクのディスパッチ処理を実行する。これにより、割込み処理タスク500がディスパッチされる。さらにステップS1304において、CPU111は、デバッグ対象マルチタスクシステム150のすべての割込みを禁止し、割込み処理タスク500を実行する。
次に、割込み処理タスクの終了時の処理を説明する。図17は、本実施形態の割込み処理タスク500終了時の処理の例を示すフローチャートである。
まずステップS1401において、CPU111は、割込み処理タスク500を第1OSタスク160のレディキューから外し、休止状態に遷移させる。次にステップS1402において、CPU111は第1OSタスク160のディスパッチ処理を実行する。ディスパッチ処理により実行状態となったタスクに対応した割込み許可および禁止の状態にするために、ステップS1403において、CPU111はデバッグ対象マルチタスクシステムの割込み許可/禁止設定処理を実行し、実行状態となったタスクを実行する。
以上のように割込み処理を1つのタスクとして、第1OSタスク160で管理し、仮想割込み制御プログラム510によって、デバッグ対象マルチタスクシステムのタスク(タスク151,152)より優先的に割込み処理タスク500を実行する。優先度を設定できるため、割込み処理タスク500を優先して実行することが可能となる。
次に、本実施形態におけるデバッグ対象マルチタスクシステム150のタスク(タスク151および152)および割込み処理タスク500を停止する処理を説明する。
デバッグ対象マルチタスクシステム150のタスク(タスク151またはタスク152)を停止する処理は、実施形態1と同様に、マルチタスクシステムを構成する任意のタスクがブレークポイントに到達した時点あるいは例外が発生した時点で、第1OSタスク160の実行を停止する。
デバッグ対象マルチタスクシステム150の割込み処理においても、割込み処理タスク500として第1OSタスク160でタスクとして管理されるので、通常のタスク(タスク151またはタスク152)同様にブレークポイントに到達した時点あるいは例外が発生した時点で、第1OSタスク160の実行を停止することにより、デバッグ対象マルチタスクシステム150を停止する。
次に本実施形態による仮想割込み処理の動作例を説明する。この例は、タスク141が実行中であり、割込み処理タスクは起動していないときの仮想割込み処理の動作例である。また、第2OS130が管理しているタスクの優先度を
タスク141(優先度2)>タスク142(優先度3)>第1OSタスク160(優先度4)
とし、また、第1OSタスク160が管理するタスクの優先度を
割込み処理タスク500(優先度1)>タスク151(優先度2)>タスク152(優先度3)
とする。
図18は、デバッグ対象マルチタスクシステム150の割込みが発生した場合における、タスクの遷移のタイミングを示す。また、図19は、割込み処理タスクの起動処理および終了処理における、第1OSタスク160および第2OS130のレディキューの状態を示す。
デバッグ対象マルチタスクシステム150の割込みが発生した場合の動作を説明する。
デバッグ対象マルチタスクシステムの割込みが発生する(図18の1501、図19(a))と、CPU111は制御を仮想割込み制御プログラム510の割込み判定処理に切り替える。そして、レジスタ退避、スタックの切替などの前処理(ステップS601)を行う。次に、割込み処理タスクの起動対象の割込みであるか否かを判定する(ステップS602)。この例の割込みは、割込み処理タスクの起動対象の割込みである。よってCPU111は、割込み処理タスクの起動処理を実行する(ステップS605)。
まず、割込み処理タスク500を起動するために、第1OSタスク160に割込み処理タスク500のタスク起動のシステムコールを発行する(ステップS1201、図19(b))。次に、第1OSタスクが実行中であるか確認する(ステップS1202)。第1OSタスクが実行中でないので、第1OSタスク160がディスパッチされた後に割込み処理タスク500をディスパッチするために、割込み処理タスクの起動要求を設定する(ステップS1205)。次に、レジスタの復帰などの後処理を実行し(ステップS1206)、割込みから復帰し、タスク141を実行する(図18の1502)。タスク141が終了すると(図18の1503)、第2OSのディスパッチ処理が実行される。
まず、第2OSのタスクスケジューリングを実行し(ステップS1301)、タスク142が実行状態となる(図19(c))。実行状態のタスクが第1OSタスクであり、かつ、割込み処理タスクの起動要求があるかどうかを判定する(ステップS1302)。第1OSタスクでないので、実行状態となったタスク142を実行する(図18の1504)。タスク142が終了すると(図18の1505)、第2OSのディスパッチ処理が実行される。第2OSのタスクスケジューリングを実行し(ステップS1301)、第1OSタスクが実行状態となる(図19(d))。実行状態のタスクが第1OSタスクであり、かつ、割込み処理タスクの起動要求があるかどうかを判定する(ステップS1302)。第1OSタスクであり、かつ、割込み処理タスクの起動要求があるので、第1OSのディスパッチ処理を実行する(ステップS1303)。これにより、割込み処理タスク500がディスパッチされる。さらに、デバッグ対象マルチタスクシステム150のすべての割込みを禁止し(ステップS1304)、割込み処理タスク500を実行する(図18の1506)。
割込み処理タスク500が終了すると(図18の1507)、まず、割込み処理タスク500を第1OSタスク160のレディキューから外し、休止状態に遷移させる(ステップS1401、図19(e))。次に、第1OSタスク160のディスパッチ処理を実行することにより(ステップS1402)、タスク151が実行状態となる。タスク151の割込み状態に応じて、デバッグ対象マルチタスクシステム150の割込み設定を行い(ステップS1403)、実行状態となったタスク151を実行する(図18の1508)。これにより、実施形態2によるデバッグシステムと同様の効果を得ることができる。
上述のように、デバッグ対象マルチタスクシステム150を第1OSタスク160で管理し、デバッグ対象マルチタスクシステムを構成する任意のタスク(タスク151またはタスク152)がブレークポイントに到達した時点あるいは例外が発生した時点で、第1OSタスク160の実行を停止することにより、デバッグ対象マルチタスクシステム150を構成するすべてのタスク(タスク151およびタスク152)に関し、その実行環境を保持した状態で実行を抑制することが可能となる。また、デバッグ対象マルチタスクシステム150の停止中に、他の実行中のタスクなどによるタスクの状態を変化させるようなシステムコールが第2OS130に対して発行されても、第1OS160で管理されているデバッグ対象マルチタスクシステム150のタスク151および152には影響を与えず、デバッグを容易化できる。
さらに、割込み処理同等の動作をさせる仮想割込み処理によって、デバッグ対象マルチタスクシステムの割込み処理を第1OSタスク160で管理し、ブレークポイントに到達した時点あるいは例外が発生した時点で、第1OSタスク160の実行を停止することにより、デバッグ対象マルチタスクシステム150を構成するすべてのタスク(タスク151およびタスク152)および割込み処理500に関し、その実行環境を保持した状態で実行を抑制することが可能となる。これにより、割込み処理を含むマルチタスクシステム全体のデバッグが可能となり、デバッグを容易化できる。
本実施形態においては、ターゲットシステム110が2つのマルチタスクシステム140と150で構成される例で説明したが、3つ以上のマルチタスクシステムで構成される場合にも本発明は適用可能である。また、各マルチタスクシステム140と150においてもタスク数をそれぞれ2つで構成される例で説明したが、各マルチタスクシステム140と150の一方、または、双方が3つ以上のタスクで構成される場合にも本発明は適用可能である。また、デバッグ対象マルチタスクシステム150の割込み処理数が1つで構成される例で説明したが、2つ以上の割込み処理で構成される場合にも本発明は適用可能である。
本実施形態においては、非デバッグ対象のマルチタスクシステム140は第2OS130で管理されるが、第2OS130で管理されるOSタスクで管理してもよい。また、非デバッグ対象のマルチタスクシステムが2つ以上ある場合においても、各非デバッグ対象のマルチタスクシステムをOSタスクで管理し、各OSタスクを第2OS130で管理してもよい。
なお、本実施形態では、割込み処理タスクの起動処理内の割込み禁止処理(図15のステップS1204)、第2OSディスパッチ処理の割込み禁止処理(図16のステップS1304)、および、割込み処理タスク終了処理の割込み許可/禁止処理(図17のステップS1403)において、デバッグ対象マルチタスクシステム150のすべての割込みを許可および禁止する例を挙げて説明した。しかし、デバッグ対象マルチタスクシステム150およびマルチタスクシステム140のすべての割込みを許可および禁止してもよい。
本発明によれば、複数のタスクと割込み処理で構成されるマルチタスクシステムを複数並行実行するプログラムのデバッグに有用な方法および装置が得られる。本発明によるマルチタスクシステムのプログラムデバッグ方法とその装置は、デバッグ対象マルチタスクシステムを構成する任意のタスクおよび割込み処理がブレークポイントに到達した時点あるいは例外が発生した時点で、デバッグ対象マルチタスクシステムを構成するすべてのタスクおよび割込み処理に関し、その実行環境を保持した状態で実行を抑制する。また、デバッグ対象マルチタスクシステム停止中に、他の実行中のタスクからタスクの状態を変化させるシステムコールが発行されても、デバッグ対象マルチタスクシステムのタスクは影響を受けない。これにより、マルチタスクシステムのデバッグが容易になる。
実施形態1によるデバッグ機能によって開発された第1の光ディスクシステムの構成を示す図である。 実施形態によるデバッグ機能によって開発された第2の光ディスクシステムの構成を示す図である。 複合型マルチタスクシステムが構築された大規模半導体集積回路(LSI)109の構成を示す図である。 実施形態1における、デバッグシステムの全体構成を示す概略図である。 CPU111と割込み制御装置112の詳細な構成図である。 デバッグ対象マルチタスクシステムを停止する処理例を示すフローチャートである。 デバッグ対象マルチタスクシステムを再開する処理例を示すフローチャートである。 実施形態2における、デバッグシステムの全体構成を示す概略図である。 割込みを判定する処理例を示すフローチャートである。 実施形態2における、割込み処理タスクを起動する処理例を示すフローチャートである。 実施形態2における、割込み処理タスク終了時の処理例を示すフローチャートである。 実施形態2における、割込みが発生した場合におけるタスクの遷移のタイミング図である。 実施形態2における、第1OSタスクおよび第2OSのレディキューの状態を示す図である。 非デバッグ対象のマルチタスクシステムをOSタスクで管理した場合のタスク構成図である。 実施形態3における、割込み処理タスクを起動する処理例を示すフローチャートである。 実施形態3における、第2OSのタスクディパッチ処理の処理例を示すフローチャートである。 実施形態3における、割込み処理タスク終了時の処理例を示すフローチャートである。 実施形態3における、割込みが発生した場合におけるタスクの遷移のタイミング図である。 実施形態3における、第1OSタスクおよび第2OSのレディキューの状態を示す図である。 従来の光ディスクシステムの概略的な構成を示す図である。
符号の説明
110 ターゲットシステム
111 CPU
112 割込み制御装置
113 実メモリ
120 モニタプログラム
130 第2OS
140 マルチタスクシステム
141 タスク
142 タスク
150 デバッグ対象マルチタスクシステム
151 タスク
152 タスク
160 第1OS(タスク)
170 ホストコンピュータ
180 デバッガ
190 インタフェースバス
200(1)〜200(n) 割込みグループ制御部
500 割込み処理
510 仮想割込み制御プログラム
1110 第3のOS

Claims (14)

  1. デバッガプログラムを実行するホストコンピュータと、
    前記デバッガプログラムによってデバッグされる第1マルチタスクシステム、および、非デバッグ対象の第2マルチタスクシステムを有する複合システムが構築された回路と
    を含むデバッグシステムであって、
    前記回路は、プログラムが格納されたメモリ、および、前記メモリ上のプログラムを実行可能な処理部を備えており、
    前記メモリは、
    前記第1マルチタスクシステムの1以上のタスクプログラムを管理する第1オペレーティングシステムと、
    前記第1オペレーティングシステムを第1タスクプログラムとして管理し、かつ、前記第1タスクプログラムとは異なる1以上の第2タスクプログラムを管理する第2オペレーティングシステムとを格納する、デバッグシステム。
  2. 前記メモリには、前記第1マルチタスクシステムの実行を制御するためのモニタプログラムがさらに格納されており、
    前記処理部は、前記デバッガプログラムを実行した前記ホストコンピュータからのコマンドに応答して前記モニタプログラムを実行し、前記コマンドに応じた処理を実行して、前記ホストコンピュータに応答を返す、請求項1に記載のデバッグシステム。
  3. 前記メモリは、前記第2オペレーティングシステムおよび前記1以上の第2タスクプログラムを、前記第2マルチタスクシステムとして格納する、請求項1に記載のデバッグシステム。
  4. 前記メモリは、前記1以上の第2タスクプログラムとして、第3オペレーティングシステムおよび前記第3オペレーティングシステムによって管理される第3タスクプログラムを格納し、
    前記第3オペレーティングシステムおよび前記第3タスクプログラムを、前記第2マルチタスクシステムとして格納する、請求項1に記載のデバッグシステム。
  5. 前記回路はスタックをさらに備え、
    前記処理部は、前記第1マルチタスクシステムの実行環境を前記スタックに退避し、その後、前記モニタプログラムに基づいて、前記第1マルチタスクシステムに含まれる1以上のタスクプログラムの実行を停止する、請求項2に記載のデバッグシステム。
  6. 前記処理部は、前記第1マルチタスクシステムに含まれるタスクプログラムの実行を停止する際に、前記第1オペレーティングシステムを停止状態に遷移させる、請求項5に記載のデバッグシステム。
  7. 前記処理部は、処理が予め設定されたブレークポイントに到達すると、前記第1オペレーティングシステムを停止状態に遷移させて、前記第1マルチタスクシステムに含まれるタスクプログラムの実行を停止する、請求項6に記載のデバッグシステム。
  8. 前記処理部は、処理に例外が発生すると、前記第1オペレーティングシステムを停止状態に遷移させて、前記第1マルチタスクシステムに含まれるタスクプログラムの実行を停止する、請求項6に記載のデバッグシステム。
  9. 前記処理部は、前記第1オペレーティングシステム上で、前記第1マルチタスクシステムの割込み処理を実行可能であり、前記割込み処理を前記第1マルチタスクシステムのいずれのタスクプログラムよりも優先して実行する、請求項1に記載のデバッグシステム。
  10. 前記処理部は、前記第1オペレーティングシステム上で、前記第1マルチタスクシステムの割込み処理を実行可能であり、前記割込み処理を前記複合システムのいずれのタスクプログラムより優先して実行する、請求項1に記載のデバッグシステム。
  11. 前記処理部によって実行される前記第1オペレーティングシステムは、前記割込み処理を割込みタスクプログラムとして管理しており、
    前記処理部は、前記割込みタスクプログラムを前記第1マルチタスクシステムのいずれのタスクプログラムより優先して実行する、請求項9に記載のデバッグシステム。
  12. 前記処理部によって実行される前記第1オペレーティングシステムは、前記割込み処理を割込みタスクプログラムとして管理しており、
    前記処理部は、前記割込みタスクプログラムを前記複合システムのいずれのタスクプログラムより優先して実行する、請求項10に記載のデバッグシステム。
  13. デバッガプログラムを実行するホストコンピュータと接続され、前記デバッガプログラムによってデバッグされる第1マルチタスクシステム、および、非デバッグ対象の第2マルチタスクシステムを有する複合システムが構築された回路であって、
    前記回路は、プログラムが格納されたメモリと、前記メモリ上のプログラムを実行可能な処理部とを備え、
    前記メモリは、
    前記第1マルチタスクシステムの1以上のタスクプログラムを管理する第1オペレーティングシステムと、
    前記第1オペレーティングシステムを第1タスクプログラムとして管理し、かつ、前記第1タスクプログラムとは異なる1以上の第2タスクプログラムを管理する第2オペレーティングシステムとを格納する、回路。
  14. デバッガプログラムを実行するホストコンピュータと接続され、前記デバッガプログラムによってデバッグされる第1マルチタスクシステム、および、非デバッグ対象の第2マルチタスクシステムを有する複合システムを構築することが可能な回路であって、
    前記回路は、プログラムが格納されたメモリと、前記メモリ上のプログラムを実行可能な処理部とを備え、
    前記メモリは、第1オペレーティングシステムと、
    前記第1オペレーティングシステムを第1タスクプログラムとして管理し、かつ、前記第1タスクプログラムとは異なる1以上の第2タスクプログラムを管理する第2オペレーティングシステムとを格納しており、
    前記第1オペレーティングシステムは、前記メモリに1以上のタスクプログラムが読み込まれたとき、前記1以上のタスクプログラムを前記第1マルチタスクシステムのタスクプログラムとして管理する、回路。


JP2005254017A 2004-09-06 2005-09-01 マルチタスクシステムをデバッグするためのデバッグシステム Pending JP2006099755A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005254017A JP2006099755A (ja) 2004-09-06 2005-09-01 マルチタスクシステムをデバッグするためのデバッグシステム

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2004258675 2004-09-06
JP2005254017A JP2006099755A (ja) 2004-09-06 2005-09-01 マルチタスクシステムをデバッグするためのデバッグシステム

Publications (1)

Publication Number Publication Date
JP2006099755A true JP2006099755A (ja) 2006-04-13

Family

ID=36239436

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005254017A Pending JP2006099755A (ja) 2004-09-06 2005-09-01 マルチタスクシステムをデバッグするためのデバッグシステム

Country Status (1)

Country Link
JP (1) JP2006099755A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108340374A (zh) * 2018-02-08 2018-07-31 西北农林科技大学 一种采摘机械手的控制系统及控制方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108340374A (zh) * 2018-02-08 2018-07-31 西北农林科技大学 一种采摘机械手的控制系统及控制方法
CN108340374B (zh) * 2018-02-08 2023-10-03 西北农林科技大学 一种采摘机械手的控制系统及控制方法

Similar Documents

Publication Publication Date Title
JP4585463B2 (ja) 仮想計算機システムを機能させるためのプログラム
EP2009551B1 (en) Method and apparatus to enable runtime processor migration with operating system assistance
Black et al. SystemC: From the ground up
KR100934533B1 (ko) 연산 처리 시스템, 컴퓨터 시스템 상에서의 태스크 제어 방법, 및 컴퓨터 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체
TWI426452B (zh) Work processing device
TWI428764B (zh) 編譯器管理之多重處理器上之單執行緒程式之最佳化執行
JP4678396B2 (ja) 仮想マシンモニタをモニタするコンピュータとその方法、および仮想マシンモニタモニタプログラム
KR101454146B1 (ko) 스토리지 장치, 제어 장치 및 기록 매체
JP5026494B2 (ja) 高速で起動するコンピュータ
US20090006793A1 (en) Method And Apparatus To Enable Runtime Memory Migration With Operating System Assistance
TWI426451B (zh) Work processing device
JP2011501323A (ja) ルーチン内のスレッドを切り替える方法
CN104461876A (zh) 一种基于运行快照序列的并行程序重现调试方法
TWI488120B (zh) 用於進行除錯式交易的方法及電腦可讀取儲存媒體
JP3808314B2 (ja) 長レイテンシ命令に対する命令属性およびステータス情報を示す処理システムおよび方法
US7434222B2 (en) Task context switching RTOS
US20110173503A1 (en) Hardware enabled performance counters with support for operating system context switching
JP2009176146A (ja) マルチプロセッサシステム、障害検出方法および障害検出プログラム
KR100674751B1 (ko) 멀티태스크 시스템을 디버그하기 위한 디버그 시스템 및회로
JP2009175960A (ja) 仮想マルチプロセッサシステム
US7412597B2 (en) Computer system and booting method thereof
JP5542643B2 (ja) シミュレーション装置及びシミュレーションプログラム
JP2006099755A (ja) マルチタスクシステムをデバッグするためのデバッグシステム
KR101785540B1 (ko) 비결정적인 하드웨어 인터럽트에 대한 요청을 처리하는 에뮬레이션 방법 및 장치
JP2009211540A (ja) コンピュータ使用可能コードを実行する装置及び方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080521

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080603

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080801

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080826