(57)【要約】【課題】予め確保されている専用の領域にファームウェアを書き込む場合に比べ、ファームウェアの更新中に予期せぬ電源断が発生しても正常にシステムを復帰できるようにする。【解決手段】情報処理装置は、ファームウェアを更新する場合、一時的なデータの記憶に使用されている記憶媒体における第１のアドレス区間に新しいファームウェアを書き込むと共に、第１のアドレス区間をファームウェアが使用する領域として管理し、かつ、現行のファームウェアが記憶されている記憶媒体における第２のアドレス区間を一時的なデータが使用する領域として管理する制御部とを有する。【選択図】図７
2018206282.tif 000002
【特許請求の範囲】
【請求項１】
ファームウェアを更新する場合、一時的なデータの記憶に使用されている記憶媒体における第１のアドレス区間に新しいファームウェアを書き込むと共に、当該第１のアドレス区間をファームウェアが使用する領域として管理し、かつ、現行のファームウェアが記憶されている当該記憶媒体における第２のアドレス区間を一時的なデータが使用する領域として管理する制御部と
を有する情報処理装置。
【請求項２】
前記制御部は、前記新しいファームウェアの書き込みが開始されてから書き込みが完了するまでの間、前記第１のアドレス区間を書き換え中の領域として管理する、
請求項１に記載の情報処理装置。
【請求項３】
前記制御部は、起動の際に、前記書き換え中の領域として管理されているアドレスが存在する場合、当該アドレスを一時的なデータが使用する領域として管理すると共に、ファームウェアの開始アドレスを与える情報を用いて起動する、
請求項２に記載の情報処理装置。
【請求項４】
前記制御部は、前記新しいファームウェアの書き込みが完了すると、当該新しいファームウェアが書き込まれた前記第１のアドレス区間をファームウェアが使用する領域として管理し、その後、前記現行のファームウェアが記憶されている前記第２のアドレス区間を不使用領域としての管理に変更する、
請求項１に記載の情報処理装置。
【請求項５】
前記制御部は、前記現行のファームウェアが記憶されている前記第２のアドレス区間を不使用領域としての管理に変更した後、ファームウェアの開始アドレスに前記第１のアドレス区間の開始アドレスを書き込む、
請求項４に記載の情報処理装置。
【請求項６】
前記制御部は、起動の際に、ファームウェアが使用する領域として管理されているアドレス区間が複数ある場合、ファームウェアの開始アドレスと合致しない方のアドレス区間を一時的なデータが使用する領域に変更し、当該開始アドレスから起動する、
請求項４に記載の情報処理装置。
【請求項７】
前記制御部は、起動の際に、不使用領域として管理されているアドレス区間が存在する場合、当該アドレス区間を一時的なデータが使用する領域に変更し、前記開始アドレスから起動する、
請求項５に記載の情報処理装置。
【請求項８】
前記領域を管理する情報は、前記第１のアドレス区間及び前記第２のアドレス区間とは異なる固定のアドレス区間に書き込まれる、請求項１に記載の情報処理装置。
【請求項９】
前記ファームウェアは、画像形成装置の組み込みソフトウェアである、請求項１に記載の情報処理装置。
【請求項１０】
コンピュータに、
ファームウェアを更新する場合、一時的なデータの記憶に使用されている記憶媒体における第１のアドレス区間に新しいファームウェアを書き込む機能と、
前記第１のアドレス区間をファームウェアが使用する領域として管理する機能と、
現行のファームウェアが記憶されている前記記憶媒体における第２のアドレス区間を一時的なデータが使用する領域として管理する機能と
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及びプログラムに関する。
【背景技術】
【０００２】
今日、様々な機械や機器の制御に組み込みシステムが用いられているが、一般に使用できる記憶容量には制限がある。一方で、組み込みシステムに格納されているファームウェアの更新は不可欠であり、従前より空き領域を使用した更新技術が提案されている。
例えば特許文献１には、ファームウェアを書き込む専用の領域（特定のアドレス空間）とは別に確保されている領域を用いて新しいファームウェアを書き込む準備を行い、その後、改めて専用の領域に新しいファームウェアを書き込む手法が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−１４１６９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところが、ファームウェアの書き込み領域を専用の領域（特定のアドレス空間）に固定する手法では、専用の領域のデータを新しいファームウェアのデータで差し替える動作が不可欠となる。このため、この差し替え動作中に、予期せぬ電源断が発生すると、ファームウェアの更新に失敗し、システムが復帰できなくなる。
【０００５】
本発明は、予め確保されている専用の領域にファームウェアを書き込む場合に比べ、ファームウェアの更新中に予期せぬ電源断が発生しても正常にシステムを復帰できるようにすることを目的とする。
【課題を解決するための手段】
【０００６】
請求項１に記載の発明は、ファームウェアを更新する場合、一時的なデータの記憶に使用されている記憶媒体における第１のアドレス区間に新しいファームウェアを書き込むと共に、当該第１のアドレス区間をファームウェアが使用する領域として管理し、かつ、現行のファームウェアが記憶されている当該記憶媒体における第２のアドレス区間を一時的なデータが使用する領域として管理する制御部とを有する情報処理装置である。
請求項２に記載の発明は、前記制御部は、前記新しいファームウェアの書き込みが開始されてから書き込みが完了するまでの間、前記第１のアドレス区間を書き換え中の領域として管理する、請求項１に記載の情報処理装置である。
請求項３に記載の発明は、前記制御部は、起動の際に、前記書き換え中の領域として管理されているアドレスが存在する場合、当該アドレスを一時的なデータが使用する領域として管理すると共に、ファームウェアの開始アドレスを与える情報を用いて起動する、請求項２に記載の情報処理装置である。
請求項４に記載の発明は、前記制御部は、前記新しいファームウェアの書き込みが完了すると、当該新しいファームウェアが書き込まれた前記第１のアドレス区間をファームウェアが使用する領域として管理し、その後、前記現行のファームウェアが記憶されている前記第２のアドレス区間を不使用領域としての管理に変更する、請求項１に記載の情報処理装置である。
請求項５に記載の発明は、前記制御部は、前記現行のファームウェアが記憶されている前記第２のアドレス区間を不使用領域としての管理に変更した後、ファームウェアの開始アドレスに前記第１のアドレス区間の開始アドレスを書き込む、請求項４に記載の情報処理装置である。
請求項６に記載の発明は、前記制御部は、起動の際に、ファームウェアが使用する領域として管理されているアドレス区間が複数ある場合、ファームウェアの開始アドレスと合致しない方のアドレス区間を一時的なデータが使用する領域に変更し、当該開始アドレスから起動する、請求項４に記載の情報処理装置である。
請求項７に記載の発明は、前記制御部は、起動の際に、不使用領域として管理されているアドレス区間が存在する場合、当該アドレス区間を一時的なデータが使用する領域に変更し、前記開始アドレスから起動する、請求項５に記載の情報処理装置である。
請求項８に記載の発明は、前記領域を管理する情報は、前記第１のアドレス区間及び前記第２のアドレス区間とは異なる固定のアドレス区間に書き込まれる、請求項１に記載の情報処理装置である。
請求項９に記載の発明は、前記ファームウェアは、画像形成装置の組み込みソフトウェアである、請求項１に記載の情報処理装置である。
請求項１０に記載の発明は、コンピュータに、ファームウェアを更新する場合、一時的なデータの記憶に使用されている記憶媒体における第１のアドレス区間に新しいファームウェアを書き込む機能と、前記第１のアドレス区間をファームウェアが使用する領域として管理する機能と、現行のファームウェアが記憶されている前記記憶媒体における第２のアドレス区間を一時的なデータが使用する領域として管理する機能とを実行させるためのプログラムである。
【発明の効果】
【０００７】
請求項１記載の発明によれば、ファームウェア専用の格納領域を設定する場合に比べ、予期せぬ電源断が発生しても正常に復帰できる。
請求項２記載の発明によれば、新しいファームウェアの書き込み中に予期せぬ電源断が発生した場合でも正常に復帰できる。
請求項３記載の発明によれば、新しいファームウェアの書き込み中に予期せぬ電源断が発生した場合でも正常に復帰できる。
請求項４記載の発明によれば、記憶媒体上のアドレス空間の管理情報の書き換えが完了する前に予期せぬ電源断が発生した場合でも正常に復帰できる。
請求項５記載の発明によれば、記憶媒体上のアドレス空間の管理情報の書き換えが完了する前に予期せぬ電源断が発生した場合でも正常に復帰できる。
請求項６記載の発明によれば、記憶媒体上のアドレス空間の管理情報の書き換えが完了する前に予期せぬ電源断が発生した場合でも正常に復帰できる。
請求項７記載の発明によれば、記憶媒体上のアドレス空間の管理情報の書き換えが完了する前に予期せぬ電源断が発生した場合でも正常に復帰できる。
請求項８記載の発明によれば、記憶媒体上のアドレス空間の管理情報の書き換えが完了する前に予期せぬ電源断が発生した場合でも正常に復帰できる。
請求項９記載の発明によれば、ファームウェア専用の格納領域を設定する場合に比べ、予期せぬ電源断が発生しても正常に復帰できる。
請求項１０記載の発明によれば、ファームウェア専用の格納領域を設定する場合に比べ、予期せぬ電源断が発生しても正常に復帰できる。
【図面の簡単な説明】
【０００８】
【図１】実施の形態１に係る画像形成装置の外観を示す図である。
【図２】実施の形態１に係る画像形成装置の内部構造を示す図である。
【図３】画像形成装置を構成する制御装置等の機能ブロック構成例を説明する図である。
【図４】従前の手法で用いられているアドレス空間の構造例を示す図である。
【図５】実施の形態１におけるアドレス空間のある時点における構造例を示す図である。
【図６】実施の形態１で使用するテーブル領域のデータ内容を説明する図である。
【図７】ファームウェアの更新手順を説明するフローチャートである。
【図８】新しいファームウェアの書き込み動作中におけるテーブル１及び２のデータ内容を説明する図である。
【図９】新しいファームウェアの書き込みが終了した時点のアドレス空間の割り当て状態を説明する図である。
【図１０】新しいファームウェアの書き込み終了後の過渡的なテーブル１及び２のデータ内容を説明する図である。
【図１１】新しいファームウェアの書き込み終了後の過渡的なアドレス空間の割り当て状態を説明する図である。
【図１２】新しいファームウェアの書き換え動作が完了した時点におけるテーブル１及び２のデータ内容を説明する図である。
【図１３】ファームウェアの書き換え動作が終了した時点におけるアドレス空間の割り当て状態を説明する図である。
【図１４】電源を起動する際の手順を説明するフローチャートである。
【図１５】ファームウェアの更新が正常に終了した状態で起動された場合のテーブル領域のデータ内容を説明する図である。
【図１６】ファームウェアの更新が正常に終了した状態で起動された場合のアドレス空間の構造例を示す図である。
【図１７】組み込みシステムの構成例を説明する図である。
【発明を実施するための形態】
【０００９】
以下、添付図面を参照して、実施の形態について詳細に説明する。
【００１０】
＜実施の形態１＞
ここでは、画像形成装置を例に説明する。本実施の形態で説明する画像形成装置は、記録材（以下、代表して「用紙」と記す場合もある。）に画像を形成する装置であり、コピー機能、スキャナ機能、ファックス送受信機能、印刷機能を備えている。もっとも、画像形成装置は、これら全ての機能を搭載する必要はなく、いずれか１つの機能に特化した装置、例えば複写機、スキャナ、ファックス送受信機、プリンタでもよい。
本実施の形態における画像形成装置は、情報処理装置の一例である。
【００１１】
＜画像形成装置の構成＞
図１は、実施の形態１に係る画像形成装置１の外観を示す図である。図２は、実施の形態１に係る画像形成装置１の内部構造を示す図である。
画像形成装置１は、原稿の画像を読み取る画像読取装置１００と、記録材上に画像を記録する画像記録装置２００とを備えている。
また、画像形成装置１は、ユーザからの操作入力の受け付けやユーザに対する各種情報の表示を行なうユーザインターフェース（ＵＩ）３００を備えている。
さらに、画像形成装置１は、画像形成装置１の全体動作を制御する制御装置５００を備えている。制御装置５００は制御部の一例である。
【００１２】
画像読取装置１００は、画像形成装置１の上部に配置されている。画像記録装置２００は、画像読取装置１００の下側に配置され、制御装置５００を内蔵している。ユーザインターフェース３００は、画像形成装置１の上部の手前側、つまり画像読取装置１００の後述する画像読取部１１０の手前側に配置されている。
【００１３】
まずは、画像読取装置１００について説明する。
画像読取装置１００は、原稿の画像を読み取る画像読取部１１０と、この画像読取部１１０に原稿を搬送する原稿搬送部１２０とを備えている。原稿搬送部１２０は、画像読取装置１００の上部に配置され、画像読取部１１０は、画像読取装置１００の下部に配置されている。
原稿搬送部１２０は、原稿を収容する原稿収容部１２１と、この原稿収容部１２１から搬送された原稿が排出される原稿排出部１２２とを有し、原稿収容部１２１から原稿排出部１２２へ原稿を搬送する。原稿搬送部１２０は、原稿自動送り装置（ＡＤＦ：Auto Document Feeder）とも呼ばれる。
【００１４】
次に、画像記録装置２００について説明する。
画像記録装置２００は、用紙Ｐに画像を形成する画像形成部２０と、画像形成部２０に対して用紙Ｐを供給する用紙供給部６０と、画像形成部２０にて画像が形成された用紙Ｐを排出する用紙排出部７０と、画像形成部２０にて一方の面に画像が形成された用紙Ｐの表裏を反転させ、画像形成部２０に向けて再度搬送する反転搬送部８０と、を備えている。
【００１５】
ユーザインターフェース３００は、自装置（画像形成装置１）に対するユーザの操作入力に使用される入力部（入力装置）の一例であり、表示部や操作受付部を備える。表示部には各種の情報を提供する画面や個々の機能に対応付けられたソフトウェアキーが表示される。操作受付部は、ハードウェアキーに対する操作の検知、ソフトウェアキーに対する操作の検知等の機能を提供する。
【００１６】
＜制御装置等の構成＞
図３は、画像形成装置１を構成する制御装置５００等の機能ブロック構成例を説明する図である。
制御装置５００は、ＭＰＵ（Micro Processing Unit）５０１と、ＲＯＭ（Read Only Memory）５０２と、ＲＡＭ（Random Access Memory）５０３と、画像データ等の記憶に用いられる記憶装置５０４と、画像データが表す画像に色補正や階調補正等の画像処理を加える画像処理部５０５とを備える。制御装置５００は情報処理装置の一例である。
【００１７】
ＭＰＵ５０１は、ＲＡＭ５０３を作業領域に使用してＲＯＭ５０２から読み出したファームウェアを実行し、各種の機能を提供する。ファームウェアは、不揮発性メモリであるＲＯＭ５０２に記憶されている。ＲＯＭ５０２には、データの書き換えが可能な半導体メモリの一種であるＥＥＰＲＯＭ（Electrically Erasable Programmable Read-Only Memory）を使用する。ＲＯＭ５０２は記憶媒体の一例である。
記憶装置５０４は、ハードディスク装置や半導体メモリ等で構成され、画像読取装置１００で読み取った原稿の画像イメージや通信装置４００を通じて受信した画像イメージの記憶に用いられる。
画像処理部５０５は、例えば専用のプロセッサや処理ボードとして構成され、色補正や階調補正等の画像処理を実行する。
【００１８】
ユーザインターフェース３００は、操作画面等の表示に使用される表示部３０１と、ユーザの入力操作を受け付ける操作受付部３０２を備えている。表示部３０１は、例えば液晶ディスプレイパネルや有機ＥＬ（Electro Luminescence）ディスプレイパネルで構成される。操作受付部３０２は、ユーザによる操作入力を受け付けるボタンやタッチパネルで構成される。
【００１９】
＜基本動作＞
まず、画像形成装置１の基本的な動作について説明する。
例えばコピーの場合、画像形成装置１は、画像読取装置１００を用いて読み取った原稿の画像イメージを画像記録装置２００に与え、用紙Ｐ上に画像イメージを形成する。
例えば印刷の場合、画像形成装置１は、通信装置４００を通じて受信した印刷ジョブに含まれる画像イメージを画像記録装置２００に与え、用紙Ｐ上に画像イメージを形成する。
例えばファクシミリ送信の場合、画像形成装置１は、画像読取装置１００を用いて読み取った原稿の画像イメージを、通信装置４００を通じて送信する。
例えばファクシミリ受信の場合、画像形成装置１は、通信装置４００を通じて受信した画像イメージを記憶装置５０４に保存する。
例えばスキャンの場合、画像形成装置１は、画像読取装置１００を用いて読み取った原稿の画像イメージを記憶装置５０４に保存する。
以上の動作は、ファームウェアの実行を通じて実現される。
【００２０】
＜ファームウェアの更新動作＞
続いて、ファームウェアの更新動作について説明する。
まず、従前のファームウェアの更新動作を確認する。前述したように、従前の更新手法では、ファームウェアを書き込むための専用の領域が記憶領域内に確保されている。
図４は、従前の手法で用いられているアドレス空間の構造例を示す図である。
図４の例では、アドレス空間の先頭から順番に、カーネル領域（Kernel）、ルートファイルシステム領域（RootFS）、アプリケーション領域１（App1）、アプリケーション領域２（App2）、データ領域１（Data1）、データ領域２（Data2）、テンポラリ領域１（Temp1）、テンポラリ領域２（Temp2）、テンポラリ領域３（Temp3）、不使用領域（Unused）が割り当てられており、その割り当てはいずれも固定である。図中では固定領域と示す。
【００２１】
これらの領域のうち、カーネル領域、ルートファイルシステム領域、アプリケーション領域１及びアプリケーション領域２が、ファームウェアを構成する部品に当たる。すなわち、この例のファームウェアは４つの部品で構成されている。
以下の説明では、カーネル領域をファームウェア１と呼び、ルートファイルシステム領域をファームウェア２と呼び、アプリケーション領域１とアプリケーション領域２を総称してファームウェア３と呼ぶ。
なお、アプリケーション領域１とアプリケーション領域２を総称で呼ぶのは便宜的なものであり、ファームウェア３及びファームウェア４として呼んでもよい。
通常、テンポラリ領域１、２及び３は画像の処理領域として使用される。
【００２２】
一方、本実施の形態では、更新動作の前後で、ファームウェアの割り当て領域が動的に切り替わる手法を採用する。
以下、本実施の形態で採用するファームウェアの更新動作について説明する。
【００２３】
図５は、実施の形態１におけるアドレス空間のある時点における構造例を示す図である。図５の場合、アドレス空間の先頭に、テーブル領域（Table）とプリブート領域（Preboot）が追加されている。
テーブル領域（Table）とプリブート領域（Preboot）は、アドレス空間内に固定的に割り当てられている。すなわち、テーブル領域（Table）とプリブート領域（Preboot）は固定領域の一例である。
テーブル領域は、アドレス空間内で動的に変化する領域の管理に使用される領域である。テーブル領域は、現行のファームウェアの構成部品であるファームウェア１、２及び３の記憶領域をファームウェア使用中領域として管理する。
プリブート領域は、ファームウェアの実行前に起動されるブートプログラムが記憶されている領域である。本実施の形態におけるファームウェアの更新動作は、このブートプログラムにより制御される。
【００２４】
図６は、実施の形態１で使用するテーブル領域のデータ内容を説明する図である。
テーブル領域は、テーブル１及びテーブル２で構成される。
テーブル１は、起動の際に用いるファームウェアが使用している領域を管理し、ファームウェアの構成部品の種類と対応する開始アドレス（セクタ）を記憶する。
図６の場合、ファームウェア１の開始アドレスは１００番目のセクタであること、ファームウェア２の開始アドレスは１５０番目のセクタであること、ファームウェア３の開始アドレスは３００番目のセクタであることが記憶されている。
詳細については後述するが、本実施の形態の場合、ファームウェア１の開始アドレスがファームウェアの更新動作の前後で動的に変化する。
【００２５】
テーブル２は、テーブル領域とプリブート領域を除くアドレス空間が各時点においてどのように使用されているかを管理する目的で使用される。本実施の形態では、各領域の状態が動的に変化するために用意される。
図６に示すテーブル２では、アドレス空間に割り当てられた個々の領域が、開始アドレス（セクタ）と占有されるサイズ（セクタ）で特定され、特定された領域の状態が紐付けられている。
【００２６】
図６の場合、１００番目のセクタから５０セクタ分の領域はファームウェア１が使用中であり、１５０番目のセクタから１５０セクタ分の領域はファームウェア２が使用中であり、３００番目のセクタから１００セクタ分の領域はファームウェア３が使用中である。
すなわち、１００番目から３９９番目までのセクタは、現行のファームウェアによって使用されている。
【００２７】
また、４００番目のセクタから１００セクタ分の領域と５００番目のセクタから１００セクタ分の領域は、いずれも固定領域である。
また、６００番目のセクタから１００セクタ分の領域と、７００番目のセクタから５０セクタ分の領域と、７５０番目のセクタから１５０セクタ分の領域は、いずれもテンポラリ領域である。
図６に示すテーブル２では、不使用領域は管理されていない。なお、不使用領域は固定領域の一例である。
ここで、一時的なデータの記憶に使用されるテンポラリ領域は第１のアドレス区間の一例であり、現行のファームウェア（ファームウェア１〜３）が使用中の領域は第２のアドレス区間の一例である。
【００２８】
以下では、図５に示すアドレス空間の使用状態において、ＭＰＵ５０１がブートプログラムの実行を通じてファームウェアを更新する場合の動作を説明する。
図７は、ファームウェアの更新手順を説明するフローチャートである。
ここでのファームウェアの更新は、新しいファームウェアのＲＯＭ５０２への書き込みが終了するまでの動作を意味する。
まず、ＭＰＵ５０１は、新しいファームウェアをＲＡＭ５０３や記憶装置５０４にダウンロードする（ステップ１０１）。本実施の形態では、新しいファームウェアは、ファームウェア１〜３で構成される。以下の説明では、ファームウェア１〜３を新しいファームウェアの構成部品として説明する。
【００２９】
次に、ＭＰＵ５０１は、処理対象とする部品が必要とする領域サイズを計算する（ステップ１０２）。新しいファームウェアの書き込みは部品単位で実行されるため、１番目の部品であるファームウェア１の領域サイズが計算される。
続いて、ＭＰＵ５０１は、計算された領域サイズ分が確保できるまでテンポラリ領域を削除し、テーブル２の領域情報を更新する（ステップ１０３）。具体的には、確保した領域の開始アドレスとサイズをテーブル２に記録する。
その後、ＭＰＵ５０１は、確保されたテーブル２の領域の状態をファームウェア書き換え中領域に更新する（ステップ１０４）。
このテーブル２の管理情報の書き換えの後、ＭＰＵ５０１は、確保された領域に処理対象とする部品（ここではファームウェア１）を書き込む（ステップ１０５）。
この後、ＭＰＵ５０１は、新しいファームウェアの全ての部品の書き込みが終了したか否かを判定する（ステップ１０６）。
【００３０】
ここでは、１番目の部品であるファームウェア１の書き込みが終了した状態であり、２番目と３番目の部品の書き込みが残っているので否定結果が得られる。
従って、ＭＰＵ５０１はステップ１０２に戻り、２番目の部品であるファームウェア２の書き込み処理を実行する。
２番目の部品であるファームウェア２の書き込み処理が終わると、ＭＰＵ５０１はステップ１０２に戻り、３番目の部品であるファームウェア３の書き込み処理を実行する。
【００３１】
図８は、新しいファームウェアの書き込み動作中におけるテーブル１及び２のデータ内容を説明する図である。
なお、図８の場合には、３番目の部品であるファームウェア３の書き換え中の状態を表している。
ファームウェアの更新処理を開始する前のテーブル１及び２（図６参照）との違いは、テンポラリ領域として管理されていた６００番目のセクタから８９９番目のセクタまでの領域が、６００番目のセクタから５０セクタ分の領域と、６５０番目のセクタから１５０セクタ分の領域と、８００番目のセクタから１００セクタ分の領域に再配置され、それぞれがファームウェア書き換え中領域として管理されていることである。
【００３２】
この時点では、現行のファームウェアに変更はないので、ファームウェア１〜３についての管理情報に変更はない。すなわち、テーブル１で管理されるファームウェア１〜３の開始アドレスに変化はなく、テーブル２で管理されるファームウェア１〜３に対応する各領域の状態も使用中のままである。
【００３３】
図９は、新しいファームウェアの書き込みが終了した時点のアドレス空間の割り当て状態を説明する図である。
図９では、新しいファームウェアの構成部品をそれぞれファームウェア１１、ファームウェア１２、ファームウェア１３と呼び、現行のファームウェアの構成部品と区別する。
【００３４】
図７の説明に戻る。
新しいファームウェアの書き込みが終了すると（ステップ１０６で肯定結果が得られた場合）、ＭＰＵ５０１は、テーブル２で「ファームウェア書き換え中」として管理されている領域の状態をファームウェア使用中領域に変更する（ステップ１０７）。
図１０は、新しいファームウェアの書き込み終了後の過渡的なテーブル１及び２のデータ内容を説明する図である。
図１０では、テーブル２の６００番目のセクタから５０セクタ分の領域がファームウェア１１使用中領域に変更され、６５０番目のセクタから１５０セクタ分の領域がファームウェア１２使用中領域に変更され、８００番目のセクタから１００セクタ分の領域がファームウェア１３使用中領域に変更されている。
この時点で、テーブル１の管理情報に変更はない。従って、テーブル１では、依然として現行のファームウェアが起動対象として管理されている。
【００３５】
図１１は、新しいファームウェアの書き込み終了後の過渡的なアドレス空間の割り当て状態を説明する図である。
図１１に示すように、ＲＯＭ５０２のアドレス空間内には一時的に新旧２つのファームウェアが存在し、いずれの領域も使用中として管理されている。
このような管理とするのは、ファームウェアが書き込まれている領域の管理情報（テーブルのデータ）の書き換え中に予期せぬ電源断が発生した場合でも、新旧いずれかのファームウェアによる復帰を可能にするためである。
【００３６】
図７の説明に戻る。
ステップ１０７に続き、ＭＰＵ５０１は、テーブル２のうち現行のファームウェアが書き込まれている領域の状態をファームウェア使用中領域からファームウェア不使用領域に変更する（ステップ１０８）。
その後、ＭＰＵ５０１は、テーブル１で管理されている情報（すなわち、ファームウェアの開始アドレス）を新しいファームウェアの開始アドレスに応じて変更する（ステップ１０９）。
【００３７】
図１２は、新しいファームウェアの書き換え動作が完了した時点におけるテーブル１及び２のデータ内容を説明する図である。
図１２では、テーブル２の１００番目のセクタから１４９番目のセクタまでの領域、１５０番目のセクタから２９９番目のセクタまでの領域、３００番目のセクタから３９９番目のセクタまでの領域がいずれもファームウェア不使用領域に変更されている。
また、テーブル１で管理されるファームウェアの構成部品と対応する開始アドレス（セクタ）の内容が、いずれも新しいファームウェア（ファームウェア１１〜１３）の内容に変更されている。
【００３８】
具体的には、テーブル１で管理される開始アドレスが、ファームウェア１〜３の開始アドレス（１００番目、１５０番目、３００番目）からファームウェア１１〜１３の開始アドレス（６００番目、６５０番目、８００番目）に切り替わっている。従って、次回以降、ＭＰＵ５０１は、ＲＯＭ５０２の６００番目のセクタ、６５０番目のセクタ及び８００番目のセクタから起動処理を実行する。
更にファームウェアが更新されると、ＭＰＵ５０１は、今度は、ファームウェア１〜３の開始アドレス（１００番目、１５０番目、３００番目）から起動処理を実行する。すなわち、ファームウェアの起動に使用されるアドレス区間は固定ではなく動的に切り替えられる。
なお、各更新回で書き込まれるファームウェアの種類やサイズは通常異なるので、必ずしも同じ開始アドレスから開始するとは限らない。
【００３９】
図１３は、ファームウェアの書き換え動作が終了した時点におけるアドレス空間の割り当て状態を説明する図である。
図１３からも、現行のファームウェア（ファームウェア１〜３）が書き込まれている領域はファームウェア不使用領域に変更され、新しいファームウェア（ファームウェア１１〜１３）が書き込まれている領域だけがファームウェア使用中領域に切り替わっていることが分かる。
ただし、この時点では、現行のファームウェアのデータは、ＲＯＭ５０２内に残ったままである。
【００４０】
続いて、電源を起動する際の動作を説明する。
図１４は、電源を起動する際の手順を説明するフローチャートである。
電源が起動される場合、ファームウェアの更新動作が正常に終了しているとは限らない。このため、電源を起動する際には、以下の動作が実行される。
【００４１】
まず、ＭＰＵ５０１は、ブートプログラムに従って、テーブル２にテンポラリ領域があるか否かを判定する（ステップ２０１）。
テンポラリ領域が存在するのは、新しいファームウェアの構成部品の書き込みが全て終了して領域の状態がファームウェア書き換え中領域に切り替わる以前に電源断が発生した場合か、テンポラリファームウェアの更新が正常に終了してから２回目以降の起動の場合である。
【００４２】
テンポラリ領域が存在した場合（ステップ２０１で肯定結果の場合）、ＭＰＵ５０１は、テーブル１で管理される開始アドレスからファームウェアを読み出して実行する（ステップ２０８）。
ファームウェアの更新動作の初期で電源断が発生した場合には、現行のファームウェア（ファームウェア1〜３）に対応する開始アドレスが読み出され、ファームウェア１〜３が順番に実行される。
一方、ファームウェアの更新が正常に終了してから２回目以降の起動の場合には、新しいファームウェア（ファームウェア１１〜１３）に対応する開始アドレスが読み出され、ファームウェア１１〜１３が順番に実行される。
【００４３】
一方、テンポラリ領域が存在しない場合（ステップ２０１で否定結果の場合）、ＭＰＵ５０１は、テーブル２にファームウェア書き換え中領域があるか否かを判定する（ステップ２０２）。
ここで、ファームウェア書き換え中領域があるのは、新しいファームウェアの全ての構成部品の書き込みが終了しているが対応する領域の管理情報がファームウェア使用中領域に変更される前に電源断が発生した場合である。すなわち、図７のステップ１０６で肯定結果が得られてからステップ１０７が終了するまでの間に電源断が発生した場合である。
【００４４】
従って、ステップ２０２で肯定結果が得られた場合（図８及び図９参照）、ＭＰＵ５０１は、ファームウェア書き換え中領域を削除し（ステップ２０３）、削除した領域にテンポラリ領域を作成する（ステップ２０７）。この場合、テーブルの管理情報とアドレス空間の使用状態は図５及び図６の状態に戻る。すなわち、ファームウェアを更新する前の状態に戻る。
この後、ＭＰＵ５０１は、テーブル１で管理される開始アドレスから現行のファームウェアを読み出して実行する（ステップ２０８）。
【００４５】
一方、ステップ２０２で否定結果が得られた場合、ＭＰＵ５０１は、テーブル２にファームウェア不使用領域があるか否かを判定する（ステップ２０４）。
ここで、ファームウェア不使用領域があるのは、ファームウェアの更新が正常に終了した場合である。
従って、ステップ２０４で肯定結果が得られた場合（図１２及び図１３参照）、ＭＰＵ５０１は、ファームウェア不使用領域を削除し（ステップ２０５）、削除した領域にテンポラリ領域を作成する（ステップ２０７）。
【００４６】
この場合、テーブルの管理情報とアドレス空間の使用状態は図１５及び図１６の状態になる。
図１５は、ファームウェアの更新が正常に終了した状態で起動された場合のテーブル領域のデータ内容を説明する図である。図１６は、ファームウェアの更新が正常に終了した状態で起動された場合のアドレス空間の構造例を示す図である。
この後、ＭＰＵ５０１は、テーブル１で管理される開始アドレスから新しいファームウェアを読み出して実行する（ステップ２０８）。
【００４７】
一方、ステップ２０４で否定結果が得られた場合、ＭＰＵ５０１は、テーブル１の開始アドレスと合致しないファームウェア使用中領域を削除する（ステップ２０６）。
ステップ２０４で否定結果が得られるのは、電源断がステップ１０７（図７参照）の終了後かつステップ１０８（図７参照）の開始前に発生した場合である。この場合、ＲＯＭ５０２には、ファームウェア使用中領域が２つ存在する。すなわち、図１０及び図１１の状態である。
この段階では、図１０のテーブル１に示すように、ファームウェアの開始アドレスは、依然として現行のファームウェアのままである。
【００４８】
従って、ＭＰＵ５０１は、新しいファームウェアに対応する領域を削除し、削除した領域にテンポラリ領域を作成する（ステップ２０７）。この場合、テーブルの管理情報とアドレス空間の使用状態は図５及び図６の状態に戻る。すなわち、ファームウェアを更新する前の状態に戻る。
この後、ＭＰＵ５０１は、テーブル１で管理される開始アドレスから現行のファームウェアを読み出して実行する（ステップ２０８）。
【００４９】
＜実施の形態１の効果＞
以上説明したように、本実施の形態に係る画像形成装置１の場合には、ファームウェアの更新処理中のどの段階で予期せぬ電源断が発生した場合でも、更新前のファームウェア（すなわち現行のファームウェア）を用いて起動することができる。
勿論、ファームウェアの更新が正常に終了した場合には、更新後のファームウェア（すなわち新しいファームウェア）を用いて起動することができる。
なぜなら、新旧のファームウェアが二重化された状態でファームウェアの更新動作が進行するためである。
【００５０】
このように、ファームウェアを書き込む領域と画像処理に使用されるテンポラリ領域とを動的に切り替えて使用する手法の採用により、記憶容量が少なくても効率的なファームウェアの更新が実現される。
また、前述したように、本実施の形態で説明した手法は、ファームウェアが複数の部品で構成される場合にも使用できる。
【００５１】
＜実施の形態２＞
前述の実施の形態１においては、画像形成装置１のファームウェアを更新する場合を説明したが、前述した技術は、いわゆる組み込みシステムで広く使用することができる。
組み込みシステムには、家庭で使用される電子機器又は電気製品（いわゆる家電機器）、音声や映像を記録又は再生する電子機器（いわゆるオーディオビデオ機器）、娯楽や教育分野で使用される楽器や遊技機等の電子機器、可搬可能な電子手帳やナビゲーション装置等の情報機器、コンピュータの周辺で使用される電子機器、通信機能を備える情報端末やルータ等のネットワーク機器、車両、船舶、飛行機等の運輸機器、医療機器、ＰＯＳ（Point Of Sale）端末や自動販売機等の業務用機器等がある。
【００５２】
図１７は、組み込みシステム６００の構成例を説明する図である。
組み込みシステム６００は、プログラムを実行するＭＰＵ６０１と、ファームウェアを記憶するＲＯＭ６０２と、作業領域としてのＲＡＭ６０３と、インターフェース（ＩＦ）６０４とを有している。勿論、この構成は一例である。
【００５３】
＜他の実施の形態＞
以上、本発明の実施の形態について説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、種々の変更又は改良を加えたものも、本発明の技術的範囲に含まれることは、特許請求の範囲の記載から明らかである。
例えばファームウェアを構成する部品の種類や数の組み合わせは、前述した例に限定されない。
【符号の説明】
【００５４】
１…画像形成装置、２００…画像記録装置、５００…制御装置、５０１…ＭＰＵ、５０２…ＲＯＭ
【図１】
2018206282.tif 000003
【図２】
2018206282.tif 000004
【図３】
2018206282.tif 000005
【図４】
2018206282.tif 000006
【図５】
2018206282.tif 000007
【図６】
2018206282.tif 000008
【図７】
2018206282.tif 000009
【図８】
2018206282.tif 000010
【図９】
2018206282.tif 000011
【図１０】
2018206282.tif 000012
【図１１】
2018206282.tif 000013
【図１２】
2018206282.tif 000014
【図１３】
2018206282.tif 000015
【図１４】
2018206282.tif 000016
【図１５】
2018206282.tif 000017
【図１６】
2018206282.tif 000018
【図１７】
2018206282.tif 000019