(57)【要約】【課題】複数のサブシステムを有する情報処理装置にあって、ファームウェアの更新を迅速に行う。【解決手段】情報処理装置は、第１のサブシステムに設けられ、前記ファームウェアの更新要求、及び更新用のファームウェアの入力を受け付ける更新受付部と、それぞれの前記サブシステム毎に設けられた前記ファームウェアを記憶する記憶部と、前記第１のサブシステム以外の第２のサブシステムに設けられ、前記記憶部に記憶された前記ファームウェアの第２バージョン情報と、前記更新用ファームウェアデータに含まれる第３バージョン情報とを比較し、機能ごとにバージョン情報が一致するか否かにより、前記データ領域のいずれに更新が必要か否かを判定し、更新が必要とされた前記データ領域に該当する前記更新用のファームウェアのデータ部分の転送を前記第１のサブシステムに要求し、前記データ部分を取得して前記記憶部に記憶させる部分更新実行部と、を備える。【選択図】図１
2014130388.tif 000002
【特許請求の範囲】
【請求項１】
それぞれプロセッサを有する複数のサブシステムを含んだ情報処理装置であって、
前記サブシステムのファームウェアは、機能ごとに分類され、それぞれのバージョンを示す第１バージョン情報を有するデータ領域を有しており、前記データ領域の前記第１バージョン情報から、前記ファームウェア全体のバージョンを示す第２バージョン情報が一意に決定されており、
第１のサブシステムに設けられ、前記ファームウェアの更新要求、及び更新用のファームウェアの入力を受け付ける更新受付部と、
それぞれの前記サブシステム毎に設けられた前記ファームウェアを記憶する記憶部と、
前記第１のサブシステム以外の第２のサブシステムに設けられ、前記記憶部に記憶された前記ファームウェアの前記第２バージョン情報と、前記更新用ファームウェアデータに含まれる第３バージョン情報とを比較し、前記機能のバージョン情報が一致するか否かにより、前記データ領域のいずれに更新が必要かを判定する判定部と、
更新が必要とされた前記データ領域に該当する前記更新用ファームウェアデータのデータ部分の転送を前記第１のサブシステムに要求し、前記データ部分を取得して前記記憶部に記憶させる部分更新実行部と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記部分更新実行部は、
前記記憶部に記憶された前記第２バージョン情報と、前記第３バージョン情報とを比較し、バージョン情報が一致する部分は、前記第１のサブシステムに対して、前記更新用のファームウェアの転送が不要である旨を通知する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記サブシステムのファームウェアと、前記更新用のファームウェアは、それぞれデータ内における前記データ領域のオフセット位置が共通であり、
前記部分更新実行部は、前記第１のサブシステムに対して、更新が必要とされた前記データ領域の前記オフセット位置を通知する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記部分更新実行部が、前記第１のサブシステムから取得する更新が必要とされた前記データ領域に該当する前記更新用のファームウェアのデータ部分には、無効データは含まれない
ことを特徴とする請求項１に記載の情報処理装置。
【請求項５】
前記サブシステムのファームウェア、及び前記更新用ファームウェアデータは、前記データ領域のオフセット位置を示すデータ情報を有しており、
前記部分更新実行部は、前記更新用ファームウェアデータの前記データ情報を取得し、自らのサブシステムの前記ファームウェアの前記データ情報と比較することで、更新対象以外の前記データ領域のオフセット位置を変更する必要があるか否かを判定し、変更する必要があると判定された場合は、当該データ領域の前記記憶部における書き込み位置を変更する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項６】
それぞれプロセッサと、ファームウェアを記憶する記憶部と、を有する複数のサブシステムを含んだ情報処理装置における情報処理方法であって、
前記ファームウェアは、機能ごとに分類され、それぞれのバージョンを示す第１バージョン情報を有するデータ領域を有しており、前記データ領域の前記第１バージョン情報から、前記ファームウェア全体のバージョンを示す第２バージョン情報が一意に決定されており、
第１のサブシステムにおいて、前記ファームウェアの更新要求、及び更新用のファームウェアの入力を受け付ける更新受付ステップと、
前記第１のサブシステム以外の第２のサブシステムにおいて、前記記憶部に記憶された前記ファームウェアの前記第２バージョン情報と、前記更新用ファームウェアデータに含まれる第３バージョン情報とを比較し、機能ごとのバージョン情報が一致するか否かにより、前記データ領域のいずれに更新が必要か否かを判定する判定ステップと、
更新が必要とされた前記データ領域に該当する前記更新用のファームウェアのデータ部分の転送を前記第１のサブシステムに要求し、前記データ部分を取得して前記記憶部に記憶させる部分更新実行ステップと、
を含むことを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、及び情報処理方法に関する。
【背景技術】
【０００２】
情報処理装置が、複数のプロセッサを含み、それぞれのプロセッサごとに異なる処理を担当して実行するマルチプロセッサ式の構成が知られている。この場合、各プロセッサを操作するためのファームウェアが、プロセッサごとに設けられている。ファームウェアは、変更が加えられると、その都度更新作業が実施される。この際ファームウェアの不正な組み合わせを防ぐことや効率的に更新することを目的として、装置内の複数のファームウェアを一括して更新することが行われている。具体的には、更新用のデータを取り込むためのインタフェースを有する、プロセッサを含んだシステムが全てのプロセッサの更新データを取得し、他のシステムに対して対応する更新用のデータを転送することにより、更新作業が実行される。
【０００３】
特許文献１には、ファームウェアの更新時間を短縮するために、一方のシステムが他方のシステムへと更新用のファームウェアのデータを送る際に新旧バージョンの差分を抽出して、そのデータのみを転送して更新するという部分更新の方法が開示されている。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述のようにデータの差分のみを送るためには、更新用のデータを取得する側のシステムが、転送先のシステムの現在のファームウェアのデータを把握している必要がある。そのために、事前に転送先のシステムのファームウェアデータを、更新データを転送する側のシステムが保持するようにした場合は、必要な記憶領域の容量が大きくなってしまう。また、更新の際に転送先のシステムのファームウェアのデータを取得するようにした場合は、その取得のために時間がかかってしまい、時間短縮の効果が限定的なものとなってしまう可能性がある。
【０００５】
本発明は、上記に鑑みてなされたものであって、ファームウェアの更新を迅速に行うことのできる情報処理装置を提供することにある。
【課題を解決するための手段】
【０００６】
上述した課題を解決し、目的を達成するために、本発明は、それぞれプロセッサを有する複数のサブシステムを含んだ情報処理装置であって、前記サブシステムのファームウェアは、機能ごとに分類され、それぞれのバージョンを示す第１バージョン情報を有するデータ領域を有しており、前記データ領域の前記第１バージョン情報から、前記ファームウェア全体のバージョンを示す第２バージョン情報が一意に決定されており、第１のサブシステムに設けられ、前記ファームウェアの更新要求、及び更新用ファームウェアデータの入力を受け付ける更新受付部と、それぞれの前記サブシステム毎に設けられた前記ファームウェアを記憶する記憶部と、前記第１のサブシステム以外の第２のサブシステムに設けられ、前記記憶部に記憶された前記ファームウェアの第２バージョン情報と、前記第２バージョン情報と同じ形式で記述され、前記更新用ファームウェアデータに含まれる第３バージョン情報とを比較し、バージョン情報の一致しない部分から、前記データ領域のいずれの領域に更新が必要か否かを判定し、更新が必要とされた前記データ領域に該当する前記更新用ファームウェアデータの部分の転送を前記第１のサブシステムに要求して取得し、前記記憶部に記憶させる部分更新実行部と、を備えることを特徴とする。
【発明の効果】
【０００７】
本発明によれば、ファームウェアの更新を迅速に行うことができるという効果を奏する。
【図面の簡単な説明】
【０００８】
【図１】図１は、第１の実施形態の情報処理装置の機能構成を示すブロック図である。
【図２】図２は、第１の実施形態の情報処理装置のハードウェア構成を示すブロック図である。
【図３】図３は、第１の実施形態の更新用ファームウェアデータのデータ構造を示す図である。
【図４】図４は、第１の実施形態のデータ領域のデータ構造を示す図である。
【図５】図５は、第１の実施形態のデータ領域のデータ構造を示す図である。
【図６】図６は、第１の実施形態のファームウェア更新処理の流れを示すシーケンス図である。
【図７】図７は、第１の実施形態の部分更新を行うか否かを判定する処理の流れを示すフロー図である。
【図８】図８は、第１の実施形態の部分更新を行う際のデータ取得に係る処理の流れを示すフロー図である。
【図９】図９は、第２の実施形態のファームウェアのデータ構造の一例を示す図である。
【図１０】図１０は、第２の実施形態のファームウェア更新処理の流れを示すシーケンス図である。
【図１１】図１１は、第２の実施形態の部分更新を行う際のデータ取得に係る処理の流れを示すフロー図である。
【図１２】図１２は、第１の実施形態の変形例のデータ転送に係る処理の流れを示すフロー図である。
【図１３−１】図１３−１は、各実施形態の情報処理装置が具体化された画像投射装置の正面からの斜視図である。
【図１３−２】図１３−２は、各実施形態の情報処理装置が具体化された画像投射装置の背面からの斜視図である。
【図１３−３】図１３−３は、各実施形態の情報処理装置が具体化された画像投射装置の背面図である。
【図１３−４】図１３−４は、各実施形態の情報処理装置が具体化された画像投射装置の上面図である。
【図１３−５】図１３−５は、各実施形態の情報処理装置が具体化された画像投射装置の前面図である。
【図１３−６】図１３−６は、各実施形態の情報処理装置が具体化された画像投射装置の下面図である。
【図１３−７】図１３−７は、各実施形態の情報処理装置が具体化された画像投射装置の側面図である。
【図１３−８】図１３−８は、各実施形態の情報処理装置が具体化された画像投射装置の側面図である。
【発明を実施するための形態】
【０００９】
（第１の実施形態）
以下に添付図面を参照して、情報処理装置の実施形態を詳細に説明する。図１は本発明の情報処理装置１の機能構成を示すブロック図である。情報処理装置１は、２つのサブシステム１００、２００を有している。サブシステム１００、２００はそれぞれプロセッサを備えており、本装置はマルチプロセッサ式の装置である。
【００１０】
サブシステム１００は、サブシステム通信部１０１、書き込み部１０２、記憶部１０３、及び部分更新実行部１０４を備えている。また、サブシステム２００は、サブシステム通信部２０１、更新制御部２０２、更新受付部２０３、書き込み部２０４、及び記憶部２０５を備えている。本実施形態では、サブシステム２００がファームウェアの更新データを受け付けて、サブシステム１００に対して、更新用ファームウェアデータを転送する構成である。また、部分更新実行部１０４は判定部も兼ねている。
【００１１】
更新受付部２０３は、外部からの更新要求、及びファームウェアデータを含む更新対象データの入力を受け付ける。更新制御部２０２は、各サブシステム１００、２００へファームウェアデータを転送する等のシステム全体の更新処理の制御を管理する。記憶部１０３、２０５は、ファームウェアデータ等のデータを記憶する。なお、記憶されたデータは電源が消えても消去されることはない。書き込み部１０２、２０４は、記憶部１０３、又は２０５内の古いファームウェアデータを消去して、更新対象となる新しいファームウェアデータを書き込む。サブシステム通信部１０１、２０１は、サブシステム１００、２００間のデータ通信をおこなう。部分更新実行部１０４は、サブシステム１００の現在のファームウェアと新しいファームウェアの差分にあたるデータのみを用いて部分更新を実行する。詳細な部分更新の内容については後述する。なお、サブシステムは２つ以上であればその数は限定されない。その場合、更新用ファームウェアデータを取得したサブシステムが、他のサブシステムに対して、更新用ファームウェアデータを転送し、更新制御部はシステム全体でひとつだけ存在する。
【００１２】
図２は、情報処理装置１のハードウェア構成を示す図である。サブシステム１００は、ＣＰＵ１１１、ＲＡＭ１１２、ＲＯＭ１１３、シリアルＩ／Ｆ１１４がＢＵＳ１１５によって互いに接続された構成である。また、サブシステム２００は、ＣＰＵ２１１、ＲＡＭ２１２、表示装置２１３、ＲＯＭ２１４、シリアルＩ／Ｆ２１５、入力装置２１６、及びＵＳＢ  Ｉ／Ｆ２１７がそれぞれＢＵＳ２１８によって接続された構成である。
【００１３】
ＣＰＵ１１１、２１１はサブシステムごとに設けられており、サブシステム１００、２００内部を制御する。ＲＯＭ２１４、１１３、及びＲＡＭ２１２、１１２はメモリであり、ファームウェアのデータが記憶され、記憶部１０３、２０５を構成するハードウェアである。ＵＳＢ  Ｉ／Ｆ２１７は外部メディアとの接続を実現するものであり、本実施形態では更新用のファームウェアは、ＵＳＢメモリを通じて情報処理装置１の更新受付部２０３へと入力される。なお、ネットワークＩ／Ｆなどを通じて、ネットワークを通じて更新用データが取得されるようにしてもよい。シリアルＩ／Ｆ１１４、２１５は、サブシステム１００、２００間の通信を行う。入力装置２１６はユーザからの操作を受け付けるデバイスであり、例えばキーボードなどである。表示装置２１３はユーザへの各種通知を行うデバイスである。
【００１４】
図３はファームウェアの更新用ファームウェアデータ３００のデータ構成例を示す図である。図３に示されるように、更新用ファームウェアデータ３００は主に、ヘッダ部３１０とデータ部３２０の２つの部分に分かれる。ヘッダ部３１０には、各サブシステム１００、２００のファームウェアのバージョン情報３１１（第３バージョン情報）、データサイズ３１２、及び更新用ファームウェアデータ３００内におけるデータオフセット３１３が含まれる。バージョン情報３１１は、データ部３２０に含まれているそれぞれのデータ領域ごとのバージョン情報を含んでいる。データオフセット３１３とは、それぞれのサブシステム１００、２００用のデータが、データ部３２０において、どのアドレスからどのアドレスまでの間に記憶されているかを示す値である。データ部３２０には、サブシステム１００用のファームウェアデータ３２１、及びサブシステム２００用のファームウェアデータ３２２そのものが含まれている。
【００１５】
図４はサブシステム１００、２００のファームウェアデータ４００、５００の構成例を示す図である。実際に、各サブシステム１００、２００に記憶されるファームウェアデータ４００、５００は、この形式で記憶部１０３、２０５に記憶されている。ファームウェアデータ４００、５００は、主にヘッダ部３３０とデータ部３４０の２つの部分に分かれる。ヘッダ部３３０には、データテーブル３３１、及びファームウェアのバージョン情報３３２を含む。データテーブル３３１とは、更新用のデータが各機能に分類されてグループ化されている場合に、それぞれのグループのデータ領域のアドレスの位置が記憶されている。本実施形態にあっては、データ部３４０は、プログラム領域３４１と、画像データ領域３４２とにグループ化されているが、例えばプログラム領域３４１はより詳細な機能別に複数のグループへと分類されていてもよい。
【００１６】
データ部３４０には、ファームウェアの更新用ファームウェアデータそのものが含まれており、種別によって領域に分かれている。プログラム領域３４１、及び画像データ領域３４２それぞれごとにバージョン情報（第１バージョン情報）がある。また、ファームウェア全体のバージョン情報３３２（第２バージョン情報）は各データ領域のバージョン情報を合算したものであり、第１バージョン情報によって一意に決定されている。つまり、プログラム領域３４１のバージョン情報が「０００１」で、画像データ領域３４２のバージョン情報が「０３」の場合、ファームウェアのバージョン情報３３２は、「０００１０３」となる。これにより、ファームウェアのバージョン情報３３２を、更新用ファームウェアデータ３００のバージョン情報３１１と比較すれば、どのデータ領域が変更されているのかどうか分かるようになる。また、図５に示されるように、各データ領域のオフセット位置は、実際のデータサイズより大きめにしておき、常に固定とする。領域間のオフセット位置を固定にすることで、データサイズが変わったとしても領域ごとに分割しての更新が可能となる。
【００１７】
続いて、ファームウェアの更新にかかる処理を図６を用いて説明する。まず、更新受付部２０３は、更新要求及び更新用ファームウェアデータ３００の入力を受け付け、更新制御部２０２に更新要求があることを通知する（ステップＳ１０１）。更新制御部２０２は、更新用ファームウェアデータ３００から各サブシステムのバージョン情報３１１を取得する（ステップＳ１０２）。そして、更新制御部２０２はサブシステム１００の部分更新実行部１０４へバージョン情報３１１を通知する（ステップＳ１０３〜Ｓ１０５）。
【００１８】
部分更新実行部１０４は、記憶部１０３から現在のファームウェア４００のバージョン情報３３２を読み出し、通知された更新対象のバージョン情報３１１と現在のバージョン情報３３２とを比較して部分更新を行うかどうか判断する（ステップＳ１０６〜１０７）。そして、部分更新実行部１０４は、その結果を更新制御部２０２へ通知する（ステップＳ１０８〜Ｓ１１０）。更新制御部２０２は、サブシステム１００の部分更新実行部１０４にファームウェア更新を要求する（ステップＳ１１１〜Ｓ１１３）。
【００１９】
部分更新を行う場合、部分更新実行部１０４は、現在のファームウェアと更新用ファームウェアデータ３００の差分データを特定できる情報を更新制御部２０２へ通知する（ステップＳ１１４〜Ｓ１１６）。差分データを特定できる情報とは、例えばプログラム領域３４１が差分データであった場合は、データテーブル３３１に含まれるプログラム領域３４１のオフセット位置などである。更新制御部２０２は、送られた差分データを特定できる情報に基づいて、サブシステム１００の部分更新実行部１０４にファームウェアデータ３２１を送り、書き込みを要求する（ステップＳ１１７〜Ｓ１１９）。部分更新実行部１０４は、書き込み部１０２へとファームウェアデータ３２１の書き込みを要求し、記憶部１０３にファームウェアデータを書き込む（ステップＳ１２０、Ｓ１２１）。部分更新実行部１０４は、書き込み完了後に更新制御部２０２へ完了したことを通知する（ステップＳ１２２〜Ｓ１２４）。そして、更新制御部２０２は、必要なすべてのサブシステムの書き込みが完了した後に、システムとして更新完了とする（ステップＳ１２５）。
【００２０】
次いで、図７を参照して、部分更新を行うか否かを判定する処理の流れを詳細に説明する。図７に示されるように、まず更新制御部２０２は、更新用ファームウェアデータ３００に含まれる更新対象のサブシステム１００のファームウェアのバージョン情報３１１
を、部分更新実行部１０４へと通知する（ステップＳ２０１）。次いで、部分更新実行部１０４は、通知された更新用ファームウェアデータ３００のバージョン情報３１１と、現在のファームウェアデータ３２１、３２２のバージョン情報３３２とを比較する（ステップＳ２０２）。比較した結果、バージョンがプログラム領域３４１、及び画像データ領域３４２の全ての領域で異なっていた場合（ステップＳ２０３：Ｙｅｓ）、部分更新実行部１０４は、全てのデータ領域、すなわちプログラム領域３４１、及び画像データ領域３４２の双方でファームウェアの更新が必要であると判断する（ステップＳ２０４）。
【００２１】
一方、バージョンがプログラム領域３４１、及び画像データ領域３４２の全ての領域で異なっていない場合（ステップＳ２０３：Ｎｏ）、部分更新実行部１０４は、全てのデータ領域のバージョンが更新用ファームウェアデータ３００のバージョン情報３１１と一致しているか否かを判定する（ステップＳ２０５）。全てのデータ領域でバージョン情報が一致していると判定された場合（ステップＳ２０５：Ｙｅｓ）、部分更新実行部１０４は、サブシステム１００のファームウェアの更新は不要であると判定する（ステップＳ２０８）。また、全てのデータ領域でバージョン情報が一致していないと判定された場合（ステップＳ２０５：Ｎｏ）、一致していないバージョンのデータ領域の部分更新が必要であると判定する（ステップＳ２０６）。そして、部分更新実行部１０４は、ステップＳ２０４、ステップＳ２０６、ステップＳ２０８の判定結果に基づいて、部分更新を行うか、全更新を行うか、更新は不要かのいずれかの通知を更新制御部２０２へと行う（ステップＳ２０７）。なお、バージョンが全てのデータ領域で一致していない場合は、ステップＳ２０５の判定を行うことなく、部分更新を実施するようにしてもよい。その場合、更新不要の通知はなされない。
【００２２】
次いで、図８を参照して部分更新を実施する際の処理の流れを説明する。図８に示されるように、更新制御部２０２は、まずサブシステム１００の部分更新実行部１０４へと更新要求を通知する（ステップＳ３０１）。部分更新実行部１０４は、更新が部分更新であるか否かを判定する（ステップＳ３０２）。
【００２３】
更新が全更新であると判定された場合（ステップＳ３０２：Ｎｏ）、更新制御部２０２はサブシステム１００の更新用ファームウェアデータの全てを部分更新実行部１０４へ転送し、部分更新実行部１０４は転送されたデータの書き込み要求を行う（ステップＳ３０３）。一方、更新が部分更新であると判定された場合（ステップＳ３０２：Ｙｅｓ）、部分更新実行部１０４は、必要な差分データを特定できる情報を、更新制御部２０２へと通知する（ステップＳ３０４）。更新制御部２０２は通知された差分データを特定できる情報に従い、更新用ファームウェアデータ３００のサブシステム１００に対応したフォームウェアデータ３２１から該当するデータ領域を抽出して部分更新実行部１０４へ転送し、部分更新実行部１０４が書き込みを要求する（ステップＳ３０５）。なお、必要な差分データを特定できる情報とは、例えばオフセット位置である。部分更新実行部１０４は、あるデータ領域が記憶されたアドレスである「０ｘ００００〜０ｘ１００００」というようなオフセット位置を更新制御部２０２へ差分データを特定できる情報として通知する。更新制御部２０２はオフセット位置に従いデータを抽出するだけでよいため、サブシステム１００のファームウェアデータ３２１の詳細なデータ構造を知る必要はない。
【００２４】
以上で示した本実施形態の画像処理装置にあっては、全てのファームウェアのデータを上書きして更新するのではなく、更新用ファームウェアデータと、現在のファームウェアデータのそれぞれのバージョンの比較から、差分があるデータのみを更新することとした。そのため、更新用ファームウェアデータを受け付けたサブシステム２００から、更新対象のサブシステム１００へと送るデータの容量が少なくなり、ファームウェアの更新を迅速に行うことができるようになる。
【００２５】
また、更新対象のサブシステム１００のファームウェアのいずれのデータ領域を部分更新するかを判定するために、更新用ファームウェアデータ３００を全て送るのではなく、バージョン情報のみをおくり、バージョン情報の比較で、差分となるデータを特定できるようにした。そのため、比較のために全てのファームウェアデータを送る必要がなくなり、ファームウェアの更新を迅速に行うことができるようになる。
【００２６】
また、部分更新実行部１０４から更新制御部２０２へと、部分更新対象のデータを指定する際に、オフセット位置を送信することとした。本実施形態では、更新用ファームウェアデータ３００と、現在のファームウェアデータ３２１との間で、データ領域が記憶されているアドレスが固定されている。そのため、オフセット情報を送れば、更新用ファームウェアデータ３００のいずれの位置のデータ領域が要求されているかが把握可能となる。
【００２７】
また、全てのファームウェアのバージョンが一致している場合は、部分更新実行部１０４が更新不要の通知を送ることとしたため、更新制御部２０２から更新用ファームウェアデータ３００がサブシステム１００へと送信されることがなくなる。そのため、データの送信にかかる時間を抑制することとなり、更新作業の時間の短縮が可能となる。
【００２８】
（第２の実施の形態）
続いて本発明の情報処理装置の第２の実施形態について説明する。第２の実施形態にあっては、更新用ファームウェアのデータと、各サブシステムのファームウェアのデータとでは、それぞれのデータ領域のオフセット位置が異なっている場合について説明する。図９は、サブシステム１００のファームウェアデータ３２１と、更新用ファームウェアデータ３００との間で、プログラム領域３４１のオフセット位置が異なっている場合を示している。更新用ファームウェアデータ３００にあっては、プログラム領域３４１のオフセット位置は、「０ｘ１２００００」のアドレスまでである。一方、現在のサブシステム１００のファームウェアデータ３２１のプログラム領域３４１のオフセット情報は、「０ｘ１０００００」のアドレスまでである。この場合、サブシステム１００の部分更新実行部１０４から、差分情報として「０ｘ１０００００」が通知されたとしても、第１の実施形態の方法では、ファームウェアが正常に更新されないこととなる。
【００２９】
以下、上記問題を回避するための処理の流れについて図１０を用いて説明する。図１０は、図６で示したシーケンス図に対して、ステップＳ４０１〜Ｓ４０８の処理があらたに追加されている。他の処理については同様の符号を付与しており、説明を省略する。
【００３０】
図１０に示されるように、ファームウェアの更新要求がされると、部分更新実行部１０４は、ヘッダ部３３０のデータテーブル３３１の情報を更新制御部２０２に対して通知する（ステップＳ４０１〜Ｓ４０３）。更新制御部２０２は、送られてきたデータテーブル３３１から、更新用ファームウェアデータ３００のデータテーブル３３１と比較することで、データ領域の位置を把握する。そして、更新制御部２０２は、更新用ファームウェアデータ３００のデータテーブル３３１と対応するように、サブシステム１００のファームウェアデータ３２１のデータテーブル３３１を書き換えるように部分更新実行部１０４へと通知する（ステップＳ４０４〜Ｓ４０６）。部分更新実行部１０４は、送られたデータテーブル３３１の情報を解析し、更新対象のデータ領域以外のデータ領域のオフセット位置を変更する必要があるかどうかを解析する（ステップＳ４０７）。そして、部分更新実行部１０４は、解析結果に基づいて、データテーブル３３１の変更や、データ領域の位置の変更などを書き込み部１０２へと指示する（ステップＳ４０８）。
【００３１】
以上の処理の詳細について図１１を参照して説明する。図１１の処理は、図１０におけるステップＳ４０７、Ｓ４０８の詳細な処理の内容を示すものである。図１１に示されるように、まず部分更新実行部１０４は、現在のファームウェアと、更新対象のファームウェアそれぞれのデータテーブル３３１を比較する（ステップＳ５０１）。比較の結果、データテーブルに含まれるそれぞれのデータ領域のオフセット位置が異なっていると判定された場合（ステップＳ５０２：Ｙｅｓ）、部分更新実行部１０４は、更新対象の記憶部１０３に記憶されたファームウェアデータ３２１のデータテーブル３３１から、更新対象となったデータ領域以外のデータ領域の書き込みの変更位置を求める（ステップＳ５０３）。そして、部分更新実行部１０４は、書き込み部１０２に対して、他のデータ領域を算出された変更位置に基づいて記憶部１０３に書き込ませる要求をする（ステップＳ５０４）。以上の処理は例えば、プログラム領域３４１のオフセット位置が、更新前の状態より画像データ領域３４２側へとずれた場合に、画像データ領域３４２の位置をずれた分、変更する処理である。
【００３２】
一方、比較の結果、データテーブルに含まれるそれぞれのデータ領域のオフセット位置が異なっていないと判定された場合（ステップＳ５０２：Ｎｏ）、及びデータ領域の変更が完了した場合は、部分更新実行部１０４は、更新対象のサブシステム１００の記憶部１０３に記憶されたデータテーブル３３１から、差分データのオフセット位置を取得する（ステップＳ５０５）。そして、部分更新実行部１０４は、更新制御部２０２に対して、差分データのオフセット位置情報を通知する（ステップＳ５０６）。
【００３３】
以上のような処理を行うことで、図９に示されるように、データ更新の際には画像データ領域３４２のオフセット位置が「０ｘ１００００」から「０ｘ１２０００」へと変更された後に、プログラム領域３４１のデータが記憶部１０３に書き込まれるようになる。したがって、データ領域のデータ長が可変の場合であっても、更新作業を行うことができるようになる。
【００３４】
（変形例）
以上に示した第１の実施形態にあっては、図５に示されるように、各データ領域間のオフセット位置は固定されているため、それぞれのデータ領域に全てに有意なデータが書かれているわけではなく、例えば「０ｘＦＦ」のような無効なデータの箇所が存在する。この際に、更新制御部２０２から、更新用ファームウェアデータ３００の該当データを部分更新実行部１０４へと転送する際に、無効データも含めて転送すると転送時間がその分増加してしまう。したがって、以下の図１２で示す処理を、データの送信時に行うことで、無効データの不要な転送を回避することができるようになる。なお、更新制御部２０２は、全てのデータを一括して送るのではなく、更新対象のデータ領域のデータを１アドレスずつ読み出して送信する。
【００３５】
図１２に示されるように、まず更新制御部２０２は、読み出したアドレスにおけるデータが無効データであるか否かを判定する（ステップＳ６０１）。無効データであると判定された場合（ステップＳ６０２：Ｙｅｓ）、そのデータは転送せずにステップＳ６０４へと移行する。無効データでないと判定された場合（ステップＳ６０２：Ｎｏ）、更新制御部２０２は、データを更新対象のサブシステム１００の部分更新実行部１０４へと転送する（ステップＳ６０３）。そして、全てのデータの転送が完了したか否かの判定が行われる（ステップＳ６０４）。全データの転送が完了していないと判定された場合は（ステップＳ６０４：Ｎｏ）、ステップＳ６０１へと戻り次のアドレスが読み出される。
【００３６】
一方、全データの転送が完了したと判定された場合は（ステップＳ６０４：Ｙｅｓ）、更新制御部２０２は、サブシステム１００へと全てのデータが転送されたことを通知して、処理を終了する（ステップＳ６０５）。
【００３７】
なお、以上の各実施形態の情報処理装置は、例えば画像投射装置として実現することができる。図１３−１は、画像投射装置の正面からの斜視図である。図１３−２は、画像投射装置の背面からの斜視図である。図１３−３は、画像投射装置の背面図である。図１３−４は、画像投射装置の上面図である。図１３−５は、画像投射装置の前面図である。図１３−６は、画像投射装置の下面図である。図１３−７は、画像投射装置の側面図である。図１３−８は、画像投射装置の側面図である。
【００３８】
以上の実施形態の情報処理装置で実行される各プログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【００３９】
また、以上の実施形態の情報処理装置で実行される各プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、実施形態の情報処理装置で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
【００４０】
また、以上の実施形態の情報処理装置で実行される各プログラムを、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【００４１】
以上の実施形態の情報処理装置で実行される各プログラムは、上述した各部を含むモジュール構成となっており、実際のハードウェアとしてはＣＰＵ（プロセッサ）が上記記憶媒体からプログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、主記憶装置上に生成されるようになっている。
【符号の説明】
【００４２】
１  情報処理装置
１００  サブシステム
１０１  サブシステム通信部
１０２  書き込み部
１０３  記憶部
１０４  部分更新実行部
１１１  ＣＰＵ
１１２  ＲＡＭ
１１３  ＲＯＭ
１１４  シリアルＩ／Ｆ
２００  サブシステム
２０１  サブシステム通信部
２０２  更新制御部
２０３  更新受付部
２０４  書き込み部
２０５  記憶部
２１１  ＣＰＵ
２１２  ＲＡＭ
２１３  表示装置
２１４  ＲＯＭ
２１５  シリアルＩ／Ｆ
２１６  入力装置
２１７  ＵＳＢ  Ｉ／Ｆ
３００  更新用ファームウェアデータ
３１０  ヘッダ部
３１１  バージョン情報
３１２  データサイズ
３１３  データオフセット
３２０  データ部
３２１  ファームウェアデータ
３２２  ファームウェアデータ
３３０  ヘッダ部
３３１  データテーブル
３３２  バージョン情報
３４０  データ部
３４１  プログラム領域
３４２  画像データ領域
【先行技術文献】
【特許文献】
【００４３】
【特許文献１】特開２０１２−１９０１９９号公報
【図１】
2014130388.tif 000003
【図２】
2014130388.tif 000004
【図３】
2014130388.tif 000005
【図４】
2014130388.tif 000006
【図５】
2014130388.tif 000007
【図６】
2014130388.tif 000008
【図７】
2014130388.tif 000009
【図８】
2014130388.tif 000010
【図９】
2014130388.tif 000011
【図１０】
2014130388.tif 000012
【図１１】
2014130388.tif 000013
【図１２】
2014130388.tif 000014
【図１３−１】
2014130388.tif 000015
【図１３−２】
2014130388.tif 000016
【図１３−３】
2014130388.tif 000017
【図１３−４】
2014130388.tif 000018
【図１３−５】
2014130388.tif 000019
【図１３−６】
2014130388.tif 000020
【図１３−７】
2014130388.tif 000021
【図１３−８】
2014130388.tif 000022