JP2005321967A - 情報処理装置 - Google Patents
情報処理装置 Download PDFInfo
- Publication number
- JP2005321967A JP2005321967A JP2004138761A JP2004138761A JP2005321967A JP 2005321967 A JP2005321967 A JP 2005321967A JP 2004138761 A JP2004138761 A JP 2004138761A JP 2004138761 A JP2004138761 A JP 2004138761A JP 2005321967 A JP2005321967 A JP 2005321967A
- Authority
- JP
- Japan
- Prior art keywords
- module
- load module
- program module
- stored
- program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
【課題】 プログラムモジュールの更新処理時のエラーを防ぎ、更新処理後の保守性を高めることのできる情報処理装置を提供することにある。
【解決手段】 更新かつ上書き指定の場合には、情報処理装置1のモジュール削除部12が旧プログラムモジュールの少なくとも一部が格納されているメモリブロックの内容全てを削除し、モジュール追加部11がプログラムモジュールが格納されていない空きメモリブロックに新プログラムモジュールを書き込む。更新かつ保存指定の場合には、旧プログラムモジュールを削除せずに、情報処理装置1のモジュール追加部11が、プログラムモジュールが格納されていない空きメモリブロックに新プログラムモジュールを書き込む。
【選択図】 図4
【解決手段】 更新かつ上書き指定の場合には、情報処理装置1のモジュール削除部12が旧プログラムモジュールの少なくとも一部が格納されているメモリブロックの内容全てを削除し、モジュール追加部11がプログラムモジュールが格納されていない空きメモリブロックに新プログラムモジュールを書き込む。更新かつ保存指定の場合には、旧プログラムモジュールを削除せずに、情報処理装置1のモジュール追加部11が、プログラムモジュールが格納されていない空きメモリブロックに新プログラムモジュールを書き込む。
【選択図】 図4
Description
本発明は、ファームウェアに含まれるロードモジュール等の、プログラムモジュールの更新処理を行う情報処理装置に関する。
最近の組込み機器は機能追加、性能向上や不具合の修正などの目的でファームウェアを更新するための手段が提供されている製品が多くなってきている。従来のファームウェアのリンク単位は一括かつ静的リンクであり、ファームウェアの更新単位がシステムで一括である場合が多い。従って、機能単位で更新処理を行う場合においても、システム全体の一括リンクされたファームウェアを作成し、更新する作業が必要であり、ファームウェアのデータサイズが大きくなると更新時間が長くなるという問題があった。この問題を解決する方法として、特開2000−242487号公報がある。この発明は複数のメモリブロックからなるフラッシュメモリなどに記憶された複数のプログラムブロック(プログラムモジュール)の構成において、一部のプログラムブロックのみを更新する方法であり、更新対象のブログラムブロックの領域と同じメモリブロック内に属する更新対象外のプログラムブロックを外部記憶領域に一時退避し、対象メモリブロックを消去した後、新規プログラムデータと退避した更新対象外のプログラムブロックを書き込むものである。また更新の際、旧プログラムブロックよりも新プログラムのデータサイズが大きい場合は、更新対象のプログラムブロック以降のメモリブロックに格納されている更新対象外のプログラムブロックに対しても格納位置をずらす必要があるため、前記に加え、更新対象のプログラムブロック以降のメモリブロックに格納されている更新対象外のプログラムブロックについても外部記憶媒体に一時退避し、対象メモリブロックを消去後、新しいプログラムブロックと退避した更新対象外のプログラムブロックを書き込むプログラム更新装置およびプログラム更新方法である。
特開2000−242487号公報(請求項1、2)
しかしながら、上記のような従来の方法では以下のような問題が生じる。
・更新対象のメモリブロック内の更新対象外のプログラムブロックのファームウェアを一時退避するための外部記憶領域が必要である。
・退避/復元時にエラーが発生する可能性があり、障害対策が必要である。
・更新後の新規ファームウェアに不具合があるとシステムが正常に起動しなくなる可能性があり、その場合にはファームウェアが格納される物理的なROM(Read Only Memory)の交換が必要になる可能性がある。
・更新対象のメモリブロック内の更新対象外のプログラムブロックのファームウェアを一時退避するための外部記憶領域が必要である。
・退避/復元時にエラーが発生する可能性があり、障害対策が必要である。
・更新後の新規ファームウェアに不具合があるとシステムが正常に起動しなくなる可能性があり、その場合にはファームウェアが格納される物理的なROM(Read Only Memory)の交換が必要になる可能性がある。
従って、上記の従来の方法では、更新処理時や更新処理後のエラー発生に対する考慮が不足しており、組込み機器のコストや保守性に問題を有していた。
この発明は以上の問題点を解決するためになされたものであり、その目的は、プログラムモジュールの更新処理時のエラーを防ぎ、更新処理後の保守性を高めることのできる情報処理装置を提供することにある。
この発明は以上の問題点を解決するためになされたものであり、その目的は、プログラムモジュールの更新処理時のエラーを防ぎ、更新処理後の保守性を高めることのできる情報処理装置を提供することにある。
上記課題を解決するために、請求項1に記載の発明は、複数のメモリブロックを有し、ファームウェアを構成する複数のプログラムモジュールが前記メモリブロックに格納され、プログラムモジュール単位での更新処理が可能な情報処理装置において、1つのプログラムモジュールの少なくとも一部が格納されているメモリブロックの内容全てを削除するモジュール削除手段と、プログラムモジュールが全く格納されていない空きメモリブロックにプログラムモジュールを書き込むモジュール追加手段とを備え、前記モジュール削除手段と前記モジュール追加手段との少なくとも一方を用いて、前記複数のメモリブロックの一部に格納されている1つのプログラムモジュールである旧プログラムモジュールを別の新プログラムモジュールに更新する更新処理を実行することを特徴とする情報処理装置を提供する。
請求項1に記載の発明によれば、情報処理装置は、プログラムモジュール削除手段とプログラムモジュール追加手段との少なくとも一方を用いて更新処理を実行するため、従来のように、外部記憶装置にプログラムモジュールを退避することなく更新処理を行うことができる。このため、コストの削減や処理時間の短縮が図られると共に、退避/復元によるエラーが発生することがなくなるため、退避/復元により発生し得るエラーに対する考慮が不要となり、保守性を高めることが可能となる。
請求項2に記載の発明は、請求項1に記載の情報処理装置において、前記更新処理は、前記モジュール削除手段により前記旧プログラムモジュールを削除せずに、前記モジュール追加手段により前記新プログラムモジュールを前記空きメモリブロックに書き込む処理であることを特徴とする。
請求項2に記載の発明によれば、更新処理時に旧プログラムモジュールを削除せずにバックアップとして保存しておくことが可能となるため、格納した新プログラムモジュールに不具合があった場合に、旧プログラムモジュールを使用することができる。このため、柔軟に障害に対応することができ、保守性を高めることができる。
請求項2に記載の発明によれば、更新処理時に旧プログラムモジュールを削除せずにバックアップとして保存しておくことが可能となるため、格納した新プログラムモジュールに不具合があった場合に、旧プログラムモジュールを使用することができる。このため、柔軟に障害に対応することができ、保守性を高めることができる。
請求項3に記載の発明は、請求項1又は2に記載の情報処理装置において、前記更新処理は、前記新プログラムモジュールのデータ量が、前記旧プログラムモジュールの少なくとも一部が格納されている1又は複数のメモリブロックに格納可能な合計データ量よりも大きい場合に、前記プログラムモジュール追加手段により前記空きメモリブロックに前記新プログラムモジュールを書き込み、かつ、前記プログラムモジュール削除手段により前記旧プログラムモジュールを削除する処理であることを特徴とする。
請求項3に記載の発明によれば、新プログラムモジュールのデータ量が、旧プログラムモジュールの少なくとも一部が格納されている1又は複数のメモリブロックに格納可能な合計データ量よりも大きい場合に、旧プログラムモジュールの格納位置ではなく別の空きメモリブロックに新プログラムモジュールを格納するため、他のプログラムモジュールの格納位置をずらす必要がなくなる。このため、外部記憶装置にデータを退避する必要がなくなるため、データを退避するための外部記憶装置を設ける必要なくなり、また、一時退避/復元処理によってエラーが発生することがなくなる。
請求項4に記載の発明は、請求項1から3のいずれか1項に記載の情報処理装置において、起動対象のプログラムモジュールを切り替える起動モジュール切替手段をさらに備え、前記起動モジュール切替手段は、前記モジュール追加手段により格納された新プログラムモジュールが正常でないことが検知され、かつ、前記旧プログラムモジュールが前記メモリに格納されている場合には、起動対象のプログラムモジュールを該旧プログラムモジュールに切り替えることを特徴とする。
請求項4に記載の発明によれば、情報処理装置は、新プログラムモジュールが正常でないことが検知され、かつ、旧プログラムモジュールがメモリにバックアップとして格納されている場合には、起動対象のプログラムモジュールを旧プログラムモジュールに切り替えるため、起動対象のプログラムモジュールを柔軟に切り替えて障害に対応することができる。このため、メモリを交換する等して障害に対応する必要がなくなり、保守性を高めることができる。
請求項5に記載の発明は、請求項1から4のいずれか1項に記載の情報処理装置において、前記メモリに格納されているプログラムモジュールを起動する優先順位を指定する起動優先順指定手段をさらに備え、前記起動優先順位指定手段により指定された優先順位に従って、前記プログラムモジュールを起動することを特徴とする。
請求項5に記載の発明によれば、情報処理装置は、起動優先順位指定手段により指定された優先順位に従ってプログラムモジュールを起動するため、柔軟にプログラムモジュールの起動順序を指定して起動することができ、保守性を高めることができる。
請求項5に記載の発明によれば、情報処理装置は、起動優先順位指定手段により指定された優先順位に従ってプログラムモジュールを起動するため、柔軟にプログラムモジュールの起動順序を指定して起動することができ、保守性を高めることができる。
このように本発明によれば、情報処理装置は、プログラムモジュール削除手段とプログラムモジュール追加手段との少なくとも一方を用いて更新処理を実行するため、外部記憶装置にデータを退避せずに更新処理を行うことができる。このため、退避/復元によるエラーが発生することがなくなるため、エラーに対する考慮が不要となり、保守性を高めることが可能となる。さらに、コストの削減や処理時間の短縮を図ることができる。
また、更新処理において旧プログラムモジュールの保存を可能とすることにより、新プログラムモジュールに不具合が発生した場合に、起動対象のプログラムモジュールを旧プログラムモジュールに切り替えることができるため、起動対象のプログラムモジュールを柔軟に切り替えて障害に対応することができ、保守性を高めることができる。
以下、図を参照して、発明の実施の形態について説明する。
図1は、本発明の情報処理装置1のハードウェア構成例である。同図に示すように、情報処理装置1は、CPU101、メモリ102、ROM103、および、外部I/F104を含んで構成され、それぞれバス接続されている。ROM103はフラッシュメモリなどの不揮発性メモリである。ROM103は複数のメモリブロックからなり、そのメモリブロック単位で消去や書き込み等のアクセスが可能である。ROM103にはファームウェアが格納される。メモリ102は、例えば揮発性メモリであるが、バッテリーを付加して、電源断後でもメモリの内容を保持する構成としても良い。外部I/F104は、上位機器と接続するためのインタフェースであり、シリアルコントローラやLAN(Local Area Network)コントローラといった通信デバイスが接続される。このインタフェース経由でファームウェアを構成するプログラムのモジュールが上位機器よりダウンロードされ、更新処理が行われる。
図1は、本発明の情報処理装置1のハードウェア構成例である。同図に示すように、情報処理装置1は、CPU101、メモリ102、ROM103、および、外部I/F104を含んで構成され、それぞれバス接続されている。ROM103はフラッシュメモリなどの不揮発性メモリである。ROM103は複数のメモリブロックからなり、そのメモリブロック単位で消去や書き込み等のアクセスが可能である。ROM103にはファームウェアが格納される。メモリ102は、例えば揮発性メモリであるが、バッテリーを付加して、電源断後でもメモリの内容を保持する構成としても良い。外部I/F104は、上位機器と接続するためのインタフェースであり、シリアルコントローラやLAN(Local Area Network)コントローラといった通信デバイスが接続される。このインタフェース経由でファームウェアを構成するプログラムのモジュールが上位機器よりダウンロードされ、更新処理が行われる。
図2は、情報処理装置1内のファームウェアの構成図である。ROM103に格納されるファームウェアは、基本部201と応用部202とに分けられている。基本部201は、ブートローダ203、オペレーティングシステム(OS)204、デバイスドライバ205、および、ファームウェアの更新プログラム206などを含んで構成される。応用部202は、装置としての機能を果たすための複数のロードモジュール(実行可能なプログラムモジュール)A208,B209,C210、及び、ロードモジュール管理情報207を含んで構成される。また、基本部201は、固定プログラムであってファームウェア更新対象外である。応用部202はファームウェア更新対象領域であり、ロードモジュール単位での更新、追加および削除が可能である。なお、ロードモジュール単位での更新、追加および削除を可能とするための前提として、ここでは、ROM103を構成する各々のメモリブロックに1つ以下のロードモジュールを格納する。すなわち、各々のメモリブロックには、2つ以上のロードモジュールが格納されないものとする。
図3には、ロードモジュールの更新、追加または削除時に記録・更新されるロードモジュール管理情報207の例を示す。同図に示すように、ロードモジュール管理情報207はロードモジュール共通管理情報301とロードモジュール個別情報であるロードモジュールA管理情報302、ロードモジュールB管理情報303、・・・、ロードモジュールn管理情報304から構成される。ロードモジュール共通管理情報301はロードモジュールの格納領域であるROM領域先頭アドレス301a、ROM領域全体サイズ301b、ロードモジュール動作時に利用されるRAM領域先頭アドレス301c、RAM領域全体サイズ301dから構成される。ロードモジュールn管理情報304は、ロードモジュール更新・追加・削除時に対象ロードモジュールを特定するためのロードモジュール識別番号304a、ロードモジュールを格納しているロードモジュール先頭アドレス304b、ロードモジュール使用ブロック数304c、ロードモジュールサイズ304d、ロードモジュール領域の各バイトデータの加算値を格納したロードモジュールチェックサム304e、システム初期化時にロードモジュールを起動する際のロードモジュール起動アドレス304f、ロードモジュールをRAMに展開する場合のロードモジュールロードアドレス304g、ロードモジュールの使用RAM領域のロードモジュールRAMアドレス304h、ロードモジュールRAMサイズ304i、ロードモジュールのバージョンが複数存在する際に使用するロードモジュール起動フラグ304j、ロードモジュールのROM/RAM実行を指定するロードモジュール実行領域指定304k、システム初期化時のロードモジュールの起動順序を決定するロードモジュール優先順位304l、ロードモジュール更新日付304m、ロードモジュールバージョン304nなどから構成される。本ロードモジュール管理情報207は、ロードモジュール更新、追加および削除時に参照・更新され、あるいはシステム初期化時に参照・更新される。
次に、情報処理装置1の機能構成について説明する。図4には情報処理装置1の機能構成を示す。CPU101が更新プログラム206を実行することにより、図4に示すモジュール追加部11とモジュール削除部12との機能が情報処理装置1に実現される。
モジュール追加部11は、ロードモジュールが全く格納されていない空きメモリブロックに新しいロードモジュールを書き込む。
モジュール追加部11は、ロードモジュールが全く格納されていない空きメモリブロックに新しいロードモジュールを書き込む。
モジュール削除部12は、メモリブロック単位でデータを削除する。具体的には、モジュール削除部12は、特定のプログラムモジュールの削除要求を受けた場合に、当該プログラムモジュールの少なくとも一部が格納されているメモリブロック(以下「使用メモリブロック」という)の内容全てを削除する。
また、基本部201の更新プログラム206には、起動対象のロードモジュールを切り替えるためのプログラムと、ロードモジュールの優先順位を指定するためのプログラムと、指定された優先順位に従ってロードモジュールを起動するためのプログラムとが格納されている。CPU101がこれらのプログラムを実行することにより、図4に示す起動モジュール切替部13と起動優先順位指定部14との機能が情報処理装置1に実現される。
また、基本部201の更新プログラム206には、起動対象のロードモジュールを切り替えるためのプログラムと、ロードモジュールの優先順位を指定するためのプログラムと、指定された優先順位に従ってロードモジュールを起動するためのプログラムとが格納されている。CPU101がこれらのプログラムを実行することにより、図4に示す起動モジュール切替部13と起動優先順位指定部14との機能が情報処理装置1に実現される。
起動モジュール切替部13は、予め設定されたロードモジュール起動フラグ304jや外部からの切替指示や障害等の検知によって、起動対象のロードモジュールを切り替える。例えば、起動モジュール切替部13は、モジュール追加部11によって格納された新ロードモジュールが正常でないことが検知され、かつ、旧プログラムモジュールがROM103に格納されている(バックアップされている)場合には、起動対象のプログラムモジュールを旧プログラムモジュールに切り替える。ここで、「新ロードモジュールが正常でない」状態には、新ロードモジュールが正常に起動・初期化されなかった状態や、新ロードモジュール実行中に異常が発生した状態等が含まれ、ユーザによって正常でない状態を定義することが可能である。また、起動モジュール切替部13は、複数バージョンのロードモジュールがROM103に保存されている場合は、最新のロードモジュールを起動対象とする。
起動優先順位指定部14は、外部からの指示入力等を受けて、ROM103に格納されているプログラムモジュールを起動する優先順位を指定する。
次に、情報処理装置1が行うロードモジュールの更新処理について説明する。更新処理の種別には“上書き指定”と“保存指定”とが存在する。これらの種別は、上位機器から取得されるダウンロード情報に含まれる更新種別で判断される。
次に、情報処理装置1が行うロードモジュールの更新処理について説明する。更新処理の種別には“上書き指定”と“保存指定”とが存在する。これらの種別は、上位機器から取得されるダウンロード情報に含まれる更新種別で判断される。
最初に、ロードモジュールの更新かつ上書き指定の場合について説明する。尚、ロードモジュールは複数のメモリブロックから構成されるフラッシュメモリなどの不揮発性メモリ(ROM103)に格納されており、同一のメモリブロック内には複数のロードモジュールは存在しないことを前提に説明する。図5にロードモジュール更新前後のメモリ構成を示す。図5(a)にはロードモジュール更新前のメモリ構成を示す。同図に示すように、メモリブロックには、ロードモジュールA208,B209,C210が格納されている。図5(a)の構成において、ロードモジュールA208を更新するものとする。ここで、新ロードモジュールをロードモジュールA’208aとし、ロードモジュールA’208aのモジュールサイズ(データ量)はロードモジュールA208の使用メモリブロック2つ分の領域内に収まるサイズとする。このとき、ロードモジュールA208更新後のメモリ構成は図3(b)に示すようになり、ロードモジュールA208と同じメモリブロック領域にロードモジュールA’208aが格納される。
この場合の情報処理装置1が行う処理としては、モジュール削除部12がロードモジュールA208を削除し、これにより空き領域となったメモリブロックに対して、モジュール追加部11がロードモジュールA’208aを書き込む。
また、更新後の新ロードモジュールが旧ロードモジュールサイズの使用メモリブロックより大きい場合のロードモジュールの更新について、図6に示す。新ロードモジュールをロードモジュールA’208bとする。ロードモジュールA’208bは、図6(a)のロードモジュールA208の使用メモリブロック2つ分には入りきらないため、図6(b)の更新後のメモリ構成に示すように、モジュール追加部11によってロードモジュールC210より下位の空きメモリブロック領域にロードモジュールA’208bが格納され、ロードモジュールA208の使用メモリブロックについてはモジュール削除部12によってそのメモリブロックの内容が削除され、空き領域となる。
また、更新後の新ロードモジュールが旧ロードモジュールサイズの使用メモリブロックより大きい場合のロードモジュールの更新について、図6に示す。新ロードモジュールをロードモジュールA’208bとする。ロードモジュールA’208bは、図6(a)のロードモジュールA208の使用メモリブロック2つ分には入りきらないため、図6(b)の更新後のメモリ構成に示すように、モジュール追加部11によってロードモジュールC210より下位の空きメモリブロック領域にロードモジュールA’208bが格納され、ロードモジュールA208の使用メモリブロックについてはモジュール削除部12によってそのメモリブロックの内容が削除され、空き領域となる。
前記ロードモジュールの更新処理(上書き指定)に関して、図7のフローチャートに従って説明する。まず、情報処理装置1はファームウェア更新開始指示を受けると、CPU101は基本部201のファームウェアの更新プログラム206を起動する(ステップS1)。これにより、情報処理装置1は、図4に示すモジュール追加部11及びモジュール削除部12として機能する。CPU101は、上位機器からのロードモジュールのダウンロード情報を取得する(ステップS2)。CPU101は、取得したダウンロード情報よりロードモジュールの更新種別を判定(ステップS3)し、更新種別が“更新”の場合は、上位機器から新バージョンのロードモジュールをダウンロードする(ステップS4)。次に、CPU101は、ロードモジュール識別情報を参照して、ROM103に格納されている更新対象のロードモジュールを検索する(ステップS5)。尚、更新種別が“更新”以外の“追加”または“削除”の場合については後述する。
次に、CPU101は更新対象のモジュールが存在しているか否かを判定(ステップS6)し、更新対象のロードモジュールが存在していた場合は、ロードモジュールのダウンロード情報に基づいて、当該更新対象のロードモジュール(更新時の旧ロードモジュール)の上書き/保存指定を判定する(ステップS7)。“上書き”の場合は、CPU101は、旧ロードモジュールが格納されている使用メモリブロックのサイズと新ロードモジュールサイズを比較する(ステップS8)。
尚、更新対象のロードモジュールが存在しなかった場合は、CPU101は、ロードモジュールの更新種別を“追加”と見なして処理を行う。またはエラーとして更新処理を中断しても良い。また、更新時の旧ロードモジュールの上書き/保存指定が“保存”の場合については後述する。
旧ロードモジュールが格納されている使用メモリブロックのサイズより新ロードモジュールサイズの方が等しいかまたは小さかった場合は(ステップS8;Yes)、モジュール削除部12は旧ロードモジュールが格納されている使用メモリブロックの内容を削除した後(ステップS9)、モジュール追加部11は同じメモリブロック領域に新ロードモジュールを書込む(ステップS10)。
旧ロードモジュールが格納されている使用メモリブロックのサイズより新ロードモジュールサイズの方が等しいかまたは小さかった場合は(ステップS8;Yes)、モジュール削除部12は旧ロードモジュールが格納されている使用メモリブロックの内容を削除した後(ステップS9)、モジュール追加部11は同じメモリブロック領域に新ロードモジュールを書込む(ステップS10)。
また、旧ロードモジュールが格納されている使用メモリブロックのサイズより新ロードモジュールサイズの方が大きかった場合は(ステップS8;No)、CPU101は新ロードモジュールサイズ以上のROM103の連続した空きメモリブロックを検索(ステップS11)し、空きメモリブロックが存在したか否かを判定する(ステップS12)。空きメモリブロックが存在しなかった場合は(ステップS12;No)、CPU101は、空きメモリを増やすための再構成処理を行う。またはエラーとして更新処理を中断しても良い。
一方、空きメモリが存在した場合は(ステップS12;Yes)、モジュール追加部11は空きメモリに新ロードモジュールを書き込んだ後(ステップS13)、モジュール削除部12は旧ロードモジュールが格納されている使用メモリブロックの内容を削除する(ステップS14)。ロードモジュールの更新(書込み)が終了したら、最後にCPU101はロードモジュールの管理情報を更新する(ステップS15)。
次に、ロードモジュールの更新かつ保存指定の場合について説明する。図8(a)にはロードモジュール更新前のメモリ構成を示す。同図に示すように、各々のメモリブロックにはロードモジュールA208,B209,C210が格納されている。図8(a)の構成において、ロードモジュールB209を更新するものとする。ここで、新ロードモジュールをロードモジュールB’209aとし、旧ロードモジュールB209を保存指定して更新する。ロードモジュールB209の内容は残したまま削除せず、図6(b)の更新後のメモリ構成に示すように、モジュール追加部11により、ロードモジュールC210より下位の空きメモリブロック領域にロードモジュールB’209aが格納される。
尚、複数バージョンのロードモジュールが保存されている場合は、起動モジュール切替部13は最新のロードモジュールを起動対象とする。さらに、起動モジュール切替部13に、上位機器からの、起動対象とするロードモジュールの切り替え指示のインタフェースを含めることにより、任意のバージョンのロードモジュールを起動対象とすることも可能である。
前記ロードモジュールの更新(保存指定)に関して、図9のフローチャートに従って説明する。 図9において、まず、情報処理装置1はファームウェア更新開始指示を受けると、基本部201の更新プログラム206を起動し(ステップS21)、上位機器からロードモジュールのダウンロード情報を取得する(ステップS22)。CPU101はダウンロード情報に基づいてロードモジュールの更新種別を判定(ステップS23)し、更新種別が“更新”の場合は、上位機器から新しいロードモジュールをダウンロードする(ステップS24)。次に、CPU101はロードモジュール識別情報を参照してROM103に格納されている更新対象のロードモジュールを検索する(ステップS25)。次に、CPU101は、更新対象のロードモジュールが存在しているか否かを判定(ステップS26)し、更新対象のロードモジュールが存在していた場合は(ステップS26;Yes)、更新対象のロードモジュール(更新時の旧ロードモジュール)の上書き/保存指定を判定する(ステップS27)。“保存”の場合は、CPU101は新ロードモジュールサイズ以上のROM103の連続した空きメモリブロックを検索(ステップS28)し、空きメモリが存在したか否かを判定する(ステップS29)。空きメモリが存在しなかった場合は(ステップS29;No)、CPU101は空きメモリを増やすための再構成処理を行う。またはエラーとして更新処理を中断しても良い。空きメモリが存在した場合は(ステップS29;Yes)、モジュール追加部11は空きメモリに新ロードモジュールを書き込む(ステップS30)。最後に、CPU101はロードモジュールの管理情報を更新する(ステップS31)。
ロードモジュールの追加については、ロードモジュールの更新かつ保存指定の場合の処理とほぼ同様なので説明を省略する。
またロードモジュールの削除については、モジュール削除部12が指定されたロードモジュールの領域を削除すると共に、ロードモジュール管理情報207を更新して、空き領域とする。
またロードモジュールの削除については、モジュール削除部12が指定されたロードモジュールの領域を削除すると共に、ロードモジュール管理情報207を更新して、空き領域とする。
前述したロードモジュールの更新・追加に関して、さらに、起動優先順位指定部14により、ロードモジュールの起動優先順位の指定を付加することにより、任意の順序でのロードモジュールの起動が可能となり、ロードモジュール間で起動順序の依存関係がある場合は、本指定を行うことで起動順序の制御が可能となる。また、起動優先順位指定部14により、起動優先順位に未起動とする指定も可能とすることにより、任意のカスタマイズされたシステム構成が可能となる。
また、起動優先順位指定部14に、上位機器からの起動優先順位の変更指示のインタフェースを含めることにより、ロードモジュール更新・追加後においてもロードモジュールの起動順序を変更することが可能となる。
続いて、ロードモジュール更新、追加、削除後の(再)起動処理について、図10のフローチャートに従って説明する。電源投入時やリセット直後は最初に基本部201のブートローダ203が起動される。CPU101はブート処理(ハードウェアの初期化)や基本部201の起動処理を行う(ステップS40)。次に、CPU101は、基本部201の初期化処理(OSの起動やデバイスドライバの初期化など)を行う(ステップS41)。基本部201の初期化終了後、CPU101はロードモジュール管理情報207内の起動優先順位に従い、応用部202のロードモジュールの起動リストを作成する(ステップS42)。次に、CPU101は、応用部202のn番目のロードモジュールの起動を行う前に、前回n番目のロードモジュールを起動・初期化した時にエラーが発生したかどうかの判定を行う(ステップS43)。エラーが発生していた(エラー情報が格納されていた)場合には、起動モジュール切替部13は、当該n番目のロードモジュールは起動せず、エラー情報(エラーロードモジュール識別情報)をクリアして、以降のn番目のロードモジュールの起動を中止する(ステップS52)。エラーが発生していない場合は、CPU101はn番目のロードモジュールの起動および初期化を行う(ステップS44,S45)。次に、CPU101は初期化時においてエラーが発生したか否かの判定を行い(ステップS46)、エラーであれば続いてバックアップロードモジュール(複数バージョンのロードモジュール、旧ロードモジュール)が存在するか否かを判定する(ステップS49)。バックアップロードモジュールが無い場合は(ステップS49;No)、CPU101は、エラー情報(エラーが発生したロードモジュールの識別番号)をROM103あるいはバッテリバックアップ付きメモリ領域(メモリ102)に保存して、以降のn番目のロードモジュールの起動を中止する(ステップS50)。バックアップロードモジュールが有る場合は(ステップS49;Yes)、起動モジュール切替部13は、次の再起動時のロードモジュールをバックアップ用のロードモジュールに変更して、以降のn番目のロードモジュールの起動を中止する(ステップS51)。n番目のロードモジュール初期化で正常終了した場合は、CPU101は、次に起動するロードモジュール番号nを更新する(ステップS47)。尚、ここで起動するロードモジュールの順番は、ロードモジュールの更新・追加時に起動優先順位指定部14により指定された順序に従う。以降はステップS43に戻り、ロードモジュール数分繰り返し処理を行う。応用部202のロードモジュール全ての初期化が正常終了した場合は、情報処理装置1が通常動作に入る。
続いて、ロードモジュール更新、追加、削除後の(再)起動処理について、図10のフローチャートに従って説明する。電源投入時やリセット直後は最初に基本部201のブートローダ203が起動される。CPU101はブート処理(ハードウェアの初期化)や基本部201の起動処理を行う(ステップS40)。次に、CPU101は、基本部201の初期化処理(OSの起動やデバイスドライバの初期化など)を行う(ステップS41)。基本部201の初期化終了後、CPU101はロードモジュール管理情報207内の起動優先順位に従い、応用部202のロードモジュールの起動リストを作成する(ステップS42)。次に、CPU101は、応用部202のn番目のロードモジュールの起動を行う前に、前回n番目のロードモジュールを起動・初期化した時にエラーが発生したかどうかの判定を行う(ステップS43)。エラーが発生していた(エラー情報が格納されていた)場合には、起動モジュール切替部13は、当該n番目のロードモジュールは起動せず、エラー情報(エラーロードモジュール識別情報)をクリアして、以降のn番目のロードモジュールの起動を中止する(ステップS52)。エラーが発生していない場合は、CPU101はn番目のロードモジュールの起動および初期化を行う(ステップS44,S45)。次に、CPU101は初期化時においてエラーが発生したか否かの判定を行い(ステップS46)、エラーであれば続いてバックアップロードモジュール(複数バージョンのロードモジュール、旧ロードモジュール)が存在するか否かを判定する(ステップS49)。バックアップロードモジュールが無い場合は(ステップS49;No)、CPU101は、エラー情報(エラーが発生したロードモジュールの識別番号)をROM103あるいはバッテリバックアップ付きメモリ領域(メモリ102)に保存して、以降のn番目のロードモジュールの起動を中止する(ステップS50)。バックアップロードモジュールが有る場合は(ステップS49;Yes)、起動モジュール切替部13は、次の再起動時のロードモジュールをバックアップ用のロードモジュールに変更して、以降のn番目のロードモジュールの起動を中止する(ステップS51)。n番目のロードモジュール初期化で正常終了した場合は、CPU101は、次に起動するロードモジュール番号nを更新する(ステップS47)。尚、ここで起動するロードモジュールの順番は、ロードモジュールの更新・追加時に起動優先順位指定部14により指定された順序に従う。以降はステップS43に戻り、ロードモジュール数分繰り返し処理を行う。応用部202のロードモジュール全ての初期化が正常終了した場合は、情報処理装置1が通常動作に入る。
なお、ステップS49において、旧バージョンのロードモジュールが保存されていない場合は、再起動時に新規ロードモジュールの起動前で起動を停止することにより、再度、モジュール追加部11により新バーションのロードモジュールの追加を可能としてもよい。
このように本発明によれば、静的リンクされた複数のロードモジュールを有するファームウェアについて、一部のロードモジュールの更新、追加、および削除を行う際に、エラーの発生を防ぎ保守性を高める方式を提供することができる。また、保存指定や上書き指定の種別に応じて更新処理を行うことができるため、ファームウェアの更新に関して柔軟性を持たせることが可能となる。また、ロードモジュール起動時には、ロードモジュールの起動優先順位の指定や、複数バージョンが保存されている場合にロードモジュール切替の指定が可能となり、より柔軟なロードモジュールの実行方法の提供が可能となる。
このように本発明によれば、静的リンクされた複数のロードモジュールを有するファームウェアについて、一部のロードモジュールの更新、追加、および削除を行う際に、エラーの発生を防ぎ保守性を高める方式を提供することができる。また、保存指定や上書き指定の種別に応じて更新処理を行うことができるため、ファームウェアの更新に関して柔軟性を持たせることが可能となる。また、ロードモジュール起動時には、ロードモジュールの起動優先順位の指定や、複数バージョンが保存されている場合にロードモジュール切替の指定が可能となり、より柔軟なロードモジュールの実行方法の提供が可能となる。
なお、上述した実施形態においてはファームウェアについて説明したが、ファームウェアに限定されることはなく、メモリブロック単位でアクセスされる記憶領域に格納されたあらゆるプログラムの更新処理について適用することができる。また、ロードモジュールは動的リンクを行うロードモジュールであってもよいし、ロードモジュールに限定されずに、インタプリタ型の言語の場合にはソースコードであってもよいし、Java(登録商標)言語の場合には、ロードモジュールとソースモジュールとの中間の形式であるバイトコードであってもよい。
また、上述した実施形態においては、更新かつ上書き指定、更新かつ保存指定、追加、および、削除に分けて説明したが、更新かつ上書き指定の場合に行われる処理は、モジュール追加部11による追加処理とモジュール削除部12による削除処理とを組み合わせたものであり、また、更新かつ保存指定の場合に行われる処理は、モジュール追加部11による追加処理である。このため、モジュール追加部11とモジュール削除部12との少なくとも一方の処理により更新処理を行うことができるため、更新処理の概念に追加処理と削除処理とを含めてもよい。
エラーの発生を防ぎ、障害に柔軟に対応することが可能な保守性の高いプログラムの更新処理に利用することができる。
1 情報処理装置
11 モジュール追加部
12 モジュール削除部
13 起動モジュール切替部
14 起動優先順位指定部
101 CPU
102 メモリ
103 ROM
104 外部I/F
201 基本部
202 応用部
203 ブートローダ
204 OS
205 デバイスドライバ
206 更新プログラム
207 ロードモジュール管理情報
11 モジュール追加部
12 モジュール削除部
13 起動モジュール切替部
14 起動優先順位指定部
101 CPU
102 メモリ
103 ROM
104 外部I/F
201 基本部
202 応用部
203 ブートローダ
204 OS
205 デバイスドライバ
206 更新プログラム
207 ロードモジュール管理情報
Claims (5)
- 複数のメモリブロックを有し、ファームウェアを構成する複数のプログラムモジュールが前記メモリブロックに格納され、プログラムモジュール単位での更新処理が可能な情報処理装置において、
1つのプログラムモジュールの少なくとも一部が格納されているメモリブロックの内容全てを削除するモジュール削除手段と、
プログラムモジュールが全く格納されていない空きメモリブロックにプログラムモジュールを書き込むモジュール追加手段と
を備え、
前記モジュール削除手段と前記モジュール追加手段との少なくとも一方を用いて、前記複数のメモリブロックの一部に格納されている1つのプログラムモジュールである旧プログラムモジュールを別の新プログラムモジュールに更新する更新処理を実行することを特徴とする情報処理装置。 - 前記更新処理は、
前記モジュール削除手段により前記旧プログラムモジュールを削除せずに、前記モジュール追加手段により前記新プログラムモジュールを前記空きメモリブロックに書き込む処理であることを特徴とする
請求項1に記載の情報処理装置。 - 前記更新処理は、
前記新プログラムモジュールのデータ量が、前記旧プログラムモジュールの少なくとも一部が格納されている1又は複数のメモリブロックに格納可能な合計データ量よりも大きい場合に、前記モジュール追加手段により前記空きメモリブロックに前記新プログラムモジュールを書き込み、かつ、前記モジュール削除手段により前記旧プログラムモジュールを削除する処理であることを特徴とする
請求項1又は2に記載の情報処理装置。 - 起動対象のプログラムモジュールを切り替える起動モジュール切替手段をさらに備え、
前記起動モジュール切替手段は、
前記モジュール追加手段により格納された新プログラムモジュールが正常でないことが検知され、かつ、前記旧プログラムモジュールが前記メモリに格納されている場合には、起動対象のプログラムモジュールを該旧プログラムモジュールに切り替えることを特徴とする
請求項1から3のいずれか1項に記載の情報処理装置。 - 前記メモリに格納されているプログラムモジュールを起動する優先順位を指定する起動優先順指定手段をさらに備え、
前記起動優先順位指定手段により指定された優先順位に従って、前記プログラムモジュールを起動することを特徴とする
請求項1から4のいずれか1項に記載の情報処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004138761A JP2005321967A (ja) | 2004-05-07 | 2004-05-07 | 情報処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004138761A JP2005321967A (ja) | 2004-05-07 | 2004-05-07 | 情報処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005321967A true JP2005321967A (ja) | 2005-11-17 |
Family
ID=35469219
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004138761A Pending JP2005321967A (ja) | 2004-05-07 | 2004-05-07 | 情報処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2005321967A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007183922A (ja) * | 2005-12-08 | 2007-07-19 | Canon Inc | 情報処理装置、及びアプリケーションインストール方法 |
US8239857B2 (en) | 2005-12-08 | 2012-08-07 | Canon Kabushiki Kaisha | Information processing apparatus and method of installing application program |
WO2022269793A1 (ja) * | 2021-06-23 | 2022-12-29 | 三菱電機株式会社 | 制御装置、及び、アドレス管理方法 |
-
2004
- 2004-05-07 JP JP2004138761A patent/JP2005321967A/ja active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007183922A (ja) * | 2005-12-08 | 2007-07-19 | Canon Inc | 情報処理装置、及びアプリケーションインストール方法 |
JP4669466B2 (ja) * | 2005-12-08 | 2011-04-13 | キヤノン株式会社 | 情報処理装置、アプリケーションインストール方法及びプログラム |
US8239857B2 (en) | 2005-12-08 | 2012-08-07 | Canon Kabushiki Kaisha | Information processing apparatus and method of installing application program |
WO2022269793A1 (ja) * | 2021-06-23 | 2022-12-29 | 三菱電機株式会社 | 制御装置、及び、アドレス管理方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5113700B2 (ja) | ファームウェア更新装置及び方法 | |
KR100739911B1 (ko) | 리모트 부트 방법, 기구 및 프로그램을 저장한 컴퓨터 판독 가능 기록 매체 | |
US7750676B2 (en) | Embedded system and control method therefor | |
US20090094450A1 (en) | Firmware image update and management | |
JP4810172B2 (ja) | 制御装置及びバージョンアップ方法並びにプログラム | |
CN102334100A (zh) | 程序更新设备、程序更新方法以及信息处理设备 | |
JP2001195241A (ja) | コンピュータ | |
JP2023009293A (ja) | 通信装置及び情報処理方法 | |
JPH10307726A (ja) | 起動エラー時におけるファームウェアリカバリ方式 | |
JP5683088B2 (ja) | 復旧システム、復旧方法及びバックアップ制御システム | |
JP2005321967A (ja) | 情報処理装置 | |
JP2007087269A (ja) | ソフトウェア更新システム、更新方法、及び、プログラム | |
CN111045709B (zh) | 固件升级方法和固件升级装置 | |
JP2001331379A (ja) | フラッシュメモリ更新プログラムの書き換え方法及び装置 | |
JPH10187454A (ja) | Bios書き換え方式 | |
JP2018077690A (ja) | アプリケーションの実行環境の違いに依る互換性を考慮したインストール、及びファームアップ方法 | |
JP2003122575A (ja) | 情報処理装置 | |
KR100775887B1 (ko) | 임베디드시스템에서 하드디스크를 이용한 운영체계 로딩 및업데이트 방법 | |
US20190227865A1 (en) | Information processing device and information processing method | |
JP2008217202A (ja) | ディスクアレイ装置及びファームウェア更新方法 | |
JP6023898B1 (ja) | 情報処理装置及び情報処理方法及び情報処理プログラム | |
JP7491765B2 (ja) | ファームウェア更新システムおよびファームウェア更新方法 | |
JP7411471B2 (ja) | 情報処理装置及び通信システム | |
WO2021153224A1 (ja) | 情報処理装置および情報処理方法 | |
JP2002044693A (ja) | 電子交換機の制御装置 |