(57)【要約】【課題】専用の回路を設けることなくプログラムの書き換え後にマイクロプロセッサを再起動させることが可能な方法およびその方法を用いた装置を提供する。【解決手段】所定のクロックをカウントするタイマ手段を次の第１モードと第２モードで制御する。第１モードでは、前記タイマ手段をプログラムにより所定周期毎にリセット（カウントクリア）してプログラムの動作状態を監視し、第２モードでは、前記タイマ手段をプログラムにより所定周期毎にリセットすることなく前記マイクロプロセッサを再起動させることを特徴とする。【選択図】図３
2010186220.tif 000002
【特許請求の範囲】
【請求項１】
マイクロプロセッサと、
前記マイクロプロセッサが実行するプログラムを格納する記憶手段と、
時間を計時するタイマ手段と、
前記タイマ手段を制御する制御手段と、
を備え、
前記制御手段は、
前記タイマ手段を前記プログラムにより所定周期毎にリセットして前記プログラムの動作状態を監視する第１モードと、
前記タイマ手段を前記プログラムにより所定周期毎にリセットすることなく前記マイクロプロセッサを再起動させる第２モードと、
のいずれかのモードで前記タイマ手段を制御することを特徴とするマイクロプロセッサの監視装置。
【請求項２】
前記タイマ手段は、前記記憶手段に格納されたプログラムを書き換える際に前記第２モードで制御されることを特徴とする請求項１に記載のマイクロプロセッサの監視装置。
【請求項３】
前記プログラムを書き換える際に前記制御手段は、前記第１モードで作動する前記タイマ手段を停止した後、前記第２モードで前記タイマ手段を所定のタイミングで作動することを特徴とする請求項２に記載のマイクロプロセッサの監視装置。
【請求項４】
前記制御手段は上位装置から新プログラムを取得した後、前記第２モードで前記タイマ手段を作動開始することを特徴とする請求項１に記載のマイクロプロセッサの監視装置。
【請求項５】
所定周波数のクロックをカウントするタイマ手段によってプログラムを実行するマイクロプロセッサの動作状態を監視する方法であって、
前記タイマ手段を前記プログラムにより所定周期毎にリセットして前記プログラムの動作状態を監視する第１モードと、
前記タイマ手段を前記プログラムにより所定周期毎にリセットすることなく前記マイクロプロセッサを再起動させる第２モードと、
を選択して実行することを特徴とするマイクロプロセッサの監視方法。
【請求項６】
記憶手段に格納されたプログラムを書き換える際には、前記タイマ手段を前記第２モードで作動することを特徴とする請求項５に記載のマイクロプロセッサの監視方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はＣＰＵ（中央処理装置）の動作状態を監視すると同時にＣＰＵをリセット動作するマイクロプロセッサの監視装置に関する。
【背景技術】
【０００２】
マイクロプロセッサを有する装置では、ハードウェアの故障等によりプログラムが暴走することがあり、このようなプログラムの暴走を検出するためにウォッチドッグタイマと呼ばれるハードウェアのタイマ回路が設けられている（例えば特許文献１参照）。このウォッチドッグタイマ（以下、ＷＤＴという）には、被監視プログラムから一定周期ごとにリセット信号が入力されるようになっており、被監視プログラムが暴走してリセット信号が入力されなくなると、ＷＤＴは、マイクロプロセッサを再起動させるようになっている。
【０００３】
また、装置機能のバージョンアップやバグの修正等の理由により、マイクロプロセッサが実行するプログラム（ファームウェア）を書き換える場合、新しいプログラムを実行するために、書き換え後マイクロプロセッサを再起動させてメインプログラムを先頭ラインから実行させる必要がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１０−２６９１０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来は、再起動用の専用回路を設けて再起動をしていたため、回路が大型化していた。そこで、本願発明は、専用の回路を設けることなくプログラムの書き換え後にマイクロプロセッサを再起動させることが可能な方法およびその方法を用いた装置を提供することを目的としている。
【課題を解決するための手段】
【０００６】
上記課題を達成するため本発明は、所定のクロックをカウントするタイマ手段を次の第１モードと第２モードで制御する。第１モードでは、前記タイマ手段をプログラムにより所定周期毎にリセット（カウントクリア）してプログラムの動作状態を監視し、第２モードでは、前記タイマ手段をプログラムにより所定周期毎にリセットすることなく前記マイクロプロセッサを再起動させることを特徴とする。その構成を具体的に説明すると、マイクロプロセッサと、前記マイクロプロセッサが実行するプログラムを格納する記憶手段と、時間を計時するタイマ手段と、前記タイマ手段を制御する制御手段とを備える。そして前記制御手段は、前記タイマ手段を前記プログラムにより所定周期毎にリセットして前記プログラムの動作状態を監視する第１モードと、前記タイマ手段を前記プログラムにより所定周期毎にリセットすることなく前記マイクロプロセッサを再起動させる第２モードを備える。
【発明の効果】
【０００７】
本発明は、マイクロプロセッサの動作状態の監視と再起動動作を単一のタイマ手段で構成することが出来、以って回路構成の小型化と簡素化を可能とすることができる。つまり従来マイクロプロセッサの監視装置としてのみ使用されていたタイマ手段を、マイクロプロセッサの再起動を行なわせるように構成することで、再起動専用の回路を設ける必要がなくなる。
【図面の簡単な説明】
【０００８】
【図１】本発明に係わる画像読取システムの構成説明図。
【図２】図１の装置に於ける画像読取装置の構成図。
【図３】図１の装置に於けるハード構成ブロック図。
【図４】本発明に係わるＲＯＭ内のプログラム構成概略図。
【図５】プログラム監視動作概略図であり、（ａ）は第１モード（プログラム監視モード）を示し、（ｂ）は第２モード（プログラム非監視モード）を示す。
【図６】プログラム書換フロー。
【図７】図６のプログラム状態の説明図。
【図８】図６と異なるプログラム書換フロー。
【発明を実施するための形態】
【０００９】
本願発明を画像読取システムを例に説明する。図１に示すように、画像読取システムは、原稿画像を読み取る画像読取装置のスキャナ１０と、このスキャナ１０の上位装置で、スキャナに対して種々のコマンドを送信するパーソナルコンピュータ（以下、ＰＣという）２０とを有している。ＰＣ２０とスキャナ１０は例えばＵＳＢ、ＳＣＳＩ、Ethernet、ＰＣＩｅ、などのインタフェースを介して接続され、ＰＣにはスキャナ用ユーザインタフェースのアプリケーションプログラム、スキャナを動作させるためのドライバプログラムが内蔵されている。
【００１０】
また、ＰＣ２０はネットワークに接続され、スキャナ１０のプログラムを書き換える際には、ネットワークを介してＰＣ２０は新プログラムを取得し、さらにその新プログラムがスキャナ１０へ送信されるように構成されている。なお、スキャナ１０は、プリンタ、ファクシミリなどの各種機能を備えた複合機でも構わず、後述するウォッチドッグタイマ回路を備えたものであれば構わない。
【００１１】
さらに本実施例では、スキャナ１０の上位装置として、すなわちスキャナ１０に対しコマンドを発信する装置としてスキャナとは別体のＰＣ２０を例に説明を行ったが、スキャナ内部にＰＣ２０と同様の機能を有するコマンド送信部（アプリケーションおよびドライバ）を設けて、スキャナ内部でコマンドや画像データのやり取りをするようにしても構わない。この場合は、スキャナ自身がディスプレイなどの表示部を備え、この表示部の設定画面上でユーザーが各種読み取り条件を設定できるようにすればよい。
【００１２】
［スキャナの構成］
図２に示すように、スキャナ１０はケーシング５の上面に支持され原稿を載置するためのプラテン１５と、このプラテン１５上の原稿の読み取りを行う画像読取ユニット１７を備えている。この画像読取ユニット１７はプラテン１５に沿って移動しながらプラテン上の原稿の画像を読み取るよう、モータＭｃに連結された走行ベルト１８がキャリッジ１９に連結されている。光源２１からプラテン１５上の原稿に光を照射し、原稿からの反射光を、ミラー２２を介して集光レンズ２３に導き、この集光レンズ２３で読取センサ（ＣＣＤ）２４上に結像して光電変換することで原稿画像の読取が行われる。
【００１３】
図３に示すように、ＰＣ２０とスキャナ１０はポート１を介して接続されており、ＰＣ２０はネットワークに接続されている。スキャナ１０は、各種演算処理を行うマイクロプロセッサのＣＰＵ３０、ＣＰＵ３０が実行するプログラムが格納されている記憶手段のＲＯＭ３１のフラッシュメモリ、各種処理中にデータなどを一時的に記憶するメモリのＲＡＭ３２、クロックを発信するクロック発信器３３、プログラムの監視を行うためのウォッチドッグタイマ回路（以下、ＷＤＴ回路という）３５を備え、さらに、ポート２を介して光源２１、モータＭｃ、ＣＣＤ２４が接続されている。
【００１４】
図４に示すように、ＲＯＭ３１には、イニシャルプログラムＰｎと書換プログラムＰｋを有するブートプログラムＰｂ、メインプログラムＰｍとが記憶されている。イニシャルプログラムＰｎは、装置の電源投入時にＲＡＭ３２をクリアしたり、各種ハードウェアを初期化したり等のイニシャル処理を実行するためのプログラムであり、ブートプログラムはＰｂ、ブートプログラム自身またはメインプログラムＰｍを書き換える際に実行されるプログラムである。またメインプログラムＰｍは、イニシャル処理以降にスキャナ１０が各種処理を実行するためのプログラムである。なお、説明のしやすさから図４では書換プログラムＰｋとイニシャルプログラムＰｎは別体のプログラムとして示したが、両プログラムは連続した一体のプログラムで構成されている。
【００１５】
また、ＷＤＴ回路３５は、カウントアップするカウンタ（ＣＮＴ）３６、カウンタ３６の各種設定を行うためのカウンタレジスタ３７、カウンタレジスタ３７の設定に応じた周波数のクロックをカウンタ３６へ入力するクロック選択部３８、カウンタ３６のカウント数が予め定められた所定値に達した時（オーバーフローしたとき）にＣＰＵ３０を含む制御系をリセットするためのリセット信号を発生するリセットコントロール３９とを備えている。カウンタレジスタ３７は、カウンタ３６のカウント動作の開始／停止を選択・設定するためのＯＮ／ＯＦＦ設定領域（１の場合はカウント動作を開始し、０の場合はカウント動作を停止してカウント値は０へ初期化される）Ａｒ１、カウンタ３６へ入力するクロックの周波数を選択・設定するための周波数設定領域Ａｒ２とを有し、クロック選択部３８は、周波数設定領域Ａｒ２の設定内容に従って所定周波数のクロックを選択・入力する。カウンタ３６は、予め定められた所定クロック数をカウントしたらオーバーフローする。
【００１６】
従って、クロック選択部３８から出力されるクロックの周波数によってオーバーフローまでの時間（オーバーフロー時間Ｔ）は変更可能であり、周波数が大きければ大きいほどオーバーフロー時間Ｔは短くなる。
【００１７】
［ＷＤＴ回路によるプログラムの監視］
ＷＤＴ回路３５によるプログラムの監視は以下のようにして行われる。
図５（ａ）（第１モード）に示すように、ＷＤＴ回路３５によって監視されるプログラム（被監視プログラム）は、所定周期毎にカウンタ（ＣＮＴ）３６のカウント値をリセットするように構成され、上述のオーバーフロー時間Ｔはこのプログラムによるカウンタ値のリセット周期よりもわずかに長い時間に設定される。よって、被監視プログラムが暴走してオーバーフロー時間Ｔ内にカウンタ値がリセットされないと、カウンタ３６がオーバーフローする。これを受けてリセットコントロール３９から制御リセット信号が出力されてＣＰＵ３０がリセットされる。
【００１８】
本実施例では、図５（ａ）に示すように、ＷＤＴ回路３５によって監視されるようメインプログラムＰｍは所定周期毎にカウンタ３６をリセットするように構成されている。従って、装置の電源投入後イニシャルプログラムＰｎに従ってイニシャル処理が実行された後、メインプログラムＰｍが実行されるが、メインプログラムＰｍが実行されている間は、ＷＤＴ回路３５は上述したプログラムの監視を行う第１モードで動作している。
【００１９】
プログラム書き換え時に実行されるＷＤＴ回路３５の第２モードの説明を図６のフローチャートを用いて説明する。なお、本実施例では、ブートプログラムＰｂとメインプログラムＰｍの両プログラムを書き換えるものを例に説明を行う。ユーザーまたはサービスマンがＰＣ２０の所定画面からプログラムの書き換えを選択すると、ＰＣ２０はスキャナ１０に対して書換コマンドを送信し、スキャナ１０はこの書換コマンドを受信する（ＳＴ００１）。書換コマンドを受けたＣＰＵ３０は、実行するプログラムをメインプログラムＰｍからＲＯＭ３１上の書換プログラムに移行して以下の処理を行う。
【００２０】
カウンタレジスタ３７のＯＮ／ＯＦＦ設定領域Ａｒ１を０に設定してＷＤＴ回路３５のカウンタ３６のカウント動作を停止させる（ＳＴ００２）。これによりＷＤＴ回路３５はいずれのプログラムも監視していない状態となる。そしてＳＴ００３では書換プログラムをＲＡＭ３２へコピーする（なお、これ以降、書き換えられる前の書換プログラム、メインプログラムをそれぞれ旧書換プログラムＰｋＯ、旧メインプログラムＰｍＯといい、新しい書換プログラム、メインプログラムをそれぞれ新書換プログラムＰｋＯ、新メインプログラムＰｍＮという）。
【００２１】
ステップＳＴ００４では、新メインプログラムＰｍＮと新ブートプログラムＰｂＮをＰＣ２０から取得して書込む。具体的には、ＲＯＭ３１に記憶されている旧メインプログラムＰｍＯを消去した後、ＰＣ２０から送信されてきた新メインプログラムＰｍＮ、および新ブートプログラムＰｂＮを受信する。そして新メインプログラムＰｍＮは旧メインプログラムＰｍＯが記憶されていた領域に書込まれ、新ブートプログラムＰｂＮは旧ブートプログラムＰｂＯが記憶されていた領域とは別の領域に書き込まれる。このときの状態を図７に示してある。
【００２２】
次にカウンタレジスタ３７のＯＮ／ＯＦＦ設定領域Ａｒ１を１に設定してカウンタ３６のカウント動作を再開させる（ＳＴ００５）。なおこのとき、上述のとおり、カウンタ３６に入力されるクロックの周波数はオーバーフロー時間Ｔを決定するため、後述の旧ブートプログラムの消去・新ブートプログラムの移動がなされるに十分な時間となるよう、クロックの周波数を選択・設定する。
【００２３】
ＳＴ００６はＲＡＭ３２上の旧書換プログラムＰｋＯで実行され、ＲＯＭ３１上の旧ブートプログラムＰｂＯを消去すると共に、この旧ブートプログラムＰｂＯが記憶されていた領域にＳＴ００４で取得した新ブートプログラムＰｂＮを書込む。なお、ＳＴ００５でＷＤＴ回路３５のカウンタ３６のカウント動作は再開されたが、プログラムの監視を行わない第２モードで動作している。
【００２４】
すなわち、ＳＴ００６が実行されるＲＡＭ３２上の旧書換プログラムＰｋＯは図５（ｂ）に示すように、所定周期毎にカウンタ値をリセットするように構成されていないのでＷＤＴ回路３５による監視を受けていない。従って、カウンタ３６は旧書換プログラムＰｋＯからリセットされないためオーバーフローし、リセットコントロール３９から制御リセット信号が出力され、ＣＰＵ３０がリセットされる。すなわち、新イニシャルプログラムＰｎＮの実後、新メインプログラムＰｍＮを実行する。
【００２５】
このように、ＲＡＭ３２上の旧書換プログラムＰｋＯを、カウンタ３６のカウンタ値を定期的にリセットしないように構成して意図的にカウンタ３６をオーバーフローさせてプログラムの書換後に自動的にＣＰＵ３０をリセットさせるようにした。すなわち、ＷＤＴ回路３５をＣＰＵ３０をリセットするための回路として使用すること（第２モードで使用すること）で、専用の回路を用いることなくＣＰＵ３０をリセットすることが可能となったものである。
【００２６】
なお、本実施例では、カウンタ３６の再開をＳＴ００４とＳＴ００６との間のタイミングとしたが、ＳＴ００６の処理終了後にカウンタ３６がオーバーフローするようなタイミングであれば、いつでも構わない。
【００２７】
なお、本実施例では、書換コマンドを受信した後、ＳＴ００２でＷＤＴ回路３５のカウンタ３６のカウント動作を一時停止させている。ＲＯＭ３１上の旧書換プログラムＰｋＯもメインプログラムと同様に所定周期でカウンタ３６をリセットするように構成しＳｔ００３、ＳＴ００４の処理中もＷＤＴ回路３５によって監視されるようにしたとしても、ＳＴ００４でＰＣ２０からの新プログラムの取得に時間が掛かってオーバーフローによるＣＰＵ３０のリセットが起きてしまい新プログラムの取得ができないといった問題が発生するので、このような問題を回避するための一時停止である。
【００２８】
このような問題を回避して実施例１と同様にＷＤＴ回路３５を使用してプログラム書換後にＣＰＵ３０のリセットを自動で行う第２実施例を図８を使用して説明する。
【００２９】
［実施例２］
実施例１ではカウンタ３６のカウント動作を停止したが、実施例２では、カウント動作を維持したままプログラムの書換処理を行う。以下、実施例１と異なる箇所のみ説明を行う。
【００３０】
ＳＴ００１で書換コマンド受信後、ＳＴ００２´でカウンタ３６のオーバーフロー時間Ｔを変更する。ＳＴ００４の処理を分割するなどして所定周期でカウンタ３６をリセットするようにＲＯＭ３１上の旧書換プログラムを予め構成しておき、カウンタ３６のリセット周期に合わせてＳＴ００２´でオーバーフロー時間Ｔを変更する。これによってＳＴ００３，ＳＴ００４の処理中にオーバーフローが起きずに新プログラムの取得が可能となる。
【００３１】
次に、ＳＴ００５´で再びカウンタ３６のオーバーフロー時間Ｔを変更する。実施例１と同様、ＳＴ００６が実行されるＲＡＭ３２上の旧書換プログラムＰｋＯは図５（ｂ）に示すように、所定周期毎にカウンタ値をリセットするように構成されていないのでカウンタ３６が動作していてもＷＤＴ回路３５による監視を受けていない。従って、ＳＴ００５´では、ＳＴ００６の処理終了後にオーバーフローするようカウンタ３６のオーバーフロー時間Ｔを設定すればよい。
【００３２】
このように、実施例２ではＳＴ００５´以降はＷＤＴ回路３５は第２モードで動作している。以上のとおり、実施例２においてもＷＤＴ回路３５をＣＰＵ３０をリセットするための回路として使用すること（第２モードで使用すること）で、専用の回路を用いることなくＣＰＵ３０をリセットすることが可能となったものである。
【符号の説明】
【００３３】
１０        スキャナ
１５        プラテン
１７        画像読取ユニット
１９        キャリッジ
２０        ＰＣ（パーソナルコンピュータ）
２１        光源
２４        読取センサ（ＣＣＤ）
３０        ＣＰＵ（マイクロプロセッサ）
３１        ＲＯＭ
３２        ＲＡＭ
３３        クロック発信器
３５        ウォッチドッグタイマ回路（ＷＤＴ回路）
３６        カウンタ
３７        カウンタレジスタ
３８        クロック選択部
３９        リセットコントロール
Ｐｎ        イニシャルプログラム
Ｐｋ        書換プログラム
Ｐｂ        ブートプログラム
Ｐｍ        メインプログラム
Ａｒ１      ＯＮ／ＯＦＦ設定領域
Ａｒ２      周波数設定領域
【図１】
2010186220.tif 000003
【図２】
2010186220.tif 000004
【図３】
2010186220.tif 000005
【図４】
2010186220.tif 000006
【図５】
2010186220.tif 000007
【図６】
2010186220.tif 000008
【図７】
2010186220.tif 000009
【図８】
2010186220.tif 000010