〔第一の実施形態〕
図1は、画像処理システム3の全体的な構成の例を示す図である。図2は、画像処理装置1のハードウェア構成の例を示す図である。図3は、CPU10aの構成およびRAM10bの割当ての例を示す図である。図4は、画像処理装置1にインストールされるプログラムの例を示す図である。図5は、全体制御プログラム1PAによって実現される機能的構成の例を示す図である。図6は、実行待ちまたは実行中のジョブの遷移の例を示す図である。
画像処理システム3は、画像に関する種々の処理を実行するシステムであって、図1に示すように、画像処理装置1、サーバ21、端末装置22、および通信回線28などによって構成される。
サーバ21と端末装置22とは、通信回線28を介して通信を行うことができる。通信回線28として、公衆回線、いわゆるLAN(Local Area Network)回線、インターネット、または専用線などが用いられる。
画像処理装置1は、コピー、プリント、ファックス、およびスキャナなどの機能を集約した装置である。一般に、「画像形成装置」、「複合機」、または「MFP(Multi Function Peripheral)」などと呼ばれることがある。
画像処理装置1は、図2に示すように、CPU(Central Processing Unit)10a、RAM(Random Access Memory)10b、ROM(Read Only Memory)10c、大容量記憶装置10d、電源供給部10e、画像処理部10f、タッチパネルディスプレイ10g、操作キーパネル10h、UART(Universal Asynchronous Receiver Transmitter)10i、NIC(Network Interface Card)10j、ファックス通信ユニット10k、USB(Universal Serial Bus)通信部10m、スキャンユニット10n、およびプリントユニット10pなどによって構成される。
電源供給部10eは、画像処理装置1の各ハードウェアモジュールに対して電力を供給する。
画像処理部10fは、入力された画像または印刷の対象の画像に対して種々の画像処理を施す。
タッチパネルディスプレイ10gは、ユーザに対するメッセージを示す画面、ユーザがコマンドまたは情報を入力するための画面、およびCPU10aが実行した処理の結果を示す画面などを表示する。また、タッチパネルディスプレイ10gは、タッチされた位置を示す信号をCPU10aへ送る。
操作キーパネル10hは、いわゆるハードウェアキーボードであって、テンキー、スタートキー、ストップキー、およびファンクションキーなどによって構成される。
UART10iは、シリアル信号をパラレル信号に変換し、または、その逆方向に変換する。
NIC10jは、TCP/IP(Transmission Control Protocol/Internet Protocol)などのプロトコルでサーバ21または端末装置22との間で通信を行う。
ファックス通信ユニット10kは、モデムおよびNCU(Network Control Unit)などによって構成され、ファクシミリ端末との間でG3などのプロトコルでファックスデータをやり取りする。
USB通信部10mは、USBメモリまたは外付ハードディスクドライブなどの周辺機器とUSBケーブルを介して接続され、データのやり取りを行う。
スキャンユニット10nは、プラテンガラスの上にセットされた用紙に記されている画像を読み取って画像データを生成する。
プリントユニット10pは、スキャンユニット10nによって読み取られた画像のほか、NIC10j、ファックス通信ユニット10k、またはUSB通信部10mによって他の装置から取得した画像を用紙に印刷する。
CPU10aは、複数のコアを有するマルチコアCPUである。本実施形態では、CPU10aとして、図3に示すような、4つのコア1CRを有するクアッドコアが用いられる。以下、それぞれのコア1CRを「第一のコア1CR1」、「第二のコア1CR2」、…、「第四のコア1CR4」と区別して記載することがある。また、CPU10aは、SMP(Symmetric Multiprocessing)ではなくAMP(Asymmetric Multiprocessing)の方式で動作し、4つのコア1CRそれぞれが別々のプログラムを実行する。
ROM10cまたは大容量記憶装置10dには、全体制御プログラム1PA、ディスプレイ制御プログラム1PB、スキャナ制御プログラム1PC、プリンタ制御プログラム1PD、ファックス通信制御プログラム1PE、ストレージ制御プログラム1PF、IP通信制御プログラム1PG、およびUSB制御プログラム1PHなどのプログラムがインストールされている。
全体制御プログラム1PAは、画像処理装置1の全体的な制御、例えば、ジョブの実行に関する全体的な制御を行う。つまり、全体制御プログラム1PAは、MFP制御プログラムである。
つまり、ディスプレイ制御プログラム1PBは、画像が表示されるようにタッチパネルディスプレイ10gを制御するプログラムである。
スキャナ制御プログラム1PCは、用紙から画像を読み取るようにスキャンユニット10nを制御するプログラムである。
プリンタ制御プログラム1PDは、画像が用紙に印刷されるようにプリントユニット10pを制御するプログラムである。
ファックス通信制御プログラム1PEは、ファックスデータをファックス端末とやり取りするようにファックス通信ユニット10kを制御するプログラムである。
ストレージ制御プログラム1PFは、データを保存したり、読み出したり、更新したり、削除したりするように大容量記憶装置10dを制御するプログラムである。
IP通信制御プログラム1PGは、いわゆるIP通信を行うようにNIC10jを制御するプログラムである。
このように、ディスプレイ制御プログラム1PB、スキャナ制御プログラム1PC、およびプリンタ制御プログラム1PD、ファックス通信制御プログラム1PE、ストレージ制御プログラム1PF、IP通信制御プログラム1PG、およびUSB制御プログラム1PHは、ハードウェアを制御するためのドライバである。
そのほか、様々なドライバがROM10cまたは大容量記憶装置10dにインストールされている。また、ユーザ認証用のプログラムなどもインストールされている。
これらのプログラムは、必要に応じてRAM10bにロード(展開)される。そして、予め決められたいずれかのコア1CRによって実行される。
例えば、全体制御プログラム1PAが第一のコア1CR1によって実行され、ディスプレイ制御プログラム1PBが第三のコア1CR3によって実行され、スキャナ制御プログラム1PC、プリンタ制御プログラム1PD、ファックス通信制御プログラム1PE、ストレージ制御プログラム1PF、NIC制御プログラム1PG、およびUSB制御プログラム1PHが第四のコア1CR4によって実行される。
このように、RAM10bは、4つのコア1CRによって共有される。したがって、RAM10bは共有メモリであると言える。
ところで、一般に、MFPのメーカは、種々のプログラムを適宜、アップデートし、MFPへ適用する。画像処理装置1の各プログラムも同様に、適宜、アップデートされる。そして、画像処理装置1へ提供され適用される。
サーバ21は、上述の各プログラムの最新版を公開し、画像処理装置1からの要求に応じて配付する。サーバ21として、ウェブサーバが用いられる。
端末装置22は、画像処理装置1のサービスを受けるクライアントである。端末装置22として、パーソナルコンピュータ、スマートフォン、またはタブレットコンピュータなどが用いられる。
以下、全体制御プログラム1PAをアップデートして画像処理装置1へ適用する仕組みについて、説明する。
全体制御プログラム1PAによると、図5に示すジョブ制御部101および更新処理部102などの機能が実現される。
ジョブ制御部101は、外部からの入力に従ってジョブを生成し、キューに登録する。そして、登録順および各ハードウェアの稼働の状況などに応じて、各ドライバによって各ジョブを実行する。
例えば、ユーザが原稿の用紙をセットしコピーのコマンド(指令)を入力した場合は、コピージョブを生成し、キューに登録する。そして、このコピージョブの順番が訪れると、このコピージョブの実行を開始する。
具体的には、ジョブ制御部101は、この用紙から画像を読み取る処理を、スキャナ制御プログラム1PCによってスキャンユニット10nに実行させる。読み取られた画像の画像データを所定のフォーマットに変換して一時的にRAM10bに記憶させる。そして、この画像データに基づいてこの画像を印刷する処理を、プリンタ制御プログラム1PDによってプリントユニット10pに実行させる。
なお、スキャナ制御プログラム1PCおよびプリンタ制御プログラム1PDは、上述の通り、予め決められたコア1CRによって実行される。後述する各ドライバも、同様である。
または、ユーザが原稿の用紙をセットしスキャンのコマンドおよび保存先を入力した場合は、ジョブ制御部101は、スキャンジョブを生成し、キューに登録する。そして、このスキャンジョブの順番が訪れると、このスキャンジョブの実行を開始する。
具体的には、ジョブ制御部101は、この用紙から画像を読み取る処理を、スキャナ制御プログラム1PCによってスキャンユニット10nに実行させる。読み取られた画像の画像データを所定のフォーマットに変換して一時的にRAM10bに記憶させる。そして、この画像データをユーザが指定した保存先に保存する処理を実行させる。大容量記憶装置10dの中の特定のフォルダが保存先として指定された場合は、このフォルダにこの画像データを保存する処理をストレージ制御プログラム1PFによって大容量記憶装置10dに実行させる。または、画像処理装置1に繋げられたリムーバブルディスクの中の特定のフォルダが保存先として指定された場合は、このフォルダにこの画像データを保存する処理をUSB制御プログラム1PHによってUSB通信部10mに実行させる。または、通信回線28を介して画像処理装置1に接続される外部の装置の中の特定のフォルダが保存先として指定された場合は、このフォルダへこの画像データを送信する処理をIP通信制御プログラム1PGによってNIC10jに実行させる。
または、ユーザが原稿の用紙をセットしファックスによる送信のコマンドおよび電話番号を入力した場合は、ジョブ制御部101は、ファックス送信ジョブを生成し、キューに登録する。そして、このファックス送信ジョブの順番が訪れると、このファックス送信ジョブの実行を開始する。
具体的には、ジョブ制御部101は、この用紙から画像を読み取る処理を、スキャナ制御プログラム1PCによってスキャンユニット10nに実行させる。読み取られた画像の画像データを所定のフォーマットに変換して一時的にRAM10bに記憶させる。そして、ユーザが指定した電話番号にダイアルしてこの画像データを送信する処理をファックス通信制御プログラム1PEによってファックス通信ユニット10kに実行させる。
または、PDL(Page Description Language)で記述された印刷データおよびプリントのコマンドが端末装置22から送信されてきた場合は、ジョブ制御部101は、プリントジョブを生成し、キューに登録する。また、この印刷データをRAM10bに一時的に記憶させておく。そして、このプリントジョブの順番が訪れると、このプリントジョブの実行を開始する。
具体的には、ジョブ制御部101は、この印刷データに基づいて画像を印刷する処理を、プリンタ制御プログラム1PDによってプリントユニット10pに実行させる。
または、ファックスデータがファックス端末から送信されてきた場合は、ジョブ制御部101は、ファックス受信ジョブを生成し、キューに登録する。さらに、このファックスデータをRAM10bに一時的に記憶させておく。そして、このファックス受信ジョブの順番が訪れると、このファックス受信ジョブの実行を開始する。
具体的には、ジョブ制御部101は、このファックスデータに基づいて画像を印刷する処理を、プリンタ制御プログラム1PDによってプリントユニット10pに実行させる。
なお、大容量記憶装置10dが仮想メモリとして使用されるときは、上記の各データがRAM10bの代わりに大容量記憶装置10dに記憶される場合がある。この場合は、ストレージ制御プログラム1PFによって大容量記憶装置10dが制御される。
また、ハードウェアの稼働の状況によって、複数のジョブが並行して実行されることがある。例えば、コピージョブとスキャンジョブとが連続して並んでおり、コピージョブの開始後、原稿の画像の読取りのフェーズが終わったら、スキャンジョブが並行して実行される。
更新処理部102は、画像処理装置1において現在実行している全体制御プログラム1PAを、アップデートされたものに更新する処理を行う。
以下、画像処理装置1の全体制御プログラム1PAを、旧全体制御プログラム1PA1から新全体制御プログラム1PA2に切り換える場合を例に説明する。
旧全体制御プログラム1PA1は、第一のコア1CR1によって実行されている。他のプログラムは、第三のコア1CR3または第四のコア1CR4のいずれかによって実行されている。
第二のコア1CR2は、何もプログラムを実行しておらず、新全体制御プログラム1PA2を実行させるために待機させられている。
更新処理部102は、ダウンロード処理部121、新プログラム起動部122、切換可否判別部123、および待機解除指令部124などによって構成される。以下に説明する各部による処理は、適宜、各ドライバ(特に、ストレージ制御プログラム1PFおよびNIC制御プログラム1PG)に基づいて第三のコア1CR3または第四のコア1CR4と連携して実行される。
ダウンロード処理部121は、アップデートされた全体制御プログラム1PAがサーバ21において公開されているか否かを定期的にチェックし、公開されていれば、これをダウンロードする。ダウンロードされた全体制御プログラム1PA(本例では、新全体制御プログラム1PA2)は、ROM10cまたは大容量記憶装置10dに記憶される。
新プログラム起動部122は、新全体制御プログラム1PA2をRAM10bにロードし、第二のコア1CR2に実行させる。これにより、新全体制御プログラム1PA2が起動する。
新全体制御プログラム1PA2は、旧全体制御プログラム1PA1がアップデートされたものである。つまり、機能の向上またはバグの修正がなされている。よって、旧全体制御プログラム1PA1とは内容が異なる。しかし、基本的な役割は旧全体制御プログラム1PA1と同じであり、図5に示す通りである。
新全体制御プログラム1PA2は、起動後、ジョブの制御を開始するのを待機する。第二のコア1CR2は、第一のコア1CR1から待機の解除のコマンドを受け付けるまで待機する。
切換可否判別部123は、全体制御プログラム1PAを旧全体制御プログラム1PA1から新全体制御プログラム1PA2へ切り換えてよいか否かを次のように判別する。
切換可否判別部123は、ジョブ制御部101によって管理されるジョブごとの状況をチェックする。そして、実行中のジョブが1つもない状態であれば、切り換えてはいけないと判別する。
例えば、図6(A)に示すように、コピージョブを現在実行している最中である場合は、切換可否判別部123は、切り換えてはいけないと判別する。
その後、図6(B)に示すように、このコピージョブが完了するまでに、1つのファックス受信ジョブおよび2つのプリントジョブが新たに生成され、このファックス受信ジョブが並行して実行されている場合も、切換可否判別部123は、切り換えてはいけないと判別する。
そして、図6(C)に示すように、このコピージョブおよびこのファックス受信ジョブが完了した後、未実行のジョブがすべて待機している間、切換可否判別部123は、切り換えてもよいと判別する。
その後、図6(D)に示すように、いずれかのジョブが実行されている場合は、切換可否判別部123は、切り換えてはいけないと判別する。しかし、このジョブが完了した後、未実行のジョブがすべて待機している間、切換可否判別部123は、切り換えてもよいと判別する。
また、図6(E)に示すように、実行中のジョブも待機しているジョブも1つもない場合に、切換可否判別部123は、切り換えてもよいと判別する。
待機解除指令部124は、切り換えてもよいと切換可否判別部123によって判別されると、待機の解除のコマンドを第二のコア1CR2に対して与えるとともに、旧全体制御プログラム1PA1を終了させる。
なお、このコマンドはRAM10bを介してやり取りすればよい。すなわち、第一のコア1CR1は、RAM10bの特定のアドレスに特定の値を書き込む。そして、第二のコア1CR2は、新全体制御プログラム1PA2に基づいて、定期的にこのアドレスの値をチェックすることによって、このコマンドを検知する。後述する他のコマンドも同様に、2つのコア1CR間で、RAM10bを介してやり取りされる。RAM10bの代わりに大容量記憶装置10dに記憶されている特定のファイルを用いてもよい。
第二のコア1CR2は、このコマンドが与えられると、待機を止め、新全体制御プログラム1PA2に基づいて、ジョブ制御部101および更新処理部102を開始する。
キューの情報および待機中のジョブのデータが記憶される場所は、全体制御プログラム1PAの全バージョンで共通化されている。これにより、旧全体制御プログラム1PA1によるジョブ制御部101のキューを、新全体制御プログラム1PA2による更新処理部102へ引き継ぐことができる。
このようにして、ジョブ制御部101および更新処理部102が、旧全体制御プログラム1PA1および第一のコア1CR1から新全体制御プログラム1PA2および第二のコア1CR2へ引き継がれる。
図7は、全体制御プログラム1PAによる全体的な処理の流れの例を説明するフローチャートである。
次に、旧全体制御プログラム1PA1から新全体制御プログラム1PA2へ切り換える場合を例に、画像処理装置1における全体制御プログラム1PAを更新する際の全体的な処理の流れを、フローチャートを参照しながら説明する。
旧全体制御プログラム1PA1も新全体制御プログラム1PA2も、基本的な処理の流れは同じであり、図7に示す通りである。
画像処理装置1の電源がオンになりまたはリセットされると、第一のコア1CR1は、現時点で画像処理装置1にインストールされている全体制御プログラム1PAを起動する。ここでは、旧全体制御プログラム1PA1を起動する。そして、旧全体制御プログラム1PA1に基づいて、図7に示す手順で処理を実行する。
前に述べた通り、ジョブに関する処理は、待機の解除のコマンドがあるまで行われない。しかし、電源がオンになった場合およびリセットされた場合は(図7の#701でYes)、ステップ#702〜#703をスキップする。そして、ジョブの制御およびアップデートされた全体制御プログラム1PAの有無のチェックを行う(#704、#705)。ステップ#704のジョブの制御は、適宜、実行される。また、ステップ#704は、ジョブがその種類などに応じて実行されるように各ハードウェアを制御するサブルーチンである。ステップ#705の、アップデートされた全体制御プログラム1PAの有無のチェックは、定期的に実行される。
アップデートされた全体制御プログラム1PAが見つかったら(#706でYes)、第一のコア1CR1は、この全体制御プログラム1PA(本例では、新全体制御プログラム1PA2)をサーバ21からダウンロードする(#707)。そして、これをRAM10bにロードして第二のコア1CR2に実行させる(#708)。これにより、新全体制御プログラム1PA2が起動される。
すると、第二のコア1CR2が、新全体制御プログラム1PA2に基づいて、図7に示す手順で処理を実行する。これにより、バージョンの異なる2つの全体制御プログラム1PAが働く。
新全体制御プログラム1PA2の起動は電源がオンになったことにもリセットされたことにも起因していないので(#701でNo)、第二のコア1CR2は、第一のコア1CR1からの待機の解除のコマンドの検知を試みる(#702)。
第一のコア1CR1は、未だ完了していないジョブがある場合は(#709でYes)、第一のコア1CR1の制御の下で実行中であるジョブがなくなったら(#710でNo)、第二のコア1CR2へ待機の解除のコマンドを与えるとともに(#711)、旧全体制御プログラム1PA1を終了する。この際に、旧全体制御プログラム1PA1をアンインストールしてもよい。実行中のジョブも待機中のジョブも1つもない場合も(#709でNo)、同様である(#711)。
一方、第二のコア1CR2は、待機の解除のコマンドを検知すると(#703でYes)、ジョブの制御の処理を開始する(#704)。
このようにして、旧全体制御プログラム1PA1から新全体制御プログラム1PA2への切換えが完了する。
さらに、第二のコア1CR2は、アップデートされた全体制御プログラム1PAの有無のチェックの処理も開始する(#705)。
ステップ#704は、旧全体制御プログラム1PA1においては、本発明における第一のルーチンに相当し、新全体制御プログラム1PA2においては、第二のルーチンに相当する。
第一の実施形態によると、マルチコアのCPUをCPU10aとして採用する画像処理装置1において、CPU10aをAMPで動作させ、ある1つのコア1CRに全体制御プログラム1PAを実行させ、アップデートされた全体制御プログラム1PAを他の1つのコア1CRに実行させた。しかも、特定の処理のルーチン(ジョブの制御のルーチン)へ進む前に停止させ、古いほうの全体制御プログラム1PAによるジョブが完了しまたは停止したタイミングでこのルーチンを開始させるように、全体制御プログラム1PAを構成した。これにより、ダウンタイムの発生の防止を図り、ユーザの利便性を従来よりも確実に保って画像処理装置1の全体制御プログラム1PAを更新することができる。
〔第二の実施形態〕
図8は、全体制御プログラム1RAによって実現される機能的構成の例を示す図である。
画像処理装置1にインストールされている全体制御プログラムを更新した後、画像処理装置1に不具合が生じる場合がある。このような場合は、全体制御プログラムを古いバージョンに戻した方がよいことがある。第二の実施形態の全体制御プログラム1RAは、古いバージョンにリカバリ(復帰)させる機能を備えている。
以下、この機能を中心に、全体制御プログラム1RAについて説明する。第一の実施形態と重複する点については、説明を省略する。
画像処理システム3の全体的な構成は、第一の実施形態と同様であり、図1に示した通りである。画像処理装置1のハードウェアの構成も、第一の実施形態と同様であり、図2に示した通りである。
ただし、全体制御プログラム1PAの代わりに全体制御プログラム1RAが用いられる。全体制御プログラム1RAによると、図8に示すジョブ制御部151、更新処理部152、およびリカバリ処理部153などの機能が実現される。
ジョブ制御部151は、第一の実施形態のジョブ制御部101(図5参照)と同様に、外部からの入力に従ってジョブを生成し、キューに登録する。そして、登録順および各ハードウェアの稼働の状況などに応じて、各ドライバによって各ジョブを実行する。
ただし、第二の実施形態においては、この全体制御プログラム1RAは、新しい全体制御プログラム1RAに切り換わった後、終了するのではなく、リカバリのために常駐し続ける。このとき、ジョブ制御部151は、休止する。そして、後述する通り、新しい全体制御プログラム1RAを実行しているコア1CRからリカバリのコマンドが与えられたら、再び動作し始める。次に説明する更新処理部152およびリカバリ処理部153も同様である。
更新処理部152は、第一の実施形態の更新処理部102と同様に、現在実行している全体制御プログラム1RAを更新する処理を行う。
更新処理部152は、ダウンロード処理部161、新プログラム起動部162、切換可否判別部163、および待機解除指令部164などによって構成される。これらの役割は、第一の実施形態のダウンロード処理部121、新プログラム起動部122、切換可否判別部123、および待機解除指令部124と同様である。
リカバリ処理部153は、この全体制御プログラム1RAによるジョブの処理に不具合が生じた場合に、古い全体制御プログラム1RAへリカバリするための処理を行う。
リカバリ処理部153は、不具合検知部171、リカバリ指令部172、および旧プログラム起動部173などによって構成される。
不具合検知部171は、ジョブ制御部151が実行させているジョブの状況を監視することによって不具合を検知する。
リカバリ指令部172は、不具合検知部171によって不具合が検知されたら、1つ古いバージョンの全体制御プログラム1RAを実行しているコア1CRに対して、処理を再開するようにコマンドする。つまり、リカバリのコマンドを与える。
旧プログラム起動部173は、画像処理装置1の電源がオンになりまたはリセットされた場合に、1つ古いバージョンの全体制御プログラム1RAを起動し他のコア1CRに実行させる。
図9は、全体制御プログラム1RAによる全体的な処理の流れの例を説明するフローチャートである。図10は、通常モードの処理の流れの例を説明するフローチャートである。図11は、更新処理の流れの例を説明するフローチャートである。図12は、リカバリモードの処理の流れの例を説明するフローチャートである。
次に、旧全体制御プログラム1RA1を新全体制御プログラム1RA2へ切り換える場合を例に、画像処理装置1における全体制御プログラム1RAを更新する際の処理の流れを、フローチャートを参照しながら説明する。
旧全体制御プログラム1RA1は、初版であり、新全体制御プログラム1RA2はその次のバージョンである。最初は、旧全体制御プログラム1RA1のみが画像処理装置1にインストールされている。
旧全体制御プログラム1RA1も新全体制御プログラム1RA2も、全体的な処理の流れは同じであり、図9に示す通りである。
<1> 未アップデート時における電源オンまたはリセットに伴う処理
画像処理装置1の電源がオンになりまたはリセットされると、第一のコア1CR1は、この時点で画像処理装置1にインストールされている最新の全体制御プログラム1RAを起動する。ここでは、旧全体制御プログラム1RA1を起動する。そして、旧全体制御プログラム1RA1に基づいて、図9に示す手順で処理を実行する。
この時点では、旧全体制御プログラム1RA1は画像処理装置1にインストールされている古いバージョンではなく(図9の#721でNo)、かつ、今回の起動は電源のオンまたはリセットに伴うものなので(#722でYes)、第一のコア1CR1は、旧全体制御プログラム1RA1に基づいて通常モードのルーチンに進み、適宜、通常モードの処理を行う(#725)。
なお、旧全体制御プログラム1RA1よりも古いバージョンの全体制御プログラム1RAがないので(#723でNo)、ステップ#724の処理はスキップされる。古いバージョンの全体制御プログラム1RAがある場合は、後述するように、第一のコア1CR1は、通常モードへ進むのと前後してまたは並行してステップ#724の処理を実行する。
通常モードの処理の手順は、図10に示す通りである。第一のコア1CR1は、第一の実施形態と同様に、ジョブの制御およびアップデートされた全体制御プログラム1RAの有無のチェックを行う(図10の#741、#746)。ステップ#741は、第一の実施形態のステップ#704と同様、ジョブがその種類などに応じて実行されるように各ハードウェアを制御するサブルーチンである。
ステップ#741によるジョブが正常に終了しなかった場合つまりジョブに異常があった場合は(#742でYes、#743でYes)、古いバージョンの全体制御プログラム1RAが画像処理装置1にインストールされていれば、ステップ#745において、この全体制御プログラム1RAへの切換えを行う。つまり、古い全体制御プログラム1RAへのリカバリを行う。しかし、この時点では、この全体制御プログラム1RAがインストールされていないので(#744でNo)、リカバリをスキップする。リカバリについては、後述する。
アップデートされた全体制御プログラム1RA(本例では、新全体制御プログラム1RA2)が見つかったら(#747でYes)、第一のコア1CR1は、画像処理装置1の全体制御プログラム1RAを更新する処理、つまり、旧全体制御プログラム1RA1から新全体制御プログラム1RA2への切換えを行う(#748)。この処理の手順は、図11に示す通りである。
旧全体制御プログラム1RA1から新全体制御プログラム1RA2への切換えは、基本的に第一の実施形態と同様である。
すなわち、第一のコア1CR1は、新全体制御プログラム1RA2をサーバ21からダウンロードし(図11の#761)、これをRAM10bにロードして第二のコア1CR2に実行させる(#762)。これにより、新全体制御プログラム1RA2が起動される。しかし、この時点では、第二のコア1CR2によるジョブの制御は開始されない。新全体制御プログラム1RA2は、ROM10cまたは大容量記憶装置10dに記憶(インストール)される。
未だ完了していなジョブがある場合は(#763でYes)、第一のコア1CR1の制御の下で実行中であるジョブがなくなったら(#764でNo)、第一のコア1CR1は、第二のコア1CR2へ待機の解除のコマンドを与える(#765)。実行中のジョブも待機中のジョブも1つもない場合も(#763でNo)、同様である(#765)。
第一の実施形態では、第一のコア1CR1は、古いほうの全体制御プログラムを終了させたが、第二の実施形態では、終了させない。第一のコア1CR1は、リカバリモードのルーチンへ進み、リカバリモードの処理を実行する(#766)。この処理の手順は、図12に示す通りである。
第一のコア1CR1は、新しい全体制御プログラム1RA(本例では、新全体制御プログラム1RA2)を実行するコア1CR(本例では、第二のコア1CR2)からのリカバリのコマンドが与えられるのを待つ(図12の#771)。
リカバリのコマンドが与えられたら(#772でYes)、第一のコア1CR1は、通常モードへ再び進む(#773)。つまり、ジョブの制御などを開始する。通常モードの処理の手順は、前に図10で説明した通りである。
<2> 新しい全体制御プログラム1RAによる処理
新全体制御プログラム1RA2は、上述の通り、第一のコア1CR1および旧全体制御プログラム1RA1によってダウンロードされRAM10bにロードされると、第二のコア1CR2によって実行される。
すると、第二のコア1CR2は、新全体制御プログラム1RA2に基づいて、図9に示す手順で処理を実行する。
新全体制御プログラム1RA2は画像処理装置1にインストールされている全体制御プログラム1RAのうち新しい全体制御プログラム1RAであり(図9の#721でNo)、今回の起動は電源のオンに伴うものでもリセットに伴うものでないので(#722でNo)、第二のコア1CR2は、待機の解除のコマンドが第一のコア1CR1から与えられるのを待つ(#726)。
そして、待機の解除のコマンドが与えられたら(#727でYes)、通常モードへ進み、ジョブの制御などを開始する(#728)。通常モードの処理の手順は、前に図10で説明した通りである。
すなわち、第二のコア1CR2は、上述の通り、ジョブの制御およびアップデートされた全体制御プログラム1RAの有無のチェックを行う(図10の#741、#747)。
ステップ#741によるジョブが正常に終了しなかった場合つまりジョブに異常があった場合は(#742でYes、#743でYes)、上述の通り、古いバージョンの全体制御プログラム1RAが画像処理装置1にインストールされていれば、第二のコア1CR2は、リカバリを行う。本例では、旧全体制御プログラム1RA1がインストールされているので(#744でYes)、旧全体制御プログラム1RA1のリカバリを行う(#745)。具体的には、旧全体制御プログラム1RA1を実行するコア1CRに対してリカバリのコマンドを与える。
なお、旧全体制御プログラム1RA1による処理は、リカバリモードのステップ#771(図12参照)でリカバリのコマンドを待っている状態である。そして、このコマンドに従って、通常モードへ再び進み、旧全体制御プログラム1RA1による通常モードの処理(#773)が再開される。
旧全体制御プログラム1RA1による通常モードの処理が再開された後、第二のコア1CR2は、新全体制御プログラム1RA2を終了する。
<3> アップデート後における電源オンまたはリセットに伴う処理
アップデートされた全体制御プログラム1RAがインストールされ適用された後も、古いバージョンの全体制御プログラム1RAは、アンインストールされず、画像処理装置1に残る。
画像処理装置1の電源がオフにされた後、再びオンにされると、または、リセットされると、これらの2つの全体制御プログラム1RAの両方が次のように起動される。この際に、図9に示した手順の処理がそれぞれ独立して実行される。以下、旧全体制御プログラム1RA1および新全体制御プログラム1RA2を起動する場合を例に説明する。
画像処理装置1のオペレーティングシステムが起動する際に、新しいほうの全体制御プログラム1RAつまり新全体制御プログラム1RA2がRAM10bにロードされる。そして、第一のコア1CR1によって実行される。
新全体制御プログラム1RA2は画像処理装置1にインストールされている古いバージョンではなく(図9の#721でNo)、今回の起動は電源のオンまたはリセットに伴うものであり(#722でYes)、かつ古いバージョンの全体制御プログラム1RA(本例では、旧全体制御プログラム1RA1)があるので(#723でYes)、第一のコア1CR1は、旧全体制御プログラム1RA1をRAM10bにロードし、第二のコア1CR2に実行させる(#724)。これにより、旧全体制御プログラム1RA1が起動される。
旧全体制御プログラム1RA1の起動と前後してまたは並行して、第一のコア1CR1は、通常モードの処理を開始する(#725)。通常モードの処理の手順は、図10に示した通りである。
一方、第二のコア1CR2は、旧全体制御プログラム1RA1に従って図9に示す手順で処理を実行する。旧全体制御プログラム1RA1は古いほうの全体制御プログラム1RAなので(#721でYes)、リカバリモードへ進む(#729)。リカバリモードの処理の手順は、前に図12で説明した通りである。これにより、第二のコア1CR2は、リカバリに備える。
その後、第一のコア1CR1および新全体制御プログラム1RA2によるジョブに不具合が生じたら、ジョブの制御などが第二のコア1CR2および旧全体制御プログラム1RA1へ切り換えられる。つまり、旧全体制御プログラム1RA1がリカバリされる。
ステップ#741は、旧全体制御プログラム1RA1においては、本発明における第一のルーチンに相当し、新全体制御プログラム1RA2においては、第二のルーチンに相当する。
第二の実施形態によると、第一の実施形態と同様に、ダウンタイムの発生の防止を図り、ユーザの利便性を従来よりも確実に保って画像処理装置1の全体制御プログラム1PAを更新することができる。
さらに、第二の実施形態によると、更新後にジョブに不具合が発生した場合に、サービスエンジニアの作業を伴うことなく古いバージョンにリカバリして、画像処理装置1の安定的な運用を図ることができる。
図13は、CPU10aの構成の変形例を示す図である。第一の実施形態および第二の実施形態では、4つのコア1CRそれぞれが別々のプログラムを実行するようにCPU10aを構成したが、1つまたは複数のコア1CRによってユニットを構成し、ユニットごとに別々のプログラムを実行するようにCPU10aを構成してもよい。
例えば、図13(A)に示すように、第一のコア1CR1および第二のコア1CR2によって処理ユニット1U1を構成し、第三のコア1CR3および第四のコア1CR4によって処理ユニット1U2を構成してもよい。この場合は、一方の処理ユニットに旧全体制御プログラム1PA1または1RA1を実行させ、他方の処理ユニットに新全体制御プログラム1PA2または1RA2を実行させればよい。
または、図13(B)に示すように、第一のコア1CR1によって処理ユニット1U3を構成し、第二のコア1CR2によって処理ユニット1U4を構成し、第三のコア1CR3および第四のコア1CR4によって処理ユニット1U5を構成してもよい。この場合は、3つの処理ユニットのうちのいずれか1つに旧全体制御プログラム1PA1または1RA1を実行させ、他のいずれか1つに新全体制御プログラム1PA2または1RA2を実行させればよい。
第一の実施形態および第二の実施形態では、4つのコア1CRからなるマルチコアプロセッサをCPU10aとして用いたが、他の個数(例えば、2つ、6つ、または8つなど)のコア1CRからなるマルチコアプロセッサを用いてもよい。
第一の実施形態および第二の実施形態では、新全体制御プログラム1PA2または1RA2を、空いているコア1CRに実行させたが、旧全体制御プログラム1PA1または1RA1を実行していないコア1CRであれば、他のプログラムを実行しているコア1CRに新全体制御プログラム1PA2または1RA2を実行させてもよい。
第一の実施形態および第二の実施形態では、全体制御プログラム1PA、1RAを更新する場合を例に説明したが、ジョブの制御以外のファームウェアのほかアプリケーションプログラムなどを更新する場合にも本発明を適用することができる。
第一の実施形態および第二の実施形態では、新全体制御プログラム1PA2、1RA2をサーバ21からダウンロードすることによって取得したが、USB通信部10mを介して記録媒体から読み取ることによって取得してもよい。
その他、画像処理システム3、画像処理装置1の全体または各部の構成、処理内容、処理順序、データベースの構成などは、本発明の趣旨に沿って適宜変更することができる。