(57)【要約】【課題】ファームウェアが不揮発性メモリから転送されて揮発性メモリ上で動作可能な組込み機器における起動時間の短縮要求を満たすファームウェア起動管理装置および方法を提供する。【解決手段】組込み機器のＲＯＭに格納されるファームウェアは、ブートストラップ10、ロードモジュール管理部11、ＯＳ12、デバイスドライバ13、ミドルウェア14、アプリケーション15から構成される。さらに、ロードモジュール管理部11はローダプログラム110、起動ロードモジュールリスト管理表1100、および複数の起動ロードモジュールリスト1101〜110nから構成される。ＯＳ12はロードモジュールＡ(201)、デバイスドライバ13は複数のロードモジュールＢ(202)〜Ｄ(204)、ミドルウェア14は複数のロードモジュールＥ(205)〜Ｇ(207)、アプリケーション15は複数のロードモジュールＨ(208)〜Ｋ(211)から構成される。【選択図】図１
2012164106.tif 000002
【特許請求の範囲】
【請求項１】
起動時にファームウェアを不揮発性メモリから揮発性メモリに転送して動作する組込み機器のファームウェア起動管理装置において、
前記不揮発性メモリに前記ファームウェアを複数のロードモジュール群に分割して格納する格納手段と、
起動時に前記不揮発性メモリに格納されたロードモジュール群の一つを選択し、該選択したロードモジュール群から予め順序付けしておいた必要なロードモジュールを前記揮発性メモリに順番にロードするロード手段と、
前記揮発性メモリへの前記ロードが終了した時点で前記ロードされたロードモジュールの起動を行う起動手段と、
を備えることを特徴とする組込み機器のファームウェア起動管理装置。
【請求項２】
前記ロード手段は、ロードタイミングに関する情報を参照して当該ロードモジュールをロードすることを特徴とする請求項１に記載の組込み機器のファームウェア起動管理装置。
【請求項３】
起動時にファームウェアを不揮発性メモリから揮発性メモリに転送して動作する組込み機器のファームウェア起動管理装置において、
前記不揮発性メモリに前記ファームウェアを複数のロードモジュール群に分割すると共にリスト化して格納する格納手段と、
起動時に前記不揮発性メモリに分割して前記リスト化され格納されたロードモジュール群の一つを選択し、該選択した前記リスト化されたロードモジュール群から予め順序付けしておいた必要なロードモジュールを前記揮発性メモリに順番にロードする第１のロード手段と、
前記揮発性メモリへの前記ロードが終了した時点で前記ロードされたロードモジュールの起動を行う第１の起動手段と、
該起動後に、前記不揮発性メモリにリスト化され格納されたロードモジュール群の次のロードモジュール群を選択し、該選択した前記ロードモジュール群から予め順序付けしておいた必要なロードモジュールを前記揮発性メモリに順番にロードする第２のロード手段と、
前記揮発性メモリへの前記ロードが終了した時点で前記ロードされたロードモジュールの起動を行う第２の起動手段と、
を少なくとも備えることを特徴とする組込み機器のファームウェア起動管理装置。
【請求項４】
前記第１および第２のロード手段は、ロードタイミングに関する情報を参照して当該ロードモジュールをロードすることを特徴とする請求項３に記載の組込み機器のファームウェア起動管理装置。
【請求項５】
起動時にファームウェアを不揮発性メモリから揮発性メモリに転送して動作する組込み機器のファームウェア起動管理装置において、
前記不揮発性メモリに前記ファームウェアを構成する複数のロードモジュールをリスト化して格納する格納手段と、
該格納された前記複数のロードモジュールを一覧表示し該一覧表示からシステム起動時間が予測内に納まる複数のロードモジュールを選択するロードモジュール選択手段と、
起動時に前記ロードモジュール選択手段が選択した複数のロードモジュールを前記揮発性メモリに順番にロードするロード手段と、
前記揮発性メモリへの前記ロードが終了した時点で前記ロード手段によりロードされたロードモジュールの起動を行う起動手段と、
を備えることを特徴とする組込み機器のファームウェア起動管理装置。
【請求項６】
前記ロード手段は、ロードタイミングに関する情報を参照して当該ロードモジュールをロードすることを特徴とする請求項５に記載の組込み機器のファームウェア起動管理装置。
【請求項７】
起動時にファームウェアを不揮発性メモリから揮発性メモリに転送して動作する組込み機器のファームウェア起動管理方法において、
前記不揮発性メモリに前記ファームウェアを複数のロードモジュール群に分割して格納する過程と、
起動時に前記不揮発性メモリに格納されたロードモジュール群の一つを選択し、該選択したロードモジュール群から予め順序付けしておいた必要なロードモジュールを前記揮発性メモリに順番にロードする過程と、
前記揮発性メモリへの前記ロードが終了した時点で前記ロードされたロードモジュールの起動を行う過程と、
を含むことを特徴とする組込み機器のファームウェア起動管理方法。
【請求項８】
起動時にファームウェアを不揮発性メモリから揮発性メモリに転送して動作する組込み機器のファームウェア起動管理方法において、
前記不揮発性メモリに前記ファームウェアを複数のロードモジュール群に分割すると共にリスト化して格納する過程と、
起動時に前記不揮発性メモリに分割して前記リスト化され格納されたロードモジュール群の一つを選択し、該選択した前記リスト化されたロードモジュール群から予め順序付けしておいた必要なロードモジュールを前記揮発性メモリに順番にロードする第１のロード過程と、
前記揮発性メモリへの前記ロードが終了した時点で前記ロードされたロードモジュールの起動を行う第１の起動過程と、
該起動後に、前記不揮発性メモリにリスト化され格納されたロードモジュール群の次のロードモジュール群を選択し、該選択した前記ロードモジュール群から予め順序付けしておいた必要なロードモジュールを前記揮発性メモリに順番にロードする第２のロード過程と、
前記揮発性メモリへの前記ロードが終了した時点で前記ロードされたロードモジュールの起動を行う第２の起動過程と、
を少なくとも含むことを特徴とする組込み機器のファームウェア起動管理方法。
【請求項９】
起動時にファームウェアを不揮発性メモリから揮発性メモリに転送して動作する組込み機器のファームウェア起動管理方法において、
前記不揮発性メモリに前記ファームウェアを構成する複数のロードモジュールをリスト化して格納する過程と、
該格納された前記複数のロードモジュールを一覧表示し該一覧表示からシステム起動時間が予測内に納まる複数のロードモジュールを選択する過程と、
起動時に前記システム起動時間が予測内に納まる複数の選択したロードモジュールを前記揮発性メモリに順番にロードする過程と、前記揮発性メモリへの前記ロードが終了した時点で前記ロードされたロードモジュールの起動を行う過程と、
を含むことを特徴とする組込み機器のファームウェア起動管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファームウェアが揮発性メモリ上で動作可能な組込み機器におけるファームウェア起動管理装置および方法に関する。
【背景技術】
【０００２】
最近の組込み機器は、高速動作や再配置可能なプログラムを動作させるために、不揮発性メモリに格納されている実行イメージのロードモジュール（ファームウェア）を揮発性メモリに転送して、揮発性メモリ上でプログラムを実行する製品が多くなってきている。
【０００３】
そして組込み機器の高機能化・高性能化に伴い、ファームウェアの規模も大きくなってきており、電源投入時やリセット後の起動時における不揮発性メモリから揮発性メモリへの転送時間（ロード時間）が長くなり、システム全体の起動時間に影響が出るという問題がある。
【０００４】
組込み機器のシステム構成によってはシステム起動時間が問題となることがあり、例えば、電源投入後から数秒以内に相手機器との通信が必要である場合、起動時間が長くなると起動直後の通信に失敗し、異常とみなされる場合がある。この場合、全てのファームウェアのロードが終了してから起動するのではなく、起動直後に必要な機能のみを優先的にロード・起動し、動作可能にすることで問題を解決することができる。
【０００５】
この問題を解決する公知技術として、下記特許文献１に開示された次のような技術が知られている。すなわち、サスペンド・レジューム（Suspend Resume）機能を有するオペレーティングシステム（Operating System）を搭載する機器において、終了処理時にＣＰＵ（Central Processing Unit）、複数のデバイスおよび、ランダムアクセスメモリ（Random Access Memory：ＲＡＭ）の動作状態を、あらかじめ決められた状態に変更した後で不揮発性メモリに保存し、再動作時に不揮発性メモリから動作状態を復元することで、起動時間の短縮を図ろうとするものである。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００６−２７７４７２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記のような従来の方法は、以下のような問題が生じていた。すなわち、特許文献１に示された従来技術は、再起動時に前回終了時において不揮発性メモリに保存した動作状態を復元する方式なので、初期状態から起動する場合では、全ての機能の起動処理を行うことになるため、状態によって起動時間が一定にならず、起動時間が長くなる場合が発生していた。従って、特許文献１に示された従来技術を用いた場合には、組込み機器のファームウェア起動処理の時間が一定にならず、状態によって起動処理に長時間を要してしまうという問題を有していた。
【０００８】
そこで、本発明は、ファームウェアが不揮発性メモリから転送されて揮発性メモリ上で動作可能な組込み機器における起動時間の短縮要求を満たすファームウェア起動管理装置および方法を提供することを目的とするものである。
【課題を解決するための手段】
【０００９】
上述した課題を解決するために本発明は、起動時にファームウェアを不揮発性メモリから揮発性メモリに転送して動作する組込み機器のファームウェア起動管理装置において、前記不揮発性メモリに前記ファームウェアを複数のロードモジュール群に分割して格納する格納手段と、起動時に前記不揮発性メモリに格納されたロードモジュール群の一つを選択し、該選択したロードモジュール群から予め順序付けしておいた必要なロードモジュールを前記揮発性メモリに順番にロードするロード手段と、前記揮発性メモリへの前記ロードが終了した時点で前記ロードされたロードモジュールの起動を行う起動手段と、を備えることを特徴とする。上記ロード手段は、ロードタイミングに関する情報を参照して当該ロードモジュールをロードすることを特徴とする。
【００１０】
また本発明は、起動時にファームウェアを不揮発性メモリから揮発性メモリに転送して動作する組込み機器のファームウェア起動管理装置において、前記不揮発性メモリに前記ファームウェアを複数のロードモジュール群に分割すると共にリスト化して格納する格納手段と、起動時に前記不揮発性メモリに分割して前記リスト化され格納されたロードモジュール群の一つを選択し、該選択した前記リスト化されたロードモジュール群から予め順序付けしておいた必要なロードモジュールを前記揮発性メモリに順番にロードする第１のロード手段と、前記揮発性メモリへの前記ロードが終了した時点で前記ロードされたロードモジュールの起動を行う第１の起動手段と、該起動後に、前記不揮発性メモリにリスト化され格納されたロードモジュール群の次のロードモジュール群を選択し、該選択した前記ロードモジュール群から予め順序付けしておいた必要なロードモジュールを前記揮発性メモリに順番にロードする第２のロード手段と、前記揮発性メモリへの前記ロードが終了した時点で前記ロードされたロードモジュールの起動を行う第２の起動手段と、を少なくとも備えることを特徴とする。上記第１および第２のロード手段は、ロードタイミングに関する情報を参照して当該ロードモジュールをロードすることを特徴とする。
【００１１】
また本発明は、起動時にファームウェアを不揮発性メモリから揮発性メモリに転送して動作する組込み機器のファームウェア起動管理装置において、前記不揮発性メモリに前記ファームウェアを構成する複数のロードモジュールをリスト化して格納する格納手段と、該格納された前記複数のロードモジュールを一覧表示し該一覧表示からシステム起動時間が予測内に納まる複数のロードモジュールを選択するロードモジュール選択手段と、起動時に前記ロードモジュール選択手段が選択した複数のロードモジュールを前記揮発性メモリに順番にロードするロード手段と、前記揮発性メモリへの前記ロードが終了した時点で前記ロード手段によりロードされたロードモジュールの起動を行う起動手段と、を備えることを特徴とする。上記ロード手段は、ロードタイミングに関する情報を参照して当該ロードモジュールをロードすることを特徴とする。
【００１２】
さらに本発明は、起動時にファームウェアを不揮発性メモリから揮発性メモリに転送して動作する組込み機器のファームウェア起動管理方法において、前記不揮発性メモリに前記ファームウェアを複数のロードモジュール群に分割して格納する過程と、起動時に前記不揮発性メモリに格納されたロードモジュール群の一つを選択し、該選択したロードモジュール群から予め順序付けしておいた必要なロードモジュールを前記揮発性メモリに順番にロードする過程と、前記揮発性メモリへの前記ロードが終了した時点で前記ロードされたロードモジュールの起動を行う過程と、を含むことを特徴とする。
【００１３】
また本発明は、起動時にファームウェアを不揮発性メモリから揮発性メモリに転送して動作する組込み機器のファームウェア起動管理方法において、前記不揮発性メモリに前記ファームウェアを複数のロードモジュール群に分割すると共にリスト化して格納する過程と、起動時に前記不揮発性メモリに分割して前記リスト化され格納されたロードモジュール群の一つを選択し、該選択した前記リスト化されたロードモジュール群から予め順序付けしておいた必要なロードモジュールを前記揮発性メモリに順番にロードする第１のロード過程と、前記揮発性メモリへの前記ロードが終了した時点で前記ロードされたロードモジュールの起動を行う第１の起動過程と、該起動後に、前記不揮発性メモリにリスト化され格納されたロードモジュール群の次のロードモジュール群を選択し、該選択した前記ロードモジュール群から予め順序付けしておいた必要なロードモジュールを前記揮発性メモリに順番にロードする第２のロード過程と、前記揮発性メモリへの前記ロードが終了した時点で前記ロードされたロードモジュールの起動を行う第２の起動過程と、を少なくとも含むことを特徴とする。
【００１４】
また本発明は、起動時にファームウェアを不揮発性メモリから揮発性メモリに転送して動作する組込み機器のファームウェア起動管理方法において、前記不揮発性メモリに前記ファームウェアを構成する複数のロードモジュールをリスト化して格納する過程と、該格納された前記複数のロードモジュールを一覧表示し該一覧表示からシステム起動時間が予測内に納まる複数のロードモジュールを選択する過程と、起動時に前記システム起動時間が予測内に納まる複数の選択したロードモジュールを前記揮発性メモリに順番にロードする過程と、前記揮発性メモリへの前記ロードが終了した時点で前記ロードされたロードモジュールの起動を行う過程と、を含むことを特徴とする。
【発明の効果】
【００１５】
本発明によれば、起動時にファームウェアを不揮発性メモリから揮発性メモリに転送して動作する組込み機器のファームウェア起動管理において、ファームウェアを複数のロードモジュール群に分割し、システム起動時にロードモジュール群の一つを選択して、選択したロードモジュール群から予め順序付けしておいた必要なロードモジュールを揮発性メモリに順番にロードしたうえで起動処理を行うことで、起動時間の短縮が実現でき、システムの起動時間の要求を満たすことが可能となる。
【００１６】
また本発明によれば、起動ロードモジュールリスト群を複数備えることにより、システムの要求に応じて起動ロードモジュールリスト群の中から一つを選択すると共にロードタイミングに関する情報を参照して当該ロードモジュールをロードすることで、柔軟に起動タイミングの制御を行うことが可能となる。
【００１７】
さらに本発明によれば、システム起動時にロードモジュール一覧の中から必要なロードモジュール群を選択し、対象とするロードモジュール群の起動時間の予測を行うことで、要求される起動時間を満たすロードモジュールのカスタマイズを行うことができる。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施形態に係る組込み機器内のファームウェア構成の一例を示す図である。
【図２】図１に示す本発明の実施形態に係るファームウェアが組込まれた組込み機器のハードウェア構成を示す図である。
【図３】本発明の実施形態に係る起動ロードモジュールリスト管理表の構造を示す図である。
【図４】本発明の実施形態に係る起動ロードモジュールリストの構造を示す図である。
【図５】図４に示された起動ロードモジュールリストにおけるロードモジュール識別情報の構造例を示す図である。
【図６】図１に示す本発明の実施形態に係るファームウェアのロードモジュール管理部における起動ロードモジュールリストの定義例を示す図である。
【図７】本発明の実施形態に係る組込み機器内のファームウェアを構成するロードモジュール一覧のテーブル構成を示す図である。
【図８】図７のロードモジュール一覧より、リセット時に最初にロード・起動するロードモジュールを選択した場合の起動ロードモジュール一覧および起動時間の予測表を示す図である。
【図９】図８に示した起動ロードモジュール一覧に対する起動時間予測の具体例を示す図である。
【図１０Ａ】本発明の実施形態に係るファームウェア起動管理装置の動作を説明するフロー図である。
【図１０Ｂ】本発明の実施形態に係るファームウェア起動管理装置の動作を説明するフロー図である。
【発明を実施するための形態】
【００１９】
以下、本発明の実施の形態について、詳細に説明する。
図１は、本発明の実施形態に係る組込み機器内のファームウェア構成の一例を示す図である。本発明の実施形態に係るファームウェア（Firmware）は例えば図２に示される組込み機器のハードウェア構成の一部を成すＲＯＭ（Read Only Memory）２３に格納されるものであり、ＲＯＭ２３に格納されるファームウェアは、ブートストラップ１０、ロードモジュール管理部１１、オペレーティングシステム（ＯＳ）１２、デバイスドライバ１３、ミドルウェア１４、アプリケーション１５などから構成される。さらに、ロードモジュール管理部１１はローダプログラム110、起動ロードモジュールリスト管理表1100、および複数の起動ロードモジュールリスト1101〜110nから構成される。オペレーティングシステム（ＯＳ）１２はロードモジュールＡ(201)、デバイスドライバ１３は複数のロードモジュールＢ(202)〜Ｄ(204)、ミドルウェア１４は複数のロードモジュールＥ(205)〜Ｇ(207)、アプリケーション１５は複数のロードモジュールＨ(208)〜Ｋ(211)などから構成される。
【００２０】
なお、図１に示すファームウェアの構成の中で、ブートストラップ１０およびロードモジュール管理部１１は電源投入時やリセットスタート時に最初に動作するプログラムである。またロードモジュールとは、当該技術分野の当業者によく知られているように、メモリ、例えば上記したＲＯＭ２３、にロードできる実行ファイル形式のモジュールを指し、プログラムがモジュールの集まりで構成されている場合、リンカー(linker:コンパイラによって変換されたオブジェクトコードに、必要なライブラリなどを付け加えて実行可能ファイルを生成するプログラム)によって結合されることで、ひとつのロードモジュールとして扱われる。さらにミドルウェアは、ソフトウェアの分類のうち、オペレーティングシステム（ＯＳ）とアプリケーションの中間的な処理・動作を行うソフトウェアのことで、ミドルウェアはＯＳ上で動作し、専門的な処理ではあるが共通して使用する機会の多い処理や機能を提供する。そしてその用途は特定の専門分野において頻繁に利用するような機能が、ミドルウェアとして提供されることが多い。ミドルウェアに中間的処理を行わせることによって、ＯＳは普遍的な機能のみを、個々のアプリケーションはそれぞれの目的ごとの機能のみを搭載していればよく、システムの開発や導入を効率化させるために多用されている。
【００２１】
図２は、図１に示す本発明の実施形態に係るファームウェアが組込まれた組込み機器のハードウェア構成を示す図である。図２において組込み機器は、ＣＰＵ（Central Processing Unit）２１、ＲＡＭ（Random Access Memory）２２、ＲＯＭ（Read Only Memory）２３、外部Ｉ／Ｆ（Interface）２４から構成され、それぞれがバス（Bus）２５で接続されている。ここでＲＡＭ２２は揮発性メモリで構成され、ＲＯＭ２３は書き換え可能な不揮発性メモリで構成され、このＲＯＭ２３に図１に示すようなファームウェア（Firmware）が格納されている。外部Ｉ／Ｆ２４は外部機器(図示せず)と接続するためのインタフェースで、例えばシリアルコントローラやＬＡＮ（Local Area Network）コントローラといった通信デバイス(図示せず)が接続される。また、外部Ｉ／Ｆ２４はＣＦ（Compact Flash Memory）カードやＵＳＢ（Universal Serial Bus）メモリといったストレージデバイス(図示せず)が接続されるようにしても良い。
【００２２】
図３は、図１に示す本発明の実施形態に係るファームウェアのロードモジュール管理部１１に設けられた起動ロードモジュールリスト管理表の構造を示す図である。図１に示すように起動ロードモジュールリスト管理表1100は、図３において起動モジュールリスト数３１と起動モジュールリスト（１〜ｎ）のアドレス３２から構成される。
【００２３】
図４は、図１に示す本発明の実施形態に係るファームウェアのロードモジュール管理部１１に設けられたシステム起動時に起動する起動ロードモジュールリストの構造を示す図である。図４において起動ロードモジュールリストは、ロードタイミング（リセット時／要求時）４１、ロードモジュール数（Ｍ）４２、ロードモジュール識別情報（１〜ｍ）４３から構成される。
【００２４】
さらに、図５は、図４に示された起動ロードモジュールリストにおけるロードモジュール識別情報の構造例を示す図である。図５においてロードモジュール識別情報４３１は、ロードモジュールの配置情報（固定アドレス／ファイル）４３１ａ、ロードモジュールの配置情報がファイルの場合のファイル名４３１ｂ、ロードモジュールの配置情報が固定アドレスの場合における格納先メモリの先頭アドレス４３１ｃ、ロード先メモリの先頭アドレス４３１ｄ、ロードモジュールのサイズ４３１ｅから構成される。尚、ロード先(転送先)メモリの先頭アドレス４３１ｄ、ロードモジュールのサイズ４３１ｅ等はロードモジュール内のヘッダ情報に含まれる構成としても良い。
【００２５】
次に、図１に示した本発明の実施形態に係るファームウェア構成を有する組込み機器のファームウェア起動管理方法について、図３に示した起動ロードモジュールリスト管理表、図４に示した起動ロードモジュールリスト、および図５に示したロードモジュール識別情報、を参照しながら図１０Ａおよび図１０Ｂのフローチャートを用いて詳細にその動作を説明する。
【００２６】
図１０Ａのファームウェア起動処理フローにおいてまず初めに、組込み機器の電源投入時やリセットスタート時にハードウェアの初期化や自己診断処理等を行う、ブートストラップ処理が開始される（ステップＳ１０）。尚、ステップＳ１１以降はロードモジュール管理部１１のローダプログラム110により実行される処理であり、実際には、複数のロードモジュールＡ(201)〜Ｋ(211)に分割されたファームウェアのロードと起動処理が行われる。すなわちロードモジュール管理部１１のローダプログラム110では、まず、起動ロードモジュールリスト管理表1100(図３参照)より登録されている起動ロードモジュールリスト数Ｎを読み出し、これを処理ループ数の最大値ｉｍａｘとする（ステップＳ１１）。次に、起動ロードモジュールリスト管理表1100より起動ロードモジュールリスト１のアドレス３２を読出し、起動ロードモジュールリスト読出しポインタｐに設定する（ステップＳ１２）。そして、ループカウンタｉを0に初期化する（ステップＳ１３）。さらに、起動ロードモジュールリスト読出しポインタｐよりロードタイミング４１(図４参照)を読出す（ステップＳ１４）。ロードタイミング４１がリセット時の場合（ステップＳ１５−Ｙ）は、ロードモジュールのローディング処理を行う。ロードタイミング４１がリセット時でない場合（ステップＳ１５−Ｎ）は、図１０Ｂに示すステップＳ３１にジャンプする。ここで、リセット時とは電源投入時およびリセットスタート時を意味し、リセット時でない場合とは、システムによる要求時（すなわち後述するように、既に起動されているロードモジュールよりロードモジュール管理部１１に対してロード要求が行われた時）を意味する。ロードタイミング４１がリセット時の場合（ステップＳ１５−Ｙ）のロードモジュールのローディング処理は、まず、図４に示した起動ロードモジュールリストより登録されているロードモジュール数Ｍ(４２)を読出し、これを処理ループ数の最大値ｊｍａｘとする（ステップＳ１６）。
【００２７】
次に起動ロードモジュールリスト読出しポインタｐよりロードモジュール識別情報１が格納されているメモリの先頭アドレスを取得し、ロードモジュール識別情報読出しポインタｐ２に設定する（ステップＳ１７）。そして、ループカウンタｊを0に初期化する（ステップＳ１８）。次いで、ロードモジュール識別情報読出しポインタｐ２よりロードモジュールの配置情報４３１ａ(図５参照)を読出す（ステップＳ１９）。配置情報４３１ａが固定アドレスの場合（ステップＳ２０−Ｙ）には、格納先メモリ先頭アドレス４３１ｃ(図５参照)を転送元メモリ先頭アドレスにセットする（ステップＳ２１）。配置情報４３１ａがファイルの場合（ステップＳ２０−Ｎ）には、ファイルからデータを読出し（ステップＳ２２）、読出したデータが格納されている先頭アドレスを転送元メモリ先頭アドレスにセットする（ステップＳ２３）。次に、ロードモジュール識別情報読出しポインタｐ２のロード先メモリ先頭アドレス４３１ｄ(図５参照)を転送先メモリ先頭アドレスにセットする（ステップＳ２４）。次いで、ロードモジュールサイズ４３１ｅ(図５参照)をロードモジュール識別情報読出しポインタｐ２より読出し（ステップＳ２５）、転送元から転送先へロードモジュールサイズ分のデータを転送（コピー）する（ステップＳ２６）。次に、プログラムカウンタを転送先の先頭アドレスに設定し、ロードモジュールを起動する（ステップＳ２７）。そして図１０Ｂに移ってループカウンタｊを更新（＋１）して（ステップＳ２８）、ｊ≧ｊｍａｘの条件が成立してループが終了したかどうか（当該起動モジュールリスト内の全てのロードモジュールの転送、起動処理が終了したか）を判定する（ステップＳ２９）。
【００２８】
判定の結果、終了していない場合（ステップＳ２９−Ｎ）は、ロードモジュール識別情報読出しポインタｐ２を次のロードモジュール識別情報が格納されているメモリの先頭アドレスに設定し（ステップＳ３０）、ステップＳ１９に戻る。
【００２９】
判定の結果、終了した場合（ステップＳ２９−Ｙ）は、ループカウンタｉを更新（＋１）し（ステップＳ３２）、ｉ≧ｉｍａｘの条件が成立してループが終了したかどうか（起動モジュールリスト管理表1100内の全ての起動モジュールリストの処理が終了したかどうか）を判定する（ステップＳ３２）。この判定が終了していない場合（ステップＳ３２−Ｎ）は、起動ロードモジュールリスト管理表1100より次の起動ロードモジュールリストのアドレスを読出し、起動ロードモジュールリスト読出しポインタpに設定し（ステップＳ３３）、図１０Ａに示すステップＳ１４に戻る。ステップＳ３２の判定が終了した場合（ステップＳ３２−Ｙ）は、図１０Ａ及び図１０Ｂに示したファームウェア起動処理を終了する。
【００３０】
図６は、図１に示す本発明の実施形態に係るファームウェアのロードモジュール管理部における起動ロードモジュールリストの定義例を示す図である。図６に示した起動ロードモジュールリスト定義例に基づき、ファームウェアのローディング処理動作について説明する。図６において、起動ロードモジュールリスト管理表1100の登録リスト数を仮に３とし、順に起動ロードモジュールリスト１(1101)、起動ロードモジュールリスト２(1102)、起動ロードモジュールリスト３(1103)が登録されているものとする。電源投入時またはリセットスタート時にまず、起動ロードモジュールリスト１(1101)に登録されているロードモジュールがロード・起動され、登録順にロードモジュールＡのＯＳ→ロードモジュールＢのデバイスドライバ→ロードモジュールＥのミドルウェア→ロードモジュールＨのアプリケーションの処理が実行される。この時点でロードモジュールＨのアプリケーションが動作可能となり、他のロードモジュールのロード・起動を待たずに優先的に動作させることができる。
【００３１】
次に起動ロードモジュールリスト２(1102)に登録されているロードモジュールがロード・起動され、登録順にロードモジュールＣのデバイスドライバ→ロードモジュールＤのデバイスドライバ→ロードモジュールＦのミドルウェア→ロードモジュールＧのミドルウェアの処理が実行される。
【００３２】
次に起動ロードモジュールリスト３(1103)についてはロードタイミングが要求時のため、電源投入時またはリセットスタート時ではロード・起動処理は実行されない。起動ロードモジュールリスト３(1103)に登録されているロードモジュールに関しては、既に起動されているロードモジュールよりロードモジュール管理部１１に対してロード要求を行うことにより、任意のタイミングでロードができる。
【００３３】
以下では、上述した本発明の実施形態を変形した本発明の実施形態について説明する。
図７は、本発明の実施形態に係る組込み機器内のファームウェアを構成するロードモジュール一覧のテーブル構成を示す図である。
【００３４】
図８は、図７のロードモジュール一覧より、リセット時に最初にロード・起動するロードモジュールを選択した場合の起動ロードモジュール一覧(図８の上半)および起動時間の予測表(図８の下半)を示す図である。図８の上半の表に示すように、選択したロードモジュール毎にロードモジュールサイズ（単位ＫＢ(キロバイト)）と起動時の初期化時間（単位ｍｓ(ミリ秒)）を設定する。このとき、ロードモジュールサイズの合計を（３）とし、また初期化時間の合計を(４)とする。また、図８の下半の表に示すように、ブートストラップ処理の固定時間（ｍｓ(ミリ秒)）（これを（１）とする）とロードモジュールを転送する際のメモリ転送レート（ＫＢ(キロバイト)／単位ｍｓ(ミリ秒)）（これを（２）とする）を設定することで、起動時間の予測を次のような計算式によって求めることが可能となる。すなわち、具体的に設定した値を図２に示したＲＡＭ２２に、また計算を実行するプログラムをＲＯＭ２３に格納しておき、そのうえでＣＰＵ２１に備わる演算機能を用いて、次の計算式、すなわち起動時間＝［(１)+(３)÷(２)+(４)］により、予測する起動時間（単位ｍｓ(ミリ秒)）の算出が可能となる。
【００３５】
図９は、図８に示した起動ロードモジュール一覧に対する起動時間予測の具体例を示す図である。図８に示したようにロードモジュールを選択して上述の計算式に基づいて具体的に予測する起動時間を算出した場合、例えば、起動時間の要求が400ms以内であった時は、図９に示すロードモジュールの選択の場合では起動時間の要求を満たすことになるが、起動時間の要求が350ms以内であった時は起動時間の要求を満たさないことが判別でき、起動ロードモジュールの選択実行にあたり、事前に起動ロードモジュールの構成（起動ロードモジュール一覧）を見直すなどの対策を講じることが可能となる。
【符号の説明】
【００３６】
１０  ブートストラップ
１１  ロードモジュール管理部
１２  オペレーティングシステム(ＯＳ)
１３  デバイスドライバ
１４  ミドルウェア
１５  アプリケーション
２１  ＣＰＵ
２２  ＲＡＭ
２３  ＲＯＭ
２４  外部Ｉ／Ｆ
２５  バス
３１  起動ロードモジュールリスト数(Ｎ)
３２  起動ロードモジュールリスト（１〜ｎ）のアドレス
４１  ロードタイミング(リセット時／要求時)
４２  ロードモジュール数(Ｍ)
４３  ロードモジュール識別情報（１〜ｍ）
４３１  ロードモジュール識別情報
１１００  起動ロードモジュールリスト管理表
１１０１  起動ロードモジュールリスト１
１１０２  起動ロードモジュールリスト２
１１０３  起動ロードモジュールリスト３
４３１ａ  配置情報（固定アドレス／ファイル）
４３１ｂ  ファイル名
４３１ｃ  格納先メモリ先頭アドレス
４３１ｄ  ロード先メモリ先頭アドレス
４３１ｅ  ロードモジュールサイズ
【図１】
2012164106.tif 000003
【図２】
2012164106.tif 000004
【図３】
2012164106.tif 000005
【図４】
2012164106.tif 000006
【図５】
2012164106.tif 000007
【図６】
2012164106.tif 000008
【図７】
2012164106.tif 000009
【図８】
2012164106.tif 000010
【図９】
2012164106.tif 000011
【図１０Ａ】
2012164106.tif 000012
【図１０Ｂ】
2012164106.tif 000013