(57)【要約】【課題】  プログラムモジュールの更新処理時のエラーを防ぎ、更新処理後の保守性を高めることのできる情報処理装置を提供することにある。【解決手段】  更新かつ上書き指定の場合には、情報処理装置１のモジュール削除部１２が旧プログラムモジュールの少なくとも一部が格納されているメモリブロックの内容全てを削除し、モジュール追加部１１がプログラムモジュールが格納されていない空きメモリブロックに新プログラムモジュールを書き込む。更新かつ保存指定の場合には、旧プログラムモジュールを削除せずに、情報処理装置１のモジュール追加部１１が、プログラムモジュールが格納されていない空きメモリブロックに新プログラムモジュールを書き込む。【選択図】  図４
2005321967.tif 000002
【特許請求の範囲】
【請求項１】
複数のメモリブロックを有し、ファームウェアを構成する複数のプログラムモジュールが前記メモリブロックに格納され、プログラムモジュール単位での更新処理が可能な情報処理装置において、
１つのプログラムモジュールの少なくとも一部が格納されているメモリブロックの内容全てを削除するモジュール削除手段と、
プログラムモジュールが全く格納されていない空きメモリブロックにプログラムモジュールを書き込むモジュール追加手段と
を備え、
前記モジュール削除手段と前記モジュール追加手段との少なくとも一方を用いて、前記複数のメモリブロックの一部に格納されている１つのプログラムモジュールである旧プログラムモジュールを別の新プログラムモジュールに更新する更新処理を実行することを特徴とする情報処理装置。
【請求項２】
前記更新処理は、
前記モジュール削除手段により前記旧プログラムモジュールを削除せずに、前記モジュール追加手段により前記新プログラムモジュールを前記空きメモリブロックに書き込む処理であることを特徴とする
請求項１に記載の情報処理装置。
【請求項３】
前記更新処理は、
前記新プログラムモジュールのデータ量が、前記旧プログラムモジュールの少なくとも一部が格納されている１又は複数のメモリブロックに格納可能な合計データ量よりも大きい場合に、前記モジュール追加手段により前記空きメモリブロックに前記新プログラムモジュールを書き込み、かつ、前記モジュール削除手段により前記旧プログラムモジュールを削除する処理であることを特徴とする
請求項１又は２に記載の情報処理装置。
【請求項４】
起動対象のプログラムモジュールを切り替える起動モジュール切替手段をさらに備え、
前記起動モジュール切替手段は、
前記モジュール追加手段により格納された新プログラムモジュールが正常でないことが検知され、かつ、前記旧プログラムモジュールが前記メモリに格納されている場合には、起動対象のプログラムモジュールを該旧プログラムモジュールに切り替えることを特徴とする
請求項１から３のいずれか１項に記載の情報処理装置。
【請求項５】
前記メモリに格納されているプログラムモジュールを起動する優先順位を指定する起動優先順指定手段をさらに備え、
前記起動優先順位指定手段により指定された優先順位に従って、前記プログラムモジュールを起動することを特徴とする
請求項１から４のいずれか１項に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファームウェアに含まれるロードモジュール等の、プログラムモジュールの更新処理を行う情報処理装置に関する。
【背景技術】
【０００２】
最近の組込み機器は機能追加、性能向上や不具合の修正などの目的でファームウェアを更新するための手段が提供されている製品が多くなってきている。従来のファームウェアのリンク単位は一括かつ静的リンクであり、ファームウェアの更新単位がシステムで一括である場合が多い。従って、機能単位で更新処理を行う場合においても、システム全体の一括リンクされたファームウェアを作成し、更新する作業が必要であり、ファームウェアのデータサイズが大きくなると更新時間が長くなるという問題があった。この問題を解決する方法として、特開２０００−２４２４８７号公報がある。この発明は複数のメモリブロックからなるフラッシュメモリなどに記憶された複数のプログラムブロック（プログラムモジュール）の構成において、一部のプログラムブロックのみを更新する方法であり、更新対象のブログラムブロックの領域と同じメモリブロック内に属する更新対象外のプログラムブロックを外部記憶領域に一時退避し、対象メモリブロックを消去した後、新規プログラムデータと退避した更新対象外のプログラムブロックを書き込むものである。また更新の際、旧プログラムブロックよりも新プログラムのデータサイズが大きい場合は、更新対象のプログラムブロック以降のメモリブロックに格納されている更新対象外のプログラムブロックに対しても格納位置をずらす必要があるため、前記に加え、更新対象のプログラムブロック以降のメモリブロックに格納されている更新対象外のプログラムブロックについても外部記憶媒体に一時退避し、対象メモリブロックを消去後、新しいプログラムブロックと退避した更新対象外のプログラムブロックを書き込むプログラム更新装置およびプログラム更新方法である。
【特許文献１】特開２０００−２４２４８７号公報（請求項１、２）
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、上記のような従来の方法では以下のような問題が生じる。
・更新対象のメモリブロック内の更新対象外のプログラムブロックのファームウェアを一時退避するための外部記憶領域が必要である。
・退避／復元時にエラーが発生する可能性があり、障害対策が必要である。
・更新後の新規ファームウェアに不具合があるとシステムが正常に起動しなくなる可能性があり、その場合にはファームウェアが格納される物理的なＲＯＭ（Read Only Memory）の交換が必要になる可能性がある。
【０００４】
従って、上記の従来の方法では、更新処理時や更新処理後のエラー発生に対する考慮が不足しており、組込み機器のコストや保守性に問題を有していた。
この発明は以上の問題点を解決するためになされたものであり、その目的は、プログラムモジュールの更新処理時のエラーを防ぎ、更新処理後の保守性を高めることのできる情報処理装置を提供することにある。
【課題を解決するための手段】
【０００５】
上記課題を解決するために、請求項１に記載の発明は、複数のメモリブロックを有し、ファームウェアを構成する複数のプログラムモジュールが前記メモリブロックに格納され、プログラムモジュール単位での更新処理が可能な情報処理装置において、１つのプログラムモジュールの少なくとも一部が格納されているメモリブロックの内容全てを削除するモジュール削除手段と、プログラムモジュールが全く格納されていない空きメモリブロックにプログラムモジュールを書き込むモジュール追加手段とを備え、前記モジュール削除手段と前記モジュール追加手段との少なくとも一方を用いて、前記複数のメモリブロックの一部に格納されている１つのプログラムモジュールである旧プログラムモジュールを別の新プログラムモジュールに更新する更新処理を実行することを特徴とする情報処理装置を提供する。
【０００６】
請求項１に記載の発明によれば、情報処理装置は、プログラムモジュール削除手段とプログラムモジュール追加手段との少なくとも一方を用いて更新処理を実行するため、従来のように、外部記憶装置にプログラムモジュールを退避することなく更新処理を行うことができる。このため、コストの削減や処理時間の短縮が図られると共に、退避／復元によるエラーが発生することがなくなるため、退避／復元により発生し得るエラーに対する考慮が不要となり、保守性を高めることが可能となる。
【０００７】
請求項２に記載の発明は、請求項１に記載の情報処理装置において、前記更新処理は、前記モジュール削除手段により前記旧プログラムモジュールを削除せずに、前記モジュール追加手段により前記新プログラムモジュールを前記空きメモリブロックに書き込む処理であることを特徴とする。
請求項２に記載の発明によれば、更新処理時に旧プログラムモジュールを削除せずにバックアップとして保存しておくことが可能となるため、格納した新プログラムモジュールに不具合があった場合に、旧プログラムモジュールを使用することができる。このため、柔軟に障害に対応することができ、保守性を高めることができる。
【０００８】
請求項３に記載の発明は、請求項１又は２に記載の情報処理装置において、前記更新処理は、前記新プログラムモジュールのデータ量が、前記旧プログラムモジュールの少なくとも一部が格納されている１又は複数のメモリブロックに格納可能な合計データ量よりも大きい場合に、前記プログラムモジュール追加手段により前記空きメモリブロックに前記新プログラムモジュールを書き込み、かつ、前記プログラムモジュール削除手段により前記旧プログラムモジュールを削除する処理であることを特徴とする。
【０００９】
請求項３に記載の発明によれば、新プログラムモジュールのデータ量が、旧プログラムモジュールの少なくとも一部が格納されている１又は複数のメモリブロックに格納可能な合計データ量よりも大きい場合に、旧プログラムモジュールの格納位置ではなく別の空きメモリブロックに新プログラムモジュールを格納するため、他のプログラムモジュールの格納位置をずらす必要がなくなる。このため、外部記憶装置にデータを退避する必要がなくなるため、データを退避するための外部記憶装置を設ける必要なくなり、また、一時退避／復元処理によってエラーが発生することがなくなる。
【００１０】
請求項４に記載の発明は、請求項１から３のいずれか１項に記載の情報処理装置において、起動対象のプログラムモジュールを切り替える起動モジュール切替手段をさらに備え、前記起動モジュール切替手段は、前記モジュール追加手段により格納された新プログラムモジュールが正常でないことが検知され、かつ、前記旧プログラムモジュールが前記メモリに格納されている場合には、起動対象のプログラムモジュールを該旧プログラムモジュールに切り替えることを特徴とする。
【００１１】
請求項４に記載の発明によれば、情報処理装置は、新プログラムモジュールが正常でないことが検知され、かつ、旧プログラムモジュールがメモリにバックアップとして格納されている場合には、起動対象のプログラムモジュールを旧プログラムモジュールに切り替えるため、起動対象のプログラムモジュールを柔軟に切り替えて障害に対応することができる。このため、メモリを交換する等して障害に対応する必要がなくなり、保守性を高めることができる。
【００１２】
請求項５に記載の発明は、請求項１から４のいずれか１項に記載の情報処理装置において、前記メモリに格納されているプログラムモジュールを起動する優先順位を指定する起動優先順指定手段をさらに備え、前記起動優先順位指定手段により指定された優先順位に従って、前記プログラムモジュールを起動することを特徴とする。
請求項５に記載の発明によれば、情報処理装置は、起動優先順位指定手段により指定された優先順位に従ってプログラムモジュールを起動するため、柔軟にプログラムモジュールの起動順序を指定して起動することができ、保守性を高めることができる。
【発明の効果】
【００１３】
このように本発明によれば、情報処理装置は、プログラムモジュール削除手段とプログラムモジュール追加手段との少なくとも一方を用いて更新処理を実行するため、外部記憶装置にデータを退避せずに更新処理を行うことができる。このため、退避／復元によるエラーが発生することがなくなるため、エラーに対する考慮が不要となり、保守性を高めることが可能となる。さらに、コストの削減や処理時間の短縮を図ることができる。
【００１４】
また、更新処理において旧プログラムモジュールの保存を可能とすることにより、新プログラムモジュールに不具合が発生した場合に、起動対象のプログラムモジュールを旧プログラムモジュールに切り替えることができるため、起動対象のプログラムモジュールを柔軟に切り替えて障害に対応することができ、保守性を高めることができる。
【発明を実施するための最良の形態】
【００１５】
以下、図を参照して、発明の実施の形態について説明する。
図１は、本発明の情報処理装置１のハードウェア構成例である。同図に示すように、情報処理装置１は、ＣＰＵ１０１、メモリ１０２、ＲＯＭ１０３、および、外部Ｉ／Ｆ１０４を含んで構成され、それぞれバス接続されている。ＲＯＭ１０３はフラッシュメモリなどの不揮発性メモリである。ＲＯＭ１０３は複数のメモリブロックからなり、そのメモリブロック単位で消去や書き込み等のアクセスが可能である。ＲＯＭ１０３にはファームウェアが格納される。メモリ１０２は、例えば揮発性メモリであるが、バッテリーを付加して、電源断後でもメモリの内容を保持する構成としても良い。外部Ｉ／Ｆ１０４は、上位機器と接続するためのインタフェースであり、シリアルコントローラやＬＡＮ（Local Area Network）コントローラといった通信デバイスが接続される。このインタフェース経由でファームウェアを構成するプログラムのモジュールが上位機器よりダウンロードされ、更新処理が行われる。
【００１６】
図２は、情報処理装置１内のファームウェアの構成図である。ＲＯＭ１０３に格納されるファームウェアは、基本部２０１と応用部２０２とに分けられている。基本部２０１は、ブートローダ２０３、オペレーティングシステム（ＯＳ）２０４、デバイスドライバ２０５、および、ファームウェアの更新プログラム２０６などを含んで構成される。応用部２０２は、装置としての機能を果たすための複数のロードモジュール（実行可能なプログラムモジュール）Ａ２０８，Ｂ２０９，Ｃ２１０、及び、ロードモジュール管理情報２０７を含んで構成される。また、基本部２０１は、固定プログラムであってファームウェア更新対象外である。応用部２０２はファームウェア更新対象領域であり、ロードモジュール単位での更新、追加および削除が可能である。なお、ロードモジュール単位での更新、追加および削除を可能とするための前提として、ここでは、ＲＯＭ１０３を構成する各々のメモリブロックに１つ以下のロードモジュールを格納する。すなわち、各々のメモリブロックには、２つ以上のロードモジュールが格納されないものとする。
【００１７】
図３には、ロードモジュールの更新、追加または削除時に記録・更新されるロードモジュール管理情報２０７の例を示す。同図に示すように、ロードモジュール管理情報２０７はロードモジュール共通管理情報３０１とロードモジュール個別情報であるロードモジュールＡ管理情報３０２、ロードモジュールＢ管理情報３０３、・・・、ロードモジュールｎ管理情報３０４から構成される。ロードモジュール共通管理情報３０１はロードモジュールの格納領域であるＲＯＭ領域先頭アドレス３０１ａ、ＲＯＭ領域全体サイズ３０１ｂ、ロードモジュール動作時に利用されるＲＡＭ領域先頭アドレス３０１ｃ、ＲＡＭ領域全体サイズ３０１ｄから構成される。ロードモジュールｎ管理情報３０４は、ロードモジュール更新・追加・削除時に対象ロードモジュールを特定するためのロードモジュール識別番号３０４ａ、ロードモジュールを格納しているロードモジュール先頭アドレス３０４ｂ、ロードモジュール使用ブロック数３０４ｃ、ロードモジュールサイズ３０４ｄ、ロードモジュール領域の各バイトデータの加算値を格納したロードモジュールチェックサム３０４ｅ、システム初期化時にロードモジュールを起動する際のロードモジュール起動アドレス３０４ｆ、ロードモジュールをＲＡＭに展開する場合のロードモジュールロードアドレス３０４ｇ、ロードモジュールの使用ＲＡＭ領域のロードモジュールＲＡＭアドレス３０４ｈ、ロードモジュールＲＡＭサイズ３０４ｉ、ロードモジュールのバージョンが複数存在する際に使用するロードモジュール起動フラグ３０４ｊ、ロードモジュールのＲＯＭ／ＲＡＭ実行を指定するロードモジュール実行領域指定３０４ｋ、システム初期化時のロードモジュールの起動順序を決定するロードモジュール優先順位３０４ｌ、ロードモジュール更新日付３０４ｍ、ロードモジュールバージョン３０４ｎなどから構成される。本ロードモジュール管理情報２０７は、ロードモジュール更新、追加および削除時に参照・更新され、あるいはシステム初期化時に参照・更新される。
【００１８】
次に、情報処理装置１の機能構成について説明する。図４には情報処理装置１の機能構成を示す。ＣＰＵ１０１が更新プログラム２０６を実行することにより、図４に示すモジュール追加部１１とモジュール削除部１２との機能が情報処理装置１に実現される。
モジュール追加部１１は、ロードモジュールが全く格納されていない空きメモリブロックに新しいロードモジュールを書き込む。
【００１９】
モジュール削除部１２は、メモリブロック単位でデータを削除する。具体的には、モジュール削除部１２は、特定のプログラムモジュールの削除要求を受けた場合に、当該プログラムモジュールの少なくとも一部が格納されているメモリブロック（以下「使用メモリブロック」という）の内容全てを削除する。
また、基本部２０１の更新プログラム２０６には、起動対象のロードモジュールを切り替えるためのプログラムと、ロードモジュールの優先順位を指定するためのプログラムと、指定された優先順位に従ってロードモジュールを起動するためのプログラムとが格納されている。ＣＰＵ１０１がこれらのプログラムを実行することにより、図４に示す起動モジュール切替部１３と起動優先順位指定部１４との機能が情報処理装置１に実現される。
【００２０】
起動モジュール切替部１３は、予め設定されたロードモジュール起動フラグ３０４ｊや外部からの切替指示や障害等の検知によって、起動対象のロードモジュールを切り替える。例えば、起動モジュール切替部１３は、モジュール追加部１１によって格納された新ロードモジュールが正常でないことが検知され、かつ、旧プログラムモジュールがＲＯＭ１０３に格納されている（バックアップされている）場合には、起動対象のプログラムモジュールを旧プログラムモジュールに切り替える。ここで、「新ロードモジュールが正常でない」状態には、新ロードモジュールが正常に起動・初期化されなかった状態や、新ロードモジュール実行中に異常が発生した状態等が含まれ、ユーザによって正常でない状態を定義することが可能である。また、起動モジュール切替部１３は、複数バージョンのロードモジュールがＲＯＭ１０３に保存されている場合は、最新のロードモジュールを起動対象とする。
【００２１】
起動優先順位指定部１４は、外部からの指示入力等を受けて、ＲＯＭ１０３に格納されているプログラムモジュールを起動する優先順位を指定する。
次に、情報処理装置１が行うロードモジュールの更新処理について説明する。更新処理の種別には“上書き指定”と“保存指定”とが存在する。これらの種別は、上位機器から取得されるダウンロード情報に含まれる更新種別で判断される。
【００２２】
最初に、ロードモジュールの更新かつ上書き指定の場合について説明する。尚、ロードモジュールは複数のメモリブロックから構成されるフラッシュメモリなどの不揮発性メモリ（ＲＯＭ１０３）に格納されており、同一のメモリブロック内には複数のロードモジュールは存在しないことを前提に説明する。図５にロードモジュール更新前後のメモリ構成を示す。図５（ａ）にはロードモジュール更新前のメモリ構成を示す。同図に示すように、メモリブロックには、ロードモジュールＡ２０８，Ｂ２０９，Ｃ２１０が格納されている。図５（ａ）の構成において、ロードモジュールＡ２０８を更新するものとする。ここで、新ロードモジュールをロードモジュールＡ’２０８ａとし、ロードモジュールＡ’２０８ａのモジュールサイズ（データ量）はロードモジュールＡ２０８の使用メモリブロック２つ分の領域内に収まるサイズとする。このとき、ロードモジュールＡ２０８更新後のメモリ構成は図３（ｂ）に示すようになり、ロードモジュールＡ２０８と同じメモリブロック領域にロードモジュールＡ’２０８ａが格納される。
【００２３】
この場合の情報処理装置１が行う処理としては、モジュール削除部１２がロードモジュールＡ２０８を削除し、これにより空き領域となったメモリブロックに対して、モジュール追加部１１がロードモジュールＡ’２０８ａを書き込む。
また、更新後の新ロードモジュールが旧ロードモジュールサイズの使用メモリブロックより大きい場合のロードモジュールの更新について、図６に示す。新ロードモジュールをロードモジュールＡ’２０８ｂとする。ロードモジュールＡ’２０８ｂは、図６（ａ）のロードモジュールＡ２０８の使用メモリブロック２つ分には入りきらないため、図６（ｂ）の更新後のメモリ構成に示すように、モジュール追加部１１によってロードモジュールＣ２１０より下位の空きメモリブロック領域にロードモジュールＡ’２０８ｂが格納され、ロードモジュールＡ２０８の使用メモリブロックについてはモジュール削除部１２によってそのメモリブロックの内容が削除され、空き領域となる。
【００２４】
前記ロードモジュールの更新処理（上書き指定）に関して、図７のフローチャートに従って説明する。まず、情報処理装置１はファームウェア更新開始指示を受けると、ＣＰＵ１０１は基本部２０１のファームウェアの更新プログラム２０６を起動する（ステップＳ１）。これにより、情報処理装置１は、図４に示すモジュール追加部１１及びモジュール削除部１２として機能する。ＣＰＵ１０１は、上位機器からのロードモジュールのダウンロード情報を取得する（ステップＳ２）。ＣＰＵ１０１は、取得したダウンロード情報よりロードモジュールの更新種別を判定（ステップＳ３）し、更新種別が“更新”の場合は、上位機器から新バージョンのロードモジュールをダウンロードする（ステップＳ４）。次に、ＣＰＵ１０１は、ロードモジュール識別情報を参照して、ＲＯＭ１０３に格納されている更新対象のロードモジュールを検索する（ステップＳ５）。尚、更新種別が“更新”以外の“追加”または“削除”の場合については後述する。
【００２５】
次に、ＣＰＵ１０１は更新対象のモジュールが存在しているか否かを判定（ステップＳ６）し、更新対象のロードモジュールが存在していた場合は、ロードモジュールのダウンロード情報に基づいて、当該更新対象のロードモジュール（更新時の旧ロードモジュール）の上書き／保存指定を判定する（ステップＳ７）。“上書き”の場合は、ＣＰＵ１０１は、旧ロードモジュールが格納されている使用メモリブロックのサイズと新ロードモジュールサイズを比較する（ステップＳ８）。
【００２６】
尚、更新対象のロードモジュールが存在しなかった場合は、ＣＰＵ１０１は、ロードモジュールの更新種別を“追加”と見なして処理を行う。またはエラーとして更新処理を中断しても良い。また、更新時の旧ロードモジュールの上書き／保存指定が“保存”の場合については後述する。
旧ロードモジュールが格納されている使用メモリブロックのサイズより新ロードモジュールサイズの方が等しいかまたは小さかった場合は（ステップＳ８；Ｙｅｓ）、モジュール削除部１２は旧ロードモジュールが格納されている使用メモリブロックの内容を削除した後（ステップＳ９）、モジュール追加部１１は同じメモリブロック領域に新ロードモジュールを書込む（ステップＳ１０）。
【００２７】
また、旧ロードモジュールが格納されている使用メモリブロックのサイズより新ロードモジュールサイズの方が大きかった場合は（ステップＳ８；Ｎｏ）、ＣＰＵ１０１は新ロードモジュールサイズ以上のＲＯＭ１０３の連続した空きメモリブロックを検索（ステップＳ１１）し、空きメモリブロックが存在したか否かを判定する（ステップＳ１２）。空きメモリブロックが存在しなかった場合は（ステップＳ１２；Ｎｏ）、ＣＰＵ１０１は、空きメモリを増やすための再構成処理を行う。またはエラーとして更新処理を中断しても良い。
【００２８】
一方、空きメモリが存在した場合は（ステップＳ１２；Ｙｅｓ）、モジュール追加部１１は空きメモリに新ロードモジュールを書き込んだ後（ステップＳ１３）、モジュール削除部１２は旧ロードモジュールが格納されている使用メモリブロックの内容を削除する（ステップＳ１４）。ロードモジュールの更新（書込み）が終了したら、最後にＣＰＵ１０１はロードモジュールの管理情報を更新する（ステップＳ１５）。
【００２９】
次に、ロードモジュールの更新かつ保存指定の場合について説明する。図８（ａ）にはロードモジュール更新前のメモリ構成を示す。同図に示すように、各々のメモリブロックにはロードモジュールＡ２０８，Ｂ２０９，Ｃ２１０が格納されている。図８（ａ）の構成において、ロードモジュールＢ２０９を更新するものとする。ここで、新ロードモジュールをロードモジュールＢ’２０９ａとし、旧ロードモジュールＢ２０９を保存指定して更新する。ロードモジュールＢ２０９の内容は残したまま削除せず、図６（ｂ）の更新後のメモリ構成に示すように、モジュール追加部１１により、ロードモジュールＣ２１０より下位の空きメモリブロック領域にロードモジュールＢ’２０９ａが格納される。
【００３０】
尚、複数バージョンのロードモジュールが保存されている場合は、起動モジュール切替部１３は最新のロードモジュールを起動対象とする。さらに、起動モジュール切替部１３に、上位機器からの、起動対象とするロードモジュールの切り替え指示のインタフェースを含めることにより、任意のバージョンのロードモジュールを起動対象とすることも可能である。
【００３１】
前記ロードモジュールの更新（保存指定）に関して、図９のフローチャートに従って説明する。  図９において、まず、情報処理装置１はファームウェア更新開始指示を受けると、基本部２０１の更新プログラム２０６を起動し（ステップＳ２１）、上位機器からロードモジュールのダウンロード情報を取得する（ステップＳ２２）。ＣＰＵ１０１はダウンロード情報に基づいてロードモジュールの更新種別を判定（ステップＳ２３）し、更新種別が“更新”の場合は、上位機器から新しいロードモジュールをダウンロードする（ステップＳ２４）。次に、ＣＰＵ１０１はロードモジュール識別情報を参照してＲＯＭ１０３に格納されている更新対象のロードモジュールを検索する（ステップＳ２５）。次に、ＣＰＵ１０１は、更新対象のロードモジュールが存在しているか否かを判定（ステップＳ２６）し、更新対象のロードモジュールが存在していた場合は（ステップＳ２６；Ｙｅｓ）、更新対象のロードモジュール（更新時の旧ロードモジュール）の上書き／保存指定を判定する（ステップＳ２７）。“保存”の場合は、ＣＰＵ１０１は新ロードモジュールサイズ以上のＲＯＭ１０３の連続した空きメモリブロックを検索（ステップＳ２８）し、空きメモリが存在したか否かを判定する（ステップＳ２９）。空きメモリが存在しなかった場合は（ステップＳ２９；Ｎｏ）、ＣＰＵ１０１は空きメモリを増やすための再構成処理を行う。またはエラーとして更新処理を中断しても良い。空きメモリが存在した場合は（ステップＳ２９；Ｙｅｓ）、モジュール追加部１１は空きメモリに新ロードモジュールを書き込む（ステップＳ３０）。最後に、ＣＰＵ１０１はロードモジュールの管理情報を更新する（ステップＳ３１）。
【００３２】
ロードモジュールの追加については、ロードモジュールの更新かつ保存指定の場合の処理とほぼ同様なので説明を省略する。
またロードモジュールの削除については、モジュール削除部１２が指定されたロードモジュールの領域を削除すると共に、ロードモジュール管理情報２０７を更新して、空き領域とする。
【００３３】
前述したロードモジュールの更新・追加に関して、さらに、起動優先順位指定部１４により、ロードモジュールの起動優先順位の指定を付加することにより、任意の順序でのロードモジュールの起動が可能となり、ロードモジュール間で起動順序の依存関係がある場合は、本指定を行うことで起動順序の制御が可能となる。また、起動優先順位指定部１４により、起動優先順位に未起動とする指定も可能とすることにより、任意のカスタマイズされたシステム構成が可能となる。
【００３４】
また、起動優先順位指定部１４に、上位機器からの起動優先順位の変更指示のインタフェースを含めることにより、ロードモジュール更新・追加後においてもロードモジュールの起動順序を変更することが可能となる。
続いて、ロードモジュール更新、追加、削除後の（再）起動処理について、図１０のフローチャートに従って説明する。電源投入時やリセット直後は最初に基本部２０１のブートローダ２０３が起動される。ＣＰＵ１０１はブート処理（ハードウェアの初期化）や基本部２０１の起動処理を行う（ステップＳ４０）。次に、ＣＰＵ１０１は、基本部２０１の初期化処理（ＯＳの起動やデバイスドライバの初期化など）を行う（ステップＳ４１）。基本部２０１の初期化終了後、ＣＰＵ１０１はロードモジュール管理情報２０７内の起動優先順位に従い、応用部２０２のロードモジュールの起動リストを作成する（ステップＳ４２）。次に、ＣＰＵ１０１は、応用部２０２のｎ番目のロードモジュールの起動を行う前に、前回ｎ番目のロードモジュールを起動・初期化した時にエラーが発生したかどうかの判定を行う（ステップＳ４３）。エラーが発生していた（エラー情報が格納されていた）場合には、起動モジュール切替部１３は、当該ｎ番目のロードモジュールは起動せず、エラー情報（エラーロードモジュール識別情報）をクリアして、以降のｎ番目のロードモジュールの起動を中止する（ステップＳ５２）。エラーが発生していない場合は、ＣＰＵ１０１はｎ番目のロードモジュールの起動および初期化を行う（ステップＳ４４，Ｓ４５）。次に、ＣＰＵ１０１は初期化時においてエラーが発生したか否かの判定を行い（ステップＳ４６）、エラーであれば続いてバックアップロードモジュール（複数バージョンのロードモジュール、旧ロードモジュール）が存在するか否かを判定する（ステップＳ４９）。バックアップロードモジュールが無い場合は（ステップＳ４９；Ｎｏ）、ＣＰＵ１０１は、エラー情報（エラーが発生したロードモジュールの識別番号）をＲＯＭ１０３あるいはバッテリバックアップ付きメモリ領域（メモリ１０２）に保存して、以降のｎ番目のロードモジュールの起動を中止する（ステップＳ５０）。バックアップロードモジュールが有る場合は（ステップＳ４９；Ｙｅｓ）、起動モジュール切替部１３は、次の再起動時のロードモジュールをバックアップ用のロードモジュールに変更して、以降のｎ番目のロードモジュールの起動を中止する（ステップＳ５１）。ｎ番目のロードモジュール初期化で正常終了した場合は、ＣＰＵ１０１は、次に起動するロードモジュール番号ｎを更新する（ステップＳ４７）。尚、ここで起動するロードモジュールの順番は、ロードモジュールの更新・追加時に起動優先順位指定部１４により指定された順序に従う。以降はステップＳ４３に戻り、ロードモジュール数分繰り返し処理を行う。応用部２０２のロードモジュール全ての初期化が正常終了した場合は、情報処理装置１が通常動作に入る。
【００３５】
なお、ステップＳ４９において、旧バージョンのロードモジュールが保存されていない場合は、再起動時に新規ロードモジュールの起動前で起動を停止することにより、再度、モジュール追加部１１により新バーションのロードモジュールの追加を可能としてもよい。
このように本発明によれば、静的リンクされた複数のロードモジュールを有するファームウェアについて、一部のロードモジュールの更新、追加、および削除を行う際に、エラーの発生を防ぎ保守性を高める方式を提供することができる。また、保存指定や上書き指定の種別に応じて更新処理を行うことができるため、ファームウェアの更新に関して柔軟性を持たせることが可能となる。また、ロードモジュール起動時には、ロードモジュールの起動優先順位の指定や、複数バージョンが保存されている場合にロードモジュール切替の指定が可能となり、より柔軟なロードモジュールの実行方法の提供が可能となる。
【００３６】
なお、上述した実施形態においてはファームウェアについて説明したが、ファームウェアに限定されることはなく、メモリブロック単位でアクセスされる記憶領域に格納されたあらゆるプログラムの更新処理について適用することができる。また、ロードモジュールは動的リンクを行うロードモジュールであってもよいし、ロードモジュールに限定されずに、インタプリタ型の言語の場合にはソースコードであってもよいし、Ｊａｖａ（登録商標）言語の場合には、ロードモジュールとソースモジュールとの中間の形式であるバイトコードであってもよい。
【００３７】
また、上述した実施形態においては、更新かつ上書き指定、更新かつ保存指定、追加、および、削除に分けて説明したが、更新かつ上書き指定の場合に行われる処理は、モジュール追加部１１による追加処理とモジュール削除部１２による削除処理とを組み合わせたものであり、また、更新かつ保存指定の場合に行われる処理は、モジュール追加部１１による追加処理である。このため、モジュール追加部１１とモジュール削除部１２との少なくとも一方の処理により更新処理を行うことができるため、更新処理の概念に追加処理と削除処理とを含めてもよい。
【産業上の利用可能性】
【００３８】
エラーの発生を防ぎ、障害に柔軟に対応することが可能な保守性の高いプログラムの更新処理に利用することができる。
【図面の簡単な説明】
【００３９】
【図１】本発明の実施の形態に係る情報処理装置のハードウェア構成を示すブロック図である。
【図２】同実施の形態に係るファームウェアの構成を示す図である。
【図３】同実施の形態に係るロードモジュール管理情報の構成の一例を示す図である。
【図４】同実施の形態に係る情報処理装置の機能構成を示すブロック図である。
【図５】（ａ）、（ｂ）は、同実施の形態に係る更新かつ上書き指定であって、ロードモジュールＡ’のデータ量が、ロードモジュールＡが使用しているメモリブロックのデータ量以下である場合の、ロードモジュールＡ更新前後のメモリ構成を示す図である。
【図６】（ａ）、（ｂ）は、同実施の形態に係る更新かつ上書き指定であって、ロードモジュールＡ’のデータ量が、ロードモジュールＡが使用しているメモリブロックのデータ量より大きい場合の、ロードモジュールＡ更新前後のメモリ構成を示す図である。
【図７】同実施の形態に係る上書き指定の場合のファームウェア更新処理を示すフローチャートである。
【図８】（ａ）、（ｂ）は、同実施の形態に係る更新かつ保存指定である場合に、ロードモジュールＡを更新する前後のデータ構成を示す図である。
【図９】同実施の形態に係る保存指定の場合のファームウェア更新処理を示すフローチャートである。
【図１０】同実施の形態に係るファームウェア起動処理を示すフローチャートである。
【符号の説明】
【００４０】
１      情報処理装置
１１    モジュール追加部
１２    モジュール削除部
１３    起動モジュール切替部
１４    起動優先順位指定部
１０１  ＣＰＵ
１０２  メモリ
１０３  ＲＯＭ
１０４  外部Ｉ／Ｆ
２０１  基本部
２０２  応用部
２０３  ブートローダ
２０４  ＯＳ
２０５  デバイスドライバ
２０６  更新プログラム
２０７  ロードモジュール管理情報
【図１】
2005321967.tif 000003
【図２】
2005321967.tif 000004
【図３】
2005321967.tif 000005
【図４】
2005321967.tif 000006
【図５】
2005321967.tif 000007
【図６】
2005321967.tif 000008
【図７】
2005321967.tif 000009
【図８】
2005321967.tif 000010
【図９】
2005321967.tif 000011
【図１０】
2005321967.tif 000012