(57)【特許請求の範囲】
【請求項１】
デバイスと接続する制御装置であって、
前記制御装置の全体を制御する第１制御部と、
前記デバイスとアクセスし、前記デバイスを制御する第２制御部と、
前記第１制御部及び前記第２制御部にウォッチドッグリセット信号を通知することにより、前記制御装置のリセットを制御する第３制御部と、
を有し、
前記第３制御部は、ウォッチドッグリセットがかかる条件を満たした場合、前記ウォッチドッグリセット信号を通知する前に、前記第２制御部にウォッチドッグリセットの発生通知をし、
前記第１制御部は、前記ウォッチドッグリセット信号を受信すると、前記制御装置のウォッチドッグリセットを実行し、
前記第２制御部は、ウォッチドッグリセットが実行される場合、前記ウォッチドッグリセットの発生通知の受信に応じて取得した情報に基づいて、前記デバイスに対して当該デバイスが命令を受付可能な状態にする処理を実行させる制御をすることを特徴とする制御装置。
【請求項２】
前記第２制御部は、デバイスの制御履歴に関する情報を記憶する情報保持部をさらに有し、
前記第２制御部は、前記ウォッチドッグリセットの発生通知の受信に応じて前記デバイスの制御履歴に関する情報を取得し、
前記第２制御部は、ウォッチドッグリセットが実行された後に、前記デバイスの制御履歴に関する情報に基づいて、前記デバイスに対して前記処理を実行させることを特徴とする請求項１に記載の制御装置。
【請求項３】
前記情報保持部は、ウォッチドッグリセットが実行されても初期化されないことを特徴とする請求項２に記載の制御装置。
【請求項４】
前記第２制御部は、前記ウォッチドッグリセットの発生通知の受信に応じて前記デバイスのステータスに関する情報を取得し、
前記第２制御部は、ウォッチドッグリセットが実行される前に、前記デバイスのステータスに関する情報に基づいて、前記デバイスに対して前記処理を実行させることを特徴とする請求項１に記載の制御装置。
【請求項５】
前記第２制御部は、前記デバイスにコマンドを発行して制御することを特徴とする請求項１〜４のいずれか１項に記載の制御装置。
【請求項６】
請求項１〜５のいずれか１項に記載の制御装置と、前記デバイスとを有することを特徴とする情報処理装置。
【請求項７】
請求項１〜５のいずれか１項に記載の制御装置と、前記デバイスと、印刷ヘッドとを有することを特徴とするプリンタ。
【請求項８】
デバイスと接続する制御装置の制御方法であって、
前記制御装置は、
前記制御装置の全体を制御する第１制御部と、
前記デバイスとアクセスし、前記デバイスを制御する第２制御部と、
前記第１制御部及び前記第２制御部にウォッチドッグリセット信号を通知することにより、前記制御装置のリセットを制御する第３制御部と、
を有し、
前記第３制御部に、ウォッチドッグリセットがかかる条件を満たした場合、前記ウォッチドッグリセット信号を通知する前に、前記第２制御部にウォッチドッグリセットの発生通知をさせ、
前記第１制御部に、前記ウォッチドッグリセット信号を受信すると、前記制御装置のウォッチドッグリセットを実行させ、
ウォッチドッグリセットが実行される場合、前記第２制御部に、前記ウォッチドッグリセットの発生通知の受信に応じて取得した情報に基づいて、前記デバイスに対して当該デバイスが命令を受付可能な状態にする処理を実行させる制御をさせることを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ウォッチドッグタイマのリセットにより初期化されるＣＰＵを備える制御装置及びその制御方法に関する。
【背景技術】
【０００２】
従来、ＣＰＵなどで異常が発生し、ウォッチドッグリセットがかかった場合、ＣＰＵを含むシステム全体が初期化される情報処理装置が知られている。このとき、情報処理装置に外部装置が接続されている場合は、システム全体が初期化されることに同期して、外部装置も初期状態になる必要がある。外部装置を初期状態にする方法として、システム全体の初期化動作に、接続されている外部装置の初期化シーケンスを組み込んで実行する方法や、外部装置のリセット端子を有効にすることで初期化を実行する方法がある。また、ＣＰＵの命令を使用しない方法としては、異常検出装置により、ウォッチドッグリセットの信号をラッチして、外部装置用のＩ／Ｏのリセット信号を生成し、外部装置をリセットする方法が開示されている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平６−２１４８３１
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、ＣＰＵの初期化に必要なプログラムは、外部装置のメモリに入っているが、メモリもシステムの初期化と同期して初期化される必要がある。メモリが初期化されていない場合、ＣＰＵは、情報処理装置の電源を立ち上げた後のアクセスにより外部装置の状態を認識してコントローラのアクセス方法を変えることは不可能であり、メモリに対するアクセスを失敗してしまう。例えば、メモリがフラッシュＲＯＭであり、データを定期的に書き換える場合、メモリの該当する領域のデータを消去し、その領域に新たなデータを書き込む。消去作業や書き込みは、メモリを構成する半導体素子が備えるフローティングゲート内の電荷を操作するために一定時間を必要とするが、その間メモリはビジー状態となり他の命令を受け付けない。特許文献１の方法においても、初期化プログラムが動作する場合、同様の問題が生じる。
【０００５】
ウォッチドッグリセットが発生したとき、リセット復帰後のプログラムフェッチが発生しても、対象のメモリがビジー状態であった場合、メモリは外部装置からのリードデータを正しく返すことができない。具体的には、メモリがビジー中（ライトやイレース中）に、メモリコントローラがリードの命令及びデータ同期用のクロックをメモリに対して送信しても、メモリはそのコマンドを受け付けず、正しいリードデータを返す挙動をしていない。そのため、メモリコントローラが受け取るデータは正しい値ではなくなってしまう。また、シリアルＲＯＭなどのデバイスの場合はエラー信号がないためデータの中身で判断することになってしまう。そして、フェッチしたデータが正しくないため、ＣＰＵが初期化を失敗してしまうという問題が発生してしまう。
【課題を解決するための手段】
【０００６】
上記課題を解決するため、本発明に係る制御装置は、デバイスと接続する制御装置であって、前記制御装置全体を制御する第１制御部と、前記デバイスとアクセスし、前記デバイスを制御する第２制御部と、前記第１制御部及び前記第２制御部にウォッチドッグリセット信号を通知することにより、前記制御装置のリセットを制御する第３制御部と、を有し、前記第３制御部は、ウォッチドッグリセットがかかる条件を満たした場合、前記ウォッチドッグリセット信号を通知する前に、前記第２制御部にウォッチドッグリセットの発生通知をし、前記第１制御部は、前記ウォッチドッグリセット信号を受信すると、前記制御装置のウォッチドッグリセットを実行し、前記第２制御部は、ウォッチドッグリセットが実行される場合、前記ウォッチドッグリセットの発生通知の受信に応じて取得した情報に基づいて、前記デバイスに対して当該デバイスが命令を受付可能な状態にする処理を実行させる制御をする。
【発明の効果】
【０００７】
本発明によれば、接続されているデバイスをＣＰＵの介在なしにリセットすることができる。これにより、リセット後のデバイスへのアクセスのコマンド入力エラーを回避することができる。
【図面の簡単な説明】
【０００８】
【図１】実施形態１に係る情報処理装置のハードウェア構成図である。
【図２】実施形態１に係るウォッチドッグリセットが発生した場合の各機能ブロックの状態及びシーケンスを示す図である。
【図３】実施形態１に係るウォッチドッグ復帰後のコントローラ制御フロー図である。
【図４】実施形態２に係るウォッチドッグリセットが発生する場合の各機能ブロックの状態及びシーケンスを示す図である。
【図５】実施形態２に係るウォッチドッグリセット発生時のコントローラ制御フロー図である。
【図６】実施形態１に係るパワーオンリセット時のシーケンスを示す図である。
【図７】従来のウォッチドッグリセット時のシーケンスを示す図である。
【図８】実施形態１に係る情報処理装置のハードウェア構成図である。
【発明を実施するための形態】
【０００９】
（実施形態１）
図１を用いて、本実施形態に係る情報処理装置について説明する。情報処理装置としては、例えば、画像処理装置が例に挙げられるが、これに限定されるものではなく、ウォッチドッグタイマのリセットにより初期化されるＣＰＵを備える情報処理装置であればよい。画像処理装置としては、プリンタ、スキャナ、プリント機能及びスキャン機能を有する複合プリンタ、複写機、プロッタ等が挙げられる。
【００１０】
図１は、本実施形態に係る情報処理装置のハードウェアの構成を示す図である。情報処理装置は、ＡＳＩＣ２０と、フラッシュＲＯＭデバイス３０と、ＳＤＲＡＭ４０とを有する。本実施形態では、ＡＳＩＣ２０が、フラッシュＲＯＭデバイス３０の制御装置として機能する。ＡＳＩＣ２０は、ＲＯＭコントローラ１と、ＣＰＵ８と、リセット制御部９と、ＤＭＡＣ１０と、ＳＤＲＡＭコントローラ１１とを有する。また、ＲＯＭコントローラ１は、フラッシュＲＯＭデバイス３０とＲＯＭインターフェース信号線で接続されており、ＳＤＲＡＭコントローラ１１は、ＳＤＲＡＭ４０とＲＡＭインターフェース信号線で接続されている。
【００１１】
ＣＰＵ８は、プログラムに従って情報処理装置の全体を制御する。例えば、ＣＰＵ８は、ＤＭＡＣ１０のＤＭＡ制御、ＲＯＭコントローラ１の制御、ＳＤＲＡＭコントローラ１１のＳＤＲＡＭへのアクセス制御をする。
【００１２】
リセット制御部９は、パワーオンをした際のシステムリセットの制御と、ウォッチドッグ（ＷＤ）制御を実行する。具体的には、リセット制御部９は、パワーオン時に、ＡＳＩＣ２０内のシステム全体に、システムリセット信号を入力する。なお、パワーオン時とは、情報処理装置の電源が投入されたとき、すなわち、ハード電源がＯＮした時を指す。システムリセットの際は、情報処理装置全体がリセットされる。また、リセット制御部９は、ＷＤリセットをする際に、ウォッチドッグリセット信号を情報処理装置内（ここでは、ＡＳＩＣ内）のシステム全体に入力する。このとき、デバイス情報保持部２と、リセット管理部３は、リセットされない。また、詳細は後述するが、リセット制御部９は、ＣＰＵ８に異常が発生した場合、ウォッチドッグリセット信号を入力する前に、ウォッチドッグの事前通知信号を、ＲＯＭコントローラ１に対し入力する。これにより、ＲＯＭコントローラ１は、ウォッチドッグリセット用の制御が可能となる。ここで、ウォッチドッグリセットとは、ウォッチドッグにより異常状態であると判定された際にシステムを初期化することを指す。具体的には、ＣＰＵ８に定期的に信号を送らせ、一定期間（予め設定した期間）を経過してもＣＰＵ８からタイマーをクリアする信号が送られなければ、異常状態であると判定し、ＣＰＵ８に割込みを掛けてシステムを初期化する。すなわち、リセット制御部９は、ウォッチドッグリセットがかかる条件を満たした場合、ウォッチドッグリセット信号をＣＰＵ８やＲＯＭコントローラ１に送信することにより、ウォッチドッグリセットを実行させる。
【００１３】
ＲＯＭコントローラ１は、外部に接続されるフラッシュＲＯＭデバイス３０の制御部である。そして、フラッシュＲＯＭデバイス３０と接続されるＲＯＭアクセスＩ／Ｆ部７と、ＤＭＡＣ１０と接続されるＤＭＡ  Ｉ／Ｆ部６とＣＰＵ  Ｉ／Ｆ部５と、リセット管理部３と、デバイス情報保持部２とを有する。さらに、ＲＯＭコントローラシーケンサ４を有する。
【００１４】
ＲＯＭアクセスＩ／Ｆ部７は、フラッシュＲＯＭデバイス３０へのアクセスのためのインターフェースであり、ＤＭＡ  Ｉ／Ｆ部６は、ＤＭＡＣ１０へのアクセスのためのインターフェースである。ＣＰＵ  Ｉ／Ｆ部５は、ＣＰＵ８からプログラムデータを送受信する。
【００１５】
リセット管理部３は、システムリセット信号、ＷＤリセット信号等の各種のリセット信号を受信し、リセット発生時にこれらの情報を保存する。また、本実施形態では、ウォッチドッグリセットの発生通知（以下、ＷＤ予告通知、ＷＤの事前通知ともいう）を受信した場合、ＷＤリセットフラグを保存する。なお、ＷＤリセットが解除した場合は、ＷＤリセットフラグを削除する。
【００１６】
また、デバイス情報保持部２は、ＡＳＩＣに接続するモジュールに関する情報を保存する。モジュールに関する情報としては、接続するモジュールのステータスに関する情報、制御履歴の情報、デバイスの識別情報（例えば、デバイスＩＤ）が挙げられる。本実施形態では、ＡＳＩＣ２０には、フラッシュＲＯＭデバイス３０が接続されているので、フラッシュＲＯＭデバイス３０に関する情報として、制御履歴の情報及びフラッシュＲＯＭデバイス３０のデバイスＩＤを保存する。デバイス情報保持部２には、定期的、すなわち、所定の周期で、フラッシュＲＯＭデバイス３０の制御履歴の情報が保存される。なお、フラッシュＲＯＭデバイス３０の制御履歴の情報を保存するタイミングは、これに限定されず、リセット管理部３にＷＤリセットフラグが保存されてからＷＤリセットが実行される前のタイミングであってもよい。デバイスＩＤは、ＲＯＭアクセスＩ／Ｆ制御部７が初期化動作時のデバイス初期設定時、すなわち、パワーオンをした際のシステムリセット後の初期動作の際にＰＤＩＲを取得し、フラッシュＲＯＭデバイス３０に保持する。なお、デバイス情報保持部２は、ＷＤリセットにおける初期化同期制御に必要な情報を保持するため、ＷＤリセットによって初期化されない。
【００１７】
ＤＭＡＣ１０は、ＣＰＵ８の指示に従って、ＤＭＡの転送データを送受信するものであり、ＳＤＲＡＭコントローラ１１にアクセスし、フラッシュＲＯＭデバイス３０からのデータをＳＤＲＡＭ４０に転送する。
【００１８】
ＳＤＲＡＭコントローラ１１は、ＣＰＵ８の指示に従って、データを送受信するものであり、ＳＤＲＡＭ４０にアクセスし、ＤＭＡＣ経由でフラッシュＲＯＭデバイス３０に転送する。
【００１９】
フラッシュＲＯＭデバイス３０は、ＡＳＩＣ２０の外部に設けられ、ＲＯＭコントローラ１とアクセス可能に接続されている。
【００２０】
ＳＤＲＡＭ４０は、ＣＰＵ８によるプログラムの実行時に、各種情報を一時的に記憶する。なお、本実施形態では、ＳＤＲＡＭとしたが、これに限定されず、その他の外部記憶装置であってもよい。フラッシュＲＯＭデバイス３０は、ＣＰＵ８により実行されるプログラムを記憶する。
【００２１】
ＲＯＭコントローラシーケンサ４は、ＲＯＭコントローラ１全体の動作制御を実行する。
【００２２】
本実施形態では、ウォッチドッグリセットをするシステムとして、ＡＳＩＣ２０を例に挙げて説明するが、これに限定されず、ＦＰＧＡ、プロセッサ、中央処理装置であってもよい。
【００２３】
ここで、ウォッチドッグリセットについて説明する。情報処理装置は、パワーオンして起動後、ＣＰＵ８は、システム起動用のプログラムが入っているフラッシュＲＯＭデバイス３０にフェッチし、その後、フラッシュＲＯＭデバイス３０内のデータを、システム内部のＳＤＲＡＭ４０にコピーして展開する。そして、ＳＤＲＡＭ４０でプログラムを実行可能になった後、フラッシュＲＯＭデバイス３０をデータ記憶領域として使用する。
【００２４】
情報処理装置のパワーオンリセット時のシーケンスを図６に示す。
【００２５】
まず、ＣＰＵ８は、パワーオンリセットが解除された後、フラッシュＲＯＭデバイス３０からプログラムフェッチを実行するために、ＲＯＭコントローラ１に対してプログラムリードの命令を発行する（Ｓ６０１）。プログラムリードの命令を受け取ったＲＯＭコントローラ１は、フラッシュＲＯＭデバイス３０に対してリード命令を発行する（Ｓ６０２）。フラッシュＲＯＭデバイス３０は、リード命令を受信すると、ＲＯＭコントローラ１にデータを送信し（Ｓ６０３）、ＲＯＭコントローラ１はそのデータをＣＰＵ８に送信する（Ｓ６０４）。ここで、初期動作は、プログラムをＳＤＲＡＭ４０上で動作させる準備が完了するまでを指す。
【００２６】
フラッシュＲＯＭデバイス３０におけるプログラム立ち上げ動作が完了した後、ＣＰＵ８は、システム実行プログラムをフラッシュＲＯＭデバイス３０からＤＭＡＣ１０に送信するために、ＲＯＭコントローラ１に対してＤＭＡリードの命令を発行する（Ｓ６０５）。プログラムリードの命令を受け取ったＲＯＭコントローラ１は、フラッシュＲＯＭデバイス３０に対してリード命令を発行する（Ｓ６０６）。フラッシュＲＯＭデバイス３０は、ＲＯＭコントローラ１に対してデータを送り（Ｓ６０７）、ＲＯＭコントローラ１は、ＤＭＡＣ１０にデータを転送し終わったことをＣＰＵ８に通知する（Ｓ６０８）。
【００２７】
ＤＭＡＣ１０でプログラムを実行可能になって以降、フラッシュＲＯＭデバイス３０はデータ領域として使用され、データの書き込みが行われる（Ｓ６０９〜Ｓ６３０）。
【００２８】
フラッシュＲＯＭデバイス３０は、フラッシュメモリであり、ライトを行う前に該当するエリアをイレースする必要があり、イレースやライトの動作に関し、ＲＯＭコントローラ１から命令・データを受信後に該当するエリアの消去処理を行う。
【００２９】
そのため、ＲＯＭコントローラ１は、命令を送信した後、フラッシュＲＯＭデバイス３０内のステータスレジスタにアクセスし、デバイスがＢＵＳＹ状態であるかを確認することで、ライトやイレースの終了を検知する。具体的には、デバイスがＢＵＳＹ状態でなくなった場合、ライトやイレースは終了したと検知する。
【００３０】
ここで図７を用いて、従来のウォッチドッグリセットのシーケンスについて説明する。図７は、ウォッチドッグリセット時の各機能ブロックの状態を示す図である。ＣＰＵ８に異常が発生し、操作不能になった場合、リセット制御部９によるウォッチドッグ制御（ＷＤ制御）によってウォッチドッグリセットがかかる。ウォッチドッグリセットは、リセット制御部９が、ＣＰＵ８だけでなく、ＲＯＭコントローラに１に対しても、ＷＤリセット信号を送信し、リセットをかける。これにより、システム全体を初期化する（Ｓ７０１）。Ｓ７０２では、ウォッチドッグリセットが解除されて、ＣＰＵ８とコントローラ１が初期化された状態となる。ウォッチドッグリセットが解除されると、ＣＰＵ８は、パワーオンリセットがかかった場合と同様に、プログラムのフェッチから実行する。すなわち、まず、ＲＯＭコントローラ１に対してフェッチ用のプログラムリードの命令を発行する（Ｓ７０３）。このとき、ＣＰＵ８やＲＯＭコントローラ１は初期化されているが、ウォッチドッグリセットでは、外部のフラッシュＲＯＭデバイス３０にはリセットがかからない。つまり、ウォッチドッグリセット発生時に、フラッシュＲＯＭデバイス３０がライトやイレースを処理していた場合、フラッシュＲＯＭデバイス３０内では動作が継続される。したがって、ウォッチドッグリセットを解除した後もフラッシュＲＯＭデバイス３０内はＢＵＳＹ状態であることがある。このとき、フェッチ用のプログラムリードがＣＰＵ８から発行されてＲＯＭコントローラ１がフラッシュＲＯＭデバイス３０に対してリードを実行しようとしても、フラッシュＲＯＭデバイス３０は、ＢＵＳＹ状態であるため、正常なデータを返すことができない（Ｓ７０４）。そのため、ＣＰＵ８は、システムを正常に起動することができなくなってしまう。これに対し、本実施形態では、ＣＰＵ８に異常が発生すると、リセット制御部９は、ＷＤリセット信号を入力する前にＲＯＭコントローラ１に対してウォッチドッグの予告通知を行う。ＲＯＭコントローラ１はこれを受けて、内部のリセット管理部３にウォッチドッグリセットフラグを保持する。リセット管理部３にウォッチドッグリセットフラグが保存されると、ウォッチドッグリセット時のステータスを特定するための情報として、デバイスの制御履歴の情報をデバイス情報保持部２に保存する。ここで、デバイスの制御履歴の情報とは、ＡＳＩＣに接続されているモジュールで実行中の命令に関する情報である。本実施形態では、フラッシュＲＯＭデバイス３０で実行している命令を特定する情報が、デバイスの制御履歴の情報に相当する。
【００３１】
その後、リセット制御部９は、ＷＤリセット信号をＲＯＭコントローラ１及びＣＰＵ８に入力する。これに応じて、システム全体がウォッチドッグリセットを行う。具体的には、システム全体を初期化する。その後、情報処理装置に初期化動作を行うことで復帰する。
【００３２】
図３は、ウォッチドッグリセット復帰後のＲＯＭコントローラ１の処理フローを示す。
【００３３】
ＲＯＭコントローラ１は、ＣＰＵ８よりアクセスを受信すると（Ｓ３０１）、ＷＤリセットを復帰した際のアクセスであるか判定する（Ｓ３０２）。具体的には、ＲＯＭコントローラシーケンサ４が、リセット管理部３がＷＤリセット信号を受けた履歴としてＷＤリセットフラグを保存しているかに基づいて、ＷＤリセットを復帰した際のアクセスであるか判定する。ＣＰＵ８からリード命令を受信した際にＷＤリセットフラグが立っていた場合、ＷＤリセットを復帰した際のアクセスであると判定し（Ｓ３０２でＹｅｓ）、Ｓ３０３へ進む。リセット管理部３がＷＤリセット信号を保存していない場合（Ｓ３０２でＮｏ）、ＣＰＵ８に対するアクセス応答を実行する。
【００３４】
Ｓ３０３では、ＲＯＭコントローラシーケンサ４がデバイス情報保持部２のＲＯＭ制御履歴を確認する。具体的には、ＲＯＭコントローラシーケンサ４が、デバイス情報保持部２からＲＯＭアクセスに関する履歴情報を取得する。そして、Ｓ３０４において、ＷＤリセットをする際に、フラッシュＲＯＭデバイス３０は、ＢＵＳＹ状態であったか判定する。具体的には、情報保持部２に保存された情報に基づいて、ウォッチドッグリセット時に実行されていた命令がライトまたはイレースなどのビジー状態になるような命令かを特定し、これに基づいて、ＢＵＳＹ状態であったか判定する。
【００３５】
情報保持部に保存されている情報から、ウォッチドッグリセット直前の最後のアクセスがライトまたはイレースであった場合、ＷＤリセット時にＲＯＭはＢＵＳＹ状態であったと判定し（Ｓ３０４でＹｅｓ）、Ｓ３０５へ進む。Ｓ３０５では現時点のフラッシュＲＯＭデバイス３０のステータスを確認する。ＲＯＭコントローラ１からフラッシュＲＯＭデバイス３０内のステータスレジスタを読み取り、フラッシュＲＯＭデバイス３０のステータスに関する情報を取得することにより、ステータスを確認する。一方、ＷＤリセット発生時にライトもイレースの動作も行っていない場合、ＷＤリセット時にＲＯＭはＢＵＳＹ状態ではなかったと判定し（Ｓ３０４でＮｏ）、ＣＰＵ８に対するアクセス応答を実行する。
【００３６】
現時点のフラッシュＲＯＭデバイス３０のステータスがＢＵＳＹ状態であるか判定する（Ｓ３０６）。フラッシュＲＯＭデバイスのステータスレジスタを読み取り、ＢＵＳＹフラグが立っていた場合、ＢＵＳＹ状態であると判定し（Ｓ３０６でＹｅｓ）、Ｓ３０７へ進む。フラッシュＲＯＭデバイスのステータスレジスタを読み取り、ＢＵＳＹフラグが立っていない場合、ＢＵＳＹ状態ではないと判定し（Ｓ３０６でＮｏ）、ＣＰＵ８に対するアクセス応答を実行する。
【００３７】
Ｓ３０７では、ＲＯＭコントローラ１は、フラッシュＲＯＭデバイス３０に対してリセットコマンドを発行して、フラッシュＲＯＭデバイス３０に対してリセット処理を実行する。このように、本実施形態では、ＲＯＭコントローラ１は、リセット処理をＣＰＵ８による制御なしに、リセットコマンドを発行する。そして、Ｓ３０８で、ＲＯＭリセットが終了したか判定する。フラッシュＲＯＭデバイス３０のステータスレジスタを読み取り、ＢＵＳＹフラグが立っていない場合、ＲＯＭリセットが終了したと判定し、ＣＰＵ８に対するアクセス応答を実行する。
【００３８】
次に、図２を用いて、ウォッチドッグリセット時の各機能ブロックの状態と共に、ウォッチドッグリセットのシーケンスについて説明する。図２は、ウォッチドッグリセット時の各機能ブロックの状態を示す図である。
【００３９】
ＣＰＵ８に異常が発生すると、リセット制御部９は、ＲＯＭコントローラ１及びＣＰＵ８に対してＷＤリセット信号を入力する前に、ＲＯＭコントローラ１に対してウォッチドッグの予告通知を行う。ＲＯＭコントローラ１はこれを受けて、内部のリセット管理部３にＷＤリセットフラグを保持する（Ｓ２０１）。
【００４０】
その後、リセット制御部９が、ＣＰＵ８だけでなく、ＲＯＭコントローラに１に対しても、ＷＤリセット信号を送信し、リセットをかける（Ｓ２０２）。これにより、システム全体を初期化する。そして、ＣＰＵ８がＲＯＭコントローラ１にフラッシュＲＯＭデバイス３０へのリード命令（フェッチ命令）を発行する（Ｓ２０３）。ＲＯＭコントローラ１は、フェッチの命令を受けると、ステータスレジスタの読取命令を発行して（Ｓ２０４）、フラッシュＲＯＭデバイスのステータスレジスタを読み取る（Ｓ２０５）。ウォッチドッグリセットが解除した後、ＣＰＵ８とＲＯＭコントローラ１は、リセット解除後の初期状態（ＩＤＬＥ）である。ＲＯＭコントローラ１は、初期状態であることを確認すると、フラッシュＲＯＭデバイス３０にリセット命令を発行し（Ｓ２０６）、リセット動作の完了を読み取る（Ｓ２０７）。リセット動作が完了すると、リード命令を発行できるので、ＲＯＭコントローラ１は、リード命令をフラッシュＲＯＭデバイス３０に発行し（Ｓ２０８）、リードデータをフラッシュＲＯＭデバイス３０から受け取る（Ｓ２０９）。これにより、リードデータをＣＰＵ８は取得することができる（Ｓ２１０）。
【００４１】
このように、ＲＯＭコントローラ１は、フェッチの命令を受けると、リセット管理部３においてウォッチドッグリセットが解除した後であるかどうかを確認する。ウォッチドッグリセットが解除した後、ＣＰＵ８とＲＯＭコントローラ１は、リセット解除後の初期状態（ＩＤＬＥ）であるため、プログラムのフェッチを実行することができる。ウォッチドッグリセットがかかっていない（ウォッチドッグリセットの復帰時のアクセスではない）場合は（図３のＳ３０２でＮｏ）、パワーオンリセット後であると判断される。この場合、フラッシュＲＯＭデバイス３０もＩＤＬＥ状態であることが確定しているため、プログラムのフェッチを実行することができる。
【００４２】
ＲＯＭコントローラ１は、ウォッチドッグリセットの通知を受けた場合、フラッシュＲＯＭデバイス３０で実行している命令を特定する情報を情報保持部２に保持する。そして、ウォッチドッグリセットを解除した後のフェッチ時に、この情報を情報保持部２から取得する（Ｓ３０３）。ウォッチドッグリセット時にフラッシュＲＯＭデバイス３０がビジー状態になるような命令を実行していない場合、ＷＤリセット時には、フラッシュＲＯＭデバイス３０がＢＵＳＹ状態ではないと判定され（Ｓ３０４でＮｏ）、ステータスレジスタの確認は行わずに、プログラムのフェッチを実行することができる。
【００４３】
ＢＵＳＹ動作でリセットがかかった場合（Ｓ３０４でＹｅｓ）、フラッシュＲＯＭデバイス３０のステータスを確認する（Ｓ３０５）。フラッシュＲＯＭデバイス３０内のステータスがＢＵＳＹではないと判定された場合は（Ｓ３０６でＮｏ）、プログラムのフェッチを実行することができる（Ｓ２０５）。一方で、フラッシュＲＯＭデバイス３０のステータスがライトやイレース処理が継続しているビジー状態だった場合は、ＲＯＭコントローラ１は、フラッシュＲＯＭデバイス３０に対してリセットコマンドを発行して、リセット処理を実行する（Ｓ３０７）。これにより、フラッシュＲＯＭデバイス３０をＩＤＬＥ状態にする。これにより、プログラムのフェッチを実行することができる（Ｓ２０６〜２０７）。本実施形態では、ＲＯＭコントローラ１にウォッチドッグでリセットされないデバイス情報保持部２を備えており、システムがリセットされた時にＲＯＭコントローラ１がフラッシュＲＯＭデバイス３０の初期化をＣＰＵ８の命令を受けることなく実行することができる。したがって、システムとフラッシュＲＯＭデバイス３０の初期化を同期することができ、システムの再初期化をエラーなく行うことができる。より具体的には、ウォッチドッグが発生した場合、デバイス制御情報をデバイス情報保持部２に保存しているので、ＲＯＭコントローラ１は、ウォッチドッグリセットの復帰後であることを認識することができる。そして、ウォッチドッグリセット時のフラッシュＲＯＭデバイス３０がＢＵＳＹ状態であるか判定し、ＢＵＳＹ状態であると判定した場合は、現在のフラッシュＲＯＭデバイス３０のステータスを確認する。アイドル状態である場合、すなわち、ＢＵＳＹ状態ではない場合、フラッシュＲＯＭデバイス３０への通常のアクセスを行う。現在のフラッシュＲＯＭデバイス３０がＢＵＳＹ状態である場合、フラッシュＲＯＭデバイス３０に対してリセットコマンドを送信する。これにより、フラッシュＲＯＭデバイス３０のリセットが必要な場合のみ、リセットの処理を実行し、フェッチ時のエラーを回避することができる。また、上述したように、ＣＰＵ８を介在することなく、外部デバイス（本実施形態では、フラッシュＲＯＭデバイス３０）のリセット処理を実行することができるため、初期化の時間を短縮することができるという効果がある。
【００４４】
上述したように、本実施形態では、外部に接続されている接続デバイスであるフラッシュＲＯＭデバイス３０をＣＰＵ８の介在なしにリセットすることができる。具体的には、ウォッチドッグリセット後にＣＰＵ８からフラッシュＲＯＭデバイス３０に対してアクセスが実行されると、ＲＯＭコントローラシーケンサ４がリセット時の制御情報をデバイス情報保持部２から取得する。そして、ＲＯＭコントローラ１がＣＰＵ８のフラッシュＲＯＭデバイス３０へのアクセスに先んじてフラッシュＲＯＭデバイス３０に対してコマンド入力可能な状態にする制御を実行する。なお、コマンド入力可能な状態とは、言い換えれば、外部からの命令を受け付け可能な状態である。
これにより、ウォッチドッグリセット後の接続デバイスへのアクセスのコマンド入力エラーを回避することができる。  （実施形態２）
実施形態１においては、ウォッチドッグリセット後のフェッチ時にフラッシュＲＯＭの初期化を実行するシーケンスを例に挙げて説明した。これに対し、本実施形態では、ウォッチドッグリセットが発生する条件の下、ウォッチドッグリセットがかかる前にＲＯＭデバイスを初期化する。なお、本実施形態では、実施形態１とハードウェア構成は同じであるため、実施形態１と重複する説明は省略する。また、実施形態１と同一のものには同一の符号を付す。
【００４５】
本実施形態では、ＣＰＵ８に異常が発生すると、リセット制御部９は、ＷＤリセット信号を入力する前にＲＯＭコントローラ１に対してウォッチドッグリセットの予告通知を行う。
【００４６】
図５は、ウォッチドッグリセット時のＲＯＭコントローラ１の処理フローを示す。
【００４７】
ＲＯＭコントローラ１は、リセット制御部９よりウォッチドッグリセットの発生通知を受信すると（Ｓ５０１）、フラッシュＲＯＭデバイス３０がＢＵＳＹ状態であるか判定する（Ｓ５０２）。具体的には、ＲＯＭコントローラ１がフラッシュＲＯＭデバイス３０のステータスレジスタを読み取ることで、フラッシュＲＯＭデバイス３０のステータスに関する情報を取得することにより、ステータスを確認し、ＢＵＳＹ状態であるか判定する。ステータスレジスタのＢＵＳＹフラグが立っている場合、ＢＵＳＹ状態であると判定し（Ｓ５０２でＹｅｓ）、ＳＳ５０３へ進む。ステータスレジスタのＢＵＳＹフラグが立っていない場合、ＢＵＳＹ状態ではないと判定し（Ｓ５０２でＮｏ）、処理を終了する。このとき、ＡＳＩＣ２０は、ウォッチドッグリセット可能な状態となる。
【００４８】
Ｓ５０３では、ＲＯＭコントローラ１は、フラッシュＲＯＭデバイス３０に対してリセットコマンドを発行して、フラッシュＲＯＭデバイス３０に対してリセット処理を実行させる。このように、本実施形態では、ＲＯＭコントローラ１は、リセット処理をＣＰＵ８による制御なしに、リセットコマンドを発行する。ここで、リセット処理とは、フラッシュＲＯＭデバイス３０を初期化する処理であり、コマンドの入力が可能な状態にする処理である。
【００４９】
そして、Ｓ５０４で、ＲＯＭリセットが終了したか判定する。フラッシュＲＯＭデバイス３０のステータスレジスタを読み取り、ＢＵＳＹフラグが立っていない場合、ＲＯＭリセットが終了したと判定し、処理を終了する。このとき、ＡＳＩＣ２０は、ウォッチドッグリセット可能な状態となる。
【００５０】
図４を用いて、ウォッチドッグリセット時の各機能ブロックの状態と共に、ウォッチドッグリセットのシーケンスについて説明する。図４は、ウォッチドッグリセット時の各機能モジュールの状態を示す図である。図５は、ウォッチドッグリセット時の処理フローを示す。
【００５１】
ＣＰＵ８に異常が発生すると、リセット制御部９は、ＲＯＭコントローラ１に対し、ウォッチドッグリセットの発生通知をウォッチドッグリセットの発行よりも前に通知する（Ｓ４０１）。
【００５２】
ウォッチドッグの発生通知を受け取ったＲＯＭコントローラ１は、フラッシュＲＯＭデバイス３０に命令している状況を確認する。フラッシュＲＯＭデバイス３０がライトやイレースによりＢＵＳＹ状態であった場合は、ＲＯＭコントローラ１は、ＲＯＭデバイス３０に対しリセットコマンドを発行し（Ｓ４０２）、リセットの終了を検知する（Ｓ４０３）。
【００５３】
リセット制御部９は、フラッシュＲＯＭデバイス３０のリセットがかかるまでの時間を待機した後、ＣＰＵ８を含むシステム全体に対して、ウォッチドッグリセットを発行する（Ｓ４０４）。ＣＰＵ８がＲＯＭコントローラ１にフラッシュＲＯＭデバイス３０へのリード命令（フェッチ命令）を発行すると（Ｓ４０５）、フラッシュＲＯＭデバイス３０は確実にＩＤＬＥ状態になっているため、プログラムのフェッチを行うことができる（Ｓ４０５〜Ｓ４０８）。具体的には、ＲＯＭコントローラ１は、フェッチの命令を受けると、リード命令をフラッシュＲＯＭデバイス３０に発行し（Ｓ４０６）、リードデータをフラッシュＲＯＭデバイス３０から受け取る（Ｓ４０７）。これにより、リードデータをＣＰＵ８は取得することができる（Ｓ４０８）。  本実施形態では、リセット制御部９がウォッチドッグリセットの予告通知を、ＲＯＭコントローラ１に送信し、ＲＯＭコントローラ１が、ウォッチドックリセットの予告通知を受信すると、フラッシュＲＯＭデバイス３０の初期化を行う。これにより、システムの再起動時には、フラッシュＲＯＭデバイス３０が既に初期化されている状況を確保することができる。したがって、システムとフラッシュＲＯＭデバイス３０の初期化を同期することができ、システムの再初期化をエラーなく行うことができる。
【００５４】
なお、ウォッチドッグのリセット信号の発行は、フラッシュＲＯＭデバイス３０のリセットがかかるまでの時間を待機した後としたが、これに限定されるものではない。例えば、リセット制御部９にＲＯＭコントローラ１がフラッシュＲＯＭデバイス３０のリセット完了を通知することをもって、リセット制御部９がウォッチドッグリセットを発行するようにしてもよい。これにより、ウォッチドッグリセットを解除した後、ＣＰＵ８がフェッチでフラッシュＲＯＭデバイス３０よりプログラムリードを実行するとき、フラッシュＲＯＭデバイス３０は確実にＩＤＬＥ状態にすることができる。
【００５５】
このように、本実施形態では、ＷＤリセットの発生通知を受け取った場合、フラッシュＲＯＭデバイス３０のステータスに関する情報に基づいて、ＷＤリセットがかかる前にＲＯＭデバイスを初期化する。
【００５６】
また、本実施形態では、デバイス情報保持部２は、ウォッチドッグリセットによって初期化されない構成としたが、ウォッチドッグリセットによって初期化されるようにしてもよい。
【００５７】
（実施形態３）
本実施形態では、本発明をプリンタに適用した場合について、説明する。
【００５８】
図８は、本実施形携帯にかかるプリンタのハードウェア構成図である。
【００５９】
プリンタは、プリンタコントローラ８００と、印刷ヘッド８０１と、ＲＯＭ８０３と、を有する。また、プリンタは、外部のホストＰＣ８０２と接続可能である。
【００６０】
ＲＯＭ８０３は、プログラムが格納されているフラッシュＲＯＭであり、印刷ヘッド８０１は、印刷データに基づいて、印刷を実行する。
【００６１】
プリンタコントローラ８００は、システム制御部８０４と、ＲＡＭ８０５と、画像処理制御部８０６と、印刷制御部８０７と、を有する。ＲＡＭ８０５は、印刷データ等が格納されるＲＡＭ部である。画像処理制御部８０６は、画像データに基づいて、印刷データを生成し、印刷制御部８０７は、印刷データを印刷ヘッドに送信する。
【００６２】
システム制御部８０４は、ＩＦ制御部８０８と、ＣＰＵ８０９と、ＲＯＭコントローラ８１０とを有する。ＩＦ制御部８０８は、システム制御部８０４内で、ホストＰＣ８０２との通信を行う。ＣＰＵ８０９は、プリンタシステムの全体を制御し、ＲＯＭコントローラ８１０はフラッシュＲＯＭの制御を行う。
【００６３】
本実施形態において、フラッシュＲＯＭ８０３、ＲＯＭコントローラ８１０、ＣＰＵ８０９は、それぞれ、実施形態１のＣＰＵ８、ＲＯＭコントローラ１、フラッシュＲＯＭデバイス３０と同様の動作を行う。これにより、本実施形態では、プリンタ動作中において予期せぬエラーが発生した場合でも、ＲＯＭ８０３の読み出しからの再起動をエラーなく行うことができる。
【００６４】
（他の実施形態）
本発明の構成は、上述したものに限定されるものではない。例えば、フラッシュＲＯＭデバイス３０は、記憶装置に限定されるものではなく、初期状態の同期が必要なその他の外部装置であってもよい。すなわち、外部からの通信で初期状態にすることができる外部装置であればよく、例えば、ＩＣチップであってもよい。外部からの通信で初期状態にする方法としては、外部からのコマンド制御が挙げられるが、これに限定されるものではない。  また、本発明では、ウォッチドッグリセットにより、ＣＰＵ８を含むシステム全体を初期化するものとしたが、これに限定されるものではない。例えば、その他の異常検知手段による初期化手段によるものでもよい。さらに、システム外部から受けるリセット全般でも適応可能である。例えば、温度が一定以上となった場合に、ＣＰＵを停止させるようなリセット、ソフトＯＦＦボタンによるリセット等であってもよい。言い換えれば、ＣＰＵを含むシステムがリセットされるが接続されている外部装置などがリセットされないような構成において、適用可能である。
【００６５】
また、上述した実施形態では、ウォッチドッグリセット発生時にフラッシュＲＯＭデバイス３０に対してリセットコマンドを発行するものとしたが、これに限定されるものではない。すなわち、フラッシュＲＯＭデバイス３０が外部からの命令を受付可能な状態にするコマンドであればよい。例えば、フラッシュＲＯＭデバイス３０内のステートを初期状態にもどすためのサスペンド等のその他のコマンドであってもよい。
【符号の説明】
【００６６】
１  ＲＯＭコントローラ
２  デバイス情報保持部
３  リセット管理部
４  シーケンサ
５  ＣＰＵ  ＩＦ制御部
６  ＤＭＡ  ＩＦ制御部
７  ＲＯＭアクセスＩＦ部
８  ＣＰＵ
９  リセット制御部
１０  ＤＭＡＣ
１１  ＳＤＲＡＭコントローラ
３０  フラッシュＲＯＭデバイス
４０  ＳＤＲＡＭ
【図１】
0006742825.tif 000002
【図２】
0006742825.tif 000003
【図３】
0006742825.tif 000004
【図４】
0006742825.tif 000005
【図５】
0006742825.tif 000006
【図６】
0006742825.tif 000007
【図７】
0006742825.tif 000008
【図８】
0006742825.tif 000009