記録媒体に画像を形成する画像形成手段を備えた画像形成装置であって、当該画像形成装置を制御する制御手段が実行するソフトウェアを保存するソフトウェア保存手段と、前記制御手段に前記ソフトウェアのアップデートを実行させるアップデート用ソフトウェアと前記制御手段に前記ソフトウェアのアップデートに失敗した場合に当該画像形成装置を前記アップデートが可能な状態に復帰させる復帰処理を実行させる復帰用ソフトウェアとを含むアップデートソフトウェアを受信する受信手段と、前記アップデート用ソフトウェアを保存するアップデート用ソフトウェア保存手段と、前記復帰用ソフトウェアを保存する復帰用ソフトウェア保存手段と、前記復帰用ソフトウェアのバックアップ用の復帰用ソフトウェアバックアップ保存手段と、前記受信手段によって受信した前記アップデートソフトウェアの前記アップデート用ソフトウェアと前記復帰用ソフトウェアとを判別する判別手段と、前記判別手段によって判別された前記アップデート用ソフトウェアを前記アップデート用ソフトウェア保存手段に保存し、前記判別手段によって判別された前記復帰用ソフトウェアを前記復帰用ソフトウェア保存手段と前記復帰用ソフトウェアバックアップ保存手段にそれぞれ保存する保存制御手段とを有することを特徴とする画像形成装置。前記制御手段は、前記復帰用ソフトウェア保存手段に保存されている前記復帰用ソフトウェアを実行する場合、該復帰用ソフトウェアの不整合の有無を検知する手段と、該手段によって前記復帰用ソフトウェア保存手段の前記復帰用ソフトウェアに不整合が有ることを検知した場合、前記復帰用ソフトウェアバックアップ保存手段に保存されている前記復帰用ソフトウェアの実行に切り替える切替手段とを有することを特徴とする請求項1記載の画像形成装置。前記制御手段は、前記復帰用ソフトウェア保存手段に保存されている前記復帰用ソフトウェアに不整合が有ることを検知した場合、前記復帰用ソフトウェアバックアップ保存手段に保存されている前記復帰用ソフトウェアの不整合の有無を検知する手段と、該手段によって前記復帰用ソフトウェアバックアップ保存手段の前記復帰用ソフトウェアに不整合がないことを検知した場合、前記復帰用ソフトウェア保存手段に保存されている前記復帰用ソフトウェアを前記復帰用ソフトウェアバックアップ保存手段に保存されている前記復帰用ソフトウェアに書き替える書替手段とを有することを特徴とする請求項2記載の画像形成装置。前記制御手段は、前記アップデート用ソフトウェア保存手段に保存されている前記アップデート用ソフトウェアを実行する場合、該アップデート用ソフトウェアの不整合の有無を検知する手段と、該手段によって前記アップデート用ソフトウェア保存手段の前記アップデート用ソフトウェアに不整合が有ることを検知した場合、前記復帰用ソフトウェア保存手段又は前記復帰用ソフトウェアバックアップ保存手段に保存されている前記復帰用ソフトウェアを実行し、当該画像形成装置の外部から再度アップデート用ソフトウェアを取得する手段を有することを特徴とする請求項1乃至3のいずれか一項に記載の画像形成装置。しかしながら、従来の装置では、ファームウェアのアップデートを行う際に電源断などの要因によりアップデートが完了できなかった場合、ファームウェアに不整合が生じ、装置が起動しないという問題があった。この問題に対して、ホストコンピュータからファームウェアを受信する際に、2箇所の記憶領域に同じファームウェアを交互に書き込むことにより、いずれか一方は正常なファームウェアであるようにする方法や、ファームウェアの更新のみ実施可能な復帰用ファームウェアを独立させ、アップデートに失敗した場合でも復帰用ファームウェアを起動させ、再度ファームウェアのアップデートを可能な状態にする方法がある。しかし、ファームウェアを二重に記録する方法はファームウェアを保存する領域がファームウェア単体と比べて二倍必要になるという問題があり、復帰用ファームウェアを用意する場合は通常動作用のファームウェアを別途作成する必要があるという新たな問題があった。この発明は上記の点に鑑みてなされたものであり、プログラムのアップデートの際に要するメモリ容量を削減できるようにすることを目的とする。この発明は上記の目的を達成するため、記録媒体に画像を形成する画像形成手段を備えた画像形成装置であって、当該画像形成装置を制御する制御手段が実行するソフトウェアを保存するソフトウェア保存手段と、上記制御手段に上記ソフトウェアのアップデートを実行させるアップデート用ソフトウェアと上記制御手段に上記ソフトウェアのアップデートに失敗した場合に当該画像形成装置を上記アップデートが可能な状態に復帰させる復帰処理を実行させる復帰用ソフトウェアとを含むアップデートソフトウェアを受信する受信手段と、上記アップデート用ソフトウェアを保存するアップデート用ソフトウェア保存手段と、上記復帰用ソフトウェアを保存する復帰用ソフトウェア保存手段と、上記復帰用ソフトウェアのバックアップ用の復帰用ソフトウェアバックアップ保存手段と、上記受信手段によって受信した上記アップデートソフトウェアの上記アップデート用ソフトウェアと上記復帰用ソフトウェアとを判別する判別手段と、上記判別手段によって判別された上記アップデート用ソフトウェアを上記アップデート用ソフトウェア保存手段に保存し、上記判別手段によって判別された上記復帰用ソフトウェアを上記復帰用ソフトウェア保存手段と上記復帰用ソフトウェアバックアップ保存手段にそれぞれ保存する保存制御手段を有する画像形成装置を提供する。この発明による画像形成装置は、プログラムのアップデートの際に要するメモリ容量を削減することができる。以下、この発明を実施するための形態を図面に基づいて具体的に説明する。図1は、この発明の一実施形態であるプリンタの機能構成を示すブロック図である。このプリンタ1は、インクジェット方式のプリンタ、電子写真方式のプリンタ等の画像形成装置であり、コントローラ部2、ROM3、RAM4、プロッタエンジン部5、操作パネル6、ユーザ通知部7、ホストインタフェースIF部8、内部記憶部9、及び外部記憶部インタフェースIF部10を備えている。コントローラ部2は、CPUによって実現され、RAM4を作業領域としてROM3又は内部記憶部9に記憶されたファームウェアを実行することにより、このプリンタ1の3~10の各部を含む全体の制御を司り、アップデート処理部20とブートboot処理部22の各機能も実現する。すなわち、このコントローラ部2は、このプリンタ1当該画像形成装置を制御する制御手段の機能を果たす。また、上記アップデート処理部20はアップデートデータ判別処理部21の機能を有し、上記ブート処理部22は起動切り替え処理部23とリカバリ処理部24の各機能も有する。上記20~24の各部の詳細については後述する。プロッタエンジン部5は、コントローラ部2から受け取った画像データに基いて用紙等の記録媒体に印刷する。すなわち、記録媒体に画像を形成する画像生成手段の機能を果たす。操作パネル6は、ユーザがプリンタ1に対して各種の操作情報を入力する入力装置であり、ユーザから入力された操作情報をコントローラ部2へ送る。ユーザ通知部7は、コントローラ部2から受け取った表示データに基いてユーザにプリンタ1における各種の作業情報を表示する表示装置である。ホストIF部8は、このプリンタ1とケーブルで直接に通信可能に接続、又はローカルエリアネットワークやインターネット等のネットワークを介して通信可能に接続された情報処理装置であるホストコンピュータ11との通信制御を司る。このホストコンピュータ11は、CPU、ROM及びRAMからなるマイクロコンピュータによって実現され、プリンタ1に対して画像データの印刷を要求し、ファームウェアのアップデートのためのアップデートソフトウェアを送信する。内部記憶部9は、ハードディスクドライブHDD、EEPROM、NVRAM等のプリンタ1の本体に対して脱着不可で、コントローラ部2が読み書き可能な不揮発性の記憶手段であり、コントローラ部2が実行するファームウェア、そのファームウェアをアップデートするアップデートソフトウェアを含む各種のプログラムを記憶する。上記アップデートソフトウェアは、コントローラ部2に上記ファームウェアのアップデートを実行させるアップデート用ソフトウェアと、コントローラ部2に上記ファームウェアのアップデートに失敗した場合にプリンタ1を上記アップデートが可能な状態に復帰させる復帰処理を実行させる復帰用ソフトウェアとを含んでいる。また、上記ROM3と上記内部記憶部9は、プリンタ1を制御する制御手段であるコントローラ部2が実行するソフトウェアであるファームウェアを保存するソフトウェア保存手段の機能を果たす。さらに、上記ROM3と上記内部記憶部9は、上記アップデート用ソフトウェアを保存するアップデート用ソフトウェア保存手段と、上記復帰用ソフトウェアを保存する復帰用ソフトウェア保存手段と、上記復帰用ソフトウェアのバックアップ用の復帰用ソフトウェアバックアップ保存手段の各手段の機能も果たす。外部記憶部IF部10は、コントローラ部2と外部記憶部12とのデータのやり取りの通信制御を司る。外部記憶部12は、IC-カードCard装置、USBメモリとSDカード装置等のフラッシュメモリ等のプリンタ1の本体に対して脱着可能で、コントローラ部2が外部記憶部IF部10を介して読み書き可能な不揮発性の記憶手段であり、ファームウェアのアップデートソフトウェアを含む各種のプログラムやデータを記憶する。上記ホストIF部8と上記外部記憶部IF部10は、アップデートソフトウェアを受信する受信手段の機能を果たす。上記コントローラ部2のアップデート処理部20は、上記ROM3又は上記内部記憶部9のファームウェアをアップデートソフトウェアによってアップデートする処理を実行する。上記アップデートデータ判別処理部21は、アップデートソフトウェア内のアップデート用ソフトウェアと復帰用ソフトウェアとを判別する処理を実行する。すなわち、上記ホストIF部8又は上記外部記憶部IF部10によって受信したアップデートソフトウェアのアップデート用ソフトウェアと復帰用ソフトウェアとを判別する判別手段の機能を果たす。そして、コントローラ部2は、アップデートソフトウェアを受信した場合、上記アップデートデータ判別処理部21の判別結果に基いて、アップデートソフトウェアのアップデート用ソフトウェアと復帰用ソフトウェアをそれぞれ分けて上記ROM3又は上記内部記憶部9に記憶する処理を実行する。すなわち、上記アップデートデータ判別処理部21によって判別されたアップデート用ソフトウェアを上記アップデート用ソフトウェア保存手段に保存し、上記復帰用ソフトウェアを上記復帰用ソフトウェア保存手段と上記復帰用ソフトウェアバックアップ保存手段にそれぞれ保存する保存制御手段の機能を果たす。上記ブート処理部22は、アップデート時以外の起動時には上記ROM3又は上記内部記憶部9に保存されているファームウェアに不整合が有るか否かをチェックし、不整合がない場合はRAM4に展開して実行し、不整合が有った場合は、復帰用ソフトウェアを起動する処理を実行する。その際、上記復帰用ソフトウェア保存手段に保存されている復帰用ソフトウェアを実行する場合、その復帰用ソフトウェアの不整合の有無を検知する。また、上記ブート処理部22は、上記復帰用ソフトウェア保存手段に保存されている復帰用ソフトウェアに不整合が有ることを検知した場合、上記復帰用ソフトウェアバックアップ保存手段に保存されている復帰用ソフトウェアの不整合の有無を検知する。さらに、上記ブート処理部22は、上記アップデート用ソフトウェア保存手段に保存されているアップデート用ソフトウェアを実行する場合、そのアップデート用ソフトウェアの不整合の有無を検知する。上記起動切り替え処理部23は、上記ブート処理部22が上記復帰用ソフトウェア保存手段の復帰用ソフトウェアに不整合が有ることを検知した場合、上記復帰用ソフトウェアバックアップ保存手段に保存されている復帰用ソフトウェアの実行に切り替える。また、上記復帰用ソフトウェアバックアップ保存手段の復帰用ソフトウェアに不整合が有ることを検知した場合、上記復帰用ソフトウェア保存手段に保存されている復帰用ソフトウェアの実行に切り替える。すなわち、切替手段の機能を果たす。上記リカバリ処理部24は、上記ブート処理部22が上記復帰用ソフトウェアバックアップ保存手段の復帰用ソフトウェアに不整合がないことを検知した場合、上記復帰用ソフトウェア保存手段に保存されている復帰用ソフトウェアを上記復帰用ソフトウェアバックアップ保存手段に保存されている復帰用ソフトウェアに書き替える。また、上記復帰用ソフトウェア保存手段の復帰用ソフトウェアに不整合がないことを検知した場合、上記復帰用ソフトウェアバックアップ保存手段に保存されている復帰用ソフトウェアを上記復帰用ソフトウェア保存手段に保存されている復帰用ソフトウェアに書き替える。すなわち、書替手段の機能を果たす。また、上記リカバリ処理部24は、上記ブート処理部22が上記アップデート用ソフトウェア保存手段のアップデート用ソフトウェアに不整合が有ることを検知した場合、上記復帰用ソフトウェア保存手段又は上記復帰用ソフトウェアバックアップ保存手段に保存されている復帰用ソフトウェアを実行し、プリンタ1の外部であるホストコンピュータ11又は外部記憶部12から再度アップデート用ソフトウェアを取得する。次に、上記プリンタ1の上記ROM3及び上記内部記憶部9における上記ファームウェア、上記アップデート用ソフトウェア及び上記復帰用ソフトウェアの記憶領域について図2によって説明する。図2は、図1に示したROM3及び内部記憶部9のフォーマット例を示す説明図である。上記ROM3及び上記内部記憶部9は、ファームウェアを保存するファームウェア保存領域部30と、アップデート用ソフトウェアを保存するアップデート用ソフトウェア保存領域部31と、復帰用ソフトウェアを保存する復帰用ソフトウェア保存領域部32と、バックアップ用として復帰用ソフトウェアを別に保存する復帰用ソフトウェアバックアップ保存領域部33とを備えている。このように、外部から受信したアップデートソフトウェアのアップデート用ソフトウェアと復帰用ソフトウェアをそれぞれ分けて異なる領域に保存し、復帰用ソフトウェアについてはバックアップ用にさらに異なる領域に保存する。すなわち、復帰用ソフトウェアについてはアップデートに失敗した場合でもプリンタ1を確実に起動できるように復帰用ソフトウェアを二重に記憶する。また、二重に保存するのは、復帰用ソフトウェアのみなので、プログラムのアップデートの際に要するメモリ容量を削減することができる。次に、プリンタ1におけるアップデートソフトウェア受信時のアップデート処理について図3乃至図5によって説明する。図3は、図1に示したプリンタ1におけるアップデートソフトウェア受信時のアップデート処理を示すフローチャート図である。図4は、アップデートソフトウェアのフォーマット例を示す説明図である。図5は、図4に示したアップデートソフトウェアのアップデート用ソフトウェア及び復帰用ソフトウェアのそれぞれのオフセット位置とデータサイズの一例を示す図である。この処理では、アップデートソフトウェアを図1の内部記憶部9に保存する場合を説明する。図1のコントローラ部2は、ホストIF部8によってホストコンピュータ11からアップデートソフトウェアを受信した場合、又はプリンタ1に外部記憶部12が装着され、外部記憶部IF部10を介して外部記憶部12内にアップデートソフトウェアが保存されていることを検知し、外部記憶部IF部10を介してアップデートソフトウェアを読み出した場合、例えば、RAM4に一端保存してアップデート処理部20にアップデート処理を実行させる。ステップ図3中Sで示す1で、アップデートデータ判別処理部21が、アップデートソフトウェアのヘッダデータを読み込み、ステップ2で、ヘッダデータからアップデート用ソフトウェアと復帰用ソフトウェアのオフセット位置とデータサイズを取得して、ステップ3で、アップデート用ソフトウェアと復帰用ソフトウェアを判別する。例えば、アップデートソフトウェアの構成が、図4に示すフォーマットの場合に、上記取得したオフセット位置とデータサイズとからアップデートソフトウェア中のアップデート用ソフトウェアと復帰用ソフトウェアを判別する処理例を説明する。図4に示すように、アップデートソフトウェア全体の容量におけるオフセット位置0x0000~0x0FFFがヘッダデータ、オフセット位置0x1000~0x2FFFが復帰用ソフトウェア、オフセット位置0x3000~0x6000がアップデート用ソフトウェアからなる場合で説明する。ヘッダデータには、図5に示す復帰用ソフトウェアとアップデート用ソフトウェアのそれぞれのオフセット位置とデータサイズが格納されているので、アップデータデータ判別処理部21は、ヘッダデータを参照することにより、復帰用ソフトウェアのオフセット位置0x1000とデータサイズ0x2000と、アップデート用ソフトウェアのオフセット位置0x3000とデータサイズ0x3000を取得し、アップデート用ソフトウェアと復帰用ソフトウェアを容易に判別することができる。次に、ステップ4で、アップデート処理部20が、アップデートデータ判別処理部21の判別結果に基いて復帰用ソフトウェアを読み込み、復帰用ソフトウェアの読み込み完了か否かを判断し、復帰用ソフトウェアの読み込み完了でなければNの場合、ステップ5で、アップデート処理部20は、復帰用ソフトウェアを読み込み、ステップ6で、内部記憶部9の図2に示した復帰用ソフトウェア保存領域部32に復帰用ソフトウェアを書き込み、ステップ4へ戻る。そして、ステップ4の判断で復帰用ソフトウェアの読み込み完了ならYの場合ステップ7へ進む。次に、ステップ7で、アップデート処理部20が、アップデートデータ判別処理部21の判別結果に基いてアップデート用ソフトウェアを読み込み、アップデート用ソフトウェアの読み込み完了か否かを判断し、アップデート用ソフトウェアの読み込み完了でなければNの場合、ステップ8で、アップデート処理部20は、アップデート用ソフトウェアを読み込み、ステップ9で、内部記憶部9の図2に示したアップデート用ソフトウェア保存領域部31にアップデート用ソフトウェアを書き込み、ステップ7へ戻る。そして、ステップ7の判断でアップデート用ソフトウェアの読み込み完了ならYの場合ステップ10へ進む。ステップ10では、アップデート処理部20が、図2の復帰用ソフトウェア保存領域部32の復帰用ソフトウェアを復帰用ソフトウェアバックアップ保存領域部33にも書き込み、この処理を終了する。この処理後、アップデート処理部20は、内部記憶部9のアップデート用ソフトウェア保存領域部31に保存されたアップデート用ソフトウェアを実行し、図2のファームウェア保存領域部30に保存されているファームウェアをアップデートする。このように、ファームウェアをアップデートする場合、アップデート用ソフトウェアと復帰用ソフトウェアをそれぞれ分けて異なる領域に保存し、復帰用ソフトウェアについてはバックアップ用にさらに異なる領域に保存することにより、アップデートに失敗した場合でも復帰用ソフトウェアを実行してプリンタ1を起動させることができる。また、復帰用ソフトウェアについては二重に記憶するので、一方が起動できない場合でももう一方を起動させてプリンタ1を確実に起動させることができる。なお、上述の処理では、内部記憶部9に、復帰用ソフトウェア、アップデート用ソフトウェア、及び復帰用ソフトウェアのバックアップの順で書き込む場合を説明したが、この順に限らず、アップデート用ソフトウェア、復帰用ソフトウェア、及び復帰用ソフトウェアのバックアップの順で書き込むようにしても良いし、復帰用ソフトウェア、復帰用ソフトウェアのバックアップ、及びアップデート用ソフトウェアの順で書き込むようにしても良い。次に、プリンタ1におけるアップデートに失敗した場合の処理について図6及び図7によって説明する。図6は、図1に示したプリンタ1におけるアップデートに失敗した場合の処理を示すフローチャート図である。図7は、図4に示したアップデートソフトウェアのアップデート用ソフトウェア及び復帰用ソフトウェアのそれぞれのアドレスとデータサイズの一例を示す図である。図6に示した処理は、図1のブート処理部22、起動切り替え処理部23、及びリカバリ処理部24がそれぞれ担当する各ステップ図6中Sで示すの処理を実行する。なお、後述する各ステップの処理について、図6の各ステップ中では一部を省略して記載している。ステップ21では、図1のブート処理部22が、起動時のブート処理時に、チェックサムなどの方法で内部記憶部9に保存されているファームウェア上記アップデート後のファームウェアの不整合をチェックして、不整合有りを検知するとこの不整合有りの検知でアップデートの失敗と判断する、ステップ22へ進む。ステップ22では、ブート処理部22が、図2の復帰用ソフトウェア保存領域部32に保存されている復帰用ソフトウェアを実行する場合、復帰用ソフトウェア保存領域部32の復帰用ソフトウェアの不整合を検知したか否かを判断し、検知しなかった場合Nの場合はステップ25へ進み、検知した場合Yの場合はステップ23へ進む。次に、ステップ23では、起動切り替え処理部23が、復帰用ソフトウェアの読み込み先を図2の復帰用ソフトウェアバックアップ保存領域部33に切り替え、さらに、リカバリ処理部24が、復帰用ソフトウェアバックアップ保存領域部33から復帰用ソフトウェアを読み出し、図1のRAM4に展開して復帰処理を実行し、ステップ24では、復帰処理でプリンタ1が起動すると、リカバリ処理部24が、図2のアップデート用ソフトウェア保存領域部31からアップデート用ソフトウェアを読み出し、図1のRAM4に展開してアップデート処理を実行し、この処理を終了する。この処理でアップデートが成功すると、プリンタ1は通常の起動処理となり、プリンタ1の全ての機能が実行可能になる。一方、ステップ25では、ブート処理部22が、図2のアップデート用ソフトウェア保存領域部31に保存されているアップデート用ソフトウェアを実行する場合、アップデート用ソフトウェア保存領域部31のアップデート用ソフトウェアの不整合を検知したか否かを判断し、検知しなかった場合Nの場合はステップ27へ進み、検知した場合Yの場合はステップ26へ進む。ステップ26では、起動切り替え処理部23が、復帰用ソフトウェアの読み込み先を図2の復帰用ソフトウェアバックアップ保存領域部33に切り替え、リカバリ処理部24が、復帰用ソフトウェアバックアップ保存領域部33から復帰用ソフトウェアを読み出し、図1のRAM4に展開して復帰処理を実行し、プリンタ1の外部ホストコンピュータ11又は外部記憶部12から再度アップデート用ソフトウェアを取得する処理を実行し、この処理を終了する。上記再度アップデート用ソフトウェアを取得する処理では、復帰アップデートモードと呼ばれるファームウェアのアップデートデータの受信を待ち、アップデート処理のみを行うことができる。また、ステップ27では、ブート処理部22が、図2の復帰用ソフトウェアバックアップ保存領域部33に保存されている復帰用ソフトウェアを実行する場合、復帰用ソフトウェアバックアップ保存領域部33の復帰用ソフトウェアの不整合を検知したか否かを判断し、検知しなかった場合Nの場合はステップ30へ進み、検知した場合Yの場合はステップ28へ進む。ステップ28では、起動切り替え処理部23が、復帰用ソフトウェアの読み込み先を図2の復帰用ソフトウェア保存領域部32に切り替え、リカバリ処理部24が、復帰用ソフトウェア保存領域部32から復帰用ソフトウェアを読み出し、図1のRAM4に展開して復帰処理を実行する。その後、ステップ29では、復帰処理でプリンタ1が起動すると、リカバリ処理部24が、図2のアップデート用ソフトウェア保存領域部31からアップデート用ソフトウェアを読み出し、図1のRAM4に展開してアップデート処理を実行し、この処理を終了する。この処理でアップデートが成功すると、プリンタ1は通常の起動処理となり、プリンタ1の全ての機能が実行可能になる。さらに、ステップ30では、ブート処理部22が、図2のアップデート用ソフトウェア保存領域部31からアップデート用ソフトウェアを読み出し、図1のRAM4に展開してアップデート処理を実行し、この処理を終了する。上記復帰用ソフトウェアバックアップ用も含むと上記アップデート用ソフトウェアの不整合の有無のチェック方法は、図7に示した復帰用ソフトウェア保存領域部と復帰用ソフトウェアバックアップ保存領域部とアップデート用ソフトウェア保存領域部のそれぞれに保存された復帰用ソフトウェアとアップデート用ソフトウェアのアドレス及びデータサイズに基いて公知技術によって判断すると良い。その詳細な説明は省略する。次に、プリンタ1におけるアップデートに失敗した場合の他の処理例について図8によって説明する。図8は、図1に示したプリンタ1におけるアップデートに失敗した場合の処理を示すフローチャート図である。図8に示した処理は、図1のブート処理部22、起動切り替え処理部23、及びリカバリ処理部24がそれぞれ担当する各ステップ図8中Sで示すの処理を実行する。なお、後述する各ステップの処理について、図8の各ステップ中では一部を省略して記載している。ステップ41では、図1のブート処理部22が、起動時のブート処理時に、チェックサムなどの方法で内部記憶部9に保存されているファームウェア上記アップデート後のファームウェアの不整合をチェックして、不整合有りを検知すると、ステップ42へ進む。ステップ42では、ブート処理部22が、図2の復帰用ソフトウェア保存領域部32に保存されている復帰用ソフトウェアを実行する場合、復帰用ソフトウェア保存領域部32の復帰用ソフトウェアの不整合を検知したか否かを判断し、検知しなかった場合Nの場合はステップ46へ進み、検知した場合Yの場合はステップ43へ進む。ステップ43では、起動切り替え処理部23が、復帰用ソフトウェアの読み込み先を図2の復帰用ソフトウェアバックアップ保存領域部33に切り替え、リカバリ処理部24が、復帰用ソフトウェアバックアップ保存領域部33から復帰用ソフトウェアを読み出し、図1のRAM4に展開して復帰処理を実行する。その後、ステップ44では、復帰処理でプリンタ1が起動すると、リカバリ処理部24が、図2のアップデート用ソフトウェア保存領域部31からアップデート用ソフトウェアを読み出し、図1のRAM4に展開してアップデート処理を実行し、ステップ45へ進む。ステップ45では、リカバリ処理部24が、復帰用ソフトウェアバックアップ保存領域部33の復帰用ソフトウェアを復帰用ソフトウェア保存領域部32に上書きし、この処理を終了する。このようにして、復帰用ソフトウェア保存領域部32の復帰用ソフトウェアに不具合があった場合、復帰用ソフトウェアバックアップ保存領域部33の復帰用ソフトウェアによって自動的に正しい内容の復帰用ソフトウェアにすることができる。この処理でアップデートが成功すると、プリンタ1は通常の起動処理となり、プリンタ1の全ての機能が実行可能になる。一方、ステップ46では、ブート処理部22が、図2のアップデート用ソフトウェア保存領域部31に保存されているアップデート用ソフトウェアを実行する場合、アップデート用ソフトウェア保存領域部31のアップデート用ソフトウェアの不整合を検知したか否かを判断し、検知しなかった場合Nの場合はステップ48へ進み、検知した場合Yの場合はステップ47へ進む。次に、ステップ47では、起動切り替え処理部23が、復帰用ソフトウェアの読み込み先を図2の復帰用ソフトウェアバックアップ保存領域部33に切り替え、リカバリ処理部24が、復帰用ソフトウェアバックアップ保存領域部33から復帰用ソフトウェアを読み出し、図1のRAM4に展開して復帰処理を実行し、プリンタ1の外部ホストコンピュータ11又は外部記憶部12から再度アップデート用ソフトウェアを取得する処理を実行し、この処理を終了する。また、ステップ48では、ブート処理部22が、図2の復帰用ソフトウェアバックアップ保存領域部33に保存されている復帰用ソフトウェアを実行する場合、復帰用ソフトウェアバックアップ保存領域部33の復帰用ソフトウェアの不整合を検知したか否かを判断し、検知しなかった場合Nの場合はステップ52へ進み、検知した場合Yの場合はステップ49へ進む。ステップ49では、起動切り替え処理部23が、復帰用ソフトウェアの読み込み先を図2の復帰用ソフトウェア保存領域部32に切り替え、リカバリ処理部24が、復帰用ソフトウェア保存領域部32から復帰用ソフトウェアを読み出し、図1のRAM4に展開して復帰処理を実行する。その後、ステップ50では、復帰処理でプリンタ1が起動すると、リカバリ処理部24が、図2のアップデート用ソフトウェア保存領域部31からアップデート用ソフトウェアを読み出し、図1のRAM4に展開してアップデート処理を実行し、ステップ51へ進む。ステップ51では、リカバリ処理部24が、復帰用ソフトウェア保存領域部32の復帰用ソフトウェアを復帰用ソフトウェアバックアップ保存領域部33に上書きし、この処理を終了する。このようにして、復帰用ソフトウェアバックアップ保存領域部33の復帰用ソフトウェアに不具合があった場合、復帰用ソフトウェア保存領域部32の復帰用ソフトウェアによって自動的に正しい内容の復帰用ソフトウェアにすることができる。この処理でアップデートが成功すると、プリンタ1は通常の起動処理となり、プリンタ1の全ての機能が実行可能になる。さらに、ステップ52では、ブート処理部22が、図2のアップデート用ソフトウェア保存領域部31からアップデート用ソフトウェアを読み出し、図1のRAM4に展開してアップデート処理を実行し、この処理を終了する。このようにして、図1のリカバリ処理部24は不整合が生じた方の復帰用ソフトウェアを正常な復帰用ソフトウェアによって上書きして自動的に訂正することができる。なお、上述の処理では、アップデートソフトウェアを上記内部記憶部9に保存する場合を説明したが、上記ROM3に保存する場合も上述と同様の処理で実施することができる。また、アップデートソフトウェアのアップデート用ソフトウェアと復帰用ソフトウェアをROM3と内部記憶部9の異なる記憶媒体上に分けて記憶するようにしてもよい。例えば、復帰用ソフトウェアをROM3と内部記憶部9にそれぞれ記憶するようにすれば、記憶媒体の不具合で一方が読み出せなくなった場合でも、もう一方から読み出して復帰処理を実行することができる。この実施例のプリンタ1によれば、二重に保存するのは、復帰用ソフトウェアのみなので、プログラムのアップデートの際に要するメモリ容量を削減することができる。また、アップデートに失敗した場合にプリンタ1の起動と再度アップデートするための専用のソフトウェアを作成してプリンタ1に取得させる必要がなく、バックアップ時の復旧が確実にできる。さらに、アップデートに失敗した時のみに使用する復帰アップデート用プログラムを作成しなくて済み、ソフトウェアの開発の負担を低減することができる。さらにまた、アップデートに失敗した時のみに使用する復帰アップデート用プログラムをファームウェアアップデート用データに組み込まなくてもよいので、アップデートソフトウェアの容量を削減することができる。この実施形態の各ソフトウェアは、コンピュータに各種デバイスを制御させ、上述したプリンタ1の印刷機能を実現させるためのプログラムとして構成することができる。このようなプログラムは、予めプリンタ1のメモリに記憶させておく他、記録媒体であるCD、あるいはフレキシブルディスク、SRAM、EEPROM、メモリカード等の不揮発性記録媒体に記録したり、ネットワークを介してダウンロードできるようにしたりして提供することもできる。そして、そのプログラムをインストールしてCPUに実行させるか、CPUにメモリあるいはダウンロードサーバからこのプログラムを取得させて実行させることにより、上述した実施形態のプリンタ1の各機能を実現させることができる。また、以上説明してきた実施形態の構成は、相互に矛盾しない限り任意に組み合わせて実施可能であることは勿論である。以上で実施形態の説明を終了するが、この発明において、各部の具体的な構成、処理の内容、データの形式等は、実施形態で説明したものに限るものではない。また、上述の実施形態では、この発明をプリンタに適用した例について説明した。しかし、この発明は、画像形成機能を備えたものならばファクシミリ装置、複写装置、並びに複合機等の任意の画像形成装置に適用可能である。