"第1記憶部と、クリア信号が入力される度に時間の計測を開始し直し、当該計測を開始し直した時間から予め定められた検出時間が経過すると、異常の発生を示す情報を前記第1記憶部に記憶し、且つ、リセット信号を出力するウォッチドッグタイマと、予め定められたタイミングで前記ウォッチドッグタイマに前記クリア信号を入力する処理が実装されたメインプログラムと、前記メインプログラムを書き換える処理が実装された書き換えプログラムと、前記メインプログラム及び前記書き換えプログラムの実行を制御する処理が実装されたブートプログラムと、を記憶する第2記憶部と、前記第2記憶部に記憶された各種プログラムを実行する制御部と、を備え、前記ブートプログラムは、当該制御装置の起動時、及び、前記ウォッチドッグタイマによって前記リセット信号が出力されたときに、前記制御部によって実行され、前記第1記憶部に前記異常の発生を示す情報が記憶されていない場合は、前記ウォッチドッグタイマに前記クリア信号を入力した後に前記メインプログラムを実行し、一方、前記第1記憶部に前記異常の発生を示す情報が記憶されている場合は、前記書き換えプログラムを実行するように実装されている制御装置。前記ブートプログラムは、前記制御部によって実行されると、先ず、当該ブートプログラムが前記第2記憶部に正常に記憶されているか否かを判断し、正常に記憶されていないと判断した場合には、当該ブートプログラムを終了するように実装されている請求項1に記載の制御装置。前記第2記憶部には、前記ブートプログラムを構成しているバイナリデータを用いて予め定められた算出方法で算出されたチェックサムであるブートプログラムチェックサムが予め記憶されており、前記ブートプログラムは、前記第2記憶部に記憶されている前記ブートプログラムを構成しているバイナリデータを用いて、前記予め定められた方法でチェックサムを算出し、当該算出したチェックサムと前記第2記憶部に予め記憶されている前記ブートプログラムチェックサムとが一致するか否かによって、当該ブートプログラムが前記第2記憶部に正常に記憶されているか否かを判断するように実装されている請求項2に記載の制御装置。前記ブートプログラムは、前記メインプログラムの実行前に、前記メインプログラムが前記第2記憶部に正常に記憶されているか否かを判断し、正常に記憶されていないと判断した場合には、前記書き換えプログラムを実行するように実装されている請求項1から3の何れか一項に記載の制御装置。前記第2記憶部には、前記メインプログラムを構成しているバイナリデータを用いて予め定められたチェックサム算出方法で算出されたチェックサムであるメインプログラムチェックサムが予め記憶されており、前記ブートプログラムは、前記第2記憶部に記憶されている前記メインプログラムを構成しているバイナリデータを用いて、前記予め定められたチェックサム算出方法でチェックサムを算出し、当該算出したチェックサムと前記第2記憶部に予め記憶されている前記メインプログラムチェックサムとが一致するか否かによって、前記メインプログラムが前記第2記憶部に正常に記憶されているか否かを判断するように実装されている請求項4に記載の制御装置。しかしながら、上記の従来技術では、プログラムが正常に記憶されているか否かを判断することはできても、正常に記憶されていると判断されたプログラムを実行した場合に、当該プログラムが暴走することなく動作することを保障することはできない。このため、プログラムが暴走した場合には、当該暴走したことをユーザが検知して、電源を切る等して、当該プログラムの暴走を強制的に停止した後、専用冶具等を用いて記憶部に記憶されているプログラムを書き換える等の手間が必要であった。本発明は、このような事情に鑑みてなされたものであり、記憶部に記憶されているプログラムが暴走した場合であっても、当該暴走を自動的に検知して当該プログラムを容易に書き換えることができる制御装置を提供することを目的とする。本発明に係る制御装置は、第1記憶部と、クリア信号が入力される度に時間の計測を開始し直し、当該計測を開始し直した時間から予め定められた検出時間が経過すると、異常の発生を示す情報を前記第1記憶部に記憶し、且つ、リセット信号を出力するウォッチドッグタイマと、予め定められたタイミングで前記ウォッチドッグタイマに前記クリア信号を入力する処理が実装されたメインプログラムと、前記メインプログラムを書き換える処理が実装された書き換えプログラムと、前記メインプログラム及び前記書き換えプログラムの実行を制御する処理が実装されたブートプログラムと、を記憶する第2記憶部と、前記第2記憶部に記憶された各種プログラムを実行する制御部と、を備え、前記ブートプログラムは、当該制御装置の起動時、及び、前記ウォッチドッグタイマによって前記リセット信号が出力されたときに、前記制御部によって実行され、前記第1記憶部に前記異常の発生を示す情報が記憶されていない場合は、前記ウォッチドッグタイマに前記クリア信号を入力した後に前記メインプログラムを実行し、一方、前記第1記憶部に前記異常の発生を示す情報が記憶されている場合は、前記書き換えプログラムを実行するように実装されている。この構成によれば、制御部は、制御装置の起動時にブートプログラムを実行することによって、第1記憶部に異常の発生を示す情報が記憶されているか否かを確認し、第1記憶部に異常の発生を示す情報が記憶されていない場合は、ウォッチドッグタイマにクリア信号を入力した後にメインプログラムを実行する。ここで、何らかの異常が発生して当該メインプログラムが暴走すると、メインプログラムからウォッチドッグタイマにクリア信号が入力されなくなる。そして、ウォッチドッグタイマは、当該メインプログラムの実行前にブートプログラムによってクリア信号が入力された時点から、予め定められた検出時間が経過すると、異常の発生を示す情報を第1記憶部に記憶し、且つ、リセット信号を出力する。そして、制御部は、当該リセット信号が出力されたときに、ブートプログラムを実行することによって、第1記憶部に異常の発生を示す情報が記憶されているか否かを確認し、この場合、第1記憶部に異常の発生を示す情報が記憶されているため、書き換えプログラムを実行する。これによって、当該暴走したメインプログラムが書き換えられる。つまり、この構成によれば、制御部がブートプログラムを実行することによって、第2記憶部に記憶されていたメインプログラムが暴走した場合であっても、ユーザに手間を取らせることなく、第1記憶部に記憶された異常の発生を示す情報を用いて当該メインプログラムの暴走を自動的に検知することができる。そして、当該メインプログラムの暴走を検知した場合に、制御部が書き換えプログラムを実行することによって、専用冶具等を用いてユーザが当該メインプログラムを書き換える等の手間をかけることなく、容易に当該メインプログラムを書き換えることができる。また、前記ブートプログラムは、前記制御部によって実行されると、先ず、当該ブートプログラムが前記第2記憶部に正常に記憶されているか否かを判断し、正常に記憶されていないと判断した場合には、当該ブートプログラムを終了するように実装されていることが好ましい。この構成によれば、正常に記憶されていないブートプログラムが実行されることによって、当該ブートプログラムが暴走する虞を事前に回避することができる。また、前記第2記憶部には、前記ブートプログラムを構成しているバイナリデータを用いて予め定められた算出方法で算出されたチェックサムであるブートプログラムチェックサムが予め記憶されており、前記ブートプログラムは、前記第2記憶部に記憶されている前記ブートプログラムを構成しているバイナリデータを用いて、前記予め定められた方法でチェックサムを算出し、当該算出したチェックサムと前記第2記憶部に予め記憶されている前記ブートプログラムチェックサムとが一致するか否かによって、当該ブートプログラムが前記第2記憶部に正常に記憶されているか否かを判断するように実装されていることが好ましい。この構成によれば、第2記憶部に記憶されているブートプログラムチェックサムを用いて、第2記憶部に記憶されているブートプログラムが、予め記憶されていた状態から書き換えられているか否かを判断することができる。これによって、ブートプログラムが第2記憶部に正常に記憶されているか否かを適切に判断することができる。また、前記ブートプログラムは、前記メインプログラムの実行前に、前記メインプログラムが前記第2記憶部に正常に記憶されているか否かを判断し、正常に記憶されていないと判断した場合には、前記書き換えプログラムを実行するように実装されていることが好ましい。この構成によれば、正常に記憶されていないメインプログラムが実行されることによって、当該メインプログラムが暴走する虞を事前に回避することができる。また、前記第2記憶部には、前記メインプログラムを構成しているバイナリデータを用いて予め定められたチェックサム算出方法で算出されたチェックサムであるメインプログラムチェックサムが予め記憶されており、前記ブートプログラムは、前記第2記憶部に記憶されている前記メインプログラムを構成しているバイナリデータを用いて、前記予め定められたチェックサム算出方法でチェックサムを算出し、当該算出したチェックサムと前記第2記憶部に予め記憶されている前記メインプログラムチェックサムとが一致するか否かによって、前記メインプログラムが前記第2記憶部に正常に記憶されているか否かを判断するように実装されていることが好ましい。この構成によれば、第2記憶部に記憶されているメインプログラムチェックサムを用いて、第2記憶部に記憶されているメインプログラムが、予め記憶されていた状態から書き換えられているか否かを判断することができる。これによって、メインプログラムが第2記憶部に正常に記憶されているか否かを適切に判断することができる。本発明によれば、記憶部に記憶されているプログラムが暴走した場合であっても、当該暴走を自動的に検知して当該プログラムを容易に書き換えることができる制御装置を提供することが可能になる。以下、本発明に係る制御装置を備えた、例えば、コピー、プリンタ、スキャナ及びファクシミリの機能を有する複合機を図面に基づいて説明する。図1に示すように、複合機1は、本体部100、本体部100の上に配置された原稿読取部200、原稿読取部200の上に配置された原稿給送部300、本体部100の上部前面に配置された操作部400、及び本体部100の用紙搬出側図中の左側に配置された用紙後処理部500を備えている。原稿給送部300は、原稿載置部301、給紙ローラ303、原稿搬送部305及び原稿排出部307を備えている。給紙ローラ303は、原稿載置部301にセットされた原稿を1枚ずつ繰り出す。原稿搬送部305は、繰り出された原稿を原稿読取部200に搬送する。原稿は、原稿読取部200で読み取られて原稿排出部307に排出される。原稿読取部200は、CCDChargeCoupledDeviceセンサ及び露光ランプ等を搭載したキャリッジ201、ガラス等の透明部材により構成された原稿台203、及び原稿読取スリット205を備えている。原稿台203に載置された原稿を読み取る場合、キャリッジ201を原稿台203の長手方向に移動させながらCCDセンサにより原稿を読み取る。これに対して、原稿給送部300から給送された原稿を読み取る場合、キャリッジ201を原稿読取スリット205と対向する位置に移動させて、原稿給送部300から送られてきた原稿を、原稿読取スリット205を通してCCDセンサにより読み取る。CCDセンサは読み取った原稿を画像データとして出力する。本体部100は、用紙貯留部101、画像形成部103及び定着部105を備えている。用紙貯留部101は、本体部100の最下部に配置され、用紙の束を貯留する用紙トレイ107を備えている。用紙トレイ107に貯留された用紙の束において、最上位の用紙がピックアップローラ109の駆動により、用紙搬送部111へ向けて繰り出される。用紙は、用紙搬送部111を通って、画像形成部103へ搬送される。画像形成部103は、搬送されてきた用紙にトナー画像を形成する。画像形成部103は、感光体ドラム113、露光部115、現像部117及び転写部119を備えている。露光部115は、画像データ原稿読取部200から出力された画像データ、パソコンから送信された画像データ、ファクシミリ受信の画像データ等に対応する光を生成し、一様に帯電された感光体ドラム113の周面に照射する。これにより、感光体ドラム113の周面には画像データに対応する静電潜像が形成される。この状態で感光体ドラム113の周面に現像部117からトナーを供給することにより、感光体ドラム113の周面には、画像データに対応するトナー画像が形成される。このトナー画像は、転写部119によって上記の用紙貯留部101から搬送されてきた用紙に転写される。トナー画像が転写された用紙は、定着部105に送られる。定着部105において、トナー画像と用紙に熱と圧力が加えられて、トナー画像を用紙に定着させる。これにより、用紙への画像の印刷が完了する。この印刷済用紙に対して後処理がされる場合、印刷済用紙は本体部100の用紙排出口121から用紙後処理部500へ送られる。これに対して後処理がされない場合、印刷済用紙は排紙トレイ123に排紙される。用紙後処理部500では、印刷済用紙に対して、ソート、ステープル、パンチ、中綴じ等の後処理がされる。用紙後処理部500は、用紙搬入口501、用紙搬送部503、用紙搬出口505及びスタックトレイ507等を備える。用紙搬送部503は用紙排出口121から用紙搬入口501に搬入された印刷済用紙を順次搬送し、後処理がされた印刷済用紙を用紙搬出口505からスタックトレイ507へ搬出する。スタックトレイ507は用紙搬出口505から搬出された上記用紙の集積枚数に応じて矢印方向に上下動可能な構成を有する。操作部400は、操作キー部401と表示部403を備える。表示部403はタッチパネル機能を有しており、ソフトキーを含む画面が表示される。ユーザは画面を見ながらソフトキーを操作することによって、コピー等の機能の実行に必要な設定等をする。操作キー部401はハードキーからなる操作キーを備えており、具体的にはヘルプキー405、スタートキー407、テンキー409及び機能切換キー411等を備える。ヘルプキー405は、ヘルプ画面を表示部403に表示させるキーである。ヘルプ画面とはスキャナ、ファクシミリ、プリンタ、コピー等の機能に関する操作方法が表示された画面である。スタートキー407は、コピー、ファクシミリ送信等の動作を開始させるキーである。テンキー409は、コピー部数、ファクシミリ番号等の数字を入力するキーである。機能切換キー411は、コピーキー及び送信キー等を備えており、コピー機能、送信機能等を相互に切り替えるキーである。コピーキーを操作すれば、コピーの初期画面が表示部403に表示される。送信キーを操作すれば、ファクシミリ送信及びメール送信の初期画面が表示部403に表示される。続いて、複合機1の電気的構成について説明する。図2に示すように、複合機1は、本体部100、原稿読取部200、原稿給送部300、操作部400、用紙後処理部500、USBメモリー等の記憶媒体6を複合機1に接続するための外部インターフェイス外部I/F600、通信部700、及び制御装置2が、バスによって接続された構成を有する。制御装置2は、割込レジスタ25、フラッシュメモリ21、RAMRandomAccessMemory22、コアCPUCentralProcessingUnit23、及び、ウォッチドッグタイマ24がバスによって接続されたマイクロコンピュータとして構成されている。割込レジスタ25本発明に係る第1記憶部の一例は、後述するコアCPU23に向けて出力された割り込み信号が示す情報を記憶するレジスタである。尚、割込レジスタ25に記憶される情報の具体例については後述する。フラッシュメモリ21本発明に係る第2記憶部の一例は、装置各部100,200,300,400,500,600,700の動作を制御する処理が実装された制御プログラムを記憶する。フラッシュメモリ21は、制御装置2を停止した後に再起動した場合であっても、記憶されている情報が損失されない、所謂、不揮発性メモリとして構成されている。尚、フラッシュメモリ21は、制御装置2が停止された後であっても、常時電源が供給されるRAMによって構成されていてもよい。RAM22は、制御プログラムの実行時に一時的にデータを保管する。コアCPU23本発明に係る制御部の一例は、フラッシュメモリ21から制御プログラムを読み出して実行することによって、装置各部100,200,300,400,500,600,700に必要な制御を行う。ウォッチドッグタイマ24は、コアCPU23からクリア信号CLRが入力された時点を開始時刻として、内部に設けられたタイマを用いて当該開始時刻からの経過時間を計測する。そして、ウォッチドッグタイマ24は、計測中の経過時間が予め内部のレジスタに記憶された検出時間に到達すると、コアCPU23が暴走して応答しなくなる異常な状態になったものとして、当該異常の発生を示すリセット信号RSTをコアCPU23に向けて出力する。また、ウォッチドッグタイマ24は、コアCPU23が暴走して応答しなくなる異常な状態にあることを示すリセットフラグ本発明に係る異常の発生を示す情報の一例RFLGを割込レジスタ25に記憶する。尚、ウォッチドッグタイマ24は、計測中の経過時間が検出時間に到達するまでの間に、コアCPU23からクリア信号CLRが入力された場合は、当該クリア信号CLRが入力された時点を新たな開始時刻として、当該新たな開始時刻からの経過時間を計測する。つまり、ウォッチドッグタイマ24は、コアCPU23からクリア信号CLRが入力される度に、経過時間の計測を開始し直すように構成されている。続いて、フラッシュメモリ21に記憶されている制御プログラムについて説明する。例えば、図3に示すように、フラッシュメモリ21には、ブートプログラムBPを構成しているバイナリデータと、ブートプログラムチェックサムBPCと、メインプログラムMPを構成しているバイナリデータと、メインプログラムチェックサムMPCと、書き換えプログラムWPを構成しているバイナリデータと、が記憶されている。ブートプログラムBPは、メインプログラムMP及び書き換えプログラムWPの実行を制御する処理を実行するプログラムである。ブートプログラムBPは、例えば、フラッシュメモリ21における予め区分けされた先頭の領域に記憶されており、制御装置2の起動時及びウォッチドッグタイマ24によってリセット信号RSTが出力された場合に、コアCPU23によって実行される。尚、ブートプログラムBPによるメインプログラムMP及び書き換えプログラムWPの実行制御の詳細については後述する。ブートプログラムチェックサムBPCは、例えば、ブートプログラムBPを構成しているバイナリデータを1バイトを単位とする複数のブロックに分割し、当該分割された複数のブロックの論理和によって算出された、いわゆるチェックサムである。尚、チェックサムの算出方法本発明に係る予め定められた算出方法は、これに限定する趣旨ではなく、例えば当該分割された複数のブロックの排他的論理和によって算出するものであってもよい。ブートプログラムBPを構成しているバイナリデータ及びブートプログラムチェックサムBPCは、フラッシュメモリ21にデータを書き込むための専用冶具を用いて、ユーザによる操作によって予め記憶されている。メインプログラムMPは、装置各部100,200,300,400,500,600,700間で相互に制御信号を入出力させる処理等、装置各部100,200,300,400,500,600,700の動作を統括的に制御する処理を実行するプログラムである。また、メインプログラムMPは、予め定められたタイミングでウォッチドッグタイマ24にクリア信号CLRを入力する処理を実行するように実装されている。メインプログラムチェックサムMPCは、例えば、メインプログラムMPを構成しているバイナリデータを、1バイトを単位とする複数のブロックに分割し、当該分割された複数のブロックの論理和によって算出された、いわゆるチェックサムである。尚、メインプログラムチェックサムMPCの算出方法本発明に係る予め定められたチェックサム算出方法は、これに限定する趣旨ではなく、例えば当該分割された複数のブロックの排他的論理和によって算出するものであってもよい。また、上記のブートプログラムチェックサムBPCの算出方法と、同じ算出方法、又は、異なる算出方法の何れであってもよい。書き換えプログラムWPは、フラッシュメモリ21に記憶されているメインプログラムMP及びメインプログラムチェックサムMPCを書き換える処理を実行するプログラムである。例えば、コアCPU23は、書き換えプログラムWPの実行を開始すると、外部I/F600を介して記憶媒体6に記憶されているメインプログラムを構成しているバイナリデータを取得して、上記のチェックサムの算出方法によって、当該バイナリデータを用いてチェックサムを算出し、当該算出したチェックサムをRAM22に一時記憶する。次に、コアCPU23は、フラッシュメモリ21に記憶されているメインプログラムMPを構成しているバイナリデータを削除した後、記憶媒体6から取得したバイナリデータを新たなメインプログラムMPを構成しているバイナリデータとしてフラッシュメモリ21に記憶する。これとともに、コアCPU23は、フラッシュメモリ21に記憶されているメインプログラムチェックサムMPCを削除した後、RAM22に一時記憶したチェックサムを、新たなメインプログラムチェックサムMPCとしてフラッシュメモリ21に記憶する。このようにして、コアCPU23は、書き換えプログラムWPを実行することによって、メインプログラムMP及びメインプログラムチェックサムMPCを書き換える。以下では、ブートプログラムBPが実行されることによるメインプログラムMP及び書き換えプログラムWPの実行制御の流れについて説明する。図4に示すように、制御装置2が起動されると、コアCPU23は、フラッシュメモリ21に記憶されているブートプログラムBPを読み出し、ブートプログラムBPの実行を開始するS1。コアCPU23は、ブートプログラムBPを実行することによって、先ず、上記のブートプログラムチェックサムBPCの算出方法によって、フラッシュメモリ21に記憶されているブートプログラムBPのバイナリデータを用いてチェックサムを算出する。そして、当該算出したチェックサムが、フラッシュメモリ21に記憶されているブートプログラムチェックサムBPCと一致するか否かによって、当該ブートプログラムBPがフラッシュメモリ21に正常に記憶されているか否かを判断するS2。このようにして、フラッシュメモリ21に記憶されているブートプログラムチェックサムBPCを用いて、ブートプログラムBPが予め記憶されていた状態から書き換えられているか否かを判断することによって、ブートプログラムBPがフラッシュメモリ21に正常に記憶されているか否かを適切に判断することができる。コアCPU23は、当該算出したチェックサムがフラッシュメモリ21に記憶されているブートプログラムチェックサムBPCと一致しない場合、ブートプログラムBPが何らかの原因で書き換えられて、フラッシュメモリ21に正常に記憶されていないものと判断しS2;NO、当該ブートプログラムBPの実行を終了する。これによって、正常に記憶されていないブートプログラムが実行されることによって、当該ブートプログラムが暴走する虞を事前に回避することができる。図4に戻り、コアCPU23は、当該算出したチェックサムがフラッシュメモリ21に記憶されているブートプログラムチェックサムBPCと一致する場合には、ブートプログラムBPが書き換えられることなく、フラッシュメモリ21に正常に記憶されているものと判断しS2;YES、割込レジスタ25にリセットフラグRFLGが記憶されているか否かを確認するS3。割込レジスタ25にリセットフラグRFLGが記憶されていない場合S3;NO、コアCPU23は、上記のメインプログラムチェックサムMPCの算出方法によって、フラッシュメモリ21に記憶されているメインプログラムMPのバイナリデータを用いてチェックサムを算出する。そして、当該算出したチェックサムがフラッシュメモリ21に記憶されているメインプログラムチェックサムMPCと一致するか否かによって、メインプログラムMPがフラッシュメモリ21に正常に記憶されているか否かを判断するS4。このようにして、フラッシュメモリ21に記憶されているメインプログラムチェックサムMPCを用いて、メインプログラムMPが予め記憶されていた状態から書き換えられているか否かを判断することによって、メインプログラムMPがフラッシュメモリ21に正常に記憶されているか否かを適切に判断することができる。コアCPU23は、当該算出したチェックサムがフラッシュメモリ21に記憶されているメインプログラムチェックサムMPCと一致しない場合、メインプログラムMPがフラッシュメモリ21に正常に記憶されていないものと判断しS4;NO、フラッシュメモリ21に記憶されている書き換えプログラムWPを読み出して、書き換えプログラムWPの実行を開始するS8。コアCPU23は、書き換えプログラムWPを実行することによって、例えば、外部I/F600を介して、記憶媒体6に記憶されたメインプログラムを構成しているバイナリデータを取得しS9、当該取得したバイナリデータを用いて、上記のメインプログラムチェックサムBPCの算出方法でチェックサムを算出し、当該算出したチェックサムをRAM22に一時記憶するS10。次に、コアCPU23は、フラッシュメモリ21に記憶されているメインプログラムMPを構成しているバイナリデータを削除した後、ステップS9で取得したバイナリデータを新たなメインプログラムMPを構成しているバイナリデータとしてフラッシュメモリ21に記憶するS11。そして、コアCPU23は、フラッシュメモリ21に記憶されているメインプログラムチェックサムMPCを削除した後、ステップS10でRAM22に一時記憶したチェックサムを、新たなメインプログラムチェックサムMPCとしてフラッシュメモリ21に記憶するS12。そして、コアCPU23は、割込レジスタ25に記憶されているリセットフラグRFLGを削除した後S13、フラッシュメモリ21に記憶されているブートプログラムBPを読み出し、ブートプログラムBPの実行を開始するS1。尚、書き換えプログラムWPは、ステップS13の後、制御装置2を停止するように実装されていてもよい。このように、コアCPU23がブートプログラムBPを実行することによって、ステップS4において、メインプログラムMPがフラッシュメモリ21に正常に記憶されていないものと判断した場合にS4;NO、書き換えプログラムWPの実行を開始してS8、正常に記憶されていないメインプログラムを実行することを回避し、当該メインプログラムが暴走する虞を事前に回避することができる。また、コアCPU23が書き換えプログラムWPを実行することによって、ユーザがフラッシュメモリ21にデータを書き込むための専用冶具を用いて当該メインプログラムを書き換える等の手間をかけることなく、容易に当該メインプログラムを書き換えることができる。図4に戻り、コアCPU23は、ブートプログラムBPを実行することによって、ステップS4において、算出したチェックサムがフラッシュメモリ21に記憶されているメインプログラムチェックサムMPCと一致する場合には、メインプログラムMPがフラッシュメモリ21に正常に記憶されているものと判断するS4;YES。そして、ウォッチドッグタイマ24にクリア信号CLRを入力した後S5、フラッシュメモリ21に記憶されているメインプログラムMPを読み出し、メインプログラムMPの実行を開始するS6。その後、例えば、当該メインプログラムMPが暴走する等して、クリア信号CLRがウォッチドッグタイマ24に入力されないまま、予め定められた検出時間が経過すると、ウォッチドッグタイマ24によって、割込レジスタ25にリセットフラグRFLGが記憶されるとともに、コアCPU23に向けてリセット信号RSTが出力されるS7;YES。この場合、コアCPU23によって、フラッシュメモリ21に記憶されているブートプログラムBPが読み出されて実行されるS1。これに続いて、ステップS2において肯定の判断がなされS2;YES、ステップS3が実行された場合は、割込レジスタ25にリセットフラグRFLGが記憶されているためS3;YES、コアCPU23は、フラッシュメモリ21に記憶されている書き換えプログラムWPを読み出して、書き換えプログラムWPの実行を開始するS8。このように、コアCPU23がブートプログラムBPを実行することによって、フラッシュメモリ21に記憶されていたメインプログラムMPが暴走した場合S7;YESであっても、ユーザに手間を取らせることなく、割込レジスタ25に記憶されたリセットフラグRFLGを用いて、当該メインプログラムMPの暴走を自動的に検知することができる。そして、このように、メインプログラムMPの暴走を検知した場合には、コアCPU23が書き換えプログラムWPを実行することによって、ユーザがフラッシュメモリ21にデータを書き込むための専用冶具を用いて当該メインプログラムMPを書き換える等の手間をかけることなく、容易に当該メインプログラムMPを書き換えることができる。尚、本発明は上記実施の形態の構成に限られず種々の変形が可能である。例えば、上記実施形態では、本発明に係る制御装置を複合機1に適用する例について説明したが、これに限らず、本発明に係る制御装置は、カラー画像形成用のカラープリンタや、スキャナ装置、ファクシミリ装置、プリンタ装置及びコピー装置に適用してもよい。また、本発明に係る制御装置は、上記のようなマイクロコンピュータで構成される形態に限らず、例えば、パーソナルコンピュータで構成されていてもよい。また、上記実施形態において図1乃至図4に示した構成及び設定は単なる一例に過ぎず、本発明を当該実施形態に限定する趣旨ではない。例えば、図3に示す、ブートプログラムチェックサムBPCがフラッシュメモリ21に記憶されない構成であり、これに合わせて、ブートプログラムBPは、図4に示すステップS2の処理を実行しない簡易な構成であってもよい。また、図3に示す、メインプログラムチェックサムMPCがフラッシュメモリ21に記憶されない構成であり、これに合わせて、ブートプログラムBPは、図4に示すステップS4の処理を実行しない簡易な構成であり、また、書き換えプログラムWPは、図4に示すステップS10及びステップS12の処理を実行しない簡易な構成であってもよい。"