(57)【要約】【課題】ソフトウェアのデバッグにおいて、Ｉ／Ｏ領域へのアクセス、又は、ＲＯＭ領域への書き込みが行われた場合に、プログラムバグとして検出することにより、バグを容易に回避でき、デバッグ効率が向上するデバッグプログラム又はデバッグ方法を提供する。【解決手段】このデバッグプログラムは、ＲＡＭと、アドレスを有して周辺回路との間で信号を入出力するＩ／Ｏ領域とに少なくとも接続されるプロセッサにおいて実行されるソフトウェアを、ＣＰＵと記憶手段とを用いてデバッグするために用いられるプログラムであって、記憶手段の記憶領域を、デバッグにおいてＲＡＭ及びＩ／Ｏ領域に対応する複数の領域に分割して使用するために、記憶領域にアクセスする手順（ａ）と、Ｉ／Ｏ領域に対応する領域に不正なアクセスを行ったか否かを検出する手順（ｂ）とをＣＰＵに実行させる。【選択図】  図３
2004220089.tif 000002
【特許請求の範囲】
【請求項１】
ＲＡＭと、アドレスを有して周辺回路との間で信号を入出力するＩ／Ｏ領域とに少なくとも接続されるプロセッサにおいて実行されるソフトウェアを、ＣＰＵと記憶手段とを用いてデバッグするために用いられるプログラムであって、
前記記憶手段の記憶領域を、デバッグにおいて前記ＲＡＭ及び前記Ｉ／Ｏ領域に対応する複数の領域に分割して使用するために、前記記憶領域にアクセスする手順（ａ）と、
前記Ｉ／Ｏ領域に対応する領域に不正なアクセスを行ったか否かを検出する手順（ｂ）と、
を前記ＣＰＵに実行させるデバッグプログラム。
【請求項２】
手順（ｂ）が、前記Ｉ／Ｏ領域に対応する領域に書き込みを行ったか又は前記Ｉ／Ｏ領域に対応する領域から読み出しを行ったか否かを検出することを含む、請求項１記載のデバッグプログラム。
【請求項３】
ＲＡＭとＲＯＭとに少なくとも接続されるプロセッサにおいて実行されるソフトウェアを、ＣＰＵと記憶手段とを用いてデバッグするために用いられるプログラムであって、
前記記憶手段の記憶領域を、デバッグにおいて前記ＲＡＭ及び前記ＲＯＭに対応する複数の領域に分割して使用するために、前記記憶領域にアクセスする手順（ａ）と、
前記ＲＯＭ領域に対応する領域に不正なアクセスを行ったか否かを検出する手順（ｂ）と、
を前記ＣＰＵに実行させるデバッグプログラム。
【請求項４】
手順（ｂ）が、前記ＲＯＭ領域に対応する領域に書き込みを行ったか否かを検出することを含む、請求項３記載のデバッグプログラム。
【請求項５】
手順（ｂ）において前記記憶手段の記憶領域に不正なアクセスを行ったことを検出した場合に、ソフトウェアにバグがあることを表示する手順（ｃ）をさらに前記ＣＰＵに実行させる請求項１〜４のいずれか１項記載のデバッグプログラム。
【請求項６】
ＲＡＭと、アドレスを有して周辺回路との間で信号を入出力するＩ／Ｏ領域とに少なくとも接続されるプロセッサにおいて実行されるソフトウェアを、ＣＰＵと記憶手段とを用いてデバッグする方法であって、
前記記憶手段の記憶領域を、デバッグにおいて前記ＲＡＭ及び前記Ｉ／Ｏ領域に対応する複数の領域に分割して使用するために、前記記憶領域にアクセスするステップ（ａ）と、
前記Ｉ／Ｏ領域に対応する領域に不正なアクセスを行ったか否かを検出するステップ（ｂ）と、
を具備するデバッグ方法。
【請求項７】
ＲＡＭとＲＯＭとに少なくとも接続されるプロセッサにおいて実行されるソフトウェアを、ＣＰＵと記憶手段とを用いてデバッグする方法であって、
前記記憶手段の記憶領域を、デバッグにおいて前記ＲＡＭ及び前記ＲＯＭに対応する複数の領域に分割して使用するために、前記記憶領域にアクセスするステップ（ａ）と、
前記ＲＯＭ領域に対応する領域に不正なアクセスを行ったか否かを検出するステップ（ｂ）と、
を具備するデバッグ方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ：中央演算処理装置）やＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ：ディジタル信号処理プロセッサ）等のプロセッサにおいて実行されるソフトウェアの正常動作を検証するためのデバッグプログラム及びデバッグ方法に関する。
【０００２】
【従来の技術】
一般的に、ＣＰＵ又はＤＳＰ等と、ＣＰＵ等を動作させるために用いられるプログラムのようなＣ言語やアセンブラで作成されたソフトウェアを記憶するＲＯＭと、データを一時的に記憶するＲＡＭと、周辺回路の制御を行うために用いられるＩ／Ｏ領域とを含むシステムの動作シミュレーションを行うためには、ソフトウェアとハードウェアの両方について連携しながらシミュレーションを行うことが望ましい。このようなシミュレーションを、ソフトウェアとハードウェアのコシミュレーション（協調シミュレーション）という。
【０００３】
このようなシステムにおいては、ＲＯＭに記憶されているソフトウェア（制御プログラム、アプリケーションプログラム、ファームウエア等）が、ＣＰＵやＤＳＰ等のプロセッサにおいて実行されると共に、Ｉ／Ｏ領域を使用して周辺回路の制御が行われる。Ｉ／Ｏ領域は、メモリマップドレジスタ等とも呼ばれ、メモリと同様にアドレスを持っている。
【０００４】
しかしながら、ソフトウェアの正常動作を検証するためのデバッグプログラムは、通常、Ｉ／Ｏ領域を含む全記憶領域をＲＡＭに置き換えてシミュレーションを行うので、周辺回路のハードウェアと接続するために一般的なＲＡＭとして使用することができないＩ／Ｏ領域に誤ってアクセスしても、デバッグにおいて正常な動作と誤認されてしまうという問題があった。また、デバッグプログラムは、ＲＯＭ領域もＲＡＭに置き換えてシミュレーションを行うので、ＲＯＭ領域に誤って書き込みをしても、デバッグにおいて正常な動作と誤認されてしまうという問題があった。従来は、このような問題を解決するデバッグプログラム及びデバッグ方法は確立されていなかった。
【０００５】
ところで、下記の特許文献１には、ＩＯバスに接続され、ＩＯバスへのデータ転送を制御するＩＯバスマスタコントローラと、データを保持するデータバッファとを有し、複数の転送モード（シングル転送、バースト転送）を切り替え可能とする情報処理装置について述べられている。この情報処理装置においては、データの転送又は保持の可能なデータバッファ領域と、動作モードを設定するレジスタ領域とを、アドレスによって分けている。しかしながら、この特許文献には、レジスタ領域への不正アクセスを検出することについては述べられていない。
【０００６】
【特許文献１】
特開２００１−３５０７１１号公報  （第４頁、図５）
【０００７】
【発明が解決しようとする課題】
そこで、上記の点に鑑み、本発明は、ソフトウェアのデバッグにおいて、Ｉ／Ｏ領域へのアクセス、又は、ＲＯＭ領域への書き込みが行われた場合に、プログラムバグとして検出することにより、バグを容易に回避でき、デバッグ効率が向上するデバッグプログラム又はデバッグ方法を提供することを目的とする。
【０００８】
【課題を解決するための手段】
以上の課題を解決するため、本発明の第１の観点に係るデバッグプログラムは、ＲＡＭと、アドレスを有して周辺回路との間で信号を入出力するＩ／Ｏ領域とに少なくとも接続されるプロセッサにおいて実行されるソフトウェアを、ＣＰＵと記憶手段とを用いてデバッグするために用いられるプログラムであって、記憶手段の記憶領域を、デバッグにおいてＲＡＭ及びＩ／Ｏ領域に対応する複数の領域に分割して使用するために、記憶領域にアクセスする手順（ａ）と、Ｉ／Ｏ領域に対応する領域に不正なアクセスを行ったか否かを検出する手順（ｂ）とをＣＰＵに実行させる。
【０００９】
ここで、手順（ｂ）が、Ｉ／Ｏ領域に対応する領域に書き込みを行ったか又はＩ／Ｏ領域に対応する領域から読み出しを行ったか否かを検出するようにしても良い。
【００１０】
また、本発明の第２の観点に係るデバッグプログラムは、ＲＡＭとＲＯＭとに少なくとも接続されるプロセッサにおいて実行されるソフトウェアを、ＣＰＵと記憶手段とを用いてデバッグするために用いられるプログラムであって、記憶手段の記憶領域を、デバッグにおいてＲＡＭ及びＲＯＭに対応する複数の領域に分割して使用するために、記憶領域にアクセスする手順（ａ）と、ＲＯＭ領域に対応する領域に不正なアクセスを行ったか否かを検出する手順（ｂ）とをＣＰＵに実行させる。
【００１１】
ここで、手順（ｂ）が、ＲＯＭ領域に対応する領域に書き込みを行ったか否かを検出するようにしても良い。
【００１２】
以上において、手順（ｂ）において記憶手段の記憶領域に不正なアクセスを行ったことを検出した場合に、ソフトウェアにバグがあることを表示する手順（ｃ）をさらにＣＰＵに実行させるようにしても良い。
【００１３】
本発明の第１の観点に係るデバッグ方法は、ＲＡＭと、アドレスを有して周辺回路との間で信号を入出力するＩ／Ｏ領域とに少なくとも接続されるプロセッサにおいて実行されるソフトウェアを、ＣＰＵと記憶手段とを用いてデバッグする方法であって、記憶手段の記憶領域を、デバッグにおいてＲＡＭ及びＩ／Ｏ領域に対応する複数の領域に分割して使用するために、記憶領域にアクセスするステップ（ａ）と、Ｉ／Ｏ領域に対応する領域に不正なアクセスを行ったか否かを検出するステップ（ｂ）とを具備する。
【００１４】
また、本発明の第２の観点に係るデバッグ方法は、ＲＡＭとＲＯＭとに少なくとも接続されるプロセッサにおいて実行されるソフトウェアを、ＣＰＵと記憶手段とを用いてデバッグする方法であって、記憶手段の記憶領域を、デバッグにおいてＲＡＭ及びＲＯＭに対応する複数の領域に分割して使用するために、記憶領域にアクセスするステップ（ａ）と、ＲＯＭ領域に対応する領域に不正なアクセスを行ったか否かを検出するステップ（ｂ）とを具備する。
【００１５】
本発明によれば、ソフトウェアのデバッグにおいて、Ｉ／Ｏ領域へのアクセス、又は、ＲＯＭ領域への書き込みが行われた場合に、プログラムバグとして検出することにより、バグを容易に回避でき、デバッグ効率が向上するデバッグプログラム又はデバッグ方法を提供することが可能である。
【００１６】
【発明の実施の形態】
以下、図面に基づいて本発明の実施の形態について説明する。なお、同一の構成要素には同一の参照番号を付して、説明を省略する。
図１に、本発明の一実施形態に係るデバッグプログラムの構成を示す。このデバッグプログラムは、コシミュレーションにおいて用いられるものであり、Ｃ言語で作成されソフトウェアのデバッグ機能を有するＰＬＩ（プログラムランゲージインターフェース）部１と、同じくＣ言語で作成されハードウェアのシミュレーション機能を有するＨＤＬ（ハードウェアデスクリプションランゲージ）シミュレータ部２とをリンクさせて、１つの実行ファイルとしたものが使用される。
【００１７】
また、ＲＯＭモデル３１、ＲＡＭモデル３２、Ｉ／Ｏモデル３３、及び、バスモデルＮ１を含むシミュレーションモデル３が、ＨＤＬで作成される。Ｉ／Ｏモデル３３は、周辺回路を制御するために用いられるＩ／Ｏ領域のシミュレーションモデルである。ＰＬＩ部１においてデバッグプログラムを実行する際に、ＨＤＬシミュレータ部２も協調して動作することにより、バスモデルＮ１を介してＲＯＭモデル３１等にアクセスしながら、ソフトウェアのデバッグを行っている。
【００１８】
デバッグプログラムは、フラッシュＲＯＭ等に記憶されており、シミュレーション用のＲＡＭに接続されたホストＣＰＵによって実行される。ここで、ＰＬＩ部１は、記憶領域設定部１１と不正アクセス検出部１２とを有する。記憶領域設定部１１は、シミュレーション用のＲＡＭの記憶領域を、ＲＯＭモデル３１の領域（ＲＯＭ領域）と、ＲＡＭモデル３２の領域（ＲＡＭ領域）と、Ｉ／Ｏモデル３３の領域（Ｉ／Ｏ領域）とに分割して使用するために、アドレスを設定する。これにより、ＰＬＩ部１は、ＨＤＬシミュレータ部２と協調して、バスモデルＮ１を介してＲＯＭ領域、ＲＡＭ領域、又は、Ｉ／Ｏ領域にアクセスしながら、コシミュレーションによるデバッグ動作を行う。一方、不正アクセス検出部１２は、各領域に不正なアクセスが行われた場合に、プログラムバグとして検出する。
【００１９】
図２に、記憶領域設定部によって設定されたアドレスマップを示す。図２に示すように、シミュレーション用のＲＡＭのアドレス００００００〜０ＦＦＦＦＦは、ＲＯＭ領域として使用され、アドレス１０００００〜１７ＥＦＦＦ及びアドレス１８００００〜１ＦＦＦＦＦは、ＲＡＭ領域として使用される。一方、アドレス１７Ｆ０００〜１７ＦＦＦＦは、Ｉ／Ｏ領域として使用される。従って、不正アクセス検出部１２は、ＲＯＭ領域のアドレス００００００〜０ＦＦＦＦＦに書き込みを行った場合に、プログラムバグとして検出する。これと共に、又は、これに替えて、不正アクセス検出部１２は、Ｉ／Ｏ領域のアドレス１７Ｆ０００〜１７ＦＦＦＦに書き込みを行った場合、及び、Ｉ／Ｏ領域のアドレス１７Ｆ０００〜１７ＦＦＦＦから読み出しを行った場合に、プログラムバグとして検出する。
【００２０】
次に、図１〜図３を参照しながら、本実施形態に係るデバッグ方法について説明する。図３は、本発明の一実施形態に係るデバッグ方法を示すフローチャートである。
【００２１】
まず、ステップＳ１において、ＲＯＭ領域（アドレス００００００〜０ＦＦＦＦＦ）、ＲＡＭ領域（アドレス１０００００〜１７ＥＦＦＦ及びアドレス１８００００〜１ＦＦＦＦＦ）、及び、Ｉ／Ｏ領域（アドレス１７Ｆ０００〜１７ＦＦＦＦ）を設定する。次に、ステップＳ２において、デバッグを開始する。さらに、ステップＳ３において、これらの領域を使用してデバッグを行うために、ＲＯＭ領域、ＲＡＭ領域、又は、Ｉ／Ｏ領域にアクセスする。
【００２２】
ステップＳ４において、ステップＳ３においてＲＯＭ領域に書き込みを行ったか否かを検出する。ここで、ＲＯＭ領域に書き込みを行った場合には、ステップＳ６に移行する。一方、ＲＯＭ領域に書き込みを行っていない場合には、ステップＳ５に移行する。
【００２３】
ステップＳ５において、ステップＳ３においてＩ／Ｏ領域に書き込みを行ったか又はＩ／Ｏ領域から読み出しを行ったか否かを判別する。ここで、Ｉ／Ｏ領域に書き込みを行ったか、又は、Ｉ／Ｏ領域から読み出しを行った場合には、ステップＳ６に移行する。一方、それ以外の場合には、ステップＳ７に移行する。
【００２４】
ステップＳ６において、プログラムにバグがあることを、エラーとしてユーザに通知した後、デバッグ動作を終了する。
ステップＳ７において、デバッグが終了か否かを判別し、デバッグが終了していない場合には、ステップＳ３に移行する。
【００２５】
なお、ステップＳ４とステップＳ５の順序は逆であっても良いし、ステップＳ４とステップＳ５の内容を１つのステップで行っても良い。また、ＲＯＭ領域を含まないシステムにおいて使用するソフトウェアについては、ステップＳ４を省略できるし、Ｉ／Ｏ領域を含まないシステムにおいて使用するソフトウェアについては、ステップＳ５を省略できる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係るデバッグプログラムの構成を示す図。
【図２】記憶領域設定部において設定されたアドレスマップを示す図。
【図３】本発明の一実施形態に係るデバッグ方法を示すフローチャート。
【符号の説明】
１  ＰＬＩ部、  ２  ＨＤＬシミュレータ部、  ３  シミュレーションモデル、  １１  記憶領域設定部、  １２  不正アクセス検出部、  ３１  ＲＯＭモデル、  ３２  ＲＡＭモデル、  ３３  Ｉ／Ｏモデル、  Ｎ１  バスモデル
【図１】
2004220089.tif 000003
【図２】
2004220089.tif 000004
【図３】
2004220089.tif 000005