(57)【要約】【課題】プログラムが暴走した場合であっても暴走を自動的に検知して当該プログラムを容易に書き換える。【解決手段】第１記憶部と、クリア信号の入力の都度時間計測を開始し直し、所定の検出時間が経過すると異常の発生を示す情報を第１記憶部に記憶し且つリセット信号を出力するウォッチドッグタイマと、所定タイミングでクリア信号を入力するメインプログラムとメインプログラムを書き換える書き換えプログラムとプログラムの実行を制御するブートプログラムとを記憶する第２記憶部と、制御部とを備え、ブートプログラムは、制御装置の起動時及びリセット信号が出力されたときに制御部によって実行され、第１記憶部に異常の発生を示す情報が記憶されていない場合、ウォッチドッグタイマにクリア信号を入力後、メインプログラムを実行し、異常の発生を示す情報が記憶されている場合、書き換えプログラムを実行する。【選択図】図４
2013029939.tif 000002
【特許請求の範囲】
【請求項１】
第１記憶部と、
クリア信号が入力される度に時間の計測を開始し直し、当該計測を開始し直した時間から予め定められた検出時間が経過すると、異常の発生を示す情報を前記第１記憶部に記憶し、且つ、リセット信号を出力するウォッチドッグタイマと、
予め定められたタイミングで前記ウォッチドッグタイマに前記クリア信号を入力する処理が実装されたメインプログラムと、前記メインプログラムを書き換える処理が実装された書き換えプログラムと、前記メインプログラム及び前記書き換えプログラムの実行を制御する処理が実装されたブートプログラムと、を記憶する第２記憶部と、
前記第２記憶部に記憶された各種プログラムを実行する制御部と、
を備え、
前記ブートプログラムは、当該制御装置の起動時、及び、前記ウォッチドッグタイマによって前記リセット信号が出力されたときに、前記制御部によって実行され、前記第１記憶部に前記異常の発生を示す情報が記憶されていない場合は、前記ウォッチドッグタイマに前記クリア信号を入力した後に前記メインプログラムを実行し、一方、前記第１記憶部に前記異常の発生を示す情報が記憶されている場合は、前記書き換えプログラムを実行するように実装されている制御装置。
【請求項２】
前記ブートプログラムは、前記制御部によって実行されると、先ず、当該ブートプログラムが前記第２記憶部に正常に記憶されているか否かを判断し、正常に記憶されていないと判断した場合には、当該ブートプログラムを終了するように実装されている請求項１に記載の制御装置。
【請求項３】
前記第２記憶部には、前記ブートプログラムを構成しているバイナリデータを用いて予め定められた算出方法で算出されたチェックサムであるブートプログラムチェックサムが予め記憶されており、
前記ブートプログラムは、前記第２記憶部に記憶されている前記ブートプログラムを構成しているバイナリデータを用いて、前記予め定められた方法でチェックサムを算出し、当該算出したチェックサムと前記第２記憶部に予め記憶されている前記ブートプログラムチェックサムとが一致するか否かによって、当該ブートプログラムが前記第２記憶部に正常に記憶されているか否かを判断するように実装されている請求項２に記載の制御装置。
【請求項４】
前記ブートプログラムは、前記メインプログラムの実行前に、前記メインプログラムが前記第２記憶部に正常に記憶されているか否かを判断し、正常に記憶されていないと判断した場合には、前記書き換えプログラムを実行するように実装されている請求項１から３の何れか一項に記載の制御装置。
【請求項５】
前記第２記憶部には、前記メインプログラムを構成しているバイナリデータを用いて予め定められたチェックサム算出方法で算出されたチェックサムであるメインプログラムチェックサムが予め記憶されており、
前記ブートプログラムは、前記第２記憶部に記憶されている前記メインプログラムを構成しているバイナリデータを用いて、前記予め定められたチェックサム算出方法でチェックサムを算出し、当該算出したチェックサムと前記第２記憶部に予め記憶されている前記メインプログラムチェックサムとが一致するか否かによって、前記メインプログラムが前記第２記憶部に正常に記憶されているか否かを判断するように実装されている請求項４に記載の制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置に関し、特に、当該制御装置において暴走するプログラムを書き換える技術に関する。
【背景技術】
【０００２】
従来から、フラッシュメモリ等の記憶部にプログラムが正常に記憶されているか否かを判断する方法として、例えば、プログラムを構成しているバイナリデータを１バイト毎のブロックに分割し、当該分割されたブロックの論理和を算出する等、予め定められた算出方法でチェックサムを算出し、当該チェックサムとプログラムとを記憶部に記憶することが知られている。そして、記憶部に記憶されているプログラムを読み出した場合に、上記と同じ算出方法でチェックサムを算出し、当該算出したチェックサムが記憶部に記憶されているチェックサムと一致するか否かによって、記憶部にプログラムが正常に記憶されているか否かを判断することが知られている。
【０００３】
更に、上記方法において、チェックサムが偶然一致することによって、誤ってプログラムが正常に記憶されていると判断されることを防止するために、例えば下記特許文献１には、プログラムの末尾に予め定められたロード完了マーク（特定の文字列）を含ませておき、プログラムの記憶時には当該ロード完了マークをフラッシュメモリに記憶する技術が記載されている。そして、フラッシュメモリにロード完了マークが記憶され、且つ、上記のようにチェックサムが一致することを判断することによって、プログラムが正常に記憶されているものと判断する技術が記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１１−０１５６７２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記の従来技術では、プログラムが正常に記憶されているか否かを判断することはできても、正常に記憶されていると判断されたプログラムを実行した場合に、当該プログラムが暴走することなく動作することを保障することはできない。このため、プログラムが暴走した場合には、当該暴走したことをユーザが検知して、電源を切る等して、当該プログラムの暴走を強制的に停止した後、専用冶具等を用いて記憶部に記憶されているプログラムを書き換える等の手間が必要であった。
【０００６】
本発明は、このような事情に鑑みてなされたものであり、記憶部に記憶されているプログラムが暴走した場合であっても、当該暴走を自動的に検知して当該プログラムを容易に書き換えることができる制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明に係る制御装置は、第１記憶部と、クリア信号が入力される度に時間の計測を開始し直し、当該計測を開始し直した時間から予め定められた検出時間が経過すると、異常の発生を示す情報を前記第１記憶部に記憶し、且つ、リセット信号を出力するウォッチドッグタイマと、予め定められたタイミングで前記ウォッチドッグタイマに前記クリア信号を入力する処理が実装されたメインプログラムと、前記メインプログラムを書き換える処理が実装された書き換えプログラムと、前記メインプログラム及び前記書き換えプログラムの実行を制御する処理が実装されたブートプログラムと、を記憶する第２記憶部と、前記第２記憶部に記憶された各種プログラムを実行する制御部と、を備え、前記ブートプログラムは、当該制御装置の起動時、及び、前記ウォッチドッグタイマによって前記リセット信号が出力されたときに、前記制御部によって実行され、前記第１記憶部に前記異常の発生を示す情報が記憶されていない場合は、前記ウォッチドッグタイマに前記クリア信号を入力した後に前記メインプログラムを実行し、一方、前記第１記憶部に前記異常の発生を示す情報が記憶されている場合は、前記書き換えプログラムを実行するように実装されている。
【０００８】
この構成によれば、制御部は、制御装置の起動時にブートプログラムを実行することによって、第１記憶部に異常の発生を示す情報が記憶されているか否かを確認し、第１記憶部に異常の発生を示す情報が記憶されていない場合は、ウォッチドッグタイマにクリア信号を入力した後にメインプログラムを実行する。
【０００９】
ここで、何らかの異常が発生して当該メインプログラムが暴走すると、メインプログラムからウォッチドッグタイマにクリア信号が入力されなくなる。そして、ウォッチドッグタイマは、当該メインプログラムの実行前にブートプログラムによってクリア信号が入力された時点から、予め定められた検出時間が経過すると、異常の発生を示す情報を第１記憶部に記憶し、且つ、リセット信号を出力する。
【００１０】
そして、制御部は、当該リセット信号が出力されたときに、ブートプログラムを実行することによって、第１記憶部に異常の発生を示す情報が記憶されているか否かを確認し、この場合、第１記憶部に異常の発生を示す情報が記憶されているため、書き換えプログラムを実行する。これによって、当該暴走したメインプログラムが書き換えられる。
【００１１】
つまり、この構成によれば、制御部がブートプログラムを実行することによって、第２記憶部に記憶されていたメインプログラムが暴走した場合であっても、ユーザに手間を取らせることなく、第１記憶部に記憶された異常の発生を示す情報を用いて当該メインプログラムの暴走を自動的に検知することができる。
【００１２】
そして、当該メインプログラムの暴走を検知した場合に、制御部が書き換えプログラムを実行することによって、専用冶具等を用いてユーザが当該メインプログラムを書き換える等の手間をかけることなく、容易に当該メインプログラムを書き換えることができる。
【００１３】
また、前記ブートプログラムは、前記制御部によって実行されると、先ず、当該ブートプログラムが前記第２記憶部に正常に記憶されているか否かを判断し、正常に記憶されていないと判断した場合には、当該ブートプログラムを終了するように実装されていることが好ましい。
【００１４】
この構成によれば、正常に記憶されていないブートプログラムが実行されることによって、当該ブートプログラムが暴走する虞を事前に回避することができる。
【００１５】
また、前記第２記憶部には、前記ブートプログラムを構成しているバイナリデータを用いて予め定められた算出方法で算出されたチェックサムであるブートプログラムチェックサムが予め記憶されており、前記ブートプログラムは、前記第２記憶部に記憶されている前記ブートプログラムを構成しているバイナリデータを用いて、前記予め定められた方法でチェックサムを算出し、当該算出したチェックサムと前記第２記憶部に予め記憶されている前記ブートプログラムチェックサムとが一致するか否かによって、当該ブートプログラムが前記第２記憶部に正常に記憶されているか否かを判断するように実装されていることが好ましい。
【００１６】
この構成によれば、第２記憶部に記憶されているブートプログラムチェックサムを用いて、第２記憶部に記憶されているブートプログラムが、予め記憶されていた状態から書き換えられているか否かを判断することができる。これによって、ブートプログラムが第２記憶部に正常に記憶されているか否かを適切に判断することができる。
【００１７】
また、前記ブートプログラムは、前記メインプログラムの実行前に、前記メインプログラムが前記第２記憶部に正常に記憶されているか否かを判断し、正常に記憶されていないと判断した場合には、前記書き換えプログラムを実行するように実装されていることが好ましい。
【００１８】
この構成によれば、正常に記憶されていないメインプログラムが実行されることによって、当該メインプログラムが暴走する虞を事前に回避することができる。
【００１９】
また、前記第２記憶部には、前記メインプログラムを構成しているバイナリデータを用いて予め定められたチェックサム算出方法で算出されたチェックサムであるメインプログラムチェックサムが予め記憶されており、前記ブートプログラムは、前記第２記憶部に記憶されている前記メインプログラムを構成しているバイナリデータを用いて、前記予め定められたチェックサム算出方法でチェックサムを算出し、当該算出したチェックサムと前記第２記憶部に予め記憶されている前記メインプログラムチェックサムとが一致するか否かによって、前記メインプログラムが前記第２記憶部に正常に記憶されているか否かを判断するように実装されていることが好ましい。
【００２０】
この構成によれば、第２記憶部に記憶されているメインプログラムチェックサムを用いて、第２記憶部に記憶されているメインプログラムが、予め記憶されていた状態から書き換えられているか否かを判断することができる。これによって、メインプログラムが第２記憶部に正常に記憶されているか否かを適切に判断することができる。
【発明の効果】
【００２１】
本発明によれば、記憶部に記憶されているプログラムが暴走した場合であっても、当該暴走を自動的に検知して当該プログラムを容易に書き換えることができる制御装置を提供することが可能になる。
【図面の簡単な説明】
【００２２】
【図１】本発明に係る制御装置を備えた複合機の構成の一例を示す構成図。
【図２】複合機の電気的構成の一例を示すブロック図。
【図３】本発明に係る第２記憶部の一例としてのフラッシュメモリに記憶されているデータの一例を示す説明図。
【図４】ブートプログラムが実行されることによるメインプログラム及び書き換えプログラムの実行制御の一例を示すフローチャート。
【発明を実施するための形態】
【００２３】
以下、本発明に係る制御装置を備えた、例えば、コピー、プリンタ、スキャナ及びファクシミリの機能を有する複合機を図面に基づいて説明する。
【００２４】
図１に示すように、複合機１は、本体部１００、本体部１００の上に配置された原稿読取部２００、原稿読取部２００の上に配置された原稿給送部３００、本体部１００の上部前面に配置された操作部４００、及び本体部１００の用紙搬出側（図中の左側）に配置された用紙後処理部５００を備えている。
【００２５】
原稿給送部３００は、原稿載置部３０１、給紙ローラ３０３、原稿搬送部３０５及び原稿排出部３０７を備えている。
【００２６】
給紙ローラ３０３は、原稿載置部３０１にセットされた原稿を１枚ずつ繰り出す。原稿搬送部３０５は、繰り出された原稿を原稿読取部２００に搬送する。原稿は、原稿読取部２００で読み取られて原稿排出部３０７に排出される。
【００２７】
原稿読取部２００は、ＣＣＤ（Charge Coupled Device）センサ及び露光ランプ等を搭載したキャリッジ２０１、ガラス等の透明部材により構成された原稿台２０３、及び原稿読取スリット２０５を備えている。
【００２８】
原稿台２０３に載置された原稿を読み取る場合、キャリッジ２０１を原稿台２０３の長手方向に移動させながらＣＣＤセンサにより原稿を読み取る。これに対して、原稿給送部３００から給送された原稿を読み取る場合、キャリッジ２０１を原稿読取スリット２０５と対向する位置に移動させて、原稿給送部３００から送られてきた原稿を、原稿読取スリット２０５を通してＣＣＤセンサにより読み取る。ＣＣＤセンサは読み取った原稿を画像データとして出力する。
【００２９】
本体部１００は、用紙貯留部１０１、画像形成部１０３及び定着部１０５を備えている。
【００３０】
用紙貯留部１０１は、本体部１００の最下部に配置され、用紙の束を貯留する用紙トレイ１０７を備えている。用紙トレイ１０７に貯留された用紙の束において、最上位の用紙がピックアップローラ１０９の駆動により、用紙搬送部１１１へ向けて繰り出される。用紙は、用紙搬送部１１１を通って、画像形成部１０３へ搬送される。
【００３１】
画像形成部１０３は、搬送されてきた用紙にトナー画像を形成する。画像形成部１０３は、感光体ドラム１１３、露光部１１５、現像部１１７及び転写部１１９を備えている。
【００３２】
露光部１１５は、画像データ（原稿読取部２００から出力された画像データ、パソコンから送信された画像データ、ファクシミリ受信の画像データ等）に対応する光を生成し、一様に帯電された感光体ドラム１１３の周面に照射する。これにより、感光体ドラム１１３の周面には画像データに対応する静電潜像が形成される。
【００３３】
この状態で感光体ドラム１１３の周面に現像部１１７からトナーを供給することにより、感光体ドラム１１３の周面には、画像データに対応するトナー画像が形成される。このトナー画像は、転写部１１９によって上記の用紙貯留部１０１から搬送されてきた用紙に転写される。
【００３４】
トナー画像が転写された用紙は、定着部１０５に送られる。定着部１０５において、トナー画像と用紙に熱と圧力が加えられて、トナー画像を用紙に定着させる。これにより、用紙への画像の印刷が完了する。この印刷済用紙に対して後処理がされる場合、印刷済用紙は本体部１００の用紙排出口１２１から用紙後処理部５００へ送られる。これに対して後処理がされない場合、印刷済用紙は排紙トレイ１２３に排紙される。
【００３５】
用紙後処理部５００では、印刷済用紙に対して、ソート、ステープル、パンチ、中綴じ等の後処理がされる。用紙後処理部５００は、用紙搬入口５０１、用紙搬送部５０３、用紙搬出口５０５及びスタックトレイ５０７等を備える。用紙搬送部５０３は用紙排出口１２１から用紙搬入口５０１に搬入された印刷済用紙を順次搬送し、後処理がされた印刷済用紙を用紙搬出口５０５からスタックトレイ５０７へ搬出する。スタックトレイ５０７は用紙搬出口５０５から搬出された上記用紙の集積枚数に応じて矢印方向に上下動可能な構成を有する。
【００３６】
操作部４００は、操作キー部４０１と表示部４０３を備える。表示部４０３はタッチパネル機能を有しており、ソフトキーを含む画面が表示される。ユーザは画面を見ながらソフトキーを操作することによって、コピー等の機能の実行に必要な設定等をする。
【００３７】
操作キー部４０１はハードキーからなる操作キーを備えており、具体的にはヘルプキー４０５、スタートキー４０７、テンキー４０９及び機能切換キー４１１等を備える。
【００３８】
ヘルプキー４０５は、ヘルプ画面を表示部４０３に表示させるキーである。ヘルプ画面とはスキャナ、ファクシミリ、プリンタ、コピー等の機能に関する操作方法が表示された画面である。スタートキー４０７は、コピー、ファクシミリ送信等の動作を開始させるキーである。テンキー４０９は、コピー部数、ファクシミリ番号等の数字を入力するキーである。機能切換キー４１１は、コピーキー及び送信キー等を備えており、コピー機能、送信機能等を相互に切り替えるキーである。コピーキーを操作すれば、コピーの初期画面が表示部４０３に表示される。送信キーを操作すれば、ファクシミリ送信及びメール送信の初期画面が表示部４０３に表示される。
【００３９】
続いて、複合機１の電気的構成について説明する。図２に示すように、複合機１は、本体部１００、原稿読取部２００、原稿給送部３００、操作部４００、用紙後処理部５００、ＵＳＢメモリー等の記憶媒体６を複合機１に接続するための外部インターフェイス（外部Ｉ／Ｆ）６００、通信部７００、及び制御装置２が、バスによって接続された構成を有する。
【００４０】
制御装置２は、割込レジスタ２５、フラッシュメモリ２１、ＲＡＭ（Random Access Memory）２２、コアＣＰＵ（Central Processing Unit）２３、及び、ウォッチドッグタイマ２４がバスによって接続されたマイクロコンピュータとして構成されている。
【００４１】
割込レジスタ２５（本発明に係る第１記憶部の一例）は、後述するコアＣＰＵ２３に向けて出力された割り込み信号が示す情報を記憶するレジスタである。尚、割込レジスタ２５に記憶される情報の具体例については後述する。
【００４２】
フラッシュメモリ２１（本発明に係る第２記憶部の一例）は、装置各部１００，２００，３００，４００，５００，６００，７００の動作を制御する処理が実装された制御プログラムを記憶する。フラッシュメモリ２１は、制御装置２を停止した後に再起動した場合であっても、記憶されている情報が損失されない、所謂、不揮発性メモリとして構成されている。尚、フラッシュメモリ２１は、制御装置２が停止された後であっても、常時電源が供給されるＲＡＭによって構成されていてもよい。
【００４３】
ＲＡＭ２２は、制御プログラムの実行時に一時的にデータを保管する。
【００４４】
コアＣＰＵ２３（本発明に係る制御部の一例）は、フラッシュメモリ２１から制御プログラムを読み出して実行することによって、装置各部１００，２００，３００，４００，５００，６００，７００に必要な制御を行う。
【００４５】
ウォッチドッグタイマ２４は、コアＣＰＵ２３からクリア信号ＣＬＲが入力された時点を開始時刻として、内部に設けられたタイマを用いて当該開始時刻からの経過時間を計測する。そして、ウォッチドッグタイマ２４は、計測中の経過時間が予め内部のレジスタに記憶された検出時間に到達すると、コアＣＰＵ２３が暴走して応答しなくなる異常な状態になったものとして、当該異常の発生を示すリセット信号ＲＳＴをコアＣＰＵ２３に向けて出力する。
【００４６】
また、ウォッチドッグタイマ２４は、コアＣＰＵ２３が暴走して応答しなくなる異常な状態にあることを示すリセットフラグ（本発明に係る異常の発生を示す情報の一例）ＲＦＬＧを割込レジスタ２５に記憶する。
【００４７】
尚、ウォッチドッグタイマ２４は、計測中の経過時間が検出時間に到達するまでの間に、コアＣＰＵ２３からクリア信号ＣＬＲが入力された場合は、当該クリア信号ＣＬＲが入力された時点を新たな開始時刻として、当該新たな開始時刻からの経過時間を計測する。つまり、ウォッチドッグタイマ２４は、コアＣＰＵ２３からクリア信号ＣＬＲが入力される度に、経過時間の計測を開始し直すように構成されている。
【００４８】
続いて、フラッシュメモリ２１に記憶されている制御プログラムについて説明する。例えば、図３に示すように、フラッシュメモリ２１には、ブートプログラムＢＰを構成しているバイナリデータと、ブートプログラムチェックサムＢＰＣと、メインプログラムＭＰを構成しているバイナリデータと、メインプログラムチェックサムＭＰＣと、書き換えプログラムＷＰを構成しているバイナリデータと、が記憶されている。
【００４９】
ブートプログラムＢＰは、メインプログラムＭＰ及び書き換えプログラムＷＰの実行を制御する処理を実行するプログラムである。ブートプログラムＢＰは、例えば、フラッシュメモリ２１における予め区分けされた先頭の領域に記憶されており、制御装置２の起動時及びウォッチドッグタイマ２４によってリセット信号ＲＳＴが出力された場合に、コアＣＰＵ２３によって実行される。尚、ブートプログラムＢＰによるメインプログラムＭＰ及び書き換えプログラムＷＰの実行制御の詳細については後述する。
【００５０】
ブートプログラムチェックサムＢＰＣは、例えば、ブートプログラムＢＰを構成しているバイナリデータを１バイトを単位とする複数のブロックに分割し、当該分割された複数のブロックの論理和によって算出された、いわゆるチェックサムである。尚、チェックサムの算出方法（本発明に係る予め定められた算出方法）は、これに限定する趣旨ではなく、例えば当該分割された複数のブロックの排他的論理和によって算出するものであってもよい。
【００５１】
ブートプログラムＢＰを構成しているバイナリデータ及びブートプログラムチェックサムＢＰＣは、フラッシュメモリ２１にデータを書き込むための専用冶具を用いて、ユーザによる操作によって予め記憶されている。
【００５２】
メインプログラムＭＰは、装置各部１００，２００，３００，４００，５００，６００，７００間で相互に制御信号を入出力させる処理等、装置各部１００，２００，３００，４００，５００，６００，７００の動作を統括的に制御する処理を実行するプログラムである。また、メインプログラムＭＰは、予め定められたタイミングでウォッチドッグタイマ２４にクリア信号ＣＬＲを入力する処理を実行するように実装されている。
【００５３】
メインプログラムチェックサムＭＰＣは、例えば、メインプログラムＭＰを構成しているバイナリデータを、１バイトを単位とする複数のブロックに分割し、当該分割された複数のブロックの論理和によって算出された、いわゆるチェックサムである。
【００５４】
尚、メインプログラムチェックサムＭＰＣの算出方法（本発明に係る予め定められたチェックサム算出方法）は、これに限定する趣旨ではなく、例えば当該分割された複数のブロックの排他的論理和によって算出するものであってもよい。また、上記のブートプログラムチェックサムＢＰＣの算出方法と、同じ算出方法、又は、異なる算出方法の何れであってもよい。
【００５５】
書き換えプログラムＷＰは、フラッシュメモリ２１に記憶されているメインプログラムＭＰ及びメインプログラムチェックサムＭＰＣを書き換える処理を実行するプログラムである。
【００５６】
例えば、コアＣＰＵ２３は、書き換えプログラムＷＰの実行を開始すると、外部Ｉ／Ｆ６００を介して記憶媒体６に記憶されているメインプログラムを構成しているバイナリデータを取得して、上記のチェックサムの算出方法によって、当該バイナリデータを用いてチェックサムを算出し、当該算出したチェックサムをＲＡＭ２２に一時記憶する。
【００５７】
次に、コアＣＰＵ２３は、フラッシュメモリ２１に記憶されているメインプログラムＭＰを構成しているバイナリデータを削除した後、記憶媒体６から取得したバイナリデータを新たなメインプログラムＭＰを構成しているバイナリデータとしてフラッシュメモリ２１に記憶する。
【００５８】
これとともに、コアＣＰＵ２３は、フラッシュメモリ２１に記憶されているメインプログラムチェックサムＭＰＣを削除した後、ＲＡＭ２２に一時記憶したチェックサムを、新たなメインプログラムチェックサムＭＰＣとしてフラッシュメモリ２１に記憶する。
【００５９】
このようにして、コアＣＰＵ２３は、書き換えプログラムＷＰを実行することによって、メインプログラムＭＰ及びメインプログラムチェックサムＭＰＣを書き換える。
【００６０】
以下では、ブートプログラムＢＰが実行されることによるメインプログラムＭＰ及び書き換えプログラムＷＰの実行制御の流れについて説明する。
【００６１】
図４に示すように、制御装置２が起動されると、コアＣＰＵ２３は、フラッシュメモリ２１に記憶されているブートプログラムＢＰを読み出し、ブートプログラムＢＰの実行を開始する（Ｓ１）。
【００６２】
コアＣＰＵ２３は、ブートプログラムＢＰを実行することによって、先ず、上記のブートプログラムチェックサムＢＰＣの算出方法によって、フラッシュメモリ２１に記憶されているブートプログラムＢＰのバイナリデータを用いてチェックサムを算出する。そして、当該算出したチェックサムが、フラッシュメモリ２１に記憶されているブートプログラムチェックサムＢＰＣと一致するか否かによって、当該ブートプログラムＢＰがフラッシュメモリ２１に正常に記憶されているか否かを判断する（Ｓ２）。
【００６３】
このようにして、フラッシュメモリ２１に記憶されているブートプログラムチェックサムＢＰＣを用いて、ブートプログラムＢＰが予め記憶されていた状態から書き換えられているか否かを判断することによって、ブートプログラムＢＰがフラッシュメモリ２１に正常に記憶されているか否かを適切に判断することができる。
【００６４】
コアＣＰＵ２３は、当該算出したチェックサムがフラッシュメモリ２１に記憶されているブートプログラムチェックサムＢＰＣと一致しない場合、ブートプログラムＢＰが何らかの原因で書き換えられて、フラッシュメモリ２１に正常に記憶されていないものと判断し（Ｓ２；ＮＯ）、当該ブートプログラムＢＰの実行を終了する。これによって、正常に記憶されていないブートプログラムが実行されることによって、当該ブートプログラムが暴走する虞を事前に回避することができる。
【００６５】
図４に戻り、コアＣＰＵ２３は、当該算出したチェックサムがフラッシュメモリ２１に記憶されているブートプログラムチェックサムＢＰＣと一致する場合には、ブートプログラムＢＰが書き換えられることなく、フラッシュメモリ２１に正常に記憶されているものと判断し（Ｓ２；ＹＥＳ）、割込レジスタ２５にリセットフラグＲＦＬＧが記憶されているか否かを確認する（Ｓ３）。
【００６６】
割込レジスタ２５にリセットフラグＲＦＬＧが記憶されていない場合（Ｓ３；ＮＯ）、コアＣＰＵ２３は、上記のメインプログラムチェックサムＭＰＣの算出方法によって、フラッシュメモリ２１に記憶されているメインプログラムＭＰのバイナリデータを用いてチェックサムを算出する。そして、当該算出したチェックサムがフラッシュメモリ２１に記憶されているメインプログラムチェックサムＭＰＣと一致するか否かによって、メインプログラムＭＰがフラッシュメモリ２１に正常に記憶されているか否かを判断する（Ｓ４）。
【００６７】
このようにして、フラッシュメモリ２１に記憶されているメインプログラムチェックサムＭＰＣを用いて、メインプログラムＭＰが予め記憶されていた状態から書き換えられているか否かを判断することによって、メインプログラムＭＰがフラッシュメモリ２１に正常に記憶されているか否かを適切に判断することができる。
【００６８】
コアＣＰＵ２３は、当該算出したチェックサムがフラッシュメモリ２１に記憶されているメインプログラムチェックサムＭＰＣと一致しない場合、メインプログラムＭＰがフラッシュメモリ２１に正常に記憶されていないものと判断し（Ｓ４；ＮＯ）、フラッシュメモリ２１に記憶されている書き換えプログラムＷＰを読み出して、書き換えプログラムＷＰの実行を開始する（Ｓ８）。
【００６９】
コアＣＰＵ２３は、書き換えプログラムＷＰを実行することによって、例えば、外部Ｉ／Ｆ６００を介して、記憶媒体６に記憶されたメインプログラムを構成しているバイナリデータを取得し（Ｓ９）、当該取得したバイナリデータを用いて、上記のメインプログラムチェックサムＢＰＣの算出方法でチェックサムを算出し、当該算出したチェックサムをＲＡＭ２２に一時記憶する（Ｓ１０）。
【００７０】
次に、コアＣＰＵ２３は、フラッシュメモリ２１に記憶されているメインプログラムＭＰを構成しているバイナリデータを削除した後、ステップＳ９で取得したバイナリデータを新たなメインプログラムＭＰを構成しているバイナリデータとしてフラッシュメモリ２１に記憶する（Ｓ１１）。
【００７１】
そして、コアＣＰＵ２３は、フラッシュメモリ２１に記憶されているメインプログラムチェックサムＭＰＣを削除した後、ステップＳ１０でＲＡＭ２２に一時記憶したチェックサムを、新たなメインプログラムチェックサムＭＰＣとしてフラッシュメモリ２１に記憶する（Ｓ１２）。
【００７２】
そして、コアＣＰＵ２３は、割込レジスタ２５に記憶されているリセットフラグＲＦＬＧを削除した後（Ｓ１３）、フラッシュメモリ２１に記憶されているブートプログラムＢＰを読み出し、ブートプログラムＢＰの実行を開始する（Ｓ１）。尚、書き換えプログラムＷＰは、ステップＳ１３の後、制御装置２を停止するように実装されていてもよい。
【００７３】
このように、コアＣＰＵ２３がブートプログラムＢＰを実行することによって、ステップＳ４において、メインプログラムＭＰがフラッシュメモリ２１に正常に記憶されていないものと判断した場合に（Ｓ４；ＮＯ）、書き換えプログラムＷＰの実行を開始して（Ｓ８）、正常に記憶されていないメインプログラムを実行することを回避し、当該メインプログラムが暴走する虞を事前に回避することができる。
【００７４】
また、コアＣＰＵ２３が書き換えプログラムＷＰを実行することによって、ユーザがフラッシュメモリ２１にデータを書き込むための専用冶具を用いて当該メインプログラムを書き換える等の手間をかけることなく、容易に当該メインプログラムを書き換えることができる。
【００７５】
図４に戻り、コアＣＰＵ２３は、ブートプログラムＢＰを実行することによって、ステップＳ４において、算出したチェックサムがフラッシュメモリ２１に記憶されているメインプログラムチェックサムＭＰＣと一致する場合には、メインプログラムＭＰがフラッシュメモリ２１に正常に記憶されているものと判断する（Ｓ４；ＹＥＳ）。そして、ウォッチドッグタイマ２４にクリア信号ＣＬＲを入力した後（Ｓ５）、フラッシュメモリ２１に記憶されているメインプログラムＭＰを読み出し、メインプログラムＭＰの実行を開始する（Ｓ６）。
【００７６】
その後、例えば、当該メインプログラムＭＰが暴走する等して、クリア信号ＣＬＲがウォッチドッグタイマ２４に入力されないまま、予め定められた検出時間が経過すると、ウォッチドッグタイマ２４によって、割込レジスタ２５にリセットフラグＲＦＬＧが記憶されるとともに、コアＣＰＵ２３に向けてリセット信号ＲＳＴが出力される（Ｓ７；ＹＥＳ）。この場合、コアＣＰＵ２３によって、フラッシュメモリ２１に記憶されているブートプログラムＢＰが読み出されて実行される（Ｓ１）。
【００７７】
これに続いて、ステップＳ２において肯定の判断がなされ（Ｓ２；ＹＥＳ）、ステップＳ３が実行された場合は、割込レジスタ２５にリセットフラグＲＦＬＧが記憶されているため（Ｓ３；ＹＥＳ）、コアＣＰＵ２３は、フラッシュメモリ２１に記憶されている書き換えプログラムＷＰを読み出して、書き換えプログラムＷＰの実行を開始する（Ｓ８）。
【００７８】
このように、コアＣＰＵ２３がブートプログラムＢＰを実行することによって、フラッシュメモリ２１に記憶されていたメインプログラムＭＰが暴走した場合（Ｓ７；ＹＥＳ）であっても、ユーザに手間を取らせることなく、割込レジスタ２５に記憶されたリセットフラグＲＦＬＧを用いて、当該メインプログラムＭＰの暴走を自動的に検知することができる。
【００７９】
そして、このように、メインプログラムＭＰの暴走を検知した場合には、コアＣＰＵ２３が書き換えプログラムＷＰを実行することによって、ユーザがフラッシュメモリ２１にデータを書き込むための専用冶具を用いて当該メインプログラムＭＰを書き換える等の手間をかけることなく、容易に当該メインプログラムＭＰを書き換えることができる。
【００８０】
尚、本発明は上記実施の形態の構成に限られず種々の変形が可能である。例えば、上記実施形態では、本発明に係る制御装置を複合機１に適用する例について説明したが、これに限らず、本発明に係る制御装置は、カラー画像形成用のカラープリンタや、スキャナ装置、ファクシミリ装置、プリンタ装置及びコピー装置に適用してもよい。また、本発明に係る制御装置は、上記のようなマイクロコンピュータで構成される形態に限らず、例えば、パーソナルコンピュータで構成されていてもよい。
【００８１】
また、上記実施形態において図１乃至図４に示した構成及び設定は単なる一例に過ぎず、本発明を当該実施形態に限定する趣旨ではない。
【００８２】
例えば、図３に示す、ブートプログラムチェックサムＢＰＣがフラッシュメモリ２１に記憶されない構成であり、これに合わせて、ブートプログラムＢＰは、図４に示すステップＳ２の処理を実行しない簡易な構成であってもよい。
【００８３】
また、図３に示す、メインプログラムチェックサムＭＰＣがフラッシュメモリ２１に記憶されない構成であり、これに合わせて、ブートプログラムＢＰは、図４に示すステップＳ４の処理を実行しない簡易な構成であり、また、書き換えプログラムＷＰは、図４に示すステップＳ１０及びステップＳ１２の処理を実行しない簡易な構成であってもよい。
【符号の説明】
【００８４】
１      複合機
２      制御装置
２１    フラッシュメモリ（第２記憶部）
２３    コアＣＰＵ（制御部）
２４    ウォッチドッグタイマ
２５    割込レジスタ（第１記憶部）
ＢＰ    ブートプログラム
ＢＰＣ  ブートプログラムチェックサム
ＣＬＲ  クリア信号
ＭＰ    メインプログラム
ＭＰＣ  メインプログラムチェックサム
ＲＳＴ  リセット信号
ＲＦＬＧ  リセットフラグ（異常の発生を示す情報）
ＷＰ    書き換えプログラム
【図１】
2013029939.tif 000003
【図２】
2013029939.tif 000004
【図３】
2013029939.tif 000005
【図４】
2013029939.tif 000006