(57)【特許請求の範囲】
【請求項１】
転送されるプログラムを、読み書き可能であって、電源を供給しなくても、記憶している情報を保持することが可能な不揮発性メモリに記憶する記憶手段と、
前記記憶手段に記憶されるプログラムを読み出して実行する実行手段と、
接続される機器を認識する認識手段と
を含み、
前記実行手段は、前記記憶手段へのプログラムの転送に連続して当該記憶手段に記憶されるプログラムを読み出して実行する第１の手順と、当該記憶手段へのプログラムの転送に連続せず既に当該記憶手段に記憶されているプログラムを読み出して実行する第２の手順と、を有し、前記認識手段にて接続される機器の削減が認識された場合に、当該第１の手順を実行することを特徴とする情報処理装置。
【請求項２】
前記実行手段は、前記認識手段にて接続される機器の追加が認識された場合に、前記第１の手順を実行することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記記憶手段に転送されるプログラムを圧縮した状態で格納する格納手段をさらに含み、
前記実行手段は、前記格納手段から圧縮されたプログラムを読み出し且つ展開してから前記記憶手段に記憶させることを特徴とする請求項１または２記載の情報処理装置。
【請求項４】
前記不揮発性メモリが、ＭＲＡＭ、ＦｅＲＡＭ、ＰＲＡＭ、ＲｅＲＡＭのいずれかであることを特徴とする請求項１乃至３のいずれか１項記載の情報処理装置。
【請求項５】
前記実行手段は、前記記憶手段に記憶されるプログラムの内容に異常が検出された場合に、前記第１の手順を実行することを特徴とする請求項１乃至４のいずれか１項記載の情報処理装置。
【請求項６】
記録材に画像を形成する画像形成部と、
前記画像形成部の動作を制御する制御部とを備え、
前記制御部は、
前記画像形成部の制御に用いるために転送されてくるプログラムを、読み書き可能であって、電源を供給しなくても、記憶している情報を保持することが可能な不揮発性メモリに記憶する記憶手段と、
前記記憶手段に記憶されるプログラムを読み出して実行する実行手段と、
接続される機器を認識する認識手段と
を含み、
前記実行手段は、前記記憶手段へのプログラムの転送に連続して当該記憶手段に記憶されるプログラムを実行する第１の手順と、当該記憶手段へのプログラムの転送に連続せず既に当該記憶手段に記憶されているプログラムを読み出して実行する第２の手順と、を有し、前記認識手段にて接続される機器の削減が認識された場合に、当該第１の手順を実行することを特徴とする画像形成装置。
【請求項７】
前記実行手段は、前記認識手段にて接続される機器の追加が認識された場合に、前記第１の手順を実行することを特徴とする請求項６記載の画像形成装置。
【請求項８】
コンピュータに、
転送されるプログラムを、読み書き可能であって、電源を供給しなくても、記憶している情報を保持することが可能な不揮発性メモリに記憶させる機能と、
前記不揮発性メモリに記憶されるプログラムを読み出して実行させる機能と、
接続される機器を認識する機能と、
前記不揮発性メモリへのプログラムの転送に連続して当該不揮発性メモリに記憶されるプログラムを読み出して実行する第１の手順と、当該不揮発性メモリへのプログラムの転送に連続せず既に当該不揮発性メモリに記憶されているプログラムを読み出して実行する第２の手順を、を有し、接続される機器の削減が認識された場合に、当該第１の手順を実行させる機能と
を実現させるプログラム。
【請求項９】
接続される機器の追加が認識された場合に、前記第１の手順を実行させる機能と
をさらに実現させることを特徴とする請求項８記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、画像形成装置およびプログラムに関する。
【背景技術】
【０００２】
公報記載の従来技術として、主記憶装置の一部を構成する不揮発性記憶部に予め記憶された主記憶イメージからシステムの起動を行うとともに、不揮発性記憶部上の主記憶イメージのブロック毎に、システム運用後に初めて書き込みアクセスが発生したときに、その領域のデータを主記憶装置の他の一部を構成する読み書き可能な主記憶部にコピーし、そのコピー上で書き込みを行い、以後、コピー済の主記憶イメージの領域へのアクセスを、コピーへのアクセスに切り替えるようにした計算機システムが存在する（特許文献１参照）。
【０００３】
また、他の公報記載の従来技術として、読み書き可能な不揮発性メモリデバイスの領域を細分化するとともに、不揮発性メモリデバイスの対象領域にデータを書き込む前に、この対象領域に既に書き込まれているデータを他の領域に退避させ、さらに、不揮発性メモリデバイスにおける複数の領域にまたがるデータの書き込みが発生した場合には、これら複数の領域に既に書き込まれているデータを、他の領域に同時にバックアップさせるようにしたコンピュータ装置が存在する（特許文献２参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−０１０８９７号公報
【特許文献２】特開２００８−００４０１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、プログラムの読み出しおよび実行を伴う起動処理の高速化を図るとともに、起動処理で使用するプログラムの書き換えを可能とすることを目的とする。
【課題を解決するための手段】
【０００７】
請求項１記載の発明は、転送されるプログラムを、読み書き可能であって、電源を供給しなくても、記憶している情報を保持することが可能な不揮発性メモリに記憶する記憶手段と、前記記憶手段に記憶されるプログラムを読み出して実行する実行手段と、接続される機器を認識する認識手段とを含み、前記実行手段は、前記記憶手段へのプログラムの転送に連続して当該記憶手段に記憶されるプログラムを読み出して実行する第１の手順と、当該記憶手段へのプログラムの転送に連続せず既に当該記憶手段に記憶されているプログラムを読み出して実行する第２の手順と、を有し、前記認識手段にて接続される機器の削減が認識された場合に、当該第１の手順を実行することを特徴とする情報処理装置である。
請求項２記載の発明は、前記実行手段は、前記認識手段にて接続される機器の追加が認識された場合に、前記第１の手順を実行することを特徴とする請求項１記載の情報処理装置である。
請求項３記載の発明は、前記記憶手段に転送されるプログラムを圧縮した状態で格納する格納手段をさらに含み、前記実行手段は、前記格納手段から圧縮されたプログラムを読み出し且つ展開してから前記記憶手段に記憶させることを特徴とする請求項１または２記載の情報処理装置である。
請求項４記載の発明は、前記不揮発性メモリが、ＭＲＡＭ、ＦｅＲＡＭ、ＰＲＡＭ、ＲｅＲＡＭのいずれかであることを特徴とする請求項１乃至３のいずれか１項記載の情報処理装置である。
請求項５記載の発明は、前記実行手段は、前記記憶手段に記憶されるプログラムの内容に異常が検出された場合に、前記第１の手順を実行することを特徴とする請求項１乃至４のいずれか１項記載の情報処理装置である。
【０００９】
請求項６記載の発明は、記録材に画像を形成する画像形成部と、前記画像形成部の動作を制御する制御部とを備え、前記制御部は、前記画像形成部の制御に用いるために転送されてくるプログラムを、読み書き可能であって、電源を供給しなくても、記憶している情報を保持することが可能な不揮発性メモリに記憶する記憶手段と、前記記憶手段に記憶されるプログラムを読み出して実行する実行手段と、接続される機器を認識する認識手段とを含み、前記実行手段は、前記記憶手段へのプログラムの転送に連続して当該記憶手段に記憶されるプログラムを実行する第１の手順と、当該記憶手段へのプログラムの転送に連続せず既に当該記憶手段に記憶されているプログラムを読み出して実行する第２の手順と、を有し、前記認識手段にて接続される機器の削減が認識された場合に、当該第１の手順を実行することを特徴とする画像形成装置である。
請求項７記載の発明は、前記実行手段は、前記認識手段にて接続される機器の追加が認識された場合に、前記第１の手順を実行することを特徴とする請求項６記載の画像形成装置である。
【００１１】
請求項８記載の発明は、コンピュータに、転送されるプログラムを、読み書き可能であって、電源を供給しなくても、記憶している情報を保持することが可能な不揮発性メモリに記憶させる機能と、前記不揮発性メモリに記憶されるプログラムを読み出して実行させる機能と、接続される機器を認識する機能と、前記不揮発性メモリへのプログラムの転送に連続して当該不揮発性メモリに記憶されるプログラムを読み出して実行する第１の手順と、当該不揮発性メモリへのプログラムの転送に連続せず既に当該不揮発性メモリに記憶されているプログラムを読み出して実行する第２の手順を、を有し、接続される機器の削減が認識された場合に、当該第１の手順を実行させる機能とを実現させるプログラムである。
請求項９記載の発明は、接続される機器の追加が認識された場合に、前記第１の手順を実行させる機能とをさらに実現させることを特徴とする請求項８記載のプログラムである。
【発明の効果】
【００１２】
請求項１記載の発明によれば、本構成を有していない場合と比較して、接続される機器が削減された場合に、プログラムの読み出しおよび実行を伴う起動処理の高速化を図るとともに、起動処理で使用するプログラムの書き換えを可能とすることができる。
請求項２記載の発明によれば、本構成を有していない場合と比較して、接続される機器が追加された場合に、プログラムの読み出しおよび実行を伴う起動処理の高速化を図るとともに、起動処理で使用するプログラムの書き換えを可能とすることができる。
請求項３記載の発明によれば、本構成を有しない場合と比較して、起動処理をさらに高速化することができる。
請求項４記載の発明によれば、例えば不揮発性メモリとしてＥＥＰＲＯＭあるいはフラッシュメモリを用いた場合と比較して、不揮発性メモリからのプログラムの読み取りをより高速に行うことができる。
請求項５記載の発明によれば、本構成を有しない場合と比較して、さらに、不揮発性メモリに記憶された異常なプログラムを、正常なプログラムに修正することができる。
請求項６記載の発明によれば、本構成を有していない場合と比較して、接続される機器が削減された場合に、プログラムの読み出しおよび実行を伴う起動処理の高速化を図るとともに、起動処理で使用するプログラムの書き換えを可能とすることができる。
請求項７記載の発明によれば、本構成を有していない場合と比較して、接続される機器が追加された場合に、プログラムの読み出しおよび実行を伴う起動処理の高速化を図るとともに、起動処理で使用するプログラムの書き換えを可能とすることができる。
請求項８記載の発明によれば、本構成を有していない場合と比較して、接続される機器が削減された場合に、プログラムの読み出しおよび実行を伴う起動処理の高速化を図るとともに、起動処理で使用するプログラムの書き換えを可能とすることができる。
請求項９記載の発明によれば、本構成を有していない場合と比較して、接続される機器が追加された場合に、プログラムの読み出しおよび実行を伴う起動処理の高速化を図るとともに、起動処理で使用するプログラムの書き換えを可能とすることができる。
【図面の簡単な説明】
【００１３】
【図１】本実施の形態が適用される画像形成システムの構成の一例を示す図である。
【図２】画像形成装置に設けられた制御部の内部構成の一例を示すハードウェアブロック図である。
【図３】制御部に設けられたＣＰＵの内部構成の一例を示すハードウェアブロック図である。
【図４】メインメモリによるメモリマップの構成の一例を示す図である。
【図５】画像形成装置の起動処理を説明するためのフローチャートである。
【図６】ＩＰＬ（イニシャル・プログラム・ローダ）の実行に伴う処理の手順を説明するためのフローチャートである。
【図７】画像形成装置が初めて起動される場合（初回起動時）における、ＣＰＵ、ＲＯＭおよび不揮発性ＲＡＭの状態を説明するための図である。
【図８】装置構成に変更がない状態で、画像形成装置が２回目に起動される場合における、ＣＰＵ、ＲＯＭおよび不揮発性ＲＡＭの状態を説明するための図である。
【図９】装置構成が変更（追加）された状態で、画像形成装置が２回目に起動される場合における、ＣＰＵ、ＲＯＭおよび不揮発性ＲＡＭの状態を説明するための図である。
【図１０】装置構成が変更（削減）された状態で、画像形成装置が２回目に起動される場合における、ＣＰＵ、ＲＯＭおよび不揮発性ＲＡＭの状態を説明するための図である。
【図１１】装置構成に変更がない状態で、画像形成装置が２回目に起動される場合における、ＣＰＵ、ＲＯＭおよび不揮発性ＲＡＭの他の状態を説明するための図である。
【発明を実施するための形態】
【００１４】
以下、添付図面を参照して、本発明の実施の形態について詳細に説明する。
図１は、本実施の形態が適用される画像形成システムの構成の一例を示す図である。
この画像形成システムは、スキャン機能、プリント機能、コピー機能およびファクシミリ機能を備えた所謂複合機として動作する画像形成装置１と、画像形成装置１に接続されるネットワーク２と、ネットワーク２に接続される端末装置３と、ネットワーク２に接続されるファクシミリ装置４と、ネットワーク２に接続されるサーバ装置５とを有している。
【００１５】
ここで、ネットワーク２は、インターネット回線や電話回線等によって構成されている。また、端末装置３は、ネットワーク２を介して、画像形成装置１に画像の形成等を指示するものであり、例えばＰＣ（Personal Computer）で構成される。さらに、ファクシミリ装置４は、ネットワーク２を介して、画像形成装置１との間でファクシミリを送受信する。さらにまた、サーバ装置５は、ネットワーク２を介して、画像形成装置１との間でデータ（プログラムを含む）を送受信する。
【００１６】
また、画像形成装置１は、紙等の記録媒体に記録された画像を読み取る画像読取部１０と、紙等の記録媒体に画像を形成する画像形成部２０と、ユーザから電源のオン／オフ、スキャン機能、プリント機能、コピー機能およびファクシミリ機能を用いた動作に関連する指示を受け付けるとともに、ユーザに対してメッセージを表示するユーザインタフェース（ＵＩ）３０と、ネットワーク２を介して端末装置３、ファクシミリ装置４およびサーバ装置５との間でデータの送受信を行う送受信部４０と、これら画像読取部１０、画像形成部２０、ＵＩ３０および送受信部４０の動作を制御する制御部５０とを備えている。そして、この画像形成装置１では、画像読取部１０によってスキャン機能が実現され、画像形成部２０によってプリント機能が実現され、画像読取部１０および画像形成部２０によってコピー機能が実現され、画像読取部１０、画像形成部２０および送受信部４０によってファクシミリ機能が実現される。なお、送受信部４０は、例えばインターネット回線用のものと電話回線用のものとを、別々に設けるようにしてもかまわない。
【００１７】
図２は、図１に示す画像形成装置１に設けられた制御部５０の内部構成の一例を示すハードウェアブロック図である。
情報処理装置の一例としての制御部５０は、種々の演算を実行することによって画像形成装置１の各部を制御する実行手段あるいは認識手段の一例としてのＣＰＵ（Central Processing Unit：中央処理装置）５１と、ＣＰＵ５１に接続され、ＣＰＵ５１との間で各種データのやりとりを行うバスブリッジ５２とを備えている。制御部５０において、バスブリッジ５２には、第１のクロックでデータのやりとりを行うメモリバス５３と、第１のクロックよりも周波数が低い第２のクロックでデータのやりとりを行うＰＣＩ（Peripheral Component Interconnect）バス５４とが接続されている。
【００１８】
また、制御部５０は、ＲＯＭ（Read Only Memory）５５と、不揮発性ＲＡＭ（Random Access Memory）５６と、揮発性ＲＡＭ５７とを備えている。そして、これらＲＯＭ５５、不揮発性ＲＡＭ５６および揮発性ＲＡＭ５７は、それぞれ、メモリバス５３に接続されている。
【００１９】
さらに、制御部５０は、ＵＩ３０を制御するためのＵＩインタフェース回路（ＵＩＩＦ）６１と、画像形成部２０を制御するためのプリントインタフェース回路（プリントＩＦ）６２と、例えば画像形成が行われた記録媒体に後処理を施す後処理装置７０など、画像形成装置１に後付けで装着されるオプションユニットを制御するためのオプションインタフェース回路（オプションＩＦ）６３と、送受信部４０を制御するためのネットワークインタフェース回路（ネットワークＩＦ）６４と、ＵＳＢ（Universal Serial Bus）デバイスを制御するためのＵＳＢインタフェース回路（ＵＳＢＩＦ）６５とを備えている。そして、これらＵＩＩＦ６１、プリントＩＦ６２、オプションＩＦ６３、ネットワークＩＦ６４およびＵＳＢＩＦ６５は、それぞれ、ＰＣＩバス５４に接続されている。また、本実施の形態では、ＵＳＢＩＦ６５に対し、画像読取部１０が接続されている。なお、ＵＳＢＩＦ６５には、例えば、装着されたメモリカード８１に対しデータを読み書きするカードリーダ８０が接続されることもある。
【００２０】
そして、制御部５０は、制御部５０を構成する各部（ＣＰＵ５１等）が動作するクロックの基準となる基準クロックを生成するクロックジェネレータ５８と、ＣＰＵ５１等の動作に伴って計時を行うタイマ５９とをさらに備えている。
【００２１】
本実施の形態における制御部５０は、例えば、１チップのマイクロコントローラによって構成されている。ただし、制御部５０を、複数のチップで構成してもかまわない。
【００２２】
また、本実施の形態の制御部５０において、ＣＰＵ５１は、ＲＯＭ５５、不揮発性ＲＡＭ５６および揮発性ＲＡＭ５７に直接アクセスすることが可能となっている。以下の説明では、メモリバス５３に接続されるＲＯＭ５５、不揮発性ＲＡＭ５６および揮発性ＲＡＭ５７を、まとめて『メインメモリ』と称することがある。
【００２３】
ここで、格納手段の一例としてのＲＯＭ５５は、所謂マスクＲＯＭ、各種ＰＲＯＭ（Programmable ROM：例えばＯＴＰ  ＲＯＭ (One Time Programmable ROM)、ＵＶ−ＥＰＲＯＭ（Ultra-Violet Erasable Programmable ROM）、ＥＥＰＲＯＭ（Electrically Erasable Programmable ROM））、フラッシュメモリなどで構成されている。なお、この例では、ＲＯＭ５５として、フラッシュメモリが用いられている。
【００２４】
また、記憶手段の一例としての不揮発性ＲＡＭ５６は、ＭＲＡＭ（Magnetoresistive RAM）、ＦｅＲＡＭ（Ferroelectric RAM）、ＰＲＡＭ（Phase change RAM）、ＲｅＲＡＭ（Resistance RAM）など、電源を供給しなくても、記憶している情報を保持することが可能な不揮発性メモリによって構成されている。なお、この例では、不揮発性ＲＡＭ５６として、ＲＯＭ５５として用いられるフラッシュメモリよりも高速にデータの読み書きが可能なＭＲＡＭが用いられている。
【００２５】
さらに、揮発性ＲＡＭ５７は、ＤＲＡＭ（Dynamic RAM）やＳＲＡＭ（Static RAM）など、電源を供給しないと、記憶している情報を保持することができない揮発性メモリによって構成されている。なお、この例では、揮発性ＲＡＭ５７として、ＤＲＡＭが用いられている。
【００２６】
そして、本実施の形態では、不揮発性ＲＡＭ５６および揮発性ＲＡＭ５７が、ともに第１のクロックでデータの読み書きを行う。このため、不揮発性ＲＡＭ５６は、揮発性ＲＡＭ５７（この例ではＤＲＡＭ）と同等の読み書き性能を有していることになる。
【００２７】
図３は、図２に示す制御部５０に設けられたＣＰＵ５１の内部構成の一例を示すハードウェアブロック図である。
本実施の形態のＣＰＵ５１は、制御部５０に設けられたバスブリッジ５２と接続され、バスブリッジ５２との間で各種データのやりとりを行うバスコントロールユニット５１１と、バスコントロールユニット５１１に接続され、ＣＰＵ５１内において上述した第１のクロックよりも周波数が高い第３のクロックで各種データのやりとりを行うＣＰＵ内部バス５１２とを備えている。またＣＰＵ５１は、ＣＰＵ５１内の各部を制御する制御ユニット５１３と、読み出したプログラムにしたがって各種演算を実行する演算ユニット５１４と、演算ユニット５１４が実行するプログラムが格納されたアドレスの保持、演算ユニット５１４による演算結果の保持、さらにはメインメモリ（ＲＯＭ５５、不揮発性ＲＡＭ５６および揮発性ＲＡＭ５７）との間でデータのやりとりを行う際のアドレスの保持を行うための各種レジスタを備えたレジスタ群５１５と、演算ユニット５１４による演算結果を一時的に保持するキャッシュメモリ５１６と、ＣＰＵ５１が要求するメモリアクセスを処理するメモリ管理ユニット５１７とを備えている。
【００２８】
ここで、レジスタ群５１５は、演算ユニット５１４が次に実行するべき命令を格納するメインメモリ上のアドレスを保持するプログラムカウンタ（ＰＣ）５１５ａと、一時的にデータを退避しておくために用意するスタック領域のアドレスを保持するスタックポインタ（ＳＰ）５１５ｂと、ＣＰＵ５１の状態や演算の状態などを保持するステータスレジスタ（ＳＲ）５１５ｃと、演算やデータ転送の一次記憶などに使用されるアキュムレータ、メインメモリ上のデータにアクセスするためのアドレスを保持するアドレスレジスタ、さらにはＣＰＵ５１の動作設定の情報を保持するコントロールレジスタ等として機能する汎用レジスタ５１５ｄとを含んでいる。
【００２９】
そして、レジスタ群５１５およびキャッシュメモリ５１６は、ともに、電源を供給しないと、記憶している情報を保持することができない揮発性メモリによって構成されている。なお、この例では、レジスタ群５１５およびキャッシュメモリ５１６として、揮発性ＲＡＭ５７で用いられるＤＲＡＭよりも高速にデータの読み書きが可能なＳＲＡＭが用いられている。
【００３０】
図４は、上述したメインメモリ（ＲＯＭ５５、不揮発性ＲＡＭ５６および揮発性ＲＡＭ５７）によるメモリマップの構成の一例を示す図である。
この例では、ＲＯＭ５５にリセットベクタ領域Ａ０１および圧縮プログラム領域Ａ０２が配置され、不揮発性ＲＡＭ５６にプログラム／変数領域Ａ１１および履歴領域Ａ１２が配置され、揮発性ＲＡＭ５７にワーク領域Ａ２１およびバッファ領域Ａ２２が配置されている。また、不揮発性ＲＡＭ５６に配置される履歴領域Ａ１２は、起動フラグ領域Ａ１２ａと、構成ステータス領域Ａ１２ｂと、ログ領域Ａ１２ｃとを有している。
【００３１】
これらのうち、ＲＯＭ５５に配置されるリセットベクタ領域Ａ０１は、画像形成装置１を起動するにあたり、制御部５０においてＣＰＵ５１が実行するプログラムである、イニシャル・プログラム・ローダ（Initial Program Loader：ＩＰＬ）を格納している。また、ＲＯＭ５５に配置される圧縮プログラム領域Ａ０２は、本実施の形態の画像形成装置１に実装され得る各構成に対応したプログラムおよびこのプログラムで用いられる変数（以下では、これらを『プログラム／変数』と称する）を、構成毎にまとめて圧縮した状態で格納している。例えば図４に示す例では、圧縮プログラム領域Ａ０２に、構成Ａを動作させるためのプログラム／変数を圧縮した圧縮プログラム（構成Ａ用圧縮プログラム）、構成Ｂを動作させるためのプログラム／変数を圧縮した圧縮プログラム（構成Ｂ用圧縮プログラム）、構成Ｃを動作させるためのプログラム／変数を圧縮した圧縮プログラム（構成Ｃ用圧縮プログラム）、構成Ｄを動作させるためのプログラム／変数を圧縮した圧縮プログラム（構成Ｄ用圧縮プログラム）、…、を格納している。なお、ここでいう構成Ａ〜構成Ｄは、上述した画像読取部１０、画像形成部２０、ＵＩ３０、送受信部４０、後処理装置７０、そしてカードリーダ８０等のそれぞれに対応するものであり、画像形成装置１の本体に対し着脱可能であって、画像形成装置１に装着された場合には、単独であるいは他の構成部とともに、予め決められた機能を発揮するものである。
【００３２】
このように、本実施の形態では、実際に使用する際の画像形成装置１の構成（図１に示す画像形成装置１は後処理装置７０を備えていない）とは関係なく、この画像形成装置１に実装され得る各構成に対応した複数の圧縮プログラムを、ＲＯＭ５５に配置された圧縮プログラム領域Ａ０２に、予め格納させている。これにより、画像形成装置１の装置構成の変更に伴って、ＲＯＭ５５を交換したり、あるいは、ＲＯＭ５５に格納されるプログラムの更新を行ったりしなくてもよいようにしている。
【００３３】
次に、不揮発性ＲＡＭ５６に配置されるプログラム／変数領域Ａ１１は、上述した圧縮プログラム領域Ａ０２から読み出した圧縮プログラムを、ＣＰＵ５１が伸張することによって得たプログラム／変数を格納する。また、不揮発性ＲＡＭ５６に配置される履歴領域Ａ１２のうち、起動フラグ領域Ａ１２ａは、画像形成装置１が過去に起動されたことがあるか否かを示すフラグを格納する。ここで、起動フラグ領域Ａ１２ａには、画像形成装置１が過去に起動されている場合には「オン（１）」が格納され、画像形成装置１が過去に起動されていない場合には「オフ（０）」が格納される。さらに、不揮発性ＲＡＭ５６に配置される履歴領域Ａ１２のうち、構成ステータス領域Ａ１２ｂは、画像形成装置が前回起動された際の装置構成（以下では、『前回の装置構成』と称する）を、構成ステータスとして格納する。ここで、構成ステータス領域Ａ１２ｂには、この画像形成装置１に装着され得る各構成に対し、その構成が存在している場合には「オン（１）」が格納され、その構成が存在していない場合には「オフ（０）」が格納される。さらにまた、不揮発性ＲＡＭ５６に配置される履歴領域Ａ１２のうち、ログ領域Ａ１２ｃは、画像形成装置１が受けた指示の内容、装置構成が変更された際の内容、さらには発生したエラーの内容等を、ログデータとして格納する。
【００３４】
そして、揮発性ＲＡＭ５７に配置されるワーク領域Ａ２１は、ＣＰＵ５１によるプログラムの実行に伴って一時的に発生するデータを格納する。また、揮発性ＲＡＭ５７に配置されるバッファ領域Ａ２２は、ＣＰＵ５１によるデータ処理に伴って、画像形成装置の各構成要素に対して出力される指示（ＰＣＩバス５４を介して各ＩＦに出力されるデータ）に関するデータを格納する。
【００３５】
図５は、図１に示す画像形成装置１の起動処理を説明するためのフローチャートである。なお、この起動処理は、例えばＵＩ３０を介して画像形成装置１の電源が投入されることに伴ってＣＰＵ５１にリセット指示が入力されたとき、また、画像形成装置１の電源が投入された後に何らかの理由によりＣＰＵ５１にリセット指示が入力されたとき、などに実行される。
【００３６】
制御部５０に設けられたＣＰＵ５１がリセット指示を受け付けると（ステップ１）、ＣＰＵ５１は、自身のリセット（ＣＰＵリセット）を実行する（ステップ２）。このとき、ＣＰＵリセットに伴って、ＣＰＵ５１に設けられたレジスタ群５１５およびキャッシュメモリ５１６（ともに揮発性メモリで構成される）の記憶内容もクリアされる。また、ＣＰＵリセットに伴って、制御部５０に設けられた揮発性ＲＡＭ５７の記憶内容もクリアされる。一方、ＣＰＵリセットが実行されても、制御部５０に設けられたＲＯＭ５５および不揮発性ＲＡＭ５７の記憶内容はクリアされず、ＣＰＵリセット前の記憶内容がそのまま保持される。
【００３７】
続いて、ＣＰＵ５１は、バスブリッジ５２およびメモリバス５３を介して、ＲＯＭ５５のリセットベクタ領域Ａ０１に格納されるイニシャル・プログラム・ローダ（ＩＰＬ）を読み出すとともに、読み出したＩＰＬを実行し（ステップ３）、画像形成装置１に実装された各構成が使用可能となるように動作準備を行う。そして、画像形成装置１の動作準備が完了する（ステップ４）ことで、一連の起動処理を終了する。
【００３８】
続いて、上述したステップ３におけるＩＰＬの実行について、より詳細に説明する。
図６は、ＩＰＬの実行に伴う処理の手順を説明するためのフローチャートである。
ＩＰＬの実行に伴い、ＣＰＵ５１は、最初に、バスブリッジ５２およびＰＣＩバス５４を介して接続されている各ＩＦ（この例では、ＵＩＩＦ６１、プリントＩＦ６２、オプションＩＦ６３、ネットワークＩＦ６４およびＵＳＢＩＦ６５）を用いて、画像形成装置１の装置構成を検出する（ステップ１１）。なお、ステップ１１では、例えば各ＩＦにコネクタ等が物理的に接続されているか否かを検出するハードウェア的な手法を用いてもよいし、また、例えば各ＩＦを介して接続対象と通信が行えるか否かを検出するソフトウェア的な手法を用いてもよい。
【００３９】
続いて、ＣＰＵ５１は、不揮発性ＲＡＭ５６の履歴領域Ａ１２における起動フラグ領域Ａ１２ａから、起動フラグを読み出して取得する（ステップ１２）。そして、ＣＰＵ５１は、起動フラグがオフ（０）であるか否か、すなわち、今回の起動が初回の起動であるか否かを判断する（ステップ１３）。
【００４０】
ステップ１３において肯定の判断（Ｙｅｓ）を行った場合、すなわち、今回の起動処理が初回の起動処理であった場合、ＣＰＵ５１は、続いて、ステップ１１で検出した今回の装置構成に基づき、ＲＯＭ５５の圧縮プログラム領域Ａ０２から、今回の装置構成の中に含まれる１つの構成に対応する圧縮プログラムを読み出し（ステップ１４）、ステップ１４で読み出した圧縮プログラムを展開し（ステップ１５）、ステップ１５で圧縮プログラムを展開して得られたプログラム／変数を、不揮発性ＲＡＭ５６におけるプログラム／変数領域Ａ１１に格納する（ステップ１６）。その後、ステップ１１で検出した今回の装置構成について、全構成に対応するプログラム／変数の、プログラム／変数領域Ａ１１への格納が完了したか否かを判断する（ステップ１７）。ステップ１７において否定の判断（Ｎｏ）を行った場合は、ステップ１４に戻り、今回の装置構成における残りの構成に対応する圧縮プログラムの読み出し、読み出した圧縮プログラムの展開、そして展開によって得られたプログラム／変数の格納を続けて行う。
【００４１】
一方、ステップ１７において肯定の判断（Ｙｅｓ）を行った場合、ＣＰＵ５１は、不揮発性ＲＡＭ５６の履歴領域Ａ１２における起動フラグ領域Ａ１２ａに、起動フラグとして「オン（１）」を格納させる（ステップ１８）。続いて、ＣＰＵ５１は、ステップ１１で検出した今回の装置構成の内容を反映させた変更ログを作成し、作成した変更ログを履歴領域Ａ１２のログ領域Ａ１２ｃに格納する（ステップ１９）。さらに、ＣＰＵ５１は、ステップ１１で検出した今回の装置構成について、存在する構成を「オン（１）」、存在しない構成を「オフ（０）」とした構成ステータスを、履歴領域Ａ１２の構成ステータス領域Ａ１２ｂに格納する（ステップ２０）。そして、後述するステップ２５に進む。
【００４２】
また、上述したステップ１３において否定の判断（Ｎｏ）を行った場合、すなわち、今回の起動処理が２回目以降の起動処理であった場合、ＣＰＵ５１は、不揮発性ＲＡＭ５６の履歴領域Ａ１２における構成ステータス領域Ａ１２ｂから、構成ステータスを読み出して取得し（ステップ２１）、ステップ１１で検出した今回の装置構成が、ステップ２１で取得した構成ステータスすなわち前回の装置構成から変更されているか否かを判断する（ステップ２２）。
【００４３】
ステップ２２において否定の判断（Ｎｏ）を行った場合、すなわち、前回の装置構成と今回の装置構成とが同じである場合、ＣＰＵ５１は、不揮発性ＲＡＭ５６のプログラム／変数領域Ａ１１に格納される各プログラム／変数に対してエラーチェックを実行する（ステップ２３）。なお、ステップ２３で実行されるエラーチェックの手法としては、例えばＣＲＣ（Cyclic Redundancy Check：巡回冗長検査）が挙げられる。そして、ＣＰＵ５１は、ステップ２３でエラーチェックを実行した結果に基づき、不揮発性ＲＡＭ５６のプログラム／変数領域Ａ１１に格納される各プログラム／変数においてエラーが発生しているか否かを、プログラム毎に判断する（ステップ２４）。
【００４４】
ステップ２４において否定の判断（Ｎｏ）を行った場合、および、上述したステップ２０における処理を行った後、ＣＰＵ５１は、不揮発性ＲＡＭ５６のプログラム／変数領域Ａ１１に格納された各プログラム／変数を用いて処理を行うことにより、画像形成装置１の初期設定を行い（ステップ２５）、ＩＰＬの実行を完了する。
【００４５】
一方、上述したステップ２２において肯定の判断（Ｙｅｓ）を行った場合、すなわち、前回の装置構成と今回の装置構成とが相違していた場合、ＣＰＵ５１は、前回の装置構成から今回の装置構成に至る変更内容を反映させた変更ログを作成し、作成した変更ログを履歴領域Ａ１２のログ領域Ａ１２ｃに格納する（ステップ２６）。続いて、ＣＰＵ５１は、起動フラグをリセットし（ステップ２７）、不揮発性ＲＡＭ５６の履歴領域Ａ１２における起動フラグ領域Ａ１２ａに、起動フラグとして「オフ（０）」を格納させた状態で、ステップ１４に移行する。
【００４６】
これにより、前回の起動処理と今回の起動処理とにおいて装置構成に変更があった場合は、ステップ１１で検出した今回の装置構成に基づき、各構成に対応するプログラム／変数が、再度、不揮発性ＲＡＭ５６のプログラム／変数領域Ａ１１に書き込まれる。このとき、新たに書き込まれるプログラム／変数は、今回の起動処理よりも前の起動処理において、プログラム／変数領域Ａ１１に既に書き込まれていたプログラム／変数に上書きされる。
【００４７】
他方、上述したステップ２４において肯定の判断を行った場合、すなわち、不揮発性ＲＡＭ５６のプログラム／変数領域Ａ１１に格納されるいずれかのプログラム／変数においてエラーが発生した場合、ＣＰＵ５１は、どのプログラムにおいてエラーが発生しているのかを反映させたエラーログを作成し、作成したエラーログを履歴領域Ａ１２のログ領域Ａ１２ｃに格納する（ステップ２８）。続いて、ＣＰＵ５１は、起動フラグをリセットし（ステップ２９）、不揮発性ＲＡＭ５６の履歴領域Ａ１２における起動フラグ領域Ａ１２ａに、起動フラグとして「オフ（０）」を格納させた状態で、ステップ１４に移行する。
【００４８】
これにより、今回の起動処理よりも前の起動処理において不揮発性ＲＡＭ５６のプログラム／変数領域Ａ１１に記憶されていたプログラム／変数にエラー（異常）が生じていた場合は、ステップ１１で検出した今回の装置構成に基づき、各構成に対応するプログラム／変数が、再度、不揮発性ＲＡＭ５６のプログラム／変数領域Ａ１１に書き込まれる。このとき、新たに書き込まれるプログラム／変数は、今回の起動処理よりも前の起動処理において、プログラム／変数領域Ａ１１に既に書き込まれていたプログラム／変数に上書きされる。
【００４９】
次に、図６に示すＩＰＬの実行に伴う処理の手順について、具体的に例を挙げながら説明する。
【００５０】
＜最初の起動＞
図７は、画像形成装置１が初めて起動される場合（初回起動時）における、ＣＰＵ５１、ＲＯＭ５５および不揮発性ＲＡＭ５６の状態を説明するための図である。ここで、図７（ａ）はＩＰＬの実行中における状態を例示しており、図７（ｂ）はＩＰＬの実行が完了した状態を例示している。なお、ここでは、初回起動時において、構成Ａ、構成Ｂおよび構成Ｃが接続されているものとする。
【００５１】
図７（ａ）に示すように、初回の起動が開始される前の不揮発性ＲＡＭ５６において、起動フラグ領域Ａ１２ａには起動フラグ（Ｆｌａｇ）として「０」が格納されており、構成ステータス領域Ａ１２ｂには構成ステータスとして、「Ａ＝Ｂ＝Ｃ＝Ｄ＝０」が格納されている。また、図７（ａ）に示すように、初回の起動が開始される前の不揮発性ＲＡＭ５６において、プログラム／変数領域Ａ１１およびログ領域Ａ１２ｃは、ともに空の状態となっている。
【００５２】
ＣＰＵ５１は、ステップ１１において、図７（ａ）に示すように、構成Ａ、構成Ｂおよび構成Ｃを検出する（Ａ＝Ｂ＝Ｃ＝１、Ｄ＝０）。また、ＣＰＵ５１は、ステップ１２において、起動フラグ領域１２ａから起動フラグとして「０」を取得する。これにより、ＣＰＵ５１は、ステップ１３において肯定の判断を行う。
【００５３】
続いて、ＣＰＵ５１は、ステップ１１で検出した今回の構成（Ａ＝Ｂ＝Ｃ＝１、Ｄ＝０）に基づき、ＲＯＭ５５に配置された圧縮プログラム領域Ａ０２から、構成Ａに対応する構成Ａ用圧縮プログラム（図７（ａ）では「Ａ（圧縮）」）を読み出し、読み出した構成Ａ用圧縮プログラムを展開し、展開によって得られた構成Ａ用のプログラム／変数を不揮発性ＲＡＭ５６に配置されたプログラム／変数領域Ａ１１に格納する（ステップ１４〜ステップ１６）。次に、ＣＰＵ５１は、ステップ１１で検出した今回の構成に基づき、ＲＯＭ５５に配置された圧縮プログラム領域Ａ０２から、構成Ｂに対応する構成Ｂ用圧縮プログラム（図７（ａ）では「Ｂ（圧縮）」）を読み出し、読み出した構成Ｂ用圧縮プログラムを展開し、展開によって得られた構成Ｂ用のプログラム/変数を不揮発性ＲＡＭ５６に配置されたプログラム／変数領域Ａ１１に格納する（ステップ１４〜ステップ１６）。続いて、ＣＰＵ５１は、ステップ１１で検出した今回の構成に基づき、ＲＯＭ５５に配置された圧縮プログラム領域Ａ０２から、構成Ｃに対応する構成Ｃ用圧縮プログラム（図７（ａ）では「Ｃ（圧縮）」）を読み出し、読み出した構成Ｃ用圧縮プログラムを展開し、展開によって得られた構成Ｃ用のプログラム／変数を不揮発性ＲＡＭ５６に配置されたプログラム／変数領域Ａ１１に格納する（ステップ１４〜ステップ１６）。
【００５４】
以上の手順により、不揮発性ＲＡＭ５６に配置されたプログラム／変数領域Ａ１１には、図７（ｂ）に示すように、構成Ａ用のプログラム／変数（図７（ｂ）では「Ａ（展開）」）、構成Ｂ用のプログラム／変数（図７（ｂ）では「Ｂ（展開）」）、および構成Ｃ用のプログラム／変数（図７（ｂ）では「Ｃ（展開）」）が、それぞれ格納されることになる。
【００５５】
その後、ＣＰＵ５１は，ステップ１８において、図７（ｂ）に示すように、不揮発性ＲＡＭ５６に配置された起動フラグ領域Ａ１２ａに起動フラグとして「１」を格納し、また、ステップ１９において、不揮発性ＲＡＭ５６に配置されたログ領域Ａ１２ｃに変更ログ（履歴）を格納し、さらに、ステップ２０において、不揮発性ＲＡＭ５６に配置された構成ステータス領域Ａ１２ｂに「Ａ＝Ｂ＝Ｃ＝１、Ｄ＝０」を格納する。
【００５６】
そして、ＣＰＵ５１は、ステップ２５において、プログラム／変数領域Ａ１１に格納された構成Ａ用のプログラム、構成Ｂ用のプログラムおよび構成Ｃ用のプログラムを順次実行することで初期設定を行い、その結果、画像形成装置１において構成Ａ、構成Ｂおよび構成Ｃが使用可能な状態となる。
【００５７】
＜２回目以降の起動：その１＞
図８は、図７に示す状態（構成Ａ、構成Ｂおよび構成Ｃを備えた状態）で画像形成装置１が初回起動された後、装置構成の変更がない状態で、２回目に起動される場合におけるＣＰＵ５１、ＲＯＭ５５および不揮発性ＲＡＭ５６の状態を説明するための図である。ここで、図８（ａ）はＩＰＬの実行中における状態を例示しており、図８（ｂ）はＩＰＬの実行が完了した状態を例示している。
【００５８】
図８（ａ）に示すように、２回目の起動が開始される前の不揮発性ＲＡＭ５６において、起動フラグ領域Ａ１２ａには、図７に示す初回の起動に伴い起動フラグとして「１」が格納されており、構成ステータス領域Ａ１２ｂには、図７に示す初回の起動に伴い構成ステータスとして「Ａ＝Ｂ＝Ｃ＝１、Ｄ＝０」が格納されている。また、図８（ａ）に示すように、２回目の起動が開始される前の不揮発性ＲＡＭ５６において、プログラム／変数領域Ａ１１には、図７に示す初回の起動に伴い構成Ａ用のプログラム／変数、構成Ｂ用のプログラム／変数および構成Ｃ用のプログラム／変数が格納され、ログ領域Ａ１２ｃには、図７に示す初回の起動に伴い変更ログが格納されている。
【００５９】
ＣＰＵ５１は、ステップ１１において、図８（ａ）に示すように、構成Ａ、構成Ｂおよび構成Ｃを検出する（Ａ＝Ｂ＝Ｃ＝１、Ｄ＝０）。また、ＣＰＵ５１は、ステップ１２において、起動フラグ領域Ａ１２ａから起動フラグとして「１」を取得する。これにより、ＣＰＵ５１は、ステップ１３において否定の判断を行う。
【００６０】
続いて、ＣＰＵ５１は、ステップ２１において、不揮発性ＲＡＭ５６に配置された構成ステータス領域Ａ１２ｂから、前回起動時（この例では初回起動時）の構成ステータス（Ａ＝Ｂ＝Ｃ＝１、Ｄ＝０）を取得する。そして、ＣＰＵ５１は、ステップ１１で検出した今回の構成とステップ２１で取得した前回の構成とが一致することから、ステップ２２において否定の判断を行う。
【００６１】
そして、ＣＰＵ５１は、ステップ２３において、プログラム／変数領域Ａ１１に格納された構成Ａ用のプログラム／変数、構成Ｂ用のプログラム／変数および構成Ｃ用のプログラム／変数について順次エラーチェックを実行する。なお、この例では、エラーチェックの結果、すべてのプログラム／変数においてエラーが発生しなかったことにより、ＣＰＵ５１が、ステップ２４において肯定の判断を行っているものとする。
【００６２】
その後、ＣＰＵ５１は、ステップ２５において、プログラム／変数領域Ａ１１に格納された構成Ａ用のプログラム、構成Ｂ用のプログラムおよび構成Ｃ用のプログラムを順次実行する初期設定を行い、その結果、画像形成装置１において構成Ａ、構成Ｂおよび構成Ｃが使用可能な状態となる。
【００６３】
このように、今回の構成が前回の構成から変更されていない場合は、起動時に各構成に対応する圧縮プログラムの読み出し、展開および格納を行わずに、前回までの起動において、不揮発性ＲＡＭ５６に配置されたプログラム／変数領域Ａ１１に既に格納されている各プログラムをそのまま実行することで、起動処理にかかる時間の短縮化を図る。
【００６４】
＜２回目以降の起動：その２＞
図９は、図７に示す状態（構成Ａ、構成Ｂおよび構成Ｃを備えた状態）で画像形成装置１が初回起動された後、構成Ａ〜Ｃにさらに構成Ｄを追加する変更がなされた状態で、２回目に起動される場合におけるＣＰＵ５１、ＲＯＭ５５および不揮発性ＲＡＭ５６の状態を説明するための図である。ここで、図９（ａ）はＩＰＬの実行中における状態を例示しており、図９（ｂ）はＩＰＬの実行が完了した状態を例示している。
【００６５】
図９（ａ）に示すように、２回目の起動が開始される前の不揮発性ＲＡＭ５６において、起動フラグ領域Ａ１２ａには、図７に示す初回の起動に伴い起動フラグとして「１」が格納されており、構成ステータス領域Ａ１２ｂには、図７に示す初回の起動に伴い構成ステータスとして「Ａ＝Ｂ＝Ｃ＝１、Ｄ＝０」が格納されている。また、図９（ａ）に示すように、２回目の起動が開始される前の不揮発性ＲＡＭ５６において、プログラム／変数領域Ａ１１には、図７に示す初回の起動に伴い構成Ａ用のプログラム／変数、構成Ｂ用のプログラム／変数および構成Ｃ用のプログラム／変数が格納され、ログ領域Ａ１２ｃには、図７に示す初回の起動に伴い変更ログが格納されている。
【００６６】
ＣＰＵ５１は、ステップ１１において、図９（ａ）に示すように、構成Ａ、構成Ｂおよび構成Ｃに加えて、構成Ｄも検出する（Ａ＝Ｂ＝Ｃ＝Ｄ＝１）。また、ＣＰＵ５１は、ステップ１２において、起動フラグ領域Ａ１２ａから起動フラグとして「１」を取得する。これにより、ＣＰＵ５１は、ステップ１３において否定の判断を行う。
【００６７】
続いて、ＣＰＵ５１は、ステップ２１において、不揮発性ＲＡＭ５６に配置された構成ステータス領域Ａ１２ｂから、前回起動時（この例では初回起動時）の構成ステータス（Ａ＝Ｂ＝Ｃ＝１、Ｄ＝０）を取得する。そして、ＣＰＵ５１は、ステップ１１で検出した今回の構成とステップ２１で取得した前回の構成とが一致しないことから、ステップ２２において肯定の判断を行う。
【００６８】
次に、ＣＰＵ５１は、ステップ２６において、不揮発性ＲＡＭ５６に配置されたログ領域Ａ１２ｃに変更ログを格納し、さらに、不揮発性ＲＡＭ５６に配置された起動フラグ領域Ａ１２ａに起動フラグとして「０」を格納した後、ステップ１４に移行する。
【００６９】
それから、ＣＰＵ５１は、ステップ１１で検出した今回の構成（Ａ＝Ｂ＝Ｃ＝Ｄ＝１）に基づき、ＲＯＭ５５に配置された圧縮プログラム領域Ａ０２から、構成Ａに対応する構成Ａ用圧縮プログラム（図９（ａ）では「Ａ（圧縮）」）を読み出し、読み出した構成Ａ用圧縮プログラムを展開し、展開によって得られた構成Ａ用のプログラム／変数を不揮発性ＲＡＭ５６に配置されたプログラム／変数領域Ａ１１に格納する（ステップ１４〜ステップ１６）。次に、ＣＰＵ５１は、ステップ１１で検出した今回の構成に基づき、ＲＯＭ５５に配置された圧縮プログラム領域Ａ０２から、構成Ｂに対応する構成Ｂ用圧縮プログラム（図９（ａ）では「Ｂ（圧縮）」）を読み出し、読み出した構成Ｂ用圧縮プログラムを展開し、展開によって得られた構成Ｂ用のプログラム/変数を不揮発性ＲＡＭ５６に配置されたプログラム／変数領域Ａ１１に格納する（ステップ１４〜ステップ１６）。続いて、ＣＰＵ５１は、ステップ１１で検出した今回の構成に基づき、ＲＯＭ５５に配置された圧縮プログラム領域Ａ０２から、構成Ｃに対応する構成Ｃ用圧縮プログラム（図９（ａ）では「Ｃ（圧縮）」）を読み出し、読み出した構成Ｃ用圧縮プログラムを展開し、展開によって得られた構成Ｃ用のプログラム／変数を不揮発性ＲＡＭ５６に配置されたプログラム／変数領域Ａ１１に格納する（ステップ１４〜ステップ１６）。さらに、ＣＰＵ５１は、ステップ１１で検出した今回の構成に基づき、ＲＯＭ５５に配置された圧縮プログラム領域Ａ０２から、構成Ｄに対応する構成Ｄ用圧縮プログラム（図９（ａ）では「Ｄ（圧縮）」）を読み出し、読み出した構成Ｄ用圧縮プログラムを展開し、展開によって得られた構成Ｄ用のプログラム／変数を不揮発性ＲＡＭ５６に配置されたプログラム／変数領域Ａ１１に格納する（ステップ１４〜ステップ１６）。
【００７０】
以上の手順により、不揮発性ＲＡＭ５６に配置されたプログラム／変数領域Ａ１１には、図９（ｂ）に示すように、新たに、構成Ａ用のプログラム／変数（図９（ｂ）では「Ａ（展開）」）、構成Ｂ用のプログラム／変数（図９（ｂ）では「Ｂ（展開）」）、構成Ｃ用のプログラム／変数（図９（ｂ）では「Ｃ（展開）」）、および構成Ｄ用のプログラム／変数（図９（ｂ）では「Ｄ（展開）」）が、それぞれ格納（上書き）されることになる。
【００７１】
その後、ＣＰＵ５１は，ステップ１８において、図９（ｂ）に示すように、不揮発性ＲＡＭ５６に配置された起動フラグ領域Ａ１２ａに起動フラグとして「１」を格納し、また、ステップ１９において、不揮発性ＲＡＭ５６に配置されたログ領域Ａ１２ｃに変更ログを格納し、さらに、ステップ２０において、不揮発性ＲＡＭ５６に配置された構成ステータス領域Ａ１２ｂに「Ａ＝Ｂ＝Ｃ＝Ｄ＝１」を格納する。
【００７２】
そして、ＣＰＵ５１は、ステップ２５において、プログラム／変数領域Ａ１１に格納された構成Ａ用のプログラム、構成Ｂ用のプログラム、構成Ｃ用のプログラムおよび構成Ｄ用のプログラムを順次実行することで初期設定を行い、その結果、画像形成装置１において構成Ａ、構成Ｂ、構成Ｃおよび構成Ｄが使用可能な状態となる。
【００７３】
このように、今回の構成が前回の構成から変更されている場合（構成が追加された場合）は、起動処理時に今回検出した各構成に対応する圧縮プログラムの読み出し、展開および格納を行い、不揮発性ＲＡＭ５６に配置されたプログラム／変数領域Ａ１１に新たに格納された各プログラムを実行することで、今回の構成での動作が可能となる。
【００７４】
＜２回目以降の起動：その３＞
図１０は、図７に示す状態（構成Ａ、構成Ｂおよび構成Ｃを備えた状態）で画像形成装置１が初回起動された後、構成Ａを削減する変更がなされた状態で、２回目に起動される場合におけるＣＰＵ５１、ＲＯＭ５５および不揮発性ＲＡＭ５６の状態を説明するための図である。ここで、図１０（ａ）はＩＰＬの実行中における状態を例示しており、図１０（ｂ）はＩＰＬの実行が完了した状態を例示している。
【００７５】
図１０（ａ）に示すように、２回目の起動が開始される前の不揮発性ＲＡＭ５６において、起動フラグ領域Ａ１２ａには、図７に示す初回の起動に伴い起動フラグとして「１」が格納されており、構成ステータス領域Ａ１２ｂには、図７に示す初回の起動に伴い構成ステータスとして「Ａ＝Ｂ＝Ｃ＝１、Ｄ＝０」が格納されている。また、図１０（ａ）に示すように、２回目の起動が開始される前の不揮発性ＲＡＭ５６において、プログラム／変数領域Ａ１１には、図７に示す初回の起動に伴い構成Ａ用のプログラム／変数、構成Ｂ用のプログラム／変数および構成Ｃ用のプログラム／変数が格納され、ログ領域Ａ１２ｃには、図７に示す初回の起動に伴い変更ログが格納されている。
【００７６】
ＣＰＵ５１は、ステップ１１において、図１０（ａ）に示すように、構成Ｂおよび構成Ｃを検出する（Ａ＝０、Ｂ＝Ｃ＝１、Ｄ＝０）。また、ＣＰＵ５１は、ステップ１２において、起動フラグ領域Ａ１２ａから起動フラグとして「１」を取得する。これにより、ＣＰＵ５１は、ステップ１３において否定の判断を行う。
【００７７】
続いて、ＣＰＵ５１は、ステップ２１において、不揮発性ＲＡＭ５６に配置された構成ステータス領域Ａ１２ｂから、前回起動時（この例では初回起動時）の構成ステータス（Ａ＝Ｂ＝Ｃ＝１、Ｄ＝０）を取得する。そして、ＣＰＵ５１は、ステップ１１で検出した今回の構成とステップ２１で取得した前回の構成とが一致しないことから、ステップ２１において肯定の判断を行う。
【００７８】
次に、ＣＰＵ５１は、ステップ２６において、不揮発性ＲＡＭ５６に配置されたログ領域Ａ１２ｃに変更ログを格納し、さらに、ステップ２７において、不揮発性ＲＡＭ５６に配置された起動フラグ領域Ａ１２ａに起動フラグとして「０」を格納した後、ステップ１４に移行する。
【００７９】
それから、ＣＰＵ５１は、ステップ１１で検出した今回の構成（Ａ＝０、Ｂ＝Ｃ＝１、Ｄ＝０）に基づき、ＲＯＭ５５に配置された圧縮プログラム領域Ａ０２から、構成Ｂに対応する構成Ｂ用圧縮プログラム（図１０（ａ）では「Ｂ（圧縮）」）を読み出し、読み出した構成Ｂ用圧縮プログラムを展開し、展開によって得られた構成Ｂ用のプログラム/変数を不揮発性ＲＡＭ５６に配置されたプログラム／変数領域Ａ１１に格納する（ステップ１４〜ステップ１６）。次に、ＣＰＵ５１は、ステップ１１で検出した今回の構成に基づき、ＲＯＭ５５に配置された圧縮プログラム領域Ａ０２から、構成Ｃに対応する構成Ｃ用圧縮プログラム（図９（ａ）では「Ｃ（圧縮）」）を読み出し、読み出した構成Ｃ用圧縮プログラムを展開し、展開によって得られた構成Ｃ用のプログラム／変数を不揮発性ＲＡＭ５６に配置されたプログラム／変数領域Ａ１１に格納する（ステップ１４〜ステップ１６）。
【００８０】
以上の手順により、不揮発性ＲＡＭ５６に配置されたプログラム／変数領域Ａ１１には、図１０（ｂ）に示すように、新たに、構成Ｂ用のプログラム／変数（図１０（ｂ）では「Ｂ（展開）」）、および構成Ｃ用のプログラム／変数（図１０（ｂ）では「Ｃ（展開）」）が、それぞれ格納（上書き）されることになる。
【００８１】
その後、ＣＰＵ５１は，ステップ１８において、図１０（ｂ）に示すように、不揮発性ＲＡＭ５６に配置された起動フラグ領域Ａ１２ａに起動フラグとして「１」を格納し、また、ステップ１９において、不揮発性ＲＡＭ５６に配置されたログ領域Ａ１２ｃに変更ログを格納し、さらに、ステップ２０において、不揮発性ＲＡＭ５６に配置された構成ステータス領域Ａ１２ｂに「Ａ＝０、Ｂ＝Ｃ＝１、Ｄ＝０」を格納する。
【００８２】
そして、ＣＰＵ５１は、ステップ２５において、プログラム／変数領域Ａ１１に格納された構成Ｂ用のプログラムおよび構成Ｃ用のプログラムを順次実行することで初期設定を行い、その結果、画像形成装置１において構成Ｂおよび構成Ｃが使用可能な状態となる。
【００８３】
このように、今回の構成が前回の構成から変更されている場合（構成が削減された場合）は、起動処理時に今回検出した各構成に対応する圧縮プログラムの読み出し、展開および格納を行い、不揮発性ＲＡＭ５６に配置されたプログラム／変数領域Ａ１１に新たに格納された各プログラムを実行することで、今回の構成での動作が可能となる。
【００８４】
＜２回目以降の起動：その４＞
図１１は、図７に示す状態（構成Ａ、構成Ｂおよび構成Ｃを備えた状態）で画像形成装置１が初回起動された後、装置構成の変更がない状態で、２回目に起動される場合におけるＣＰＵ５１、ＲＯＭ５５および不揮発性ＲＡＭ５６の他の状態を説明するための図である。ここで、図１１（ａ）はＩＰＬの実行中における状態を例示しており、図１１（ｂ）はＩＰＬの実行が完了した状態を例示している。
【００８５】
図１１（ａ）に示すように、２回目の起動が開始される前の不揮発性ＲＡＭ５６において、起動フラグ領域Ａ１２ａには、図７に示す初回の起動に伴い起動フラグとして「１」が格納されており、構成ステータス領域Ａ１２ｂには、図７に示す初回の起動に伴い構成ステータスとして「Ａ＝Ｂ＝Ｃ＝１、Ｄ＝０」が格納されている。また、図１１（ａ）に示すように、２回目の起動が開始される前の不揮発性ＲＡＭ５６において、プログラム／変数領域Ａ１１には、図７に示す初回の起動に伴い構成Ａ用のプログラム／変数、構成Ｂ用のプログラム／変数および構成Ｃ用のプログラム／変数が格納され、ログ領域Ａ１２ｃには、図７に示す初回の起動に伴い変更ログが格納されている。
【００８６】
ＣＰＵ５１は、ステップ２１において、不揮発性ＲＡＭ５６に配置された構成ステータス領域Ａ１２ｂから、前回起動時（この例では初回起動時）の構成ステータス（Ａ＝Ｂ＝Ｃ＝１、Ｄ＝０）を取得する。そして、ＣＰＵ５１は、ステップ１１で検出した今回の構成とステップ２１で取得した前回の構成とが一致することから、ステップ２２において否定の判断を行う。
【００８７】
そして、ＣＰＵ５１は、ステップ２３において、プログラム／変数領域Ａ１１に格納された構成Ａ用のプログラム／変数、構成Ｂ用のプログラム／変数および構成Ｃ用のプログラム／変数について順次エラーチェックを実行する。なお、この例では、エラーチェックの結果、構成Ｂ用のプログラム／変数においてエラーが発生したことにより、ＣＰＵ５１が、ステップ２４において否定の判断を行っているものとする。
【００８８】
次に、ＣＰＵ５１は、ステップ２８において、不揮発性ＲＡＭ５６に配置されたログ領域Ａ１２ｃにエラーログを格納し、さらに、不揮発性ＲＡＭ５６に配置された起動フラグ領域Ａ１２ａに起動フラグとして「０」を格納した後、ステップ１４に移行する。
【００８９】
それから、ＣＰＵ５１は、ステップ１１で検出した今回の構成（Ａ＝Ｂ＝Ｃ＝１、Ｄ＝０）に基づき、ＲＯＭ５５に配置された圧縮プログラム領域Ａ０２から、構成Ａに対応する構成Ａ用圧縮プログラム（図１１（ａ）では「Ａ（圧縮）」）を読み出し、読み出した構成Ａ用圧縮プログラムを展開し、展開によって得られた構成Ａ用のプログラム／変数を不揮発性ＲＡＭ５６に配置されたプログラム／変数領域Ａ１１に格納する（ステップ１４〜ステップ１６）。次に、ＣＰＵ５１は、ステップ１１で検出した今回の構成に基づき、ＲＯＭ５５に配置された圧縮プログラム領域Ａ０２から、構成Ｂに対応する構成Ｂ用圧縮プログラム（図１１（ａ）では「Ｂ（圧縮）」）を読み出し、読み出した構成Ｂ用圧縮プログラムを展開し、展開によって得られた構成Ｂ用のプログラム/変数を不揮発性ＲＡＭ５６に配置されたプログラム／変数領域Ａ１１に格納する（ステップ１４〜ステップ１６）。続いて、ＣＰＵ５１は、ステップ１１で検出した今回の構成に基づき、ＲＯＭ５５に配置された圧縮プログラム領域Ａ０２から、構成Ｃに対応する構成Ｃ用圧縮プログラム（図１１（ａ）では「Ｃ（圧縮）」）を読み出し、読み出した構成Ｃ用圧縮プログラムを展開し、展開によって得られた構成Ｃ用のプログラム／変数を不揮発性ＲＡＭ５６に配置されたプログラム／変数領域Ａ１１に格納する（ステップ１４〜ステップ１６）。
【００９０】
以上の手順により、不揮発性ＲＡＭ５６に配置されたプログラム／変数領域Ａ１１には、図１１（ｂ）に示すように、再び、構成Ａ用のプログラム／変数（図１１（ｂ）では「Ａ（展開）」）、構成Ｂ用のプログラム／変数（図１１（ｂ）では「Ｂ（展開）」）、および構成Ｃ用のプログラム／変数（図９（ｂ）では「Ｃ（展開）」）が、それぞれ格納（上書き）されることになる。
【００９１】
その後、ＣＰＵ５１は，ステップ１８において、図１１（ｂ）に示すように、不揮発性ＲＡＭ５６に配置された起動フラグ領域Ａ１２ａに起動フラグとして「１」を格納し、また、ステップ１９において、不揮発性ＲＡＭ５６に配置されたログ領域Ａ１２ｃに変更ログを格納し、さらに、ステップ２０において、不揮発性ＲＡＭ５６に配置された構成ステータス領域Ａ１２ｂに「Ａ＝Ｂ＝Ｃ＝１、Ｄ＝０」を格納する。
【００９２】
そして、ＣＰＵ５１は、ステップ２５において、プログラム／変数領域Ａ１１に格納された構成Ａ用のプログラム、構成Ｂ用のプログラムおよび構成Ｃ用のプログラムを順次実行することで初期設定を行い、その結果、画像形成装置１において構成Ａ、構成Ｂおよび構成Ｃが使用可能な状態となる。
【００９３】
このように、今回の構成が前回の構成から変更されていない場合であっても、不揮発性ＲＡＭ５６に配置されたプログラム／変数領域Ａ１１に既に格納されている各プログラムのいずれかにエラーが発生した状況下においては、、起動処理時に今回検出した各構成に対応する圧縮プログラムの読み出し、展開および格納を行い、不揮発性ＲＡＭ５６に配置されたプログラム／変数領域Ａ１１に再び格納された各プログラムを実行することで、今回の構成での動作が可能となる。
【００９４】
ここで、上述した説明では、構成の追加あるいは削減に伴って、装置構成が変更される場合を例としたが、例えば接触不良や装置故障など、実際の装置構成が変更されていないにも関わらず、特定の構成を検出できないような場合も生じ得る。本実施の形態で説明した手法を用いれば、このような理由によって装置構成の変更が生じた場合であっても、使用可能な残りの構成で構築された装置を動作させるためのプログラムを再構成することが可能になる。
【００９５】
なお、本実施の形態では、各圧縮プログラムを格納する圧縮プログラム領域Ａ０２を、不揮発性ＲＡＭ５７に配置していたが、これに限られるものではない。すなわち、圧縮プログラム領域Ａ０２を、例えば画像形成装置１にネットワーク２を介して接続されるサーバ装置５（図１参照）や、ＵＳＢＩＦ６５に接続されたカードリーダ８０に配置されるメモリカード８１に配置するようにしてもよい。なお、このような場合には、ＩＰＬの実行時において、各圧縮プログラムの読み取り対象を、サーバ装置５あるいはカードリーダ８０に装着されたメモリカードに設定すればよい。
【００９６】
また、本実施の形態では、不揮発性ＲＡＭ５６にプログラム／変数領域Ａ１１および履歴領域Ａ１２を配置するとともに、揮発性ＲＡＭ５７にワーク領域Ａ２１およびバッファ領域Ａ２２を配置するようにしていたが、これに限られるものではなく、例えば不揮発性ＲＡＭ５６のみを設け、この不揮発性ＲＡＭ５６にプログラム／変数領域Ａ１１、履歴領域Ａ１２、ワーク領域Ａ２１およびバッファ領域Ａ２２を配置するようにしてもかまわない。
【００９７】
さらに、本実施の形態では、制御部５０を画像形成装置１に組み込んだ場合を例として説明を行ったが、これに限られるものではなく、複数のユニットの組み合わせによって構成され、これら複数のユニットの着脱に伴って構成が変更され得る装置に適用しても差し支えない。
【符号の説明】
【００９８】
１…画像形成装置、２…ネットワーク、３…端末装置、４…ファクシミリ装置、５…サーバ装置、１０…画像読取部、２０…画像形成部、３０…ＵＩ、４０…送受信部、５０…制御部、５１…ＣＰＵ、５２…バスブリッジ、５３…メモリバス、５４…ＰＣＩバス、５５…ＲＯＭ、５６…不揮発性ＲＡＭ、５７…揮発性ＲＡＭ、５８…クロックジェネレータ、５９…タイマ、６１…ＵＩＩＦ、６２…プリントＩＦ、６３…オプションＩＦ、６４…ネットワークＩＦ、６５…ＵＳＢＩＦ、７０…後処理装置、８０…カードリーダ、８１…メモリカード、５１１…バスコントロールユニット、５１２…ＣＰＵ内部バス、５１３…制御ユニット、５１４…演算ユニット、５１５…レジスタ群、５１６…キャッシュメモリ、５１７…メモリ管理ユニット
【図１】
0005747680.tif 000002
【図２】
0005747680.tif 000003
【図３】
0005747680.tif 000004
【図４】
0005747680.tif 000005
【図５】
0005747680.tif 000006
【図６】
0005747680.tif 000007
【図７】
0005747680.tif 000008
【図８】
0005747680.tif 000009
【図９】
0005747680.tif 000010
【図１０】
0005747680.tif 000011
【図１１】
0005747680.tif 000012