(57)【要約】【課題】不揮発性記憶装置において、アップデートの対象となるブートプログラム及び所定のプログラムが格納されている格納領域以外に、予備のブートプログラムを格納するための格納領域を新たに設ける必要をなくす。【解決手段】ブートプログラム４１及び第２のプログラム４５(所定のプログラム)のアップデートにおいて、アップデート版のブートプログラム４１ａが、ＮＯＲ型フラッシュメモリー９の一時格納領域６７に格納される。一時格納領域６７は、第２のプログラム４５が格納されるプログラム領域６３に含まれる。一時格納領域６７にアップデート版のブートプログラム４１ａが格納された状態で、アップデート版のブートプログラム４１ａがＮＯＲ型フラッシュメモリー９のブート領域６１に格納される。次に、プログラム領域６３において、第２のプログラム４５の書き換えをする。【選択図】図４
2015087792.tif 000002
【特許請求の範囲】
【請求項１】
ブートプログラムを用いてＯＳを起動する情報処理装置であって、
前記ブートプログラムが格納されるブート領域及び前記ブートプログラムと異なる所定のプログラムが格納されるプログラム領域を含む不揮発性記憶装置と、
前記ブートプログラム及び前記所定のプログラムを書き換える命令がされたとき、(ａ)書き換え前の前記ブートプログラムが前記ブート領域に格納された第１の状態で、前記情報処理装置の外部から送られてきた書き換え版の前記ブートプログラムを前記プログラム領域に格納し、次に、(ｂ)書き換え版の前記ブートプログラムが前記プログラム領域に格納された第２の状態で、前記ブート領域に格納されている書き換え前の前記ブートプログラムを消去し、そして、書き換え版の前記ブートプログラムを前記ブート領域に格納し、次に、(ｃ)前記プログラム領域において、前記所定のプログラムの書き換えをする書換部と、を備える情報処理装置。
【請求項２】
前記ＯＳを起動するために、前記不揮発性記憶装置から前記ブートプログラムを読み出すブート読出部を備え、
前記ブート読出部は、前記(ａ)において、書き換え版の前記ブートプログラムを前記プログラム領域に格納することに失敗していた場合、前記ＯＳを起動する前記ブートプログラムとして、前記ブート領域に格納されている書き換え前の前記ブートプログラムを選択し、前記(ａ)において、書き換え版の前記ブートプログラムを前記プログラム領域に格納することに成功し、かつ、前記(ｂ)において、書き換え版の前記ブートプログラムを前記ブート領域に格納することに失敗していた場合、前記ＯＳを起動する前記ブートプログラムとして、前記プログラム領域に格納されている書き換え版の前記ブートプログラムを選択し、前記(ｂ)において、書き換え版の前記ブートプログラムを前記ブート領域に格納することに成功していた場合、前記ＯＳを起動する前記ブートプログラムとして、前記ブート領域に格納されている書き換え版の前記ブートプログラムを選択する請求項１に記載の情報処理装置。
【請求項３】
揮発性半導体メモリーと、
前記第１の状態で前記情報処理装置の外部から送られてきて、前記書換部によって前記揮発性半導体メモリーに格納された書き換え版の前記ブートプログラムに対して、誤り検出訂正をする誤り検出訂正部と、を備え、
前記書換部は、前記(ａ)において、前記誤り検出訂正された書き換え版の前記ブートプログラムを、前記揮発性半導体メモリーから読み出して、前記プログラム領域に格納し、前記(ｂ)において、前記(ａ)で前記揮発性半導体メモリーから読み出された、前記誤り検出訂正された書き換え版の前記ブートプログラムを再び、前記揮発性半導体メモリーから読み出して、前記ブート領域に格納する請求項１又は２に記載の情報処理装置。
【請求項４】
前記所定のプログラムは、複数のモジュールに分割されて、前記プログラム領域に格納されており、
前記書換部は、前記所定のプログラムの書き換えが、前記複数のモジュールの一部である１又は２以上のモジュールの書き換えの場合、書き換えの対象となるモジュールの単位で書き換えを実行し、
前記書換部は、モジュールの単位で書き換えをする場合、書き換え対象となるモジュールのうち、書き換え版の前記ブートプログラムよりもサイズが大きい１つのモジュールが格納されている領域を、一時格納領域として、前記(ａ)において、書き換え版の前記ブートプログラムを格納する請求項１〜３のいずれか一項に記載の情報処理装置。
【請求項５】
前記ブートプログラム及び前記所定のプログラムの書き換えにおいて、前記複数のモジュールのうち書き換えの対象となるモジュールを示す書換情報が、前記情報処理装置の外部から送られ、
前記書換部は、前記書換情報を参照して、前記書換情報に前記一時格納領域の指定が含まれていれば、前記(ａ)及び前記(ｂ)の処理をし、前記書換情報に前記一時格納領域の指定が含まれていなければ、前記(ａ)及び前記(ｂ)の処理をせずに、書き換え版の前記ブートプログラムを前記ファイル領域に格納する処理を省略して、前記ブート領域に格納する請求項４に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置において、ブートプログラムを書き換える技術に関する。
【背景技術】
【０００２】
ブートプログラムは、コンピューターのＯＳ(Operating System)を起動するためのソフトウェアである。ブートプログラムは、不揮発性メモリーのような不揮発性記憶装置に格納されており、不揮発性記憶装置からブートプログラムが読み出されて、実行されることにより、ＯＳを起動させる。
【０００３】
ブートプログラムの書き換えとは、例えば、ブートプログラムをアップデートすることである。ブートプログラムの書き換え時に、電源の遮断等が発生し、ブートプログラムの書き換えが失敗することにより、不揮発性記憶装置にブートプログラムが格納されていない事態が生じれば、ＯＳを起動できなくなる。そこで、ブートプログラムの書き換えが失敗しても、ＯＳを起動できるようにするために、ブートプログラムに加えて予備のブートプログラムを不揮発性記憶装置に格納する技術が知られている。
【０００４】
具体例として、フラッシュＥＥＰＲＯＭに格納されているブートプログラムを書き換える前に、ブートプログラムをコピーして、予備のブートプログラムとして、フラッシュＥＥＰＲＯＭに書き込む技術が提案されている(例えば、特許文献１参照)。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平８−２５５０８４号公報(段落００２７−段落００３２)
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、不揮発性記憶装置において、書き換えの対象となるブートプログラム及び所定のプログラムが格納されている格納領域以外に、予備のブートプログラムを格納するための格納領域を新たに設ける必要がない情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成する本発明に係る情報処理装置は、ブートプログラムを用いてＯＳを起動する情報処理装置であって、前記ブートプログラムが格納されるブート領域及び前記ブートプログラムと異なる所定のプログラムが格納されるプログラム領域を含む不揮発性記憶装置と、前記ブートプログラム及び前記所定のプログラムを書き換える命令がされたとき、(ａ)書き換え前の前記ブートプログラムが前記ブート領域に格納された第１の状態で、前記情報処理装置の外部から送られてきた書き換え版の前記ブートプログラムを前記プログラム領域に格納し、次に、(ｂ)書き換え版の前記ブートプログラムが前記プログラム領域に格納された第２の状態で、前記ブート領域に格納されている書き換え前の前記ブートプログラムを消去し、そして、書き換え版の前記ブートプログラムを前記ブート領域に格納し、次に、(ｃ)前記プログラム領域において、前記所定のプログラムの書き換えをする書換部と、を備える。
【０００８】
本発明に係る情報処理装置では、ブートプログラム及び所定のプログラムを書き換える場合(例えば、アップデートする場合)、書き換え前のブートプログラムがブート領域に格納されている状態で、書き換え版のブートプログラムをプログラム領域に格納し、次に、書き換え版のブートプログラムがプログラム領域に格納されている状態で、書き換え版のブートプログラムをブート領域に格納する。書き換え版のブートプログラムとは、ブートプログラムの書き換えにより、書き換え前のブートプログラムと置換されるブートプログラムである。
【０００９】
書き換え版のブートプログラムをプログラム領域に格納することに失敗しても、ブート領域には、予備のブートプログラムとなる書き換え前のブートプログラムが格納されている。書き換え版のブートプログラムをブート領域に格納することに失敗しても、プログラム領域には、予備のブートプログラムとなる書き換え版のブートプログラムが格納されている。従って、ブートプログラムの書き換えに失敗しても、ＯＳを起動させることができる。
【００１０】
本発明に係る情報処理装置よれば、不揮発性記憶装置において、書き換え版のブートプログラムを一時的に格納する領域として、ブートプログラムと一緒に書き換えられる所定のプログラムが格納されるプログラム領域を利用する。従って、不揮発性記憶装置において、書き換えの対象となるブートプログラムが及び所定のプログラムが格納されているブート領域及びプログラム領域以外に、予備のブートプログラムを格納するための領域を新たに設ける必要がなくなる。
【００１１】
上記構成において、前記ＯＳを起動するために、前記不揮発性記憶装置から前記ブートプログラムを読み出すブート読出部を備え、前記ブート読出部は、前記(ａ)において、書き換え版の前記ブートプログラムを前記プログラム領域に格納することに失敗していた場合、前記ＯＳを起動する前記ブートプログラムとして、前記ブート領域に格納されている書き換え前の前記ブートプログラムを選択し、前記(ａ)において、書き換え版の前記ブートプログラムを前記プログラム領域に格納することに成功し、かつ、前記(ｂ)において、書き換え版の前記ブートプログラムを前記ブート領域に格納することに失敗していた場合、前記ＯＳを起動する前記ブートプログラムとして、前記プログラム領域に格納されている書き換え版の前記ブートプログラムを選択し、前記(ｂ)において、書き換え版の前記ブートプログラムを前記ブート領域に格納することに成功していた場合、前記ＯＳを起動する前記ブートプログラムとして、前記ブート領域に格納されている書き換え版の前記ブートプログラムを選択する。
【００１２】
この構成は、本発明において、ＯＳを起動するためにブートプログラムを読み出す態様の一つである。
【００１３】
上記構成において、揮発性半導体メモリーと、前記第１の状態で前記情報処理装置の外部から送られてきて、前記書換部によって前記揮発性半導体メモリーに格納された書き換え版の前記ブートプログラムに対して、誤り検出訂正をする誤り検出訂正部と、を備え、前記書換部は、前記(ａ)において、前記誤り検出訂正された書き換え版の前記ブートプログラムを、前記揮発性半導体メモリーから読み出して、前記プログラム領域に格納し、前記(ｂ)において、前記(ａ)で前記揮発性半導体メモリーから読み出された、前記誤り検出訂正された書き換え版の前記ブートプログラムを再び、前記揮発性半導体メモリーから読み出して、前記ブート領域に格納する。
【００１４】
この構成では、誤り検出訂正がされた書き換え版のブートプログラムを揮発性半導体メモリーから読み出して、プログラム領域に格納した後も、このブートプログラムを揮発性半導体メモリーに記憶し続けている。そして、揮発性半導体メモリーに記憶し続けられている、誤り検出訂正がされた書き換え版のブートプログラムを再び、揮発性半導体メモリーから読み出して、ブート領域に格納する。従って、ブート領域に格納する書き換え版のブートプログラムに対して、誤り検出訂正をする必要がなくすことができる。
【００１５】
上記構成において、前記所定のプログラムは、複数のモジュールに分割されて、前記プログラム領域に格納されており、前記書換部は、前記所定のプログラムの書き換えが、前記複数のモジュールの一部である１又は２以上のモジュールの書き換えの場合、書き換えの対象となるモジュールの単位で書き換えを実行し、前記書換部は、モジュールの単位で書き換えをする場合、書き換え対象となるモジュールのうち、書き換え版の前記ブートプログラムよりもサイズが大きい１つのモジュールが格納されている領域を、一時格納領域として、前記(ａ)において、書き換え版の前記ブートプログラムを格納する。
【００１６】
この構成は、所定のプログラムの書き換えが、複数のモジュールの一部である１又は２以上のモジュールの書き換えの場合の態様であり、書き換え対象となるモジュールのうち、書き換え版のブートプログラムよりもサイズが大きい１つのモジュールが格納されている領域を、一時格納領域として、書き換え版の前記ブートプログラムを格納する。
【００１７】
上記構成において、前記ブートプログラム及び前記所定のプログラムの書き換えにおいて、前記複数のモジュールのうち書き換えの対象となるモジュールを示す書換情報が、前記情報処理装置の外部から送られ、前記書換部は、前記書換情報を参照して、前記書換情報に前記一時格納領域の指定が含まれていれば、前記(ａ)及び前記(ｂ)の処理をし、前記書換情報に前記一時格納領域の指定が含まれていなければ、前記(ａ)及び前記(ｂ)の処理をせずに、書き換え版の前記ブートプログラムを前記ファイル領域に格納する処理を省略して、前記ブート領域に格納する。
【００１８】
上記(ａ)及び(ｂ)の処理をする場合、すなわち、書き換え版のブートプログラムを一時格納領域(プログラム領域)に格納し、そして、ブート領域に格納する処理をする場合、書き換え版のブートプログラムを一時格納領域に格納する処理があるので、書き換え時間が長くなる。そこで、書換情報に一時格納領域の指定を含めるか否かによって、上記(ａ)及び(ｂ)の処理をするか否かを選択できるようにする。
【００１９】
例えば、ブートプログラム及び所定のプログラムの全体のサイズが比較的小さければ、これらのプログラムの書き換えに要する時間が短いので、書き換えの途中で電源が遮断し、ブートプログラム及び所定のプログラムの書き換えが失敗する可能性は極めて小さい。そこで、ブートプログラム及び所定のプログラムの全体のサイズが比較的小さければ、書換情報に一時格納領域の指定を含めないようにする。これにより、ブートプログラム及び所定のプログラムの書き換え時間をさらに短くすることができる。
【００２０】
これに対して、ブートプログラム及び所定のプログラムの全体のサイズが比較的大きければ、これらのプログラムの書き換えに要する時間が長いので、書き換えの途中で電源が遮断し、ブートプログラム及び所定のプログラムの書き換えが失敗する可能性がある。そこで、ブートプログラム及び所定のプログラムの全体のサイズが比較的大きければ、書換情報に一時格納領域の指定を含める。これにより、ブートプログラムの書き換えが失敗しても、ＯＳを起動できるようにする。
【発明の効果】
【００２１】
本発明によれば、不揮発性記憶装置において、書き換えの対象となるブートプログラム及び所定のプログラムが格納されている格納領域以外に、予備のブートプログラムを格納するための格納領域を新たに設ける必要がない。
【図面の簡単な説明】
【００２２】
【図１】本実施形態に係る情報処理装置を備えた画像形成装置の内部構造の概略を説明する説明図である。
【図２】図１に示す画像形成装置の構成を示すブロック図である。
【図３】本実施形態に係る情報処理装置の構成を示すブロック図である。
【図４】ＮＯＲ型フラッシュメモリーに格納されているプログラムやデータの具体例を示すブロック図である。
【図５】ＵＳＢメモリーに格納されているプログラムやデータの具体例を示すブロック図である。
【図６】アップデートファイル情報を説明する説明図である。
【図７】メモリー制御部の構成を示すブロック図である。
【図８】本実施形態に係る情報処理装置のアップデート動作を説明するフローチャート１である。
【図９】本実施形態に係る情報処理装置のアップデート動作を説明するフローチャート２である。
【図１０】本実施形態に係る情報処理装置のアップデート動作を説明するフローチャート３である。
【発明を実施するための形態】
【００２３】
以下、図面に基づいて本発明の実施形態を詳細に説明する。図１は、本発明の一実施形態に係る情報処理装置３(図３)を備えた画像形成装置１の内部構造の概略を説明する説明図である。画像形成装置１は、例えば、コピー、プリンター、スキャナー及びファクシミリの機能を有するデジタル複合機に適用することができる。画像形成装置１は、装置本体１００、装置本体１００の上に配置された原稿読取部２００、原稿読取部２００の上に配置された原稿給送部３００及び装置本体１００の上部前面に配置された操作部４００を備える。
【００２４】
原稿給送部３００は、自動原稿送り装置として機能し、原稿載置部３０１に置かれた複数枚の原稿を連続的に原稿読取部２００で読み取ることができるように送ることができる。
【００２５】
原稿読取部２００は、露光ランプ等を搭載したキャリッジ２０１、ガラス等の透明部材により構成された原稿台２０３、不図示のＣＣＤ(Charge Coupled Device)センサー及び原稿読取スリット２０５を備える。原稿台２０３に載置された原稿を読み取る場合、キャリッジ２０１を原稿台２０３の長手方向に移動させながらＣＣＤセンサーにより原稿を読み取る。これに対して、原稿給送部３００から給送された原稿を読み取る場合、キャリッジ２０１を原稿読取スリット２０５と対向する位置に移動させて、原稿給送部３００から送られてきた原稿を、原稿読取スリット２０５を通してＣＣＤセンサーにより読み取る。ＣＣＤセンサーは読み取った原稿を画像データとして出力する。
【００２６】
装置本体１００は、用紙貯留部１０１、画像形成部１０３及び定着部１０５を備える。用紙貯留部１０１は、装置本体１００の最下部に配置されており、用紙の束を貯留することができる用紙トレイ１０７を備える。用紙トレイ１０７に貯留された用紙の束において、最上位の用紙がピックアップローラー１０９の駆動により、用紙搬送路１１１へ向けて送出される。用紙は、用紙搬送路１１１を通って、画像形成部１０３へ搬送される。
【００２７】
画像形成部１０３は、搬送されてきた用紙にトナー像を形成する。画像形成部１０３は、感光体ドラム１１３、露光部１１５、現像部１１７及び転写部１１９を備える。露光部１１５は、画像データ(原稿読取部２００から出力された画像データ、パソコンから送信された画像データ、ファクシミリ受信の画像データ等)に対応して変調された光を生成し、一様に帯電された感光体ドラム１１３の周面に照射する。これにより、感光体ドラム１１３の周面には、画像データに対応する静電潜像が形成される。この状態で感光体ドラム１１３の周面に現像部１１７からトナーを供給することにより、周面には画像データに対応するトナー像が形成される。このトナー像は、転写部１１９によって先ほど説明した用紙貯留部１０１から搬送されてきた用紙に転写される。
【００２８】
トナー像が転写された用紙は、定着部１０５に送られる。定着部１０５において、トナー像と用紙に熱と圧力が加えられて、トナー像は用紙に定着される。用紙はスタックトレイ１２１又は排紙トレイ１２３に排紙される。
【００２９】
操作部４００は、操作キー部４０１と表示部４０３を備える。表示部４０３は、タッチパネル機能を有しており、ソフトキーを含む画面が表示される。ユーザーは、画面を見ながらソフトキーを操作することによって、コピー等の機能の実行に必要な設定等をする。
【００３０】
操作キー部４０１には、ハードキーからなる操作キーが設けられている。具体的には、スタートキー４０５、テンキー４０７、ストップキー４０９、リセットキー４１１、コピー、プリンター、スキャナー及びファクシミリを切り換えるための機能切換キー４１３等が設けられている。
【００３１】
スタートキー４０５は、コピー、ファクシミリ送信等の動作を開始させるキーである。テンキー４０７は、コピー部数、ファクシミリ番号等の数字を入力するキーである。ストップキー４０９は、コピー動作等を途中で中止させるキーである。リセットキー４１１は、設定された内容を初期設定状態に戻すキーである。
【００３２】
機能切換キー４１３は、コピーキー及び送信キー等を備えており、コピー機能、送信機能等を相互に切り替えるキーである。コピーキーを操作すれば、コピーの初期画面が表示部４０３に表示される。送信キーを操作すれば、ファクシミリ送信及びメール送信の初期画面が表示部４０３に表示される。
【００３３】
図２は、図１に示す画像形成装置１の構成を示すブロック図である。画像形成装置１は、装置本体１００、原稿読取部２００、原稿給送部３００、操作部４００、制御部５００及び通信部６００がバスによって相互に接続された構成を有する。装置本体１００、原稿読取部２００、原稿給送部３００及び操作部４００に関しては既に説明したので、説明を省略する。
【００３４】
通信部６００は、ファクシミリ通信部６０１及びネットワークＩ／Ｆ部６０３を備える。ファクシミリ通信部６０１は、相手先ファクシミリとの電話回線の接続を制御するＮＣＵ(Network Control Unit)及びファクシミリ通信用の信号を変復調する変復調回路を備える。ファクシミリ通信部６０１は、電話回線６０５に接続される。
【００３５】
ネットワークＩ／Ｆ部６０３は、ＬＡＮ(Local Area Network)６０７に接続される。ネットワークＩ／Ｆ部６０３は、ＬＡＮ６０７に接続されたパソコン等の端末装置との間で通信を実行するための通信インターフェイス回路である。
【００３６】
制御部５００について説明する。図３は、本実施形態に係る情報処理装置３の構成を示すブロック図である。情報処理装置３は、制御部５００に含まれるコンピューターである。情報処理装置３は、ＣＰＵ(Central Processing Unit)５、ＡＳＩＣ(Application Specific Integrated Circuits)７、ＮＯＲ型フラッシュメモリー(NOR-type flash memory)９、ＮＡＮＤ型フラッシュメモリー(NAND-type flash memory)１１、ＤＲＡＭ(Dynamic Random Access Memory)１３、ＵＳＢコネクター１５、メモリー制御部１７、及び、これらを相互に接続するバス１９を備える。
【００３７】
ＣＰＵ５は、画像形成装置１を動作させるために必要な制御を、装置本体１００等の画像形成装置１の上記構成要素に対して実行する。
【００３８】
ＡＳＩＣ７は、画像処理専用であり、画像データの各種処理(フィルター等)に用いられる。
【００３９】
ＮＯＲ型フラッシュメモリー９は、ＲＯＭとして機能し、画像形成装置１の動作の制御に必要なプログラム(ブートプログラム、ＯＳを含む各種プログラム)やデータを格納している。ＮＯＲ型フラッシュメモリー９は、シリアルＮＯＲであり、不揮発性記憶装置の具体例である。不揮発性記憶装置の他の例として、パラレルＮＯＲ、ＮＡＮＤ型フラッシュメモリー、ＨＤＤ(Hard Disk Drive)がある。
【００４０】
ＮＡＮＤ型フラッシュメモリー１１は、画像データ等を格納する。
【００４１】
ＤＲＡＭ１３は、ＮＯＲ型フラッシュメモリー９に格納されているプログラムの展開や、ＮＡＮＤ型フラッシュメモリー１１に格納されている画像データの展開等に利用される。ＤＲＡＭ１３は、揮発性半導体メモリーの具体例である。揮発性半導体メモリーの他の例として、ＳＲＡＭ(Static Random Access Memory)がある。
【００４２】
ＵＳＢコネクター１５は、ＵＳＢメモリー２１が接続可能な接続部として機能する。ＵＳＢコネクター１５は、画像形成装置１のキャビネットに取り付けられている。
【００４３】
メモリー制御部１７は、ＣＰＵ５が、ＮＯＲ型フラッシュメモリー９からプログラムやデータを読み出す際に仲介したり、ＮＡＮＤ型フラッシュメモリー１１から画像データを読み出す際に仲介したりする等の装置である。メモリー制御部１７は、ＥＣＣ(Error Correction Code)やウェアレベリング等の制御をする。メモリー制御部１７は、ハードウェアとソフトウェアにより構成される。
【００４４】
図４は、ＮＯＲ型フラッシュメモリー９に格納されているプログラムやデータの具体例を示すブロック図である。ＮＯＲ型フラッシュメモリー９には、ブートプログラム４１、第１のプログラム４３、第２のプログラム４５(所定のプログラムの一例)及びバックアップデータ４７が格納されている。
【００４５】
以下、ブートプログラム４１や所定のプログラムの書き換えを、アップデートを例に説明するが、アップデート以外の書き換えの形態でもよい(例えば、アップグレード)。
【００４６】
ブートプログラム４１は、アップデート前後を区別する場合、アップデート前をブートプログラム４１ｂとし、アップデート後をアップデート版のブートプログラム４１ａ(図５)とする。
【００４７】
また、アップデート版のブートプログラム４１ａやアップデート版の所定のプログラムが、ＵＳＢメモリー２１に格納されている例で説明するが、アップデート版のブートプログラム４１ａやアップデート版の所定のプログラムが、画像形成装置１の外部から送られてくる形態であればよい。例えば、アップデート版のブートプログラム４１ａやアップデート版の所定のプログラムが、ＳＤメモリー(SD Memory)やＣＤ(compact disc)等に格納されていたり、ネットワーク経由で送られてきたりする形態でもよい。
【００４８】
ＮＯＲ型フラッシュメモリー９の記憶領域のうち、ブートプログラム４１が格納される領域をブート領域６１、ブートプログラム４１と異なる所定のプログラムが格納される領域をプログラム領域６３、バックアップデータ４７が格納される領域をデータ領域６５とする。
【００４９】
ブートプログラム４１は、情報処理装置３のＯＳを起動するためのソフトウェアである。
【００５０】
第１のプログラム４３は、例えば、アプリケーションプログラムであり、第２のプログラム４５は、例えば、ＯＳを含むプログラムである。ブートプログラム４１と第２のプログラム４５とを、ブートプログラム４１を含むファームウェアとする。
【００５１】
第１のプログラム４３、第２のプログラム４５は、それぞれ、複数のモジュールに分割されて、プログラム領域６３に格納されている。第２のプログラム４５で説明すると、第２のプログラム４５は、５つのモジュール、すなわち、第１のモジュール５１、第２のモジュール５３、第３のモジュール５５、第４のモジュール５７、及び、第５のモジュール５９に分割されてプログラム領域６３に格納されている。例えば、プログラム領域６３のうち、第３のモジュール５５の格納領域に第３のモジュール５５が格納される。
【００５２】
バックアップデータ４７とは、画像形成装置１が動作することにより、更新が必要となるデータであり、例えば、画像形成装置１がこれまでに画像を印刷した用紙の総数である。
【００５３】
図５は、ＵＳＢメモリー２１に格納されているプログラムやデータの具体例を示すブロック図である。ＵＳＢメモリー２１には、アップデート版のブートプログラム４１ａ、アップデート版の第２のモジュール５３ａ、アップデート版の第３のモジュール５５ａ、アップデート版の第５のモジュール５９ａ、及び、アップデートファイル情報７１が格納されている。
【００５４】
図６は、アップデートファイル情報７１を説明する説明図である。アップデートファイル情報７１は、書換情報の一例である。書換情報とは、ブートプログラム４１及び所定のプログラムの書き換え(アップデート)において、所定のプログラムを構成する複数のモジュールのうち、書き換え(アップデート)の対象となるモジュールを示す情報である。
【００５５】
アップデートファイル情報７１には、今回のアップデートされる対象及びそのサイズ、並びに、一時格納領域６７として指定される格納領域の情報が含まれる。
【００５６】
一時格納領域６７は、プログラム領域６３に含まれる。一時格納領域６７は、図４中の二点鎖線で示すように、アップデートの対象となるモジュール(第２のモジュール５３、第３のモジュール５５、第５のモジュール５９)のうち、アップデート版のブートプログラム４１ａよりもサイズが大きい１つのモジュール(例えば、第３のモジュール５５)が格納されている領域である。
【００５７】
図７は、メモリー制御部１７の構成を示すブロック図である。メモリー制御部１７は、書換部３３、ブート読出部３１及び誤り検出訂正部３５を備える。
【００５８】
書換部３３は、ブートプログラム４１及び所定のプログラムをアップデートする命令がされたとき、(ａ)アップデート前のブートプログラム４１ｂがブート領域６１に格納された第１の状態で、情報処理装置３の外部(例えば、ＵＳＢメモリー２１)から送られてきたアップデート版のブートプログラム４１ａをプログラム領域６３に格納し、次に、(ｂ)アップデート版のブートプログラム４１ａがプログラム領域６３に格納された第２の状態で、ブート領域６１に格納されているアップデート前のブートプログラム４１ｂを消去し、そして、アップデート版のブートプログラム４１ａをブート領域６１に格納し、次に、(ｃ)プログラム領域６３において、所定のプログラムの書き換えをする。
【００５９】
ブート読出部３１は、情報処理装置３のＯＳを起動するために、ＮＯＲ型フラッシュメモリー９からブートプログラム４１を読み出す。詳しく説明すると、ブート読出部３１は、上記(ａ)において、アップデート版のブートプログラム４１ａをプログラム領域６３に格納することに失敗していた場合、ＯＳを起動するブートプログラム４１として、ブート領域６１に格納されているアップデート前のブートプログラム４１ｂを選択する。上記(ａ)において、アップデート版のブートプログラム４１ａをプログラム領域６３に格納することに成功し、かつ、上記(ｂ)において、アップデート版のブートプログラム４１ａをブート領域６１に格納することに失敗していた場合、ＯＳを起動するブートプログラム４１として、プログラム領域６３に格納されているアップデート版のブートプログラム４１ａを選択する。上記(ｂ)において、アップデート版のブートプログラム４１ａをブート領域６１に格納することに成功していた場合、ＯＳを起動するブートプログラム４１として、ブート領域６１に格納されているアップデート版のブートプログラム４１ａを選択する。
【００６０】
誤り検出訂正部３５は、アップデート前のブートプログラム４１ｂがブート領域６１に格納された状態(第１の状態)で情報処理装置３の外部(例えば、ＵＳＢメモリー２１)から送られてきて、書換部３３によってＤＲＡＭ１３に格納されたアップデート版のブートプログラム４１ａに対して、誤り検出訂正をする。誤り検出訂正としては、例えば、ＥＣＣ(Error Correction Code)が用いられる。
【００６１】
書換部３３は、上記(ａ)において、誤り検出訂正されたアップデート版のブートプログラム４１ａを、ＤＲＡＭ１３から読み出して、プログラム領域６３に格納し、上記(ｂ)において、上記(ａ)でＤＲＡＭ１３から読み出された、誤り検出訂正されたアップデート版のブートプログラム４１ａを再び、ＤＲＡＭ１３から読み出して、ブート領域６１に格納する。
【００６２】
また、書換部３３は、図５に示すように、第２のプログラム４５(所定のプログラム)のアップデートが、複数のモジュールの一部である１又は２以上のモジュールのアップデートの場合、アップデートの対象となるモジュールの単位でアップデートを実行する。
【００６３】
本実施形態に係る情報処理装置３のアップデート動作(書き換え動作の一例)について、ファームウェアを例にして説明する。ブートプログラム４１と第２のプログラム４５とをファームウェアとする。図８は、ファームウェアのアップデートに移行するまでの動作を説明するフローチャートである。図９及び図１０は、ファームウェアのアップデートに移行した後の動作を説明するフローチャートである。
【００６４】
サービスマンが、ＵＳＢメモリー２１を画像形成装置１に設けられたＵＳＢコネクター１５に挿入する(ステップＳ１)。以下、サービスマンで説明するが、ユーザーでもよい。
【００６５】
サービスマンが、画像形成装置１の電源をオンする(ステップＳ３)。
【００６６】
制御部５００は、画像形成装置１の起動に必要な処理をする(ステップＳ５)。この処理には、ＡＭＣ(Auto Memory Check)処理、及び、ＮＯＲ型フラッシュメモリー９からアップデート前のブートプログラム４１ｂを読み出して、ＮＯＲ型フラッシュメモリー９に格納されているＯＳを起動させる処理等が含まれる。
【００６７】
制御部５００は、ＵＳＢコネクター１５にＵＳＢメモリー２１が挿入されているかを判断する(ステップＳ７)。
【００６８】
制御部５００が、ＵＳＢコネクター１５にＵＳＢメモリー２１が挿入されていないと判断すれば(ステップＳ７でＮｏ)、制御部５００は、画像形成装置１を待機モードへ移行させる(ステップＳ９)。
【００６９】
制御部５００が、ＵＳＢコネクター１５にＵＳＢメモリー２１が挿入されていると判断すれば(ステップＳ７でＹｅｓ)、制御部５００は、ファームウェアのアップデートモードに移行する条件を満たしているかを判断する(ステップＳ１１)。この条件とは、例えば、画像形成装置１の電源のボタンが、サービスマンによって、長押しされることである。
【００７０】
制御部５００が、ファームウェアのアップデートモードに移行する条件を満たしていないと判断すれば(ステップＳ１１でＮｏ)、制御部５００は、画像形成装置１を待機モードへ移行させる(ステップＳ９)。
【００７１】
制御部５００が、ファームウェアのアップデートモードに移行する条件を満たしていると判断すれば(ステップＳ１１でＹｅｓ)、制御部５００は、ファームウェアのアップデートモードへ移行する命令をする(ステップＳ１３)。この命令が、ブートプログラム４１及び所定のプログラムをアップデート(書き換える)命令となる。
【００７２】
次に、図９及び図１０のフローチャートで示すファームウェアのアップデートモードについて説明する。書換部３３は、ＵＳＢメモリー２１に格納されているアップデートファイル情報７１(図６)を参照し、ファームウェアのアップデートの対象に、ブートプログラム４１が含まれるかを判断する(ステップＴ１)。
【００７３】
書換部３３が、ファームウェアのアップデートの対象にブートプログラム４１が含まれないと判断すれば(ステップＴ１でＮｏ)、書換部３３は、ファームウェアの通常のアップデート処理をする(ステップＴ３)。
【００７４】
書換部３３が、ファームウェアのアップデートの対象にブートプログラム４１が含まれると判断すれば(ステップＴ１でＹｅｓ)、書換部３３は、アップデートファイル情報７１を参照して、アップデート版のブートプログラム４１ａを、ブート領域６１に格納する前に一時的に格納する一時格納領域６７が指定されているかを判断する(ステップＴ５)。一時格納領域６７は、プログラム領域６３に含まれる。本実施形態では、図４及び図６に示すように、プログラム領域６３に含まれる第３のモジュール５５の格納領域が、一時格納領域６７として指定されている。
【００７５】
書換部３３が、ブートプログラム４１の一時格納領域６７が指定されていると判断すれば(ステップＴ５でＹｅｓ)、一時格納領域６７にアップデート版のブートプログラム４１ａを格納する処理をする前に、一時格納領域６７に格納されているデータがエラーであることを示すフラグ１を立てる(ステップＴ７)。フラグ１を立てるとは、例えば、一時格納領域６７に含まれる予め定められた１ビット領域に記憶されているデータを「１」にすることである。
【００７６】
書換部３３は、アップデート版のブートプログラム４１ａを、ＵＳＢメモリー２１から読み出して、ＤＲＡＭ１３に展開させる(ステップＴ９)。ＤＲＡＭ１３に展開するとは、圧縮されたデータを伸長してＤＲＡＭ１３に格納することである。
【００７７】
誤り検出訂正部３５は、ＤＲＡＭ１３に展開されたアップデート版のブートプログラム４１ａに対して、誤り検出訂正の処理をする(ステップＴ１１)。
【００７８】
書換部３３は、一時格納領域６７に格納されているデータを消去する(ステップＴ１３)。
【００７９】
書換部３３は、誤り検出訂正がされて、ＤＲＡＭ１３に格納されているアップデート版のブートプログラム４１ａを、ＤＲＡＭ１３から読み出して、一時格納領域６７に格納する(ステップＴ１５)。一時格納領域６７は、第３のモジュール５５が格納される領域である。このように、書換部３３は、モジュールの単位でアップデートをする場合、アップデート対象となるモジュールのうち、アップデート版のブートプログラム４１ａよりもサイズが大きい１つのモジュールが格納されている領域を、一時格納領域６７として、アップデート版のブートプログラム４１ａを格納する。
【００８０】
書換部３３は、ブート読出部３１がブートプログラム４１を読み出すために、アクセスするアドレスを、ブート領域６１を示すアドレスから一時格納領域６７を示すアドレスに変更する(ステップＴ１７)。これにより、ブートプログラム４１をブート領域６１に格納することに失敗しても、ブート読出部３１は、一時格納領域６７にアクセスしてブートプログラム４１を読み出して、ＯＳを起動させることができる。
【００８１】
書換部３３は、ブート領域６１にアップデート版のブートプログラム４１ａを格納する前に、ブート領域６１に格納されているデータがエラーであることを示すフラグ２を立てる(ステップＴ１９)。フラグ２を立てるとは、例えば、ブート領域６１に含まれる予め定められた１ビット領域に記憶されているデータを「１」にすることである。
【００８２】
書換部３３は、アップデート版のブートプログラム４１ａが一時格納領域６７に格納されている状態で、ブート領域６１に格納されているアップデート前のブートプログラム４１ｂを消去する(ステップＴ２１)。
【００８３】
書換部３３は、ステップＴ１１で誤り検出訂正されたアップデート版のブートプログラム４１ａを、ＤＲＡＭ１３から読み出して、ブート領域６１に格納する(ステップＴ２３)。すなわち、誤り検出訂正されたアップデート版のブートプログラム４１ａが、ＤＲＡＭ１３から読み出されて、一時格納領域６７に格納されるが(ステップＴ１５)、この誤り検出訂正されたアップデート版のブートプログラム４１ａがＤＲＡＭ１３に記憶され続けており、再び読み出されて、ブート領域６１に格納される。
【００８４】
なお、書換部３３は、アップデート版のブートプログラム４１ａを、ＵＳＢメモリー２１から読み出し、ＤＲＡＭ１３に展開し、誤り検出訂正部３５によって、誤り検出訂正されたアップデート版のブートプログラム４１ａを、ブート領域６１に格納してもよい。
【００８５】
書換部３３は、ブート読出部３１がブートプログラム４１を読み出すために、アクセスするアドレスを、一時格納領域６７を示すアドレスからブート領域６１を示すアドレスに変更する(ステップＴ２５)。これにより、ブート読出部３１は、ブート領域６１にアクセスしてブートプログラム４１を読み出し、ＯＳを起動することができる。
【００８６】
書換部３３は、エラーフラグ１，２を下ろす(ステップＴ２７)。これにより、ブートプログラム４１のアップデートが完了する。
【００８７】
書換部３３は、アップデート版のブートプログラム４１ａがブート領域６１に格納されている状態で、一時格納領域６７に格納されているアップデート版のブートプログラム４１ａを消去する(ステップＴ２９)。
【００８８】
書換部３３は、アップデート版の第２のモジュール５３ａ、アップデート版の第３のモジュール５５ａ及びアップデート版の第５のモジュール５９ａの書き換えを実行する(ステップ３１)。
【００８９】
なお、ステップＴ５において、書換部３３が、一時格納領域６７が指定されていないと判断すれば(ステップＴ５でＮｏ)、書換部３３は、アップデート版のブートプログラム４１ａを一時格納領域６７に格納する処理を省略して、ブート領域６１に格納する(ステップＴ３３)。そして、ステップＴ３１の処理をする。
【００９０】
本実施形態の主な効果を説明する。本実施形態に係る情報処理装置３では、ブートプログラム４１を含むファームウェア(すなわち、図４に示すブートプログラム４１及び第２のプログラム４５)をアップデート(書き換えの一例)する場合、アップデート前のブートプログラム４１ｂがブート領域６１に格納されている状態で、アップデート版のブートプログラム４１ａをプログラム領域６３に含まれる一時格納領域６７に格納する(ステップＴ１５)。次に、アップデート版のブートプログラム４１ａが一時格納領域６７に格納されている状態で、アップデート版のブートプログラム４１ａをブート領域６１に格納する(ステップＴ２３)。アップデート版のブートプログラム４１ａとは、ブートプログラム４１のアップデートにより、アップデート前のブートプログラム４１ｂと置換されるブートプログラム４１である。
【００９１】
アップデート版のブートプログラム４１ａを一時格納領域６７に格納することに失敗しても、ブート領域６１には、予備のブートプログラム４１となるアップデート前のブートプログラム４１ｂが格納されている。アップデート版のブートプログラム４１ａをブート領域６１に格納することに失敗しても、プログラム領域６３には、予備のブートプログラム４１となるアップデート版のブートプログラム４１ａが格納されている。従って、ブートプログラム４１のアップデートに失敗しても、ＯＳを起動させることができる。
【００９２】
本実施形態に係る情報処理装置３よれば、ＮＯＲ型フラッシュメモリー９において、アップデート版のブートプログラム４１ａを一時的に格納する領域として、ブートプログラム４１と一緒に書き換えられる所定のプログラム(第２のプログラム４５)が格納されるプログラム領域６３を利用する。従って、ＮＯＲ型フラッシュメモリー９において、アップデートの対象となるブートプログラム４１が及び所定のプログラムが格納されているブート領域６１及びプログラム領域６３以外に、予備のブートプログラム４１を格納するための領域を新たに設ける必要がなくなる。
【００９３】
ステップＴ２３で説明したように、本実施形態に係る情報処理装置３では、誤り検出訂正がされたアップデート版のブートプログラム４１ａをＤＲＡＭ１３から読み出して、一時格納領域６７に格納した後も、このブートプログラム４１ａをＤＲＡＭ１３に記憶し続けている。そして、ＤＲＡＭ１３に記憶し続けられている、誤り検出訂正がされたアップデート版のブートプログラム４１ａを再び、ＤＲＡＭ１３から読み出して、ブート領域６１に格納する。従って、ブート領域６１に格納するアップデート版のブートプログラム４１ａに対して、誤り検出訂正をする必要がなくすことができる。
【００９４】
本実施形態に係る情報処理装置３において、書換部３３は、図６に示すアップデートファイル情報７１を参照して、アップデートファイル情報７１に一時格納領域６７の指定が含まれていれば(ステップＴ５でＹｅｓ)、ステップＴ１５及びステップＴ２３を含む処理をする。書換部３３は、アップデートファイル情報７１に一時格納領域６７の指定が含まれていなければ(ステップＴ５でＮｏ)、ステップＴ１５及びステップＴ２３を含む処理をせずに、アップデート版のブートプログラム４１ａを一時格納領域６７に格納する処理を省略して、ブート領域６１に格納する(ステップＴ３３)。
【００９５】
これによる効果は、次の通りである。ステップＴ１５及びステップＴ２３の処理をする場合、すなわち、アップデート版のブートプログラム４１ａを一時格納領域６７に格納し、そして、ブート領域６１に格納する処理をする場合、アップデート版のブートプログラム４１ａを一時格納領域６７に格納する処理があるので、アップデート時間が長くなる。そこで、アップデートファイル情報７１に一時格納領域６７の指定を含めるか否かによって、ステップＴ１５及びステップＴ２３の処理をするか否かを選択できるようにする。
【００９６】
例えば、ブートプログラム４１を含むファームウェア(すなわち、ブートプログラム４１及び第２のプログラム４５)のサイズが比較的小さければ、ブートプログラム４１を含むファームウェアのアップデートに要する時間が短いので、アップデートの途中で電源が遮断し、ブートプログラム４１を含むファームウェアのアップデートが失敗する可能性は極めて小さい。そこで、ブートプログラム４１を含むファームウェアのサイズが比較的小さければ、アップデートファイル情報７１に一時格納領域６７の指定を含めないようにする。これにより、ブートプログラム４１を含むファームウェアのアップデート時間をさらに短くすることができる。
【００９７】
これに対して、ブートプログラム４１を含むファームウェアのサイズが比較的大きければ、ブートプログラム４１を含むファームウェアのアップデートに要する時間が長いので、アップデートの途中で電源が遮断し、ブートプログラム４１を含むファームウェアのアップデートが失敗する可能性がある。そこで、ブートプログラム４１を含むファームウェアのサイズが比較的大きければ、アップデートファイル情報７１に一時格納領域６７の指定を含める。これにより、ブートプログラム４１を含むファームウェアのアップデートが失敗しても、ＯＳを起動できるようにする。
【符号の説明】
【００９８】
１  画像形成装置
３  情報処理装置
３１  ブート読出部
３３  書換部
３５  誤り検出訂正部
４１  ブートプログラム
４１ａ  アップデート版のブートプログラム(書き換え版のブートプログラムの一例)
４１ｂ  アップデート前のブートプログラム(書き換え前のブートプログラムの一例)
４５  第２のプログラム(所定のプログラムの一例)
６１  ブート領域
６３  プログラム領域
６７  一時格納領域
７１  アップデートファイル情報(書換情報の一例)
【図１】
2015087792.tif 000003
【図２】
2015087792.tif 000004
【図３】
2015087792.tif 000005
【図４】
2015087792.tif 000006
【図５】
2015087792.tif 000007
【図６】
2015087792.tif 000008
【図７】
2015087792.tif 000009
【図８】
2015087792.tif 000010
【図９】
2015087792.tif 000011
【図１０】
2015087792.tif 000012