(57)【要約】【課題】  比較的容易に不具合の原因を特定できる情報処理装置を得る。【解決手段】  レジスターアクセス履歴管理部１５は、第１動作モードにおいて、レジスターアクセス監視部１４により検出された、レジスター２１へのアクセスの設定値を順番にレジスターアクセス履歴として取得し、レジスターアクセス履歴内の１または複数の設定値を変更する。レジスターアクセス置換部１７は、第２動作モードにおいて、そのレジスター２１へ設定値を書き込むアクセスを順番に検出していき、検出したアクセスの設定値と、検出したアクセスの順番に対応するレジスターアクセス履歴内の設定値とが異なる場合、検出したアクセスの設定値をレジスターアクセス履歴内の設定値に変更し、設定値を変更したアクセスをハードウェアモジュール１１へ供給する。【選択図】  図１
2014164626.tif 000002
【特許請求の範囲】
【請求項１】
１または複数のレジスターを有し前記レジスターの設定値に応じた動作をするハードウェアモジュールと、
所定のソフトウェアモジュールによる特定の前記レジスターへ設定値を書き込むアクセスを検出するレジスターアクセス監視部と、
第１動作モードにおいて、前記レジスターアクセス監視部により検出された前記アクセスの前記設定値を順番にレジスターアクセス履歴として取得し、前記レジスターアクセス履歴内の１または複数の前記設定値を変更するレジスターアクセス履歴管理部と、
第２動作モードにおいて、前記レジスターへ設定値を書き込むアクセスを順番に検出していき、検出した前記アクセスの前記設定値と、検出した前記アクセスの順番に対応する前記レジスターアクセス履歴内の前記設定値とが異なる場合、検出した前記アクセスの前記設定値を前記レジスターアクセス履歴内の前記設定値に変更し、前記設定値を変更した前記アクセスを前記ハードウェアモジュールへ供給し、検出した前記アクセスの前記設定値と、検出した前記アクセスの順番に対応する前記レジスターアクセス履歴内の前記設定値とが同一である場合、検出した前記アクセスを、前記設定値を変更せずにそのまま前記ハードウェアモジュールへ供給するレジスターアクセス置換部と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記レジスターアクセス監視部は、前記ソフトウェアモジュールによるアクセスのうち、予め指定されたアドレスを有する前記レジスターへ設定値を書き込むアクセスを検出し、それ以外のアドレスへのアクセスを検出しないことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記レジスターアクセス監視部は、特定の前記レジスターへ所定の設定値が書き込まれた後、前記レジスターへ設定値を書き込むアクセスを検出することを特徴とする請求項１記載の情報処理装置。
【請求項４】
１回目の前記ソフトウェアモジュールの実行時に、当該情報処理装置の動作モードを前記第１動作モードにセットし、２回目の前記ソフトウェアモジュールの実行時に、当該情報処理装置の動作モードを前記第２動作モードにセットするモード切り替え部をさらに備えることを特徴とする請求項１記載の情報処理装置。
【請求項５】
インターフェイスをさらに備え、
前記レジスターアクセス履歴管理部は、前記インターフェイスを介して外部の端末装置へ前記レジスターアクセス履歴を表示させ、前記端末装置からの指令に従って、前記レジスターアクセス履歴内の１または複数の前記設定値を変更すること、
を特徴とする請求項１記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置に関するものである。
【背景技術】
【０００２】
ある情報処理装置では、ソフトウェアのバグ検出を目的として、複数の機能モジュールの起動レジスターに対するレジスター設定の順序の期待値と、実際のレジスター設定の順序とを比較し、両者が異なる場合にはエラーを通知する（例えば特許文献１参照）。
【０００３】
また、ある半導体集積回路では、不具合の解消を目的として、内蔵ＲＯＭ（Read Only Memory）の特定のアドレスへの読み出しが行われると、代替コードレジスターから、代替のプログラムコードが出力され、ＣＰＵ（Central Processing Unit）で実行される（例えば特許文献２参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−１３３９６９号公報
【特許文献２】特開２００３−１７８５９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述の情報処理装置では、不具合の検出はできるものの、不具合の原因を特定しその不具合を解消するためには、ソフトウェアを修正して繰り返し実験的に実行させる必要がある。
【０００６】
しかしながら、近年、ソフトウェアモジュールとハードウェアモジュールを有する情報処理装置の開発においては、装置の高機能化、複雑化などに伴い、ソフトウェア開発の比重が高まっており、ソフトウェア開発者の負荷が高い状態となっている。このため、不具合の原因が特定されないまま、ソフトウェアの修正をソフトウェア開発者に依頼した場合、ソフトウェア開発者の負荷がさらに高くなってしまい、結果として、開発に遅延が生じてしまう可能性がある。したがって、ハードウェア開発者が比較的容易に不具合の原因を特定できることが好ましい。
【０００７】
上述の半導体集積回路では、不具合の可能性のあるコードを置換して動作の検証を行うことができるが、ソフトウェア中のコードを別のコードに置き換える必要があるため、その別のコードを作成するためにソフトウェアの知識が必要になる。
【０００８】
また、情報処理装置内のハードウェアモジュールは、ソフトウェアモジュールによって、ハードウェアモジュールの実行する機能を指定するためのレジスターを有しており、ソフトウェアモジュールは、１つのレジスターに対して時間の経過とともに順番に設定値を書き込んでいくため、上述の半導体集積回路による特定アドレスに対するアクセスの値（コード）を特定の１つの値に固定的に置き換える方法では、不具合の原因を特定することは困難である。
【０００９】
本発明は、上記の問題に鑑みてなされたものであり、比較的容易に不具合の原因を特定できる情報処理装置を得ることを目的とする。
【課題を解決するための手段】
【００１０】
本発明に係る情報処理装置は、１または複数のレジスターを有し前記レジスターの設定値に応じた動作をするハードウェアモジュールと、所定のソフトウェアモジュールによる特定の前記レジスターへ設定値を書き込むアクセスを検出するレジスターアクセス監視部と、第１動作モードにおいて、前記レジスターアクセス監視部により検出された前記アクセスの前記設定値を順番にレジスターアクセス履歴として取得し、前記レジスターアクセス履歴内の１または複数の前記設定値を変更するレジスターアクセス履歴管理部と、第２動作モードにおいて、前記レジスターへ設定値を書き込むアクセスを順番に検出していき、検出した前記アクセスの前記設定値と、検出した前記アクセスの順番に対応する前記レジスターアクセス履歴内の前記設定値とが異なる場合、検出した前記アクセスの前記設定値を前記レジスターアクセス履歴内の前記設定値に変更し、前記設定値を変更した前記アクセスを前記ハードウェアモジュールへ供給し、検出した前記アクセスの前記設定値と、検出した前記アクセスの順番に対応する前記レジスターアクセス履歴内の前記設定値とが同一である場合、検出した前記アクセスを、前記設定値を変更せずにそのまま前記ハードウェアモジュールへ供給するレジスターアクセス置換部とを備える。
【発明の効果】
【００１１】
本発明によれば、比較的容易に不具合の原因を特定できる。
【図面の簡単な説明】
【００１２】
【図１】図１は、本発明の実施の形態に係る情報処理装置の構成を示すブロック図である。
【図２】図２は、図１に示す情報処理装置の動作について説明するフローチャートである（１／２）。
【図３】図３は、図１に示す情報処理装置の動作について説明するフローチャートである（２／２）。
【図４】図４は、図１に示す情報処理装置において取得されるレジスターアクセス履歴の一例を示す図である。
【図５】図５は、図４に示すレジスターアクセス履歴において、あるアクセス番号の設定値が変更された後のレジスターアクセス履歴の一例を示す図である。
【発明を実施するための形態】
【００１３】
以下、図に基づいて本発明の実施の形態を説明する。
【００１４】
図１は、本発明の実施の形態に係る情報処理装置の構成を示すブロック図である。
【００１５】
図１に示す情報処理装置１は、例えば組み込み機器などであって、所定の機能を実現するハードウェアモジュール１１と、そのハードウェアモジュール１１の１または複数のレジスター２１に対して設定値を書き込むことで、ハードウェアモジュール１１の動作を制御するソフトウェアモジュール１２とを有する。ソフトウェアモジュール１２は、所定のプログラムがＣＰＵ２２で実行されることで実現される。また、ハードウェアモジュール１１は、１または複数のレジスター２１を有し各レジスターの設定値に応じた動作をする。
【００１６】
さらに、情報処理装置１は、デバッグ機能切り替え部１３、レジスターアクセス監視部１４、レジスターアクセス履歴管理部１５、デバッグ用インターフェイス１６、およびレジスターアクセス置換部１７を有する。これらは、例えばＡＳＩＣ（Application Specific Integrated Circuit）で実現される。
【００１７】
デバッグ機能切り替え部１３は、１回目のソフトウェアモジュール１２の実行時に、当該情報処理装置１の動作モードを履歴記録モードにセットし、２回目のソフトウェアモジュール１２の実行時に、当該情報処理装置１の動作モードを変更設定値適用モードにセットする。
【００１８】
レジスターアクセス監視部１４は、ソフトウェアモジュール１２による特定のレジスター２１へ設定値を書き込むアクセス（つまり、レジスター２１への書込要求）を検出する。
【００１９】
この実施の形態では、レジスターアクセス監視部１４は、１または複数のレジスター２１のうち、例えば後述の端末装置２などから指定されたアドレスを有するレジスター２１へ設定値を書き込むアクセスを検出し、それ以外のアドレスへのアクセスを検出しない。
【００２０】
また、レジスターアクセス監視部１４は、所定のレジスターへ所定の設定値が書き込まれた後、特定のレジスター２１へ設定値を書き込むアクセスを検出するようにしてもよい。例えば、レジスターアクセス監視部１４は、起動レジスターに、ハードウェアモジュール１１を起動させる設定値を書き込むアクセスを検出した時点で、特定のレジスター２１へ設定値を書き込むアクセスの監視を開始するようにしてもよい。
【００２１】
例えば、情報処理装置がコピー機能を有する装置である場合、ソフトウェアモジュール１２が、コピーの実行のために、ハードウェアモジュール１１の起動レジスターを起動したときに、特定のレジスター２１へ設定値を書き込むアクセスの監視を開始するようにしてもよい。
【００２２】
レジスターアクセス履歴管理部１５は、履歴記録モードにおいて、レジスターアクセス監視部１４により検出されたアクセスの設定値を順番にレジスターアクセス履歴として取得して図示せぬＳＲＡＭ（Static Random Access Memory）といったＲＡＭなどに保持し、その後、そのレジスターアクセス履歴内の１または複数の設定値を変更する。
【００２３】
この実施の形態では、レジスターアクセス履歴管理部１５は、デバッグ用インターフェイス１６を介して外部の端末装置２へレジスターアクセス履歴を表示させ、端末装置２からの指令に従って、レジスターアクセス履歴内の１または複数の設定値を変更する。
【００２４】
なお、端末装置２は、ユーザーに対して情報を表示する表示装置、およびユーザー操作を検出する入力装置を備え、レジスターアクセス履歴を表示装置で表示し、また、そのレジスターアクセス履歴内の設定値の変更のためのユーザー操作を入力装置で検出して、デバッグ用インターフェイス１６を介してレジスターアクセス履歴管理部１５に通知する。
【００２５】
デバッグ用インターフェイス１６は、外部の端末装置２との間でデータ通信を行う通信回路である。
【００２６】
レジスターアクセス置換部１７は、ＣＰＵ２２とハードウェアモジュール１１との間に設けられ、変更設定値適用モードにおいて、（ａ）特定のレジスター２１へ設定値を書き込むアクセスを順番に検出していき、（ｂ１）検出したアクセスの設定値と、検出したアクセスの順番に対応するレジスターアクセス履歴内の設定値とが異なる場合、検出したアクセスの設定値をレジスターアクセス履歴内の設定値に変更し、設定値を変更したアクセスをハードウェアモジュール１１へ供給し、（ｂ２）検出したアクセスの設定値と、検出したアクセスの順番に対応するレジスターアクセス履歴内の設定値とが同一である場合、検出したアクセスを、設定値を変更せずにそのままハードウェアモジュール１１へ供給する。
【００２７】
つまり、履歴記録モードでは、レジスターアクセス監視部１４およびレジスターアクセス履歴管理部１５が上述の動作を行い、レジスターアクセス置換部１７は、ソフトウェアモジュール１２によるすべてのアクセスをそのままハードウェアモジュール１１へ供給する。変更設定値適用モードでは、レジスターアクセス履歴管理部１５は、上述の履歴の取得をせずに、レジスターアクセス置換部１７は、上述の動作を行う。
【００２８】
次に、上記情報処理装置の動作について説明する。図２および図３は、図１に示す情報処理装置の動作について説明するフローチャートである。
【００２９】
まず、デバッグ機能切り替え部１３は、例えば端末装置２からの指令に従って、動作モードを履歴記録モードにセットする（ステップＳ１）。
【００３０】
履歴記録モードがセットされると、レジスターアクセス履歴管理部１５は、アクセスカウンターをゼロにセットする（ステップＳ２）。
【００３１】
その後、ソフトウェアモジュール１２の実行が開始される（ステップＳ３）。
【００３２】
そして、レジスターアクセス監視部１４は、ソフトウェアモジュール１２の実行開始時、またはその後の所定のタイミングで、ＣＰＵ２２からハードウェアモジュール１１へのアクセスの監視を開始する（ステップＳ４）。
【００３３】
レジスターアクセス監視部１４は、特定のレジスター２１へのライトアクセスを検出すると、そのレジスター２１のアドレスおよび設定値（書き込まれる値）をレジスターアクセス履歴管理部１５に通知する。レジスターアクセス履歴管理部１５は、その通知を受け付けると、アクセスカウンターを１だけ増加させ（ステップＳ５）、通知されたアドレスのレジスターのレジスターアクセス履歴に、通知された設定値を追加する（ステップＳ６）。つまり、レジスターアクセス履歴には、通知された順番で設定値が配列されることになる。
【００３４】
図４は、図１に示す情報処理装置において取得されるレジスターアクセス履歴の一例を示す図である。図４に示す例では、アドレスが０ｘ１００１であるレジスターについてのアクセスについて、その時点のアクセスカウンターの値をアクセス番号とし、アクセス番号に関連付けて設定値を保持している。
【００３５】
このように、特定のレジスター２１へのライトアクセスが検出されるたびに、レジスターアクセス履歴が更新される。
【００３６】
なお、履歴記録モードでは、特定のレジスター２１へのライトアクセスは、そのまま実行されるので、ハードウェアモジュール１１は、そのライトアクセスによって書き込まれた設定値に従って動作する。このため、不具合がある場合には、ハードウェアモジュール１１の動作にそれが現れる。
【００３７】
そして、デバッグ機能切り替え部１３は、所定の終了条件（ソフトウェアモジュール１２の実行終了、端末装置２による終了指令など）を満たすと（ステップＳ７）、履歴記録モードを終了し、取得されたレジスターアクセス履歴を、レジスターアクセス履歴管理部１５から端末装置２へ出力させ、端末装置２に表示させる（ステップＳ８）。なお、履歴記録モードが終了するまでは、レジスターアクセス監視部１４は、アクセスの監視を継続する。
【００３８】
端末装置２に表示されたレジスターアクセス履歴に対してユーザーが、設定値を変更する操作を行うと、端末装置２は、その操作をレジスターアクセス履歴管理部１５に通知する。レジスターアクセス履歴管理部１５は、そのユーザー操作に従って、レジスターアクセス履歴内の設定値を変更する（ステップＳ９）。
【００３９】
図５は、図４に示すレジスターアクセス履歴において、あるアクセス番号の設定値が変更された後のレジスターアクセス履歴の一例を示す図である。図５に示すレジスターアクセス履歴では、アクセス番号が３である設定値（つまり、３番目にセットされる設定値）が変更されている。
【００４０】
その後、デバッグ機能切り替え部１３は、例えば端末装置２からの指令に従って、動作モードを変更設定値適用モードにセットする（ステップＳ１０）。
【００４１】
変更設定値適用モードがセットされると、レジスターアクセス置換部１７は、アクセスカウンターをゼロにセットする（ステップＳ１１）。
【００４２】
その後、ソフトウェアモジュール１２の実行が開始される（ステップＳ１２）。
【００４３】
そして、レジスター監視部１４は、ソフトウェアモジュール１２の実行開始時、またはその後の所定のタイミングで、ＣＰＵ２２からハードウェアモジュール１１へのアクセスの監視を開始する（ステップＳ１３）。
【００４４】
レジスターアクセス置換部１７は、特定のレジスター２１へのライトアクセスを検出すると、アクセスカウンターを１だけ増加させ（ステップＳ１４）、レジスターアクセス履歴管理部１５により管理されているレジスターアクセス履歴を参照して、そのライトアクセスの対象となったレジスターのレジスターアクセス履歴において、アクセスカウンターの現在値に対応する設定値が変更されているか否かを特定する（ステップＳ１５）。
【００４５】
そのレジスターアクセス履歴において、アクセスカウンターの現在値に対応する設定値が変更されていない場合には、レジスターアクセス置換部１７は、検出したライトアクセスをそのままハードウェアモジュール１１に供給する（ステップＳ１６）。
【００４６】
一方、そのレジスターアクセス履歴において、アクセスカウンターの現在値に対応する設定値が変更されている場合には、レジスターアクセス置換部１７は、検出したライトアクセスで指定されている設定値を、レジスターアクセス履歴内の変更後の設定値に置換し（ステップＳ１７）、置換後のライトアクセスをハードウェアモジュール１１に供給する（ステップＳ１８）。
【００４７】
具体的には、レジスターアクセス置換部１７は、そのレジスターアクセス履歴において、アクセスカウンターの現在値に対応する設定値が、検出したライトアクセスで指定されている設定値と同一である場合には、そのレジスターアクセス履歴において、アクセスカウンターの現在値に対応する設定値が変更されていないと判定し、両者が同一ではない場合には、そのレジスターアクセス履歴において、アクセスカウンターの現在値に対応する設定値が変更されていると判定する。
【００４８】
図４および図５に示す例では、１回目および２回目のアクセスについては、そのままハードウェアモジュール１１に供給され、３回目のアクセスについては、設定値が変更された後、ハードウェアモジュール１１に供給される。
【００４９】
このように、特定のレジスター２１へのライトアクセスが検出されるたびに、上述の処理（ステップＳ１４〜Ｓ１８）が実行される。
【００５０】
そして、デバッグ機能切り替え部１３は、所定の終了条件（ソフトウェアモジュール１２の実行終了、端末装置２による終了指令など）を満たすと（ステップＳ１９）、変更設定値適用モードを終了する。なお、変更設定値適用モードが終了するまでは、レジスターアクセス置換部１７は、アクセスの監視を継続する。
【００５１】
その後、ユーザーが、この設定値調整作業の終了または継続を示すユーザー操作を端末装置２に行うと、その操作がデバッグ機能切り替え部１３に通知され、デバッグ機能切り替え部１３は、この設定値調整を継続するか否かを判定し（ステップＳ２０）、継続する場合には、ステップＳ９に戻り、ステップＳ９以降の処理を再度実行させる。一方、継続しない場合には、この処理は終了する。
【００５２】
なお、上述のアクセスカウンターを使用せずに、履歴記録モードでは、レジスターアクセス履歴には、アクセス番号を記憶せずに、設定値のみを連続させて順番に配列させ、変更設定値適用モードでは、アクセスの検出ごとに、レジスターアクセス履歴内において、参照すべき設定値の位置を順番に（履歴記録モードでのアクセス検出順番に沿って）移動させていくようにしてもよい。このようにすることで、レジスターアクセス履歴の保持に要求される記憶容量が少なくて済む。
【００５３】
以上のように、上記実施の形態によれば、レジスターアクセス履歴管理部１５は、第１動作モードにおいて、レジスターアクセス監視部１４により検出された、レジスター２１へのアクセスの設定値を順番にレジスターアクセス履歴として取得し、レジスターアクセス履歴内の１または複数の設定値を変更する。レジスターアクセス置換部１７は、第２動作モードにおいて、（ａ）そのレジスター２１へ設定値を書き込むアクセスを順番に検出していき、（ｂ１）検出したアクセスの設定値と、検出したアクセスの順番に対応するレジスターアクセス履歴内の設定値とが異なる場合、検出したアクセスの設定値をレジスターアクセス履歴内の設定値に変更し、設定値を変更したアクセスをハードウェアモジュール１１へ供給し、（ｂ２）検出したアクセスの設定値と、検出したアクセスの順番に対応するレジスターアクセス履歴内の設定値とが同一である場合、検出したアクセスを、設定値を変更せずにそのままハードウェアモジュール１１へ供給する。
【００５４】
これにより、例えばハードウェアモジュール１１の開発者が、ハードウェアモジュール１１に時間とともに順番に設定される設定値を変更しつつハードウェアモジュール１１の動作確認を行うことができるので、ソフトウェアの知識がなくても、比較的容易に不具合の原因を特定できる。
【００５５】
なお、上述の実施の形態は、本発明の好適な例であるが、本発明は、これらに限定されるものではなく、本発明の要旨を逸脱しない範囲において、種々の変形、変更が可能である。
【産業上の利用可能性】
【００５６】
本発明は、例えば、プリンター、複合機などの組み込み機器に適用可能である。
【符号の説明】
【００５７】
１  情報処理装置
２  端末装置
１１  ハードウェアモジュール
１２  ソフトウェアモジュール
１３  デバッグ機能切り替え部（モード切り替え部の一例）
１４  レジスターアクセス監視部
１５  レジスターアクセス履歴管理部
１６  デバッグ用インターフェイス（インターフェイスの一例）
１７  レジスターアクセス置換部
２１  レジスター
【図１】
2014164626.tif 000003
【図２】
2014164626.tif 000004
【図３】
2014164626.tif 000005
【図４】
2014164626.tif 000006
【図５】
2014164626.tif 000007