(57)【特許請求の範囲】
【請求項１】
ＣＰＵとそのファームウェアが組み込まれた装置のファームウェア更新方法であって、
前記装置に接続されたホストマシンから新しいファームウェアをアップロードし、
前記装置が受信した新しいファームウェアからカーネル、ルートファイルシステムおよびユーティリティのサイズを取得あるいは計算し、
得られた各サイズ情報を不揮発性メモリのセクタ単位で変換し、
カーネルとルートファイルシステムとユーティリティを合わせた総計サイズを一定にするように、変換後のファームウェアサイズを調整し、
調整後のファームウェアサイズ情報とブートパラメーター領域に保存されている実行中のファームウェアのパーティションサイズ情報を比較し、比較結果に基づいて、不揮発性メモリのファームウェアを書き換え、
調整後のファームウェアサイズ情報をブートパラメーター領域に保存することを特徴とするパーティション・サイズ可変ファームウェア組込装置のファームウェア更新方法。
【請求項２】
変換後のファームウェア総計サイズが一定サイズより小さい場合、カーネルのパーティションサイズを最小限にし、余ったサイズをファイルシステムまたはユーティリティパーティションに割り当てることを特徴とする請求項１に記載のパーティション・サイズ可変ファームウェア組込装置のファームウェア更新方法。
【請求項３】
変換後のファームウェア総計サイズが一定サイズを超えた場合、ファームウェア更新を中止することを特徴とする請求項１に記載のパーティション・サイズ可変ファームウェア組込装置のファームウェア更新方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵ組み込み機器におけるパーティション・サイズ可変ファームウェア組込装置のファームウェア更新方法に関する。
【背景技術】
【０００２】
近年、携帯電話や携帯情報端末（ＰＤＡ）またはその他の様々なＣＰＵ組み込み通信機器が開発、商品化されたことによって、“どこでも情報を送受信できる”という意味のユビキタス社会は、徐々に現実化され始め、身近な存在になりつつある。このようなＣＰＵ組み込み通信端末は、一般にハードウェア制御用ソフト（ファームウェア）をFlash ROM（フラッシュメモリ）のような記憶媒体に組み込むことによってハードウェアの制御やデータの送受信を実現している。
【０００３】
このようなＣＰＵ組み込み通信端末は、従来のパーソナルコンピュータ（ＰＣ）に比べて、小型、軽量、リアルタイム性などに優れる点がある一方、ファームウェアを記録するため記憶媒体が非常に制限される欠点もある。ファームウェア開発者がファームウェア開発の初期から記憶媒体にファームウェアの配置を決めなければならない。
【０００４】
また、ファームウェアが、複数のモジュールに分割され、各モジュールは、複数のパーティションで仕切られた不揮発性メモリの各記憶領域にそれぞれ格納され、ファームウェアの更新時において、更新元と更新先の各モジュール同士を比較し、変更または修正があったと判定されたモジュールについてのみ更新元のプログラムファイルからダウンロードして書き換えるようにしたファームウェアの更新方式がある（例えば、特許文献１参照）。
【特許文献１】特開２００２−３５１６８７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、ファームウェアのローダ部分を除き、カーネル、ルートファイルシステムや専用ユーティリティなどのサイズがなかなか決められない場合が多く、大体の数字で各パーティションサイズを設定してもファームウェアの機能、ライブラリの大きさによって、パーティションサイズを変更する場合がある。
【０００６】
この時、開発者は毎回カーネルにパーティション定義ファイルを更新し、カーネルを再コンパイルしなければならない。さらに、パーティションサイズが変更された場合、開発者にとって、ファームウェアの書き換え作業も余計に手間がかかっていた。
【０００７】
また、製品化された後、ファームウェアのデバッグや機能追加によって、パーティションサイズを変更する場合もある。この時、ファームウェア更新を実行するのが開発者ではなく、ＣＰＵ組み込み端末の利用者になる場合が多いため、専門知識がなくても、簡単かつ安全なファームウェア更新方法が求められる。
【０００８】
そこで本発明は、ＣＰＵ組み込み機器におけるパーティション・サイズ可変ファームウェア組込装置のファームウェア更新方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述の課題を解決するため、本発明は、ＣＰＵとそのファームウェアが組み込まれた装置のファームウェア更新方法であって、前記装置に接続されたホストマシンから新しいファームウェアをアップロードし、前記装置が受信した新しいファームウェアからカーネル、ルートファイルシステムおよびユーティリティのサイズを取得あるいは計算し、得られた各サイズ情報を不揮発性メモリのセクタ単位で変換し、カーネルとルートファイルシステムとユーティリティを合わせた総計サイズを一定にするように、変換後のファームウェアサイズを調整し、調整後のファームウェアサイズ情報とブートパラメーター領域に保存されている実行中のファームウェアのパーティションサイズ情報を比較し、比較結果に基づいて、不揮発性メモリのファームウェアを書き換え、調整後のファームウェアサイズ情報をブートパラメーター領域に保存することを特徴とする。
【００１０】
以上の構成によって、ＣＰＵ組み込み機器におけるパーティション・サイズ可変ファームウェアを実現できる。
【発明の効果】
【００１１】
本発明によれば、パーティションサイズ情報をブートパラメーターとしてカーネルに渡すので、カーネルを再コンパイルしなくてもパーティションサイズを簡単に変更できる。
【００１２】
また、ＯＳがカーネルパーティションにデータを読み書きすることができないため、従来、パーティションサイズが固定の場合、カーネルパーティションが多めに設定され、無駄になる可能性がある。本発明では、ソフトで自動調整によって、カーネルのパーティションサイズを最小限にし、余ったサイズをＯＳが読み書きできるファイルシステムまたはユーティリティパーティションに割り当て、Flash ROMを効率よく利用できる。
【００１３】
さらに、ファームウェア開発者にとって、Flash ROMの総計サイズを超えない限り、カーネル、ファイルシステムのサイズを意識せずにファームウェアを簡単に更新できるため、開発効率を向上できる。
【００１４】
また、製品化されたＣＰＵ組み込み端末に対して、パーティションサイズ可変によって、デバッグまたは機能追加の際、開発元が従来より対応しやすくなる。
【発明を実施するための最良の形態】
【００１５】
次に、本発明の最良の形態について図面を参照して説明する。
【００１６】
図１は、ＣＰＵ組み込み装置及び開発システムの構成例を示す。ターゲット（通信端末などのＣＰＵ組み込み機器）１０側のFlash ROM１３の決められた領域に予めファームウェアを記録させ、電源を入れた途端にＣＰＵ１１がFlash ROM１３の決められたアドレスにジャンプ、記録されたファームウェアをＤＲＡＭ１２に展開、実行しＯＳを立ち上げるのが一般的である。また、ファームウェアが更新される場合、シリアルまたはイーサネット（富士ゼロックス株式会社の登録商標）インターフェースを通じてホストマシン２０から新しいファームウェアをターゲット１０にアップロードし、ターゲット１０側がこのファームウェアのバイナリファイルを受信してFlash ROM１３の決められた領域に書き込む。
【００１７】
図２は、Flash ROMのパーティション構成例を示す。ターゲットのFlash ROMに記録されたファームウェアが一般的にブートローダ、ブートパラメーター、カーネル、ルートファイルシステムおよび専用ユーティリティなどの領域に分けられる（ルートファイルシステムと専用ユーティリティは一つの領域に記録される場合もある）。また、記憶媒体としてのFlash ROMの特徴により、ファームウェア各領域は一つまたは複数のセクタ（Flash ROMの最小データ消去単位）で構成される。
【００１８】
従来、ファームウェア各領域はすべて固定アドレスでカーネルに定義され、ＯＳが立ち上がった後に各領域をパーティションとしてＯＳからアクセスできるようにする方法が一般的である。
【００１９】
本発明は、カーネル、ルートファイルシステムおよびユーティリティ領域のアドレスを固定せず、各パーティションのサイズを動的に可変できるようにする方法を提供する。また、ファームウェア（カーネル、ルートファイルシステムおよびユーティリティのバイナリファイル、以下同）を更新するとき、パーティションサイズが変更されても、パーティション総計サイズが変更されない限りファームウェア開発者またはユーザーがパーティションサイズを意識せずに新しいファームウェアをアップロードするだけでファームウェアが自動更新できる。
【実施例】
【００２０】
次に図３を参照して、本発明によるサイズ可変パーティションの実現方法について説明する。まず、ブートパラメーター領域に予め現ファームウェアのパーティションサイズ情報を書き込んでおく。ブートローダ起動後に、パーティションサイズを含んだ全パラメーターをカーネルに渡す。次に、カーネルがカーネルの先頭アドレスとパーティションサイズ情報に基づいて、Flash ROMにパーティションを作成し、ルートファイルシステムをマウントする。すなわち、ルートファイルシステムにそれぞれハードウェアを対応づけてアクセス可能とする。
【００２１】
次に図４を参照して、パーティションサイズ自動調整の一例を説明する。
（１）ホストマシンからファームウェアをターゲットにアップロードする。
（２）ターゲットが受信したファームウェアからカーネル、ルートファイルシステムおよびユーティリティのサイズを取得あるいは自動計算する。
（３）上記（２）で得られた各サイズ情報をFlash ROMのセクタ単位で変換する。
（４）総計サイズ（カーネル＋ルートファイルシステム＋ユーティリティ）を一定にするため、変換後のファームウェアサイズを自動調整する。変換後のファームウェア総計サイズが一定サイズより小さい場合、カーネルのパーティションサイズを最小限にし、余ったサイズをファイルシステムまたはユーティリティパーティションに割り当てる。変換後のファームウェア総計サイズが一定サイズを超えた場合、ファームウェア更新を中止する。
（５）調整後のファームウェアサイズ情報とブートパラメーター領域に保存されているパーティションサイズ（実行中のファームウェアサイズ）情報を比較し、比較結果に基づいて、Flash ROMのファームウェアを書き換える。
（６）調整後のファームウェアサイズ情報をブートパラメーター領域に保存（上書き）する。
【００２２】
上記（５）において、ＯＳがパーティション毎にFlash ROMのデータを書き換えることができるが、ファームウェアのパーティションサイズが変更されたため、新ファームウェアをそのまま実行中のファームウェアに書き換えることができない。本発明ではファームウェアのバイナリファイルを分割してそれぞれFlash ROMに書き込みすることによって、実行中のファームウェアを新ファームウェアに書き換えることを実現する。
【００２３】
図５は、上記パーティション・サイズ可変ファームウェア組込装置に対する具体的なファームウェアの更新フローチャートである。
【００２４】
次に、図６に示すファームウェアバイナリファイル分割の一例を参照してファームウェア更新方法を説明する。
（１）総計サイズ（カーネル＋ルートファイルシステム＋ユーティリティ）が、６ＭＢ(Mega Byte)とする。
（２）現ファームウェアサイズは、カーネル１ＭＢ、ファイルシステム３ＭＢ、ユーティリティ２ＭＢとする。
（３）新ファームウェアサイズは、カーネル１．５ＭＢ、ファイルシステム３．５ＭＢ、ユーティリティサイズは自動調整で１ＭＢになる。
（４）１．５ＭＢのカーネルバイナリファイルを１ＭＢ（現カーネルのパーティションサイズ）と０．５ＭＢに分割する。
（５）分割後の１ＭＢデータを現カーネルパーティションに書き換え、０．５ＭＢデータ（Div_K部分）を現ファイルシステムパーティションの先頭に書き換える。
（６）３．５ＭＢのファイルシステムバイナリファイルを２．５ＭＢ（現ファイルシステムのパーティションサイズ−０．５ＭＢ）と１ＭＢに分割する。
（７）分割後の２．５ＭＢデータを現ファイルシステムパーティションに書き換え、１ＭＢデータ（Div_F部分）を現ユーティリティパーティションの先頭に書き換える。
（８）ユーティリティバイナリファイルを現ユーティリティパーティション（Div_Fの後部）に書き換える。
【産業上の利用可能性】
【００２５】
制御用のＣＰＵとそのファームウェアが組み込まれた機器、特にFlash ROMにファームウェアを記憶した装置全般に利用できる。
【図面の簡単な説明】
【００２６】
【図１】ＣＰＵ組み込み装置及び開発システムの構成例を示す図である。
【図２】Flash ROMのパーティション構成例を示す図である。
【図３】可変サイズパーティションの実現方法の説明図である。
【図４】パーティションサイズ自動調整の一例を示す説明図である。
【図５】可変サイズパーティション場合のファームウェア更新フローチャートである。
【図６】ファームウェアバイナリファイル分割の一例を示す図である。
【符号の説明】
【００２７】
１０  ターゲット（装置）
１１  ＣＰＵ
１２  ＤＲＡＭ
１３  Flash ROM
２０  ホストマシン
【図１】
0004652240.tif 000002
【図２】
0004652240.tif 000003
【図３】
0004652240.tif 000004
【図４】
0004652240.tif 000005
【図５】
0004652240.tif 000006
【図６】
0004652240.tif 000007