(57)【特許請求の範囲】
【請求項１】
ターゲットシステムにおけるプログラムの実行中に、前記ターゲットシステムで用いられるメモリの値を表示するリアルタイムウォッチ装置であって、
参照されるべきメモリアドレスを含むウォッチ情報を登録するウォッチ情報登録部と、
前記登録されたウォッチ情報を取得するウォッチ情報取得部と、
受け取ったメモリアドレスに格納された値を前記メモリから読み出すメモリアクセス部と、
前記取得されたウォッチ情報に含まれる参照されるべきメモリアドレスに対するアクセスが可能か否かを判断するメモリアクセス可否判断部と、
前記メモリアクセス可否判断部でアクセス可能と判断されたメモリアドレスを前記メモリアクセス部に出力し、前記メモリアクセス部によって読み出された値を表示するウォッチ表示部と、
メモリアドレス範囲と、前記メモリアドレス範囲を使うために初期設定が必要な制御レジスタについての条件であるアクセス可能条件とを含む、システム情報を取得するシステム情報取得部とを備え、
前記アクセス可能条件は、前記メモリアドレス範囲へアクセス可能であると判断されるための、前記制御レジスタに格納される値に対する条件であり、
前記メモリアクセス可否判断部は、
前記取得されたウォッチ情報に含まれる参照されるべきメモリアドレスに対応する前記制御レジスタの値が、前記制御レジスタについての前記アクセス可能条件を満たすか否かに従って、アクセスが可能か否かを判断する
ことを特徴とするリアルタイムウォッチ装置。
【請求項２】
請求項１に記載のリアルタイムウォッチ装置において、
前記システム情報を登録するシステム情報登録部を更に備える
ことを特徴とするリアルタイムウォッチ装置。
【請求項３】
請求項２に記載のリアルタイムウォッチ装置において、
前記システム情報登録部は、
システム情報を登録する要求を受けた場合に、前記制御レジスタの値が前記登録要求されたシステム情報のアクセス可能条件を満たすように、前記登録要求されたシステム情報のアクセス可能条件を設定する
ことを特徴とするリアルタイムウォッチ装置。
【請求項４】
請求項１に記載のリアルタイムウォッチ装置において、
前記ウォッチ情報登録部は、
前記システム情報のうち、前記参照されるべきメモリアドレスとして登録要求されたメモリアドレスに対応するシステム情報に基づいた、前記登録要求されたメモリアドレスへのアクセスが可能か否かの判断結果を、メモリアクセス可否状態として、前記登録要求されたメモリアドレスに対応させて前記ウォッチ情報に登録し、
前記メモリアクセス可否判断部は、
前記登録されたメモリアクセス可否状態に従って、アクセスが可能か否かを判断する
ことを特徴とするリアルタイムウォッチ装置。
【請求項５】
請求項４に記載のリアルタイムウォッチ装置において、
前記ターゲットシステムの状態を検出し、検出された状態に応じて更新要求を行うシステム状態監視部と、
前記更新要求に従って、前記ウォッチ情報に含まれるメモリアクセス可否状態を更新するウォッチ情報更新部とを更に備える
ことを特徴とするリアルタイムウォッチ装置。
【請求項６】
請求項５に記載のリアルタイムウォッチ装置において、
前記システム状態監視部は、
前記ターゲットシステムの初期化を検出する
ことを特徴とするリアルタイムウォッチ装置。
【請求項７】
請求項５に記載のリアルタイムウォッチ装置において、
前記システム状態監視部は、
前記ターゲットシステムで動作するプログラムの実行が停止したことを検出する
ことを特徴とするリアルタイムウォッチ装置。
【請求項８】
請求項５に記載のリアルタイムウォッチ装置において、
前記システム状態監視部は、
前記ターゲットシステムでプログラムの実行が開始されたことを検出する
ことを特徴とするリアルタイムウォッチ装置。
【請求項９】
請求項５に記載のリアルタイムウォッチ装置において、
前記システム状態監視部は、
前記ターゲットシステムが特定のコードを実行したことを検出する
ことを特徴とするリアルタイムウォッチ装置。
【請求項１０】
請求項５に記載のリアルタイムウォッチ装置において、
前記システム状態監視部は、
前記ターゲットシステムが特定のメモリにアクセスしたことを検出する
ことを特徴とするリアルタイムウォッチ装置。
【請求項１１】
請求項１に記載のリアルタイムウォッチ装置において、
前記ウォッチ表示部は、
前記取得されたシステム情報に含まれるアクセス可能条件及びこのアクセス可能条件についての前記制御レジスタの状態を、前記メモリアクセス可否判断部によってアクセス不可能と判断されたウォッチ情報及びアクセス不可能であることを示す情報とともに表示する
ことを特徴とするリアルタイムウォッチ装置。
【請求項１２】
請求項１に記載のリアルタイムウォッチ装置において、
前記メモリアクセス可否判断部によってアクセス不可能と判断された場合に、その判断に用いられたシステム情報のアクセス可能条件を満たすように、前記制御レジスタの値を変更するシステム状態変更部を更に備える
ことを特徴とするリアルタイムウォッチ装置。
【請求項１３】
ターゲットシステムにおけるプログラムの実行中に、前記ターゲットシステムで用いられるメモリの値を表示するリアルタイムウォッチ方法であって、
前記メモリの参照されるべきメモリアドレスを含む登録されたウォッチ情報を取得するウォッチ情報取得ステップと、
前記取得されたウォッチ情報に含まれる参照されるべきメモリアドレスに対するアクセスが可能か否かを判断するメモリアクセス可否判断ステップと、
前記メモリアクセス可否判断ステップでアクセス可能と判断されたメモリアドレスに格納された値を表示するウォッチ表示ステップと、
メモリアドレス範囲と、前記メモリアドレス範囲を使うために初期設定が必要な制御レジスタについての条件であるアクセス可能条件とを含む、システム情報を取得するシステム情報取得ステップとを備え、
前記アクセス可能条件は、前記メモリアドレス範囲へアクセス可能であると判断されるための、前記制御レジスタに格納される値に対する条件であり、
前記メモリアクセス可否判断ステップは、
前記取得されたウォッチ情報に含まれる参照されるべきメモリアドレスに対応する前記制御レジスタの値が、前記制御レジスタについての前記アクセス可能条件を満たすか否かに従って、アクセスが可能か否かを判断する
ことを特徴とするリアルタイムウォッチ方法。
【請求項１４】
請求項１３に記載のリアルタイムウォッチ方法において、
前記システム情報を登録するシステム情報登録ステップを更に備える
ことを特徴とするリアルタイムウォッチ方法。
【請求項１５】
請求項１３に記載のリアルタイムウォッチ方法において、
前記システム情報のうち、前記参照されるべきメモリアドレスとして登録要求されたメモリアドレスに対応するシステム情報に基づいた、前記登録要求されたメモリアドレスへのアクセスが可能か否かの判断結果を、メモリアクセス可否状態として、前記登録要求されたメモリアドレスに対応させて前記ウォッチ情報に登録するウォッチ情報登録ステップを更に備え、
前記メモリアクセス可否判断ステップは、
前記登録されたメモリアクセス可否状態に従って、アクセスが可能か否かを判断する
ことを特徴とするリアルタイムウォッチ方法。
【請求項１６】
請求項１５に記載のリアルタイムウォッチ方法において、
前記ターゲットシステムの状態を検出し、検出された状態に応じて更新要求を行うシステム状態監視ステップと、
前記更新要求に従って、前記ウォッチ情報に含まれるメモリアクセス可否状態を更新するウォッチ情報更新ステップとを更に備える
ことを特徴とするリアルタイムウォッチ方法。
【請求項１７】
請求項１６に記載のリアルタイムウォッチ方法において、
前記システム状態監視ステップは、
前記ターゲットシステムの初期化を検出する
ことを特徴とするリアルタイムウォッチ方法。
【請求項１８】
請求項１６に記載のリアルタイムウォッチ方法において、
前記システム状態監視ステップは、
前記ターゲットシステムで動作するプログラムの実行が停止したことを検出する
ことを特徴とするリアルタイムウォッチ方法。
【請求項１９】
請求項１６に記載のリアルタイムウォッチ方法において、
前記システム状態監視ステップは、
前記ターゲットシステムでプログラムの実行が開始されたことを検出する
ことを特徴とするリアルタイムウォッチ方法。
【請求項２０】
請求項１６に記載のリアルタイムウォッチ方法において、
前記システム状態監視ステップは、
前記ターゲットシステムが特定のコードを実行したことを検出する
ことを特徴とするリアルタイムウォッチ方法。
【請求項２１】
請求項１６に記載のリアルタイムウォッチ方法において、
前記システム状態監視ステップは、
前記ターゲットシステムが特定のメモリにアクセスしたことを検出する
ことを特徴とするリアルタイムウォッチ方法。
【請求項２２】
請求項１３に記載のリアルタイムウォッチ方法において、
前記ウォッチ表示ステップは、
前記取得されたシステム情報に含まれるアクセス可能条件及びこのアクセス可能条件についての前記制御レジスタの状態を、前記メモリアクセス可否判断ステップでアクセス不可能と判断されたウォッチ情報及びアクセス不可能であることを示す情報とともに表示する
ことを特徴とするリアルタイムウォッチ方法。
【請求項２３】
請求項１３に記載のリアルタイムウォッチ方法において、
前記メモリアクセス可否判断ステップでアクセス不可能と判断された場合に、その判断に用いられたシステム情報のアクセス可能条件を満たすように、前記制御レジスタの値を変更するシステム状態変更ステップを更に備える
ことを特徴とするリアルタイムウォッチ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、組込み機器のソフトウェア開発におけるデバッグ技術に関する。
【背景技術】
【０００２】
組込み機器の開発においてはエミュレータが使われることがある。開発の初期の段階では、エミュレータに搭載されているエミュレーションメモリが利用される。但し、エミュレータを利用する場合であっても、開発の終盤では実際の組込み機器上のマイコン内蔵メモリやマイコンに外付けされた拡張メモリ（外部メモリ）を使ってのデバッグが必要となる。一般にエミュレータは、マイコンの内蔵メモリや外部メモリ等へアクセスする機能を有しており、ユーザプログラムのデバッグの際には、マイコンにおいてプログラムを実行、又は停止させながら、各種メモリの参照、変更が行えるように構成されている。
【０００３】
エミュレータにおける各種メモリに対するアクセス機能は、例えば、マイコンに、ユーザプログラムの実行を停止させ、エミュレータ制御プログラム（モニタプログラム）を実行させて、各種メモリの内容を外部に出力させることによって実現されている。また、メモリを参照する際にユーザプログラムを停止すること等の影響をより少なくする方法として、マイコンに内蔵されたデバッグ用ＤＭＡＣ（ダイレクト・メモリ・アクセス・コントローラ）を通して外部メモリを参照する方法も提案されている（特許文献１参照）。この方法では、マイコンのＣＰＵからメモリバスの使用権を獲得してメモリへのアクセスを行うので、前述のモニタプログラムによって参照する方法に比べてユーザプログラムの実行への影響が少ない。
【０００４】
プログラム開発におけるデバッグの際には、このようなメモリへのアクセス技術を使って、プログラム実行中に各種メモリに定期的にアクセスして値を参照するリアルタイムウォッチ装置が使われている。
【特許文献１】特開平８−３２８８９８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
最近の組込み機器には多機能、高機能化へのニーズが高く、これに比例して組込み機器を制御するソフトウェアは巨大になっている。従来は８ビットマイコンが使われていた分野においても、メモリ空間のより広い３２ビットマイコンへのシフトが進んでいる。更に、マイコンに内蔵されたメモリに加えて、外付けされた外部メモリを搭載するシステムが増えている。マイコンが有するＣＰＵで動作するプログラムが外部メモリを使う場合には、拡張方法や外部メモリの種類に応じて、バス幅、ウェイト、バスサイクルの開始及び終了のタイミング等を、メモリコントロールレジスタ等の制御レジスタを使って初期設定する必要がある。
【０００６】
通常の場合、これらの設定はプログラムのスタートアップルーチンにて行われ、その設定後であれば、プログラムによって外部メモリに安全に正しくアクセスし、値を参照することができる。プログラムのデバッグの際にリアルタイムウォッチ機能等によってメモリにアクセスして値を参照する場合にも、プログラムで参照する場合と同様に、この初期設定がされていないと基本的には安全に正しくアクセスすることはできない。また、初期設定された後にシステムがリセットされた場合にも、スタートアップルーチンで設定した制御レジスタの内容は全てクリア（初期化）されてしまうので、やはり外部メモリにアクセスすることができなくなってしまう。
【０００７】
プログラムが実行されているときに、システムのリセットがどのタイミングで起きるかは、通常は分からない。リアルタイムウォッチ装置が定期的に外部メモリを参照しているタイミングで、システムのリセットが発生すると、リアルタイムウォッチ装置は、メモリの参照が正しくできず、誤ったメモリの値を取得することがある。最悪の場合には、リアルタイムウォッチ装置は、メモリアクセスができず、システムが致命的な状況に陥ったと判断し、プログラムを停止してしまう。
【０００８】
また、リアルタイムウォッチ装置は、参照されるべきメモリアドレスを示すウォッチ情報を記憶する機能を有する場合があり、次に起動されたときに、前回登録されていたウォッチ情報が登録された状態に復帰する。このとき、ウォッチ情報の中に、外部メモリを参照すべきであることを示すウォッチ情報が含まれていると、リアルタイムウォッチ装置は、プログラムのデバッグ開始後に、外部メモリへの参照が正しくできなかったり、システムが致命的な状況であると判断してプログラムを停止したりするので、デバッグ作業に支障が出てしまう。
【０００９】
本発明は、マイコン等のターゲットシステムにおけるプログラムの実行中に、ターゲットシステムで用いられるメモリの値を安全に正しく参照することができるようにすることを目的とする。
【課題を解決するための手段】
【００１０】
前記課題を解決するため、本発明が講じた手段は、ターゲットシステムにおけるプログラムの実行中に、前記ターゲットシステムで用いられるメモリの値を表示するリアルタイムウォッチ装置であって、参照されるべきメモリアドレスを含むウォッチ情報を登録するウォッチ情報登録部と、前記登録されたウォッチ情報を取得するウォッチ情報取得部と、受け取ったメモリアドレスに格納された値を前記メモリから読み出すメモリアクセス部と、前記取得されたウォッチ情報に含まれる参照されるべきメモリアドレスに対するアクセスが可能か否かを判断するメモリアクセス可否判断部と、前記メモリアクセス可否判断部でアクセス可能と判断されたメモリアドレスを前記メモリアクセス部に出力し、前記メモリアクセス部によって読み出された値を表示するウォッチ表示部とを有する。
【００１１】
これによると、アクセス可能と判断された場合にのみ、実際にメモリの値を読み出し、表示するので、アクセス不可能な領域にアクセスしないようにすることができる。このため、エラーの発生を避けることができる。
【発明の効果】
【００１２】
本発明によれば、ターゲットシステムでプログラムを実行中に、ターゲットシステムが用いるメモリの値を致命的なエラーを起こさずに取得することができるので、安全で正確なデバッグ作業を行うことが可能となる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の実施の形態について、図面を参照しながら説明する。
【００１４】
（第１の実施形態）
図１は、本発明の第１の実施形態に係るリアルタイムウォッチ装置の構成を示すブロック図である。図１のリアルタイムウォッチ装置は、ウォッチ情報登録部１２と、ウォッチ情報取得部１６と、ウォッチ表示部１８と、メモリアクセス可否判断部２２と、メモリアクセス部２４と、システム情報登録部３２と、システム情報取得部３６とを有しており、マイコン等を有するターゲットシステムにおけるソフトウェアプログラムの実行中に、ターゲットシステムで用いられるメモリの値を表示する。
【００１５】
図２は、ウォッチ情報テーブルの一例を示す説明図である。ウォッチ情報テーブル１４には、それぞれにウォッチ情報ＩＤが付されたウォッチ情報が登録されている。各ウォッチ情報には、ターゲットシステムで用いられるメモリの参照されるべきメモリアドレス、参照される値のサイズ、及びそのメモリアドレスに格納された変数又はシンボルの名前が含まれている。ウォッチ情報は、ターゲットシステムで用いられるメモリの値を定期的に参照するために用いられる。
【００１６】
ウォッチ情報登録部１２は、リアルタイムウォッチ装置のユーザインタフェース等によって受け取ったウォッチ情報をウォッチ情報テーブル１４に登録する。ウォッチ情報テーブル１４は、記憶部（図示せず）に格納されている。
【００１７】
図３は、システム情報テーブルの一例を示す説明図である。システム情報テーブル３４には、それぞれにシステム情報ＩＤが付されたシステム情報が登録されている。各システム情報には、ターゲットシステムで拡張された外部メモリ等のメモリのアドレス範囲、このようなメモリを使うために初期設定が必要な制御レジスタとして用いられるメモリのアドレス（以下では制御レジスタアドレスと称する）、制御レジスタの各ビットのうち初期設定が必要なビットを特定するためのマスク値、及び制御レジスタアドレスに格納される条件値が含まれている。このような制御レジスタアドレス、マスク値、及び条件値の組は、アクセス可能条件を示している。制御レジスタアドレスに格納された値とマスク値との間でビット毎に行われた論理和演算結果が条件値と一致するとき、アクセス可能条件が満たされる。
【００１８】
システム情報登録部３２は、リアルタイムウォッチ装置のユーザインタフェース等によって受け取ったターゲットシステムのシステム情報を、システム情報テーブル３４に登録する。システム情報テーブル３４は、記憶部に格納されている。適切なシステム情報を登録するようにすれば、ターゲットシステムや実行されるプログラムが変更されても対処することができる。
【００１９】
なお、システム情報を登録する要求を受けた場合に、システム情報登録部３２は、そのときのメモリの値がそのシステム情報のアクセス可能条件を満たすように、そのシステム情報のアクセス可能条件を設定してもよい。すなわち、システム情報登録部３２は、そのシステム情報の制御レジスタアドレスに格納されたそのときのメモリの値とマスク値との間でビット毎に論理和演算を行い、その結果をそのシステム情報の条件値として登録してもよい。
【００２０】
図４は、図１のリアルタイムウォッチ装置における処理の流れを示すフローチャートである。図１〜図４を参照して、図１のリアルタイムウォッチ装置の動作の例を説明する。既にウォッチ情報テーブル１４は図２の状態に、システム情報テーブル３４は図３の状態になっているものとする。
【００２１】
ステップＳ１２では、ウォッチ情報取得部１６は、リアルタイムウォッチ要求を受け取ると、まずウォッチ情報テーブル１４から処理対象とするウォッチ情報を取得する。ウォッチ表示部１８は、ウォッチ情報取得部１６からウォッチ情報を受け取り、メモリアクセス可否判断部２２に出力する。
【００２２】
ステップＳ１４では、メモリアクセス可否判断部２２は、システム情報テーブル３４に登録されたシステム情報のうち、受け取ったウォッチ情報に示されたメモリアドレスに対応するシステム情報（そのシステム情報のアドレス範囲内に、ウォッチ情報に示されたメモリアドレスが存在する）を検索する。この際、システム情報取得部３６は、システム情報テーブル３４からシステム情報を取得し、メモリアクセス可否判断部２２に出力する。
【００２３】
例えば、図２のウォッチ情報テーブルにおけるＩＤが“２”のウォッチ情報の場合には、メモリアドレス０ｘ１００４が登録されており、これに対応する図３のシステム情報テーブル内のシステム情報は、アドレス範囲が０ｘ１０００−０ｘ１ＦＦＦであるＩＤ“１”のシステム情報である。また、ＩＤ“３”のウォッチ情報の場合には、メモリアドレス０ｘ３０００が登録されており、これに対応するシステム情報は、アドレス範囲が０ｘ３０００−０ｘ３ＦＦＦであるＩＤ“３”のシステム情報である。アドレス範囲毎に異なるシステム情報を用いるので、アクセス可能条件が異なる複数のメモリを用いる場合であっても、アクセス可否を適切に判断することができる。
【００２４】
ステップＳ１６では、メモリアクセス可否判断部２２は、該当するシステム情報が存在するか否かを判断する。該当するシステム情報が存在する場合にはステップＳ１８に、存在しない場合にはステップＳ２２に進む。例えば、ＩＤ“１”のウォッチ情報のメモリアドレスは０ｘ００００であり、図３のシステム情報テーブルには該当するシステム情報が登録されていない。こうした場合には、メモリアクセス可否判断部２２は、ウォッチ情報のメモリアドレスは常にアクセス可能なメモリアドレスであると判断し、アクセス可能か否かの判断処理をスキップするためにステップＳ２２に進む。
【００２５】
ステップＳ１８では、メモリアクセス可否判断部２２は、メモリアクセス部２４を介して、該当するシステム情報に示された制御レジスタアドレスに格納された値をメモリから取得する。ステップＳ２０では、メモリアクセス可否判断部２２は、アクセス可能条件が満たされるか否かを判定する。すなわち、取得した値と該当するシステム情報のマスク値との間でビット毎に論理和演算をし、その結果がそのシステム情報の条件値と一致するか否かを判定する。図３のＩＤ“１”のシステム情報のように、システム情報には、制御レジスタアドレスとマスク値と条件値との組み合わせを複数含むようにしてもよく、その場合には、それらの組み合わせ全てについて判定を行う。
【００２６】
そのシステム情報に関しての全ての判定が、一致するという判定である場合には、メモリアクセス可否判断部２２は、そのウォッチ情報のメモリアドレスはアクセス可能であると判断し、ステップＳ２２に進む。そのシステム情報に関しての全ての判定が、一致するという判定ではない場合には、メモリアクセス可否判断部２２は、そのウォッチ情報のメモリアドレスはアクセス不可能であると判断し、ステップＳ２４に進む。ステップＳ２０において、メモリアクセス可否判断部２２は、判断結果をウォッチ表示部１８に出力する。
【００２７】
ステップＳ２２では、ウォッチ表示部１８は、処理対象のウォッチ情報が示すメモリアドレス及びサイズを、メモリアクセス部２４に出力する。メモリアクセス部２４は、受け取ったメモリアドレスに格納された受け取ったサイズの値を、ターゲットシステムで用いられるメモリから読み出し、読み出された値をウォッチ表示部１８に出力する。
【００２８】
ステップＳ２４では、ウォッチ表示部１８は、処理対象のウォッチ情報が示すメモリアドレス及び変数名を表示する。ステップＳ２６では、ウォッチ表示部１８は、メモリアドレスがアクセス可能である場合にはメモリアクセス部２４から受け取った値を、アクセス不可能である場合にはアクセス不可能であることを示す情報を、変数名に対応させて表示する。
【００２９】
ステップＳ２８では、ウォッチ表示部１８は、ウォッチ情報テーブル１４に登録された全てのウォッチ情報についての処理が終了しているか否かを判断する。終了している場合には図４の処理を終了し、終了していない場合にはステップＳ１２に戻り、次のウォッチ情報の処理を行う。ウォッチ情報は登録順に処理される。
【００３０】
図１のリアルタイムウォッチ装置は、ターゲットシステムでプログラムが実行されると、図４の処理を繰り返し、一定時間毎にリアルタイムウォッチ表示を行う。
【００３１】
図５は、図１のリアルタイムウォッチ装置によるウォッチ表示の例を示す説明図である。図５では、ウォッチ情報ＩＤ、変数／シンボル名及びそのアドレス値、読み出されたメモリの値が、各行に示されている。ここでは、メモリの値として記号“-----”が示されている場合には、その変数／シンボルについてはメモリアクセス不可能であることを表わしている。
【００３２】
この例の場合、ＩＤ“３”（変数Ｖａｌ３、メモリアドレス０ｘ３０００）とＩＤ“５”（変数Ｖａｌ５、メモリアドレス０ｘ４０００）のウォッチ表示については、アクセス不可能であることが示されている。このことから、図３のシステム情報テーブルに登録されたＩＤ“３”（アドレス範囲０ｘ３０００−０ｘ３ＦＦＦ）とＩＤ“４”（アドレス範囲０ｘ４０００−０ｘ４ＦＦＦ）のシステム情報に関するアドレス範囲（０ｘ３０００−０ｘ３ＦＦＦ及び０ｘ４０００−０ｘ４ＦＦＦ）については、メモリアクセスが不可能であると判断されたことが分かる。
【００３３】
なお、以上の説明では、メモリアドレスがアクセス不可能であると判断された場合には、メモリアクセスをせずにリアルタイムウォッチ表示しないこととしたが、その判断に用いられたシステム情報のアクセス可能条件を満たすように、メモリの値を変更して、常にリアルタイムウォッチ表示ができるようにしてもよい。例えば、図１のリアルタイムウォッチ装置がシステム状態変更部を更に有するようにし、このシステム状態変更部が、アクセス不可能であると判断されたメモリアドレスに対応するシステム情報の制御レジスタアドレスに格納された値を、そのシステム情報の条件値となるように変更して、メモリアクセス可能な状態になるようにしてもよい。
【００３４】
また、ウォッチ情報が示すメモリアドレスへのアクセスの可否についての判断結果に関わらず、そのウォッチ情報に関して表示を行うものとして説明したが、アクセス不可能と判断されたウォッチ情報に関しては表示しないようにしてもよい。
【００３５】
アクセス不可能と判断された場合については、その結果だけが分かるように表示する例を示したが、表示方法はこれには限定されない。例えば、判断に用いられたアクセス可能条件や、条件値に対応する現在のメモリの値等を更に表示してもよい。
【００３６】
また、システム情報テーブル（図３）に登録されていないアドレスは、メモリアクセスが可能なアドレスであると判断するとして説明したが、システム情報の登録漏れの可能性を考慮し、登録漏れがあってもメモリアクセスエラーを起こさないようにするために、システム情報テーブルに登録されていないアドレスはアクセス不可能であると判断するようにしてもよい。
【００３７】
本実施形態のリアルタイムウォッチ装置によると、ウォッチ情報として登録されている変数のうち、アクセス可能なメモリアドレスに配置されている変数にのみ実際にアクセスを行うので、メモリの状態を意識することなくウォッチ情報の登録ができる。また、ウォッチ表示の際に、初期設定前の致命的なメモリアクセスエラーや、誤ったメモリ値の取得等、デバッグに支障の出る状況を回避することができる。
【００３８】
（第２の実施形態）
図６は、本発明の第２の実施形態に係るリアルタイムウォッチ装置の構成を示すブロック図である。図６のリアルタイムウォッチ装置は、ウォッチ情報登録部２１２と、ウォッチ表示部２１８と、メモリアクセス可否判断部２２２とを、ウォッチ情報登録部１２、ウォッチ表示部１８、及びメモリアクセス可否判断部２２に代えて有している点が、図１のリアルタイムウォッチ装置とは異なっている。
【００３９】
図７は、図６のリアルタイムウォッチ装置におけるウォッチ情報登録処理の流れを示すフローチャートである。図３、図６、及び図７を参照して、図６のリアルタイムウォッチ装置におけるウォッチ情報登録処理の例を説明する。システム情報テーブル３４は図３の状態になっているものとする。
【００４０】
ステップＳ２１２では、ウォッチ情報登録部２１２は、ユーザインタフェース等によってウォッチ情報の登録要求を受け取る。登録要求には、メモリアドレス、サイズ、及び変数（シンボル）名が含まれている。ステップＳ２１４では、メモリアクセス可否判断部２２２は、システム情報テーブル３４に登録されたシステム情報のうち、登録要求されたメモリアドレスに対応するシステム情報を検索する。例えば、登録要求されたメモリアドレスが０ｘ１００４の場合、これに対応する図３のシステム情報テーブル内のシステム情報は、アドレス範囲が０ｘ１０００−０ｘ１ＦＦＦであるＩＤ“１”のシステム情報である。
【００４１】
ステップＳ２１６では、メモリアクセス可否判断部２２２は、該当するシステム情報が存在するか否かを判断する。該当するシステム情報が存在する場合にはステップＳ２１８に、存在しない場合にはステップＳ２２２に進む。該当するシステム情報がシステム情報テーブル３４に登録されていない場合には、メモリアクセス可否判断部２２２は、登録要求されたメモリアドレスは常にアクセス可能なメモリアドレスであると判断し、アクセス可能か否かの判断処理をスキップするためにステップＳ２２２に進む。
【００４２】
ステップＳ２１８では、メモリアクセス可否判断部２２２は、メモリアクセス部２４を介して、該当するシステム情報に示された制御レジスタアドレスに格納された値をメモリから取得する。
【００４３】
ステップＳ２２０では、メモリアクセス可否判断部２２２は、取得した値と該当するシステム情報のマスク値との間でビット毎に論理和演算をし、その結果がそのシステム情報の条件値と一致するか否かを判定する。
【００４４】
そのシステム情報に関しての全ての判定が、一致するという判定である場合には、メモリアクセス可否判断部２２２は、そのウォッチ情報のメモリアドレスはアクセス可能であると判断し、ステップＳ２２２に進む。そのシステム情報に関しての全ての判定が、一致するという判定ではない場合には、メモリアクセス可否判断部２２２は、そのウォッチ情報のメモリアドレスはアクセス不可能であると判断し、ステップＳ２２４に進む。メモリアクセス可否判断部２２２は、アクセス可否状態を判断の結果としてウォッチ情報登録部２１２に出力する。
【００４５】
ステップＳ２２２では、ウォッチ情報登録部２１２は、登録要求されたメモリアドレス、サイズ、変数（シンボル）名に、アクセス可否状態（“可”）及び対応するシステム情報ＩＤを付加し、ウォッチ情報として登録する。ステップＳ２２４では、ウォッチ情報登録部２１２は、登録要求されたメモリアドレス、サイズ、変数（シンボル）名にアクセス可否状態（“不可”）及び対応するシステム情報ＩＤを付加し、ウォッチ情報として登録する。
【００４６】
図８は、図７のウォッチ情報登録処理の結果、得られたウォッチ情報テーブルの一例を示す説明図である。ウォッチ情報テーブル２１４は、記憶部（図示せず）に格納される。
【００４７】
図９は、図６のリアルタイムウォッチ装置におけるウォッチ表示処理の流れを示すフローチャートである。図３、図６、図８及び図９を参照して、図６のリアルタイムウォッチ装置におけるウォッチ表示処理の例を説明する。ウォッチ情報テーブル２１４は図８の状態になっているものとする。
【００４８】
ステップＳ２３２では、ウォッチ情報取得部１６は、リアルタイムウォッチ要求が入ると、まずウォッチ情報テーブル２１４（図８）から処理対象とするウォッチ情報を取得する。ウォッチ表示部２１８は、ウォッチ情報取得部１６からウォッチ情報を受け取り、メモリアクセス可否判断部２２２に出力する。
【００４９】
ステップＳ２３４では、メモリアクセス可否判断部２２２は、取得したウォッチ情報が示すアクセス可否状態が“可”であるか否かを判断する。アクセス可否状態が“可”である場合には、ステップＳ２４２に進み、“不可”である場合には、ステップＳ２４４に進む。
【００５０】
ステップＳ２４２では、ウォッチ表示部２１８は、処理対象のウォッチ情報が示すメモリアドレス及びサイズを、メモリアクセス部２４に出力する。メモリアクセス部２４は、受け取ったメモリアドレスに格納された受け取ったサイズの値を、ターゲットシステムで用いられるメモリから読み出し、読み出された値をウォッチ表示部２１８に出力する。
【００５１】
ステップＳ２４４では、ウォッチ表示部２１８は、処理対象のウォッチ情報が示すメモリアドレス及び変数名を表示する。ステップＳ２４６では、ウォッチ表示部２１８は、メモリアドレスがアクセス可能である場合にはメモリアクセス部２４から受け取った値を、アクセス不可能である場合にはアクセス不可能であることを示す情報を、変数名に対応させて表示する。
【００５２】
ステップＳ２４８では、ウォッチ表示部２１８は、ウォッチ情報テーブル２１４に登録された全てのウォッチ情報についての処理が終了しているか否かを判断する。終了している場合には図９の処理を終了し、終了していない場合にはステップＳ２３２に戻り、次のウォッチ情報の処理を行う。ウォッチ情報は登録順に処理される。
【００５３】
図６のリアルタイムウォッチ装置は、ターゲットシステムでプログラムが実行されると、図９の処理を繰り返し、一定時間毎にリアルタイムウォッチ表示を行う。
【００５４】
このように、図６のリアルタイムウォッチ装置では、ウォッチ情報を登録する際にメモリアクセスの可否を判断し、その結果をアクセス可否状態としてウォッチ情報に付加しておく。リアルタイムウォッチ表示の際に、ターゲットシステムで用いられるメモリへのアクセス可否を判断する処理を簡略化できるので、ウォッチ表示処理の高速化を図ることができる。
【００５５】
（第３の実施形態）
図１０は、本発明の第３の実施形態に係るリアルタイムウォッチ装置の構成を示すブロック図である。図１０のリアルタイムウォッチ装置は、ウォッチ情報登録部２１２に代えてウォッチ情報登録部３１２を有し、システム状態監視部３４２と、ウォッチ情報更新部３４４とを更に有している点が、図６のリアルタイムウォッチ装置とは異なっている。
【００５６】
システム状態監視部３４２は、デバッグ及びリアルタイムウォッチの対象とするターゲットシステムの状態を監視し、所定の状態を検知すると、ウォッチ情報テーブルを更新するようにウォッチ情報更新部３４４に更新要求を通知する。ウォッチ情報更新部３４４は、更新要求に従って、ウォッチ情報に含まれるメモリアクセス可否状態を更新する。
【００５７】
検知すべきターゲットシステムの状態としては、ターゲットシステムのリセット（初期化）、マイコンプログラムの実行開始（マイコンのユーザモードへの遷移）、マイコンプログラムの停止（マイコンのモニタモードへの遷移）、特定のプログラムコードの実行（特定のアドレスの命令の実行）、特定のメモリへのアクセス等が挙げられる。
【００５８】
システム状態監視部３４２は、例えば、マイコンへのリセットを検出した場合には、いずれのシステム情報ＩＤに対応するウォッチ情報のアクセス可否状態も“不可”にするように、ウォッチ情報更新部３４４に更新要求を通知する。また、システム状態監視部３４２は、特定のアドレスの命令実行を検出した場合には、ある特定のシステム情報ＩＤの外部メモリに対する初期設定は完了していると判断できることから、そのシステム情報ＩＤに対応するウォッチ情報のアクセス可否状態を“可”にするように、ウォッチ情報更新部３４４に更新要求を通知する。
【００５９】
なお、メモリへのアクセス可否状態に変化が起きる可能性があり、かつ、それが検知可能であれば、以上の場合以外において更新要求を通知するようにしてもよい。
【００６０】
図１１は、図１０のリアルタイムウォッチ装置におけるウォッチ情報更新処理の流れを示すフローチャートである。図８、図１０、及び図１１を参照して、図１０のリアルタイムウォッチ装置におけるウォッチ情報更新処理の例を説明する。ウォッチ情報テーブル２１４は図８の状態になっているものとする。
【００６１】
ステップＳ３１２では、ウォッチ情報更新部３４４は、システム状態監視部３４２からウォッチ情報の更新要求を受け取る。更新要求には、更新対象に対応するシステム情報ＩＤ、及びアクセス可否状態を“可”／“不可”のいずれにするかを示す更新種別が含まれている。ステップＳ３１４では、ウォッチ情報更新部３４４は、ウォッチ情報テーブル２１４からウォッチ情報を取得する。
【００６２】
ステップＳ３１６では、ウォッチ情報更新部３４４は、ウォッチ情報のシステム情報ＩＤが、更新要求に係るシステム情報ＩＤと一致するか否かを判断する。システム情報ＩＤが一致した場合にはステップＳ３１８に進み、一致しない場合にはステップＳ３２２に進む。
【００６３】
ステップＳ３１８では、ウォッチ情報更新部３４４は、取得したウォッチ情報のメモリアクセス可否状態を、更新種別に応じて変更し、ウォッチ情報登録部３１２に出力する。ステップＳ３２０では、ウォッチ情報登録部３１２は、ウォッチ情報テーブル２１４内のウォッチ情報を、変更後のウォッチ情報で更新する。ウォッチ情報登録部３１２は、その他の点は、図６のウォッチ情報登録部２１２と同様である。
【００６４】
ステップＳ３２２では、ウォッチ情報更新部３４４は、ウォッチ情報テーブルに登録された全てのウォッチ情報についての処理が終了しているか否かを判断する。終了している場合には図１１の処理を終了し、終了していない場合にはステップＳ３１４に戻り、次のウォッチ情報の処理を行う。
【００６５】
なお、ここでは、更新要求の際には、システム状態監視部３４２が、ウォッチ情報更新部３４４に対して更新対象となるシステム情報ＩＤ及び更新種別を通知するものとして説明したが、システム状態監視部３４２が、更新要求のみを行うようにしてもよい。この場合には、ウォッチ情報更新部３４４が、システム情報テーブル３４によって現在のターゲットシステムの状態を確認して、必要な場合にはウォッチ情報を変更し、ウォッチ情報テーブル２１４を更新するようにする。
【００６６】
このように、図１０のリアルタイムウォッチ装置は、実際にメモリへアクセスをするか否かを左右する、ウォッチ情報が示すアクセス可否状態を、ターゲットシステムの状態変化に合わせて逐次更新するようにしている。このため、安全性及び正確性を維持しつつ、ターゲットシステムの状態をより多くのウォッチ情報によって参照することができる。
【産業上の利用可能性】
【００６７】
以上説明したように、本発明は、メモリの値を安全に参照することができるので、メモリを用いるシステムのデバッグのためのリアルタイムウォッチ装置等について有用である。
【図面の簡単な説明】
【００６８】
【図１】本発明の第１の実施形態に係るリアルタイムウォッチ装置の構成を示すブロック図である。
【図２】ウォッチ情報テーブルの一例を示す説明図である。
【図３】システム情報テーブルの一例を示す説明図である。
【図４】図１のリアルタイムウォッチ装置における処理の流れを示すフローチャートである。
【図５】図１のリアルタイムウォッチ装置によるウォッチ表示の例を示す説明図である。
【図６】本発明の第２の実施形態に係るリアルタイムウォッチ装置の構成を示すブロック図である。
【図７】図６のリアルタイムウォッチ装置におけるウォッチ情報登録処理の流れを示すフローチャートである。
【図８】図７のウォッチ情報登録処理の結果、得られたウォッチ情報テーブルの一例を示す説明図である。
【図９】図６のリアルタイムウォッチ装置におけるウォッチ表示処理の流れを示すフローチャートである。
【図１０】本発明の第３の実施形態に係るリアルタイムウォッチ装置の構成を示すブロック図である。
【図１１】図１０のリアルタイムウォッチ装置におけるウォッチ情報更新処理の流れを示すフローチャートである。
【符号の説明】
【００６９】
１２，２１２，３１２  ウォッチ情報登録部
１４，２１４  ウォッチ情報テーブル
１６  ウォッチ情報取得部
１８，２１８  ウォッチ表示部
２２，２２２  メモリアクセス可否判断部
２４  メモリアクセス部
３２  システム情報登録部
３４  システム情報テーブル
３６  システム情報取得部
３４２  システム状態監視部
３４４  ウォッチ情報更新部
【図１】
0004856023.tif 000002
【図２】
0004856023.tif 000003
【図３】
0004856023.tif 000004
【図４】
0004856023.tif 000005
【図５】
0004856023.tif 000006
【図６】
0004856023.tif 000007
【図７】
0004856023.tif 000008
【図８】
0004856023.tif 000009
【図９】
0004856023.tif 000010
【図１０】
0004856023.tif 000011
【図１１】
0004856023.tif 000012