(57)【要約】【課題】組込み機器用のソフトウェアを仮想環境で実行した際に、仮想環境における未実装領域へのアクセスが発生した場合、シミュレーションが停止してしまうこと。【解決手段】情報処理装置は、所定の組込み機器用の組込みプログラムを実行する仮想環境を備える。仮想環境は、組込みプログラムの実行におけるバスアクセスを処理するアクセス処理部を有する仮想バス部を備える。仮想バス部は、バスアクセスのアクセス先が仮想環境内に定義されていない場合に、当該アクセス先に対応する記憶領域をスタブ領域として仮想バス部内に確保する領域確保部をさらに有する。【選択図】図３
2018200495.tif 000002
【特許請求の範囲】
【請求項１】
所定の組込み機器用の組込みプログラムを実行する仮想環境を備える情報処理装置であって、
前記仮想環境は、
前記組込みプログラムの実行におけるバスアクセスを処理するアクセス処理部を有する仮想バス部を備え、
前記仮想バス部は、
前記バスアクセスのアクセス先が前記仮想環境内に定義されていない場合に、当該アクセス先に対応する記憶領域をスタブ領域として前記仮想バス部内に確保する領域確保部をさらに有する
情報処理装置。
【請求項２】
前記アクセス処理部は、
前記アクセス先が前記仮想バス部に接続されたスレーブである場合、当該バスアクセスにかかるアクセス命令を当該アクセス先に対して送信し、
前記アクセス先が前記スタブ領域である場合、前記アクセス命令に基づいて、前記スタブ領域に対して直接アクセスを行う
請求項１に記載の情報処理装置。
【請求項３】
前記情報処理装置は、
前記仮想環境内に定義された複数の回路ブロックのアドレス情報を前記アクセス先として定義したバスマップを記憶する記憶部をさらに備え、
前記バスマップは、前記仮想環境内に定義されていないアクセス先のアドレス情報をスタブ情報としてさらに定義し、
前記領域確保部は、前記バスマップを参照し、前記スタブ情報に対応する記憶領域を前記スタブ領域として前記仮想バス部内に確保する
請求項１に記載の情報処理装置。
【請求項４】
前記領域確保部は、
前記組込みプログラムの実行開始時に、前記バスマップを読み込み、
前記バスマップに定義されたアクセス先のうち、自己の仮想バス部に接続されたスレーブにおけるアドレス情報を、当該仮想バス部内のアクセス先リストへ登録し、
前記バスマップに前記スタブ情報が定義されていた場合、当該スタブ情報を、前記アクセス先リストへさらに登録し、
前記アクセス処理部は、
前記バスアクセスを受け付けた際に、前記アクセス先リストを参照して、前記アクセス先が前記スタブ領域であるか否かを判定する
請求項３に記載の情報処理装置。
【請求項５】
前記アクセス処理部は、
前記バスアクセスを受け付けた際に、前記アクセス先が前記バスマップに定義されていない場合、前記バスアクセスをエラーとして出力する
請求項３に記載の情報処理装置。
【請求項６】
前記情報処理装置は、
前記組込みプログラムの実行における全てのアクセス先のアドレス情報を定義した全アドレス空間情報を記憶する記憶部をさらに備え、
前記領域確保部は、
前記バスアクセスのアクセス先のうち前記仮想環境内に定義されていないアクセス先が前記全アドレス空間情報に存在する場合、当該アクセス先に対応する記憶領域を前記スタブ領域として前記仮想バス部内に確保する
請求項１に記載の情報処理装置。
【請求項７】
前記領域確保部は、
前記確保したスタブ領域を示すスタブ情報を、アクセス先リストに登録し、
前記アクセス処理部は、
前記バスアクセスを受け付けた際に、前記アクセス先リストを参照して、前記アクセス先が前記スタブ領域である場合、当該バスアクセスにかかるアクセス命令に基づいて、前記スタブ領域に対して直接アクセスを行う
請求項６に記載の情報処理装置。
【請求項８】
前記アクセス処理部は、前記アクセス先が前記全アドレス空間情報に存在しないと判定した場合、前記バスアクセスを不正アクセスとして出力する
請求項６に記載の情報処理装置。
【請求項９】
所定の組込み機器用の組込みプログラムを実行する仮想環境を備える情報処理装置の制御方法であって、
前記組込みプログラムの実行におけるバスアクセスのアクセス先が前記仮想環境内に定義されていない場合に、当該アクセス先に対応する記憶領域をスタブ領域として、前記仮想環境が有する仮想バス部内に確保し、
前記バスアクセスを処理する
制御方法。
【請求項１０】
所定の組込み機器用の組込みプログラムを実行する仮想環境を備える情報処理装置の制御プログラムであって、
前記組込みプログラムの実行におけるバスアクセスのアクセス先が前記仮想環境内に定義されていない場合に、当該アクセス先に対応する記憶領域をスタブ領域として、前記仮想環境が有する仮想バス部内に確保し、
前記バスアクセスを処理する
処理を前記情報処理装置に実行させる制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置並びにその制御方法及び制御プログラムに関し、例えば仮想環境を備える情報処理装置並びにその制御方法及び制御プログラムに関する。
【背景技術】
【０００２】
特許文献１には、半導体集積回路の論理検証にて使用するテストタスクの生成方法に関する技術が開示されている。そして、特許文献１には、ＳｏＣ（Ｓｙｓｔｅｍ  Ｏｎ  ａ  Ｃｈｉｐ）ソフトウェアモデルがＳｏＣデバイスの内蔵ＣＰＵ用のファームウェア開発の際のスタブ（ｓｔｕｂ）として使用される点が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−１４５８８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、組込み機器用のソフトウェアを仮想環境で実行した際に、仮想環境における未実装領域へのアクセスが発生した場合、シミュレーションが停止してしまうという問題点がある。
【０００５】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００６】
一実施の形態によれば、情報処理装置は、バスアクセスのアクセス先が仮想環境内に定義されていない場合に、当該アクセス先に対応する記憶領域をスタブ領域として仮想環境が有する仮想バス部内に確保するものである。
【発明の効果】
【０００７】
前記一実施の形態によれば、仮想環境における未実装領域へのアクセスが発生した場合に適切なシミュレーション結果を返すことができる。
【図面の簡単な説明】
【０００８】
【図１】本実施の形態１にかかる情報処理装置のハードウェア構成を説明するためのブロック図である。
【図２】本実施の形態１にかかるソフトウェア構成を説明するためのブロック図である。
【図３】本実施の形態１にかかる仮想環境の機能的構成を説明するためのブロック図である。
【図４】本実施の形態１にかかるバスマップの例を示す図である。
【図５】本実施の形態１にかかるアクセス先リスト登録処理の流れを説明するためのフローチャートである。
【図６】本実施の形態１にかかるバスアクセス処理の流れを説明するためのフローチャートである。
【図７】本実施の形態１にかかるトランザクション（スタブ領域宛）の例を示す図である。
【図８】本実施の形態１にかかるトランザクション（ＤＭＡ＿１宛）の例を示す図である。
【図９】本実施の形態１にかかるトランザクション（エラーケース）の例を示す図である。
【図１０】本実施の形態１にかかるエラーメッセージの例を示す図である。
【図１１】本実施の形態２にかかる情報処理装置の全体構成を説明するためのブロック図である。
【図１２】本実施の形態２にかかる全アドレス空間情報の例を示す図である。
【図１３】本実施の形態２にかかるバスアクセス処理の流れを説明するためのフローチャートである。
【発明を実施するための形態】
【０００９】
説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、メモリ、その他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００１０】
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（ｔａｎｇｉｂｌｅ  ｓｔｏｒａｇｅ  ｍｅｄｉｕｍ）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  ＰＲＯＭ）、フラッシュＲＯＭ、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００１１】
＜実施の形態１＞
図１は、本実施の形態１にかかる情報処理装置１のハードウェア構成を説明するためのブロック図である。情報処理装置１は、マイクロコンピュータ（不図示）の仮想環境を実現するコンピュータシステムの一例である。情報処理装置１は、表示装置２及び入力装置３と接続される。表示装置２は、情報処理装置１からの指示により画面表示を行う。入力装置３は、情報処理装置１に対してユーザの指示の入力を行う。入力装置３は、例えば、ユーザから文字情報の入力を受け付けるキーボードや、表示装置２の画面上における任意の位置を指定し、その位置に表示されていたアイコン等に応じた指示の入力を受け付けるマウス等である。但し、情報処理装置１に接続される装置はこれらに限定されない。
【００１２】
情報処理装置１は、ＣＰＵ１１と、メインメモリ１２と、ハードディスク１３とを備える。ＣＰＵ１１は、所定のプログラムを読み込み実行する制御装置である。メインメモリ１２は、例えば、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等の揮発性記憶装置である。ハードディスク１３は、不揮発性記憶装置である。ハードディスク１３は、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）１３１、仮想環境プログラム１３２、シミュレーション用データ１３３、バスマップ１３４、組込みプログラム１３５等を記憶する。
【００１３】
ＯＳ１３１は、情報処理装置１を動作させるための基本ソフトである。仮想環境プログラム１３２は、組込み機器であるマイクロコンピュータをソフトウェア的に実現し、当該マイクロコンピュータ上での組込みプログラム１３５の実行をシミュレーションするためのソフトウェアである。シミュレーション用データ１３３は、前記シミュレーションに用いられる各種データである。バスマップ１３４は、仮想環境プログラム１３２により実現される仮想環境内に定義された複数の仮想的な周辺ＩＰ等（回路ブロック）のアドレス情報をアクセス先として定義した管理情報である。組込みプログラム１３５は、元々、所定の組込み機器上で実行するために開発されたソフトウェアである。そして、組込みプログラム１３５は、デバッグ等の目的により仮想環境プログラム１３２により実行される、シミュレーション対象のプログラムである。
【００１４】
ここで、ＣＰＵ１１は、ハードディスク１３に保存されたＯＳ１３１、仮想環境プログラム１３２、シミュレーション用データ１３３、バスマップ１３４及び組込みプログラム１３５をメインメモリ１２にロードする。そして、ＣＰＵ１１は、メインメモリ１２にロードされたＯＳ１３１及び仮想環境プログラム１３２を実行する。また、ＣＰＵ１１は、仮想環境プログラム１３２の実行により組込みプログラム１３５を実行する。そのため、情報処理装置１は、所定の組込み機器用の組込みプログラム１３５を実行する仮想環境を備えるものといえる。
【００１５】
図２は、本実施の形態１にかかるソフトウェア構成を説明するためのブロック図である。図２では、ＯＳ１３１上で仮想環境プログラム１３２が動作し、仮想環境プログラム１３２上で組込みプログラム１３５が動作することを示す。仮想環境プログラム１３２は、仮想ＣＰＵ部４１、仮想バス部４２及び仮想的な周辺ＩＰ部４３を備える。仮想ＣＰＵ部４１、仮想バス部４２及び周辺ＩＰ部４３は、例えば、クラスとして定義され、仮想環境プログラム１３２の実行時にそれぞれがインスタンス化されることにより実現される。
【００１６】
仮想バス部４２は、アクセス先リスト４２１と、スタブ領域４２２と、領域確保部４２３と、アクセス処理部４２４とを備える。アクセス先リスト４２１は、バスマップ１３４に定義されたアクセス先のうち、仮想バス部４２に接続されたスレーブのアドレス情報と、仮想バス部４２を経由するアクセス先であり、かつ、スタブ領域４２２のアドレス情報と、を仮想バス部４２内で管理するための情報である。スタブ領域４２２は、仮想環境プログラム１３２における未実装の記憶領域である。
【００１７】
領域確保部４２３は、組込みプログラム１３５の実行におけるバスアクセスのアクセス先が仮想環境内に定義されていない場合に、当該アクセス先に対応する記憶領域をスタブ領域４２２として仮想バス部４２内に確保する。尚、アクセス先リスト４２１及びスタブ領域４２２は、仮想バス部４２内のメンバ変数であり、実際にはメインメモリ１２に領域が確保される。アクセス処理部４２４は、バスアクセスを処理する。尚、領域確保部４２３及びアクセス処理部４２４は、仮想バス部４２内のメソッドまたは関数等である。
【００１８】
周辺ＩＰ部４３は、例えば、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）４３１と、ＩＮＴＣ（Ｉｎｔｅｒｒｕｐｔ  Ｃｏｎｔｒｏｌｌｅｒ）４３２とを備える。尚、ＤＭＡ４３１及びＩＮＴＣ４３２は、本来、ハードウェアであるＤＭＡ及びＩＮＴＣをソフトウェア上で実現したものである。尚、周辺ＩＰ部４３は、これらに限定されない。
【００１９】
図３は、本実施の形態１にかかる仮想環境の機能的構成を説明するためのブロック図である。仮想ＣＰＵ部４１は、仮想バス部４２ａと、仮想バス部４２ｂとソケット接続されている。また、仮想バス部４２ａは、仮想ＣＰＵ部４１と、周辺ＩＰ部４３ａに含まれるＤＭＡ＿１＿４３１ａ及びＩＮＴＣ＿１＿４３２ａと、ソケット接続されている。同様に、仮想バス部４２ｂは、仮想ＣＰＵ部４１と、周辺ＩＰ部４３ｂに含まれるＤＭＡ＿２＿４３１ｂ及びＩＮＴＣ＿２＿４３２ｂと、ソケット接続されている。
【００２０】
組込みプログラム１３５のシミュレーション開始時に、仮想ＣＰＵ部４１、仮想バス部４２ａ及び４２ｂ、ＤＭＡ＿１＿４３１ａ及びＤＭＡ＿２＿４３１ｂ、並びに、ＩＮＴＣ＿１＿４３２ａ及びＩＮＴＣ＿２＿４３２ｂは、必要に応じてソケット接続されるものとする。また、当該シミュレーション開始時に、仮想バス部４２ａ及び４２ｂは、バスマップ１３４を読み込み、自己と接続された周辺ＩＰ（スレーブ）とそのアドレス範囲をアクセス先リスト４２１に保存する。また、例えば、バスマップ１３４に仮想バス部４２ａのスタブ情報が定義されている場合は、仮想バス部４２ａはスタブ領域４２２を確保する。
【００２１】
図４は、本実施の形態１にかかるバスマップ１３４の例を示す図である。バスマップ１３４は、アクセス先の周辺ＩＰ部のソケット名、開始アドレス、アドレスサイズ及びバス名を含む。特に、図４では、３つ目にスタブ情報の例が定義されていることを示す。アクセス先である「PERIPHERAL_A」は、組込みプログラム１３５の対象の組込み機器には実装されているが、仮想環境プログラム１３２には未実装であるものとする。そして、バス名として仮想バス部４２ａに相当する「RH850.BUS_1」が定義されていることを示す。
【００２２】
図５は、本実施の形態１にかかるアクセス先リスト登録処理の流れを説明するためのフローチャートである。アクセス先リスト登録処理は、仮想環境プログラム１３２による組込みプログラム１３５のシミュレーション開始時の処理である。また、仮想バス部４２は、自己と接続されたスレーブのリストを有しているものとする。
【００２３】
まず、仮想バス部４２の領域確保部４２３は、ハードディスク１３に格納されたバスマップ１３４をオープンする（Ｓ１０１）。そして、領域確保部４２３は、読み込み先の行がファイルの末尾か否かを判定する（Ｓ１０２）。例えば、図４のバスマップ１３４の場合、ファイルオープン直後は、読み込み先の行が先頭行でありファイル末尾ではないため、ステップＳ１０３へ進む。一方、空ファイル又はすでにファイルの末尾の行まで読み込み済の場合、当該アクセス先リスト登録処理を終了する。
【００２４】
続いて、領域確保部４２３は、バスマップ１３４から読み込み先の行を１行読み込む（Ｓ１０３）。そして、領域確保部４２３は、読み込んだ行のアクセス先が、仮想バス部４２に接続されたスレーブ（周辺ＩＰ部）であるか否かを判定する（Ｓ１０４）。例えば、図３の仮想バス部４２ａは、アクセス先のソケット名がＤＭＡ＿１＿４３１ａ又はＩＮＴＣ＿１＿４３２ａのソケット名を示す場合に、当該仮想バス部４２ａに接続されたスレーブと判定し、ステップＳ１０５へ進む。
【００２５】
続いて、領域確保部４２３は、読み込んだ行のアクセス先をアクセス先リスト４２１に登録する（Ｓ１０５）。このとき、領域確保部４２３は、スレーブ名、開始アドレス、最終アドレスに加えて、当該アクセス先のソケットポインタを含めてアクセス先リスト４２１に登録してもよい。領域確保部４２３は、少なくともアクセス先が当該仮想バス部４２ａに接続されたスレーブであることを識別できる識別情報をアクセス先リスト４２１に登録するものとする。
【００２６】
一方、ステップＳ１０４において、アクセス先が当該仮想バス部４２に接続されたスレーブでない場合、領域確保部４２３は、当該アクセス先が自身のバス名を示すか否かを判定する（Ｓ１０６）。例えば、図３の仮想バス部４２ａは、バスマップ１３４のバス名に「RH850.BUS_1」と定義されている場合、アクセス先が自身のバス名を示すと判定し、ステップＳ１０７へ進む。
【００２７】
そして、領域確保部４２３は、仮想バス部４２内にスタブ領域４２２を確保する（Ｓ１０７）。つまり、領域確保部４２３は、スタブ情報に定義されたサイズ分の記憶領域を内部変数に割り当てる。例えば、領域確保部４２３は、スタブ情報に定義されたサイズ分の配列変数を宣言する。その後、領域確保部４２３は、読み込んだ行のアクセス先をアクセス先リスト４２１に登録する（Ｓ１０８）。このとき、領域確保部４２３は、スタブ名、開始アドレス、最終アドレス及びスタブ領域へのポインタに加えて、当該アクセス先のソケットポインタを「０」としてアクセス先リスト４２１に登録してもよい。領域確保部４２３は、少なくともアクセス先がスタブ情報であることを識別できる識別情報をアクセス先リスト４２１に登録するものとする。
【００２８】
ステップＳ１０５、Ｓ１０８の後、又は、ステップＳ１０６でＮＯと判定された場合、ステップＳ１０２へ戻り、処理を続ける。
【００２９】
図６は、本実施の形態１にかかるバスアクセス処理の流れを説明するためのフローチャートである。まず、組込みプログラム１３５のシミュレーションの実行中に、周辺ＩＰのレジスタへのＲｅａｄ又はＷｒｉｔｅを行うためのバスアクセスが発生した場合、仮想ＣＰＵ部４１は、アクセス先のアドレスやサイズを含むＲｅａｄ又はＷｒｉｔｅのアクセス命令であるトランザクションを、仮想バス部４２に向けて送信する。そして、仮想バス部４２のアクセス処理部４２４は、バスアクセスを受け付ける（Ｓ１１１）。
【００３０】
次に、アクセス処理部４２４は、バスアクセスのアクセス先がアクセス先リスト４２１に存在するか否かを判定する（Ｓ１１２）。例えば、アクセス処理部４２４は、バスアクセスのトランザクションの開始アドレスを、アクセス先リスト４２１の中から検索する。検索にヒットした場合、つまり、アクセス先がアクセス先リスト４２１に存在する場合、アクセス処理部４２４は、アクセス先がスタブ領域か否かを判定する（Ｓ１１３）。例えば、アクセス処理部４２４は、検索にヒットしたアクセス先に対応付けられたソケットポインタが「０」であるか否かを判定する。そして、当該ソケットポインタが「０」である場合、アクセス処理部４２４は、アクセス先がスタブ領域であると判定する。または、アクセス先リスト４２１に、アクセス先がスタブ情報か否かを識別できる識別情報が登録されている場合、アクセス処理部４２４は、当該識別情報に基づいてアクセス先がスタブ領域か否かを判定する。
【００３１】
ステップＳ１１３においてアクセス先がスタブ領域である場合、アクセス処理部４２４は、トランザクションに基づいてスタブ領域へ直接アクセスを行う（Ｓ１１４）。ここで、図７は、本実施の形態１にかかるトランザクション（スタブ領域宛）の例を示す図である。図７では、「address」に「0xFFFFC000」とあり、図４における「PERIPHERAL_A」（スタブ情報）に対応することを示す。この例の場合、アクセス処理部４２４は、仮想バス部４２内のスタブ領域４２２「0xFFFFC000」から１バイトに対して、データ「0xA5」のＷｒｉｔｅコマンドを発行する。
【００３２】
ステップＳ１１３においてアクセス先がスタブ領域でない場合、アクセス処理部４２４は、アクセス先へトランザクションを送信する（Ｓ１１５）。ここで、図８は、本実施の形態１にかかるトランザクション（ＤＭＡ＿１宛）の例を示す図である。図８では、「address」に「0xFFFF8000」とあり、図４における「RH850.DMA_1.ts」に対応することを示す。この例の場合、アクセス処理部４２４は、ＤＭＡ＿１＿４３１ａに対して、図８のトランザクションを、ソケット接続を介して送信する。
【００３３】
ステップＳ１１２において、アクセス先がアクセス先リスト４２１に存在しない場合、アクセス処理部４２４は、表示装置２へエラーメッセージを出力する（Ｓ１１６）。そして、アクセス処理部４２４は、シミュレーションを停止する（Ｓ１１７）。例えば、図９は、本実施の形態１にかかるトランザクション（エラーケース）の例を示す図である。図９では、「address」に「0xFFFFD000」とあり、図４のバスマップ１３４に定義されていないことを示す。それ故、当該アクセス先は、アクセス先リスト４２１にも登録されていないこととなる。そして、図１０は、本実施の形態１にかかるエラーメッセージの例を示す図である。尚、「0xFFFFD000」は、組込みプログラム１３５が対応する組込み機器に存在するが、仮想環境プログラム１３２には定義されていない未実装領域である可能性がある。または、「0xFFFFD000」は、当該組込み機器に認められていない領域である可能性もある。
【００３４】
ここで、初期のシミュレーション時には、事前に仮想環境の未実装領域についての情報が不明なことが多い。よって、バスマップ１３４にスタブ情報を予め定義することが困難なことが考えられる。そのため、次のようなデバッグ作業をすることが挙げられる。
【００３５】
まず、初回のシミュレーション時には、（スタブ領域の定義がされていない）初期設定のバスマップを用いて、本実施の形態のバスアクセス処理を実行する。そして、エラーが出力された場合、ユーザがエラーメッセージを次の（Ａ）又は（Ｂ）のいずれかに判別する。（Ａ）ハードウェアで許されていないアドレスである。（Ｂ）ハードウェアで許されたアドレスであるが、仮想環境では周辺ＩＰとして仮想バス部に接続されていない。
【００３６】
そして、ユーザが（Ａ）と判別した場合、組込みプログラムの誤りである。そのため、ユーザは、組込みプログラムを修正する。また、ユーザが（Ｂ）と判別した場合、エラーメッセージの内容に基づいて、バスマップに上述したスタブ領域の定義を行う。そして、これを繰り返す。このように、トライアンドエラーを繰り返すことにより、未実装領域へのアクセスの情報を容易に得ることができる。よって、デバッグ作業を効率化できる。
【００３７】
また、上述した本実施の形態は、以下のように表現することもできる。すなわち、
所定の組込み機器用の組込みプログラムを実行する仮想環境を備える情報処理装置であって、
前記仮想環境は、
前記組込みプログラムの実行におけるバスアクセスを処理するアクセス処理部を有する仮想バス部を備え、
前記仮想バス部は、
前記バスアクセスのアクセス先が前記仮想環境内に定義されていない場合に、当該アクセス先に対応する記憶領域をスタブ領域として前記仮想バス部内に確保する領域確保部をさらに有する
情報処理装置。
これにより、仮想環境における未実装領域へのアクセスが発生した場合に適切なシミュレーション結果を返すことができる。
【００３８】
また、前記アクセス処理部は、
前記アクセス先が前記仮想バス部に接続されたスレーブである場合、当該バスアクセスにかかるアクセス命令を当該アクセス先に対して送信し、
前記アクセス先が前記スタブ領域である場合、前記アクセス命令に基づいて、前記スタブ領域に対して直接アクセスを行うことが望ましい。
これにより、確保されたスタブ領域に対するｗｒｉｔｅアクセスが発生した場合には、ｗｒｉｔｅ値が保持される。そのため、その後のスタブ領域へのｒｅａｄアクセスにおいてｗｒｉｔｅ値が適切に読み出される。
また、スレーブとのソケット接続を介さずにバスアクセスを行うことができるため、仮想環境内にダミーメモリを構成する必要がない。そのため、例えば、デバッグ作業中に当該仮想環境の未実装領域へのアクセスが発覚した場合でも、ダミーメモリを構成するために仮想環境を再ビルドする必要がない。よって、デバッグ時間を短縮することができる。ここで、再ビルドには仮想環境の規模及びビルド環境により数時間を要する場合があるため、本実施形態による効果が顕著といえる。
【００３９】
また、前記情報処理装置は、
前記仮想環境内に定義された複数の回路ブロックのアドレス情報を前記アクセス先として定義したバスマップを記憶する記憶部をさらに備え、
前記バスマップは、前記仮想環境内に定義されていないアクセス先のアドレス情報をスタブ情報としてさらに定義し、
前記領域確保部は、前記バスマップを参照し、前記スタブ情報に対応する記憶領域を前記スタブ領域として前記仮想バス部内に確保することが望ましい。
これにより、バスマップというテキストファイルに予めスタブ情報を記入しておくだけで、仮想環境の再ビルドの必要なく、スタブ領域を確保できる。
【００４０】
さらに、前記領域確保部は、
前記組込みプログラムの実行開始時に、前記バスマップを読み込み、
前記バスマップに定義されたアクセス先のうち、自己の仮想バス部に接続されたスレーブにおけるアドレス情報を、当該仮想バス部内のアクセス先リストへ登録し、
前記バスマップに前記スタブ情報が定義されていた場合、当該スタブ情報を、前記アクセス先リストへさらに登録し、
前記アクセス処理部は、
前記バスアクセスを受け付けた際に、前記アクセス先リストを参照して、前記アクセス先が前記スタブ領域であるか否かを判定すると良い。
これにより、バスアクセス時に仮想バス部内のアクセス先リストを参照するため、アクセス処理を高速化できる。
【００４１】
または、前記アクセス処理部は、
前記バスアクセスを受け付けた際に、前記アクセス先が前記バスマップに定義されていない場合、前記バスアクセスをエラーとして出力すると良い。
これにより、出力されたエラーについてユーザが不正アクセスか否かを判定し、未実装領域へのアクセスの場合、バスマップに容易に追加できる。つまり、仮想環境で定義していない周辺レジスタへのバスアクセスが発生した場合には、一旦、シミュレーションを停止し、ユーザに確認を促すため、不正アクセスを見逃さずに済む。
【００４２】
＜実施の形態２＞
本実施の形態２は、上述した実施の形態１の改良例である。例えば、上述した実施の形態１では、エラー出力（Ｓ１１６）によりシミュレーションが停止（Ｓ１１７）した場合、ユーザが対象の組込み機器のハードウェア仕様書等を参照して、停止理由を判断する。そして、必要に応じてスタブ情報をバスマップに追加する必要がある。これに対して、本実施の形態２では、仮想環境が自動的にスタブ領域の要否を判定し、必要な場合にはスタブ領域を確保した上で、アクセスを行わせるものである。
【００４３】
すなわち、前記情報処理装置は、
前記組込みプログラムの実行における全てのアクセス先のアドレス情報を定義した全アドレス空間情報を記憶する記憶部をさらに備え、
前記領域確保部は、
前記バスアクセスのアクセス先のうち前記仮想環境内に定義されていないアクセス先が前記全アドレス空間情報に存在する場合、当該アクセス先に対応する記憶領域を前記スタブ領域として前記仮想バス部内に確保するものである。
これにより、未実装領域へのアクセスを事前に把握できない場合でも、自動的にスタブ領域を追加することができる。よって、デバッグ作業をより効率化できる。
【００４４】
さらに、前記領域確保部は、
前記確保したスタブ領域を示すスタブ情報を、アクセス先リストに登録し、
前記アクセス処理部は、
前記バスアクセスを受け付けた際に、前記アクセス先リストを参照して、前記アクセス先が前記スタブ領域である場合、当該バスアクセスにかかるアクセス命令に基づいて、前記スタブ領域に対して直接アクセスを行うと良い。
これにより、再度のスタブ領域の確保が不要となり、処理を効率化できる。
【００４５】
またさらに、前記アクセス処理部は、前記アクセス先が前記全アドレス空間情報に存在しないと判定した場合、前記バスアクセスを不正アクセスとして出力すると良い。
これにより、不正アクセスであることが確実であるため、ユーザの判断が必要なく、デバッグ作業におけるユーザの負担を軽減することができる。
【００４６】
図１１は、本実施の形態２にかかる情報処理装置１ａの全体構成を説明するためのブロック図である。情報処理装置１ａは、上述した情報処理装置１と比べて仮想環境プログラム１３２が仮想環境プログラム１３２ａに置き換わり、全アドレス空間情報１３６が追加されたものである。仮想環境プログラム１３２ａは、ＣＰＵ１１に実行されることにより、仮想環境プログラム１３２の機能に加えて、上述した領域確保部及びアクセス処理部としてさらに機能するものである。
【００４７】
全アドレス空間情報１３６は、組込みプログラム１３５に対応する組込み機器における全てのアクセス先（全回路）のアドレス情報を定義した情報である。ここで、図１２は、本実施の形態２にかかる全アドレス空間情報１３６の例を示す図である。
【００４８】
図１３は、本実施の形態２にかかるバスアクセス処理の流れを説明するためのフローチャートである。尚、上述した図６と同様の処理については、適宜説明を省略するものとする。
【００４９】
ステップＳ１１２においてアクセス先がアクセス先リスト４２１に存在しない場合、領域確保部４２３は、アクセス先が全アドレス空間情報１３６に存在するか否かを判定する（Ｓ１２１）。例えば、領域確保部４２３は、バスアクセスのトランザクションの開始アドレスを、全アドレス空間情報１３６の中から検索する。検索にヒットした場合、つまり、アクセス先が全アドレス空間情報１３６に存在する場合、領域確保部４２３は、当該アクセス先に対応する記憶領域をスタブ領域４２２として、仮想バス部４２内に確保する（Ｓ１２２）。尚、スタブ領域の確保の仕方は、上述したステップＳ１０７と同様である。
【００５０】
そして、領域確保部４２３は、当該アクセス先をアクセス先リスト４２１に登録する（Ｓ１２３）。これにより、以後のバスアクセスにおいて当該アクセス先がリストに存在するため、再度のスタブ領域の確保が不要となる。よって、処理を効率化できる。尚、アクセス先リストへの登録の仕方は、上述したステップＳ１０８と同様である。
【００５１】
その後、アクセス処理部４２４は、トランザクションに基づいてステップＳ１２２で確保したスタブ領域へ直接アクセスを行う（Ｓ１１４）。ステップＳ１１４の処理は、上述した通りである。
【００５２】
ステップＳ１２１においてアクセス先が全アドレス空間情報１３６に存在しない場合、アクセス処理部４２４は、表示装置２へエラーメッセージを出力する（Ｓ１１６）。そして、アクセス処理部４２４は、シミュレーションを停止する（Ｓ１１７）。この場合、当該バスアクセスのアクセス先のアドレス情報は、ハードウェアで許されていないアドレスであるため、ユーザによるエラー原因の判別は不要である。
【００５３】
以上のことから、本実施の形態２により、デバッグ作業をより効率化し、ユーザの負担を軽減することができる。
【００５４】
＜その他の実施の形態＞
上述した各実施の形態は、例えば、IEEE(Institute of Electrical and Electronics Engineers)-1666-2011におけるb_transport, nb_transport_fw, transport_dbgに対応することができる。
【００５５】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【符号の説明】
【００５６】
１  情報処理装置
１ａ  情報処理装置
１１  ＣＰＵ
１２  メインメモリ
１３  ハードディスク
１３１  ＯＳ
１３２  仮想環境プログラム
１３２ａ  仮想環境プログラム
１３３  シミュレーション用データ
１３４  バスマップ
１３５  組込みプログラム
１３６  全アドレス空間情報
２  表示装置
３  入力装置
４１  仮想ＣＰＵ部
４２  仮想バス部
４２ａ  仮想バス部
４２ｂ  仮想バス部
４２１  アクセス先リスト
４２２  スタブ領域
４２３  領域確保部
４２４  アクセス処理部
４３  周辺ＩＰ部
４３ａ  周辺ＩＰ部
４３ｂ  周辺ＩＰ部
４３１  ＤＭＡ
４３１ａ  ＤＭＡ＿１
４３１ｂ  ＤＭＡ＿２
４３２  ＩＮＴＣ
４３２ａ  ＩＮＴＣ＿１
４３２ｂ  ＩＮＴＣ＿２
【図１】
2018200495.tif 000003
【図２】
2018200495.tif 000004
【図３】
2018200495.tif 000005
【図４】
2018200495.tif 000006
【図５】
2018200495.tif 000007
【図６】
2018200495.tif 000008
【図７】
2018200495.tif 000009
【図８】
2018200495.tif 000010
【図９】
2018200495.tif 000011
【図１０】
2018200495.tif 000012
【図１１】
2018200495.tif 000013
【図１２】
2018200495.tif 000014
【図１３】
2018200495.tif 000015