(57)【要約】【課題】ファームウェアのダウンロード異常時のデバッグ効率を向上させる。【解決手段】ＦＲＯＭ１２に新規のファームウェアの書き込み後、ファームウェア書換装置１内で自動に立ち上げプログラム内の先頭にジャンプして装置の再起動行う。次回起動時は再起動前にファームウェア書換装置１内に記憶されたファームウェアにて起動することで新規のファームウェアで自律再起動を行う。新規のファームウェアをＦＲＯＭ１２に書き込む際はサムチェックを行い、異常があるとファームウェアの入れ替えを行わず、ダウンロード失敗要因をＳＤＲＡＭ１３の所定領域に書き込む。またダウンロード異常時はデバッグ端末３経由でＳＤＲＡＭ１３の所定領域をダンプすることでダウンロード異常要因を把握することができる。【選択図】　図１
2004094725.tif 000002
【特許請求の範囲】
【請求項１】
ファームウェアを記憶する記憶手段と、
前記記憶手段に記憶されている既存のファームウェアに従って前記記憶手段に正常に書き込んだ新規のファームウェアに従って再起動するとともに、前記記憶手段に前記新規のファームウェア書き込み異常時の要因及びハードウェア上のレジスタ状態を書き込む制御手段と、
を備えたことを特徴とするファームウェア書換装置。
【請求項２】
前記新規のファームウェアの書き込み異常を報知する警報手段を備えたことを特徴とする請求項１に記載のファームウェア書換装置。
【請求項３】
前記新規のファームウェアの書き込み動作を通知する通知手段を備えたことを特徴とする請求項１または請求項２に記載のファームウェア書換装置。
【請求項４】
前記制御手段は、要求に応じて前記記憶手段の内容をダンプさせることを特徴とする請求項１から３のいずれか一項に記載のファームウェア書換装置。
【請求項５】
請求項１から３のいずれか一項に記載のファームウェア書換装置と、前記記憶手段の内容のダンプにより書き込み異常時の要因及びハードウェア上のレジスタ状態を検出する検出手段と、を備えたことを特徴とするシステム。
【請求項６】
ファームウェア供給元が保持しているファームウェアのバージョンと既存のファームウェアのバージョンとの不一致を判定し前記新規のファームウェアを記憶手段に書き込む工程と、
前記新規のファームウェアの書き込み動作を通知する工程と、
前記記憶手段への前記新規のファームウェアの書き込みが完了したか否かを判定する工程と、
書き込みが完了した場合に前記記憶手段に書き込んだ前記新規のファームウェアに従って再起動を行う工程と、
書き込み異常時に前記記憶手段に書き込み異常時の要因及びハードウェア上のレジスタの状態を書き込む工程と、
を含むことを特徴とするファームウェア書換方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ファームウェアの書き換え可能な携帯電話やコンピュータ等の電子機器に用いて好適なファームウェア書換装置及びファームウェア書換方法に関する。
【０００２】
【従来の技術】
従来のファームウェア書換装置は、起動時にファームウェア供給元より新規のファームウェアをダウンロードして、既存のファームウェアの更新を行うようにしている。また、従来のファームウェア書換装置は、ファームウェアのダウンロードを失敗した場合、その要因を外部の記憶装置に記憶させるようにしている。
【０００３】
【発明が解決しようとする課題】
しかしながら、従来のファームウェア書換装置においては、次のような問題がある。すなわち、新規のファームウェアをダウンロードしても起動指示が与えられない限り、新規のファームウェアで起動することができない。また、外部の記憶装置が装備されていない場合はダウンロード失敗時の要因を管理することができない。また、外部の記憶装置を装備している場合、ダウンロード失敗時の要因を管理するようにしているものの、ソフトウェアの異常かハードウェアの異常かを即座に見分けることは困難である。
【０００４】
本発明は係る点に鑑みてなされたものであり、起動指示を与えることなく自律起動を可能とし、また外部の記憶装置を装備することなく書き換え異常時の要因を把握することができるファームウェア書換装置及びファームウェア書換方法を提供することを目的とする。
【０００５】
【課題を解決するための手段】
請求項１に係る発明のファームウェア書換装置は、ファームウェアを記憶する記憶手段と、前記記憶手段に記憶されている既存のファームウェアに従って前記記憶手段に正常に書き込んだ新規のファームウェアに従って再起動するとともに、前記記憶手段に前記新規のファームウェア書き込み異常時の要因及びハードウェア上のレジスタ状態を書き込む制御手段とを備えたことを特徴とする。
【０００６】
この構成によれば、新規のファームウェアが記憶手段に正常に書き込まれた場合に新規のファームウェアに従って再起動を行う。したがって、起動指示を与えることなく新規のファームウェアで自律起動が可能となる。また、書き込み異常時には、本装置内に異常要因を保存しておくことが可能となり、別途、デバッグ端末経由で異常要因を検出することが可能となる。
【０００７】
請求項２に係る発明のファームウェア書換装置は、請求項１に係る発明のファームウェア書換装置において、前記新規のファームウェアの書き込み異常を報知する警報手段を備えたことを特徴とする。
【０００８】
この構成によれば、新規のファームウェアの書き込み異常を報知することで、ユーザはファームウェアの書き換えが正常に行われたっことを把握することができる。
【０００９】
請求項３に係る発明のファームウェア書換装置は、請求項１又は２に記載のファームウェア書換装置において、前記新規のファームウェアの書き込み動作を通知する通知手段を備えたことを特徴とする。
【００１０】
この構成によれば、新規のファームウェアの書き込み動作を通知することで、ユーザは書き込み状態を把握することができ、書き込み中の操作ミスを防止することができる。
【００１１】
請求項４に係る発明のファームウェア書換装置は、請求項１から３のいずれか一項に記載のファームウェア書換装置において、前記制御手段は、要求に応じて前記記憶手段の内容をダンプさせることを特徴とする。
【００１２】
この構成によれば、記憶手段の内容をダンプさせることにより、記憶手段に書き込まれている新規のファームウェア書き込み異常時の要因及びハードウェア上のレジスタ状態を検出することができる。
【００１３】
【発明の実施の形態】
以下、本発明の実施の形態について、図面を参照して詳細に説明する。
図１は、本発明の一実施の形態に係るファームウェア書換装置の構成を示すブロック図である。図１において、ファームウェア書換装置１は、制御部１１と、ＦＲＯＭ（フラッシュロム）１２と、ＳＤＲＡＭ（エスデーラム：Ｓｙｎｃｈｒｏｎｏｕｓ　Ｄｙｎａｍｉｃ　Ｒａｎｄｏｍ　Ａｃｃｅｓｓ　Ｍｅｍｏｒｙ）１３と、ダウンロードランプ１４と、アラームランプ１５とを備えて構成される。
【００１４】
制御部１１は、図示せぬプロセッサ（ＣＰＵ）やメモリ及び入出力装置から構成され装置各部を制御する。ＦＲＯＭ１２は、制御部１１を動作させるためのプログラムであるファームウェアを記憶する。ＳＤＲＡＭ１３は、ダウンロードしたファームウェアの展開に用いられるとともに、ダウンロードしたファームウェアのＦＲＯＭ１２への書き込を確認するＦＲＯＭ書込完了フラグの設定に用いられる。ダウンロードランプ１４は、ＦＲＯＭ１２へのファームウェアの書き込み状態を示すもので、書き込中は常時点灯する。アラームランプ１５は、ダウンロードファイルの書き込み異常等の装置における各種異常状態を通知するためのものであり装置異常時に点灯する。
【００１５】
ダウンロード制御装置２は、ダウンロード供給元であり、ファームウェアを格納し、ファームウェアのダウンロード実行時にファームウェア書換装置１の制御部１１に対してダウンロード制御命令を送る。ダウンロード制御装置２からのファームウェアはファームウェア書換装置１のＳＤＲＡＭ１３にダウンロードされた後、ＳＤＲＡＭ１３からＦＲＯＭ１２に書き込まれる。
【００１６】
デバッグ端末３は、ファームウェアのダウンロード異常時にファームウェア書換装置１のＳＤＲＡＭ１３の指定アドレスをダンプすることで、ファームウェアダウンロード失敗時の異常要因とハードウェアのレジスタ状態をダンプ可能とする。この場合、ファームウェア書換装置１の制御部１１は、デバック端末３よりＳＤＲＡＭ１３に記憶されるダウンロード失敗要因とハードウェア上のレジスタ状態を示すデータを読み出す要求があると、当該データの読み出しを可能とする。
【００１７】
ここで、図２はファームウェア書換装置１のＦＲＯＭ１２のアドレス空間割り当てを示すメモリマップである。また、図３はファームウェア書換装置１のＳＤＲＡＭ１３のアドレス空間割り当てを示すメモリマップである。ＦＲＯＭ１２にはファームヘッダ領域１２１と、通常起動ファームウェア領域１２２と、緊急起動ファームウェア領域１２３と、ログデータ保存領域１２４が割り当てられる。他方、ＳＤＲＡＭ１３にはファームヘッダ領域１３１と、通常起動ファームウェア領域１３２と、緊急起動ファームウェア領域１３３と、ログデータ保存領域１３４と、書込完了フラグ領域１３４とが割り当てられる。
【００１８】
制御部１１は、装置起動時にＦＲＯＭ１２に記憶されているファームウェアのバージョンとダウンロード制御装置２に保持されているファームウェアのバージョンとを比較し、これらが一致していなければファームウェアのダウンロードを実行する。ファームウェアには、通常起動ファームウェアと、通常起動ファームウェアが正常に起動しない場合に起動する緊急起動ファームウェアとがあり、双方ともバージョンが古くてバージョンアップする必要がある場合は、これらが一度にダウンロードされる。
【００１９】
緊急起動ファームウェアはめったに起動することがないので、バージョンアップの殆どは通常起動ファームウェアになる。ただし、ダウンロード時はダウンロードデータの正常性を確保するため、制御部１１はＳＤＲＡＭ１３への書き込み時にチェックサムを実施する。そして、チェックサム結果が正常な場合のみダウンロード正常と判定し、ダウンロードデータの正常性を確保する。
【００２０】
通常起動ファームウェアのみバージョンアップする場合、まずＦＲＯＭ１２の通常起動ファームウェア格納領域に格納されている既存の通常起動ファームウェアをＳＤＲＡＭ１３の通常起動ファームウェア格納領域に展開する。そして、展開した既存の通常起動ファームウェアに従ってダウンロードを実行する。ダウンロードした新規の通常起動ファームウェアをＳＤＲＡＭ１３の空き領域に書き込む。そして、新規の通常起動ファームウェアをＳＤＲＡＭ１３の空き領域に書き込んだ後、ＦＲＯＭ１２の通常起動ファームウェア格納領域に書き込む。そして更にＦＲＯＭ１２のファームヘッダの更新を行い、その後、新規の通常起動ファームウェアの先頭にジャンプして当該ファームウェアにてリセットをかけて再起動する。
【００２１】
そして、新規の通常起動ファームウェアをＦＲＯＭ１２に書き込んだ後、当該ファームウェアの誤り検出を行う。この誤り検出において、有効範囲データを４バイト単位で加算し、その単純総和をビット反転して「１」を加えたものを誤り検出値とする。ただし、データが奇数バイトの場合にはデータの後に「０」を付加する。誤り検出は、誤り検出値（４バイト）に対象ファームウェアのデータを４バイトずつ加算し、全て加算した結果が「０」になれば正常とする。なお、誤り検出値については４バイト固定とする。
【００２２】
通常起動ファームウェアのダウンロード時に異常が起きた場合、制御部１１は、ＳＤＲＡＭ１３のログデータ保存領域にダウンロード失敗要因とハードウェア上のレジスタ状態を書き込む。そして、ＳＤＲＡＭ１３へ書き込み後、電源断等によるデータ喪失を防ぐために、ＳＤＲＡＭ１３のログデータ保存領域のデータをＦＲＯＭ１２内のログデータ保存領域に書き込む。
【００２３】
一方、緊急起動ファームウェアも同時にバージョンアップする場合は、ＦＲＯＭ１２の緊急起動ファームウェア格納領域に格納されている既存の緊急起動ファームウェアをＳＤＲＡＭ１３の緊急起動ファームウェア格納領域に展開する。そして、ダウンロードした新規の緊急起動ファームウェアをＳＤＲＡＭ１３の空き領域に書き込んだ後、ＦＲＯＭ１２の緊急起動ファームウェア格納領域に書き込む。緊急起動ファームウェアをＦＲＯＭ１２に書き込んだ後、通常起動ファームウェアのときと同様にＦＲＯＭ１２のファームヘッダの更新を行う。
【００２４】
そして、新規の緊急起動ファームウェアをＦＲＯＭ１２に書き込んだ後、当該ファームウェアの誤り検出を行う。この誤り検出において、有効範囲データを４バイト単位で加算し、その単純総和をビット反転して「１」を加えたものを誤り検出値とする。ただし、データが奇数バイトの場合にはデータの後に「０」を付加する。誤り検出は誤り検出値（４バイト）に対象ファームウェアのデータを４バイトずつ加算し、全て加算した結果が「０」になれば正常とする。なお、誤り検出値については４バイト固定とする。
【００２５】
緊急起動ファームウェアのダウンロード時に異常が起きた場合、制御部１１は、ＳＤＲＡＭ１３のログデータ保存領域にダウンロード失敗要因とハードウェアのレジスタ状態を書き込む。そして、ＳＤＲＡＭ１３へ書き込み後、電源断等によるデータ喪失を防ぐために、ＳＤＲＡＭ１３のログデータ保存領域のデータをＦＲＯＭ１２内のログデータ保存領域に書き込む。
【００２６】
また、制御部１１は、ファームウェアをＦＲＯＭ１２に書き込んだときにＳＤＲＡＭ１３のＦＲＯＭ書込完了フラグ領域に書き込み完了を示す値ビット「１」を設定する。なお、ＦＲＯＭ１２にファームウェアを書き込まない場合又はＦＲＯＭ１２に書き込んでいる最中は、ＦＲＯＭ書込完了フラグ領域には初期値の「０」を設定した状態を維持する。
【００２７】
また、制御部１１は、ＦＲＯＭ１２に新規のファームウェアを書き込んだ後の起動時に、通常起動ファームウェアに含まれている起動プログラムに従って自律再起動が必要な状態か否かどうかを判定する。つまり、起動時にＦＲＯＭ書込完了フラグがオンであれば（書き込み完了を示す値ビット「１」が設定された時）、装置内で自律再起動が必要な状態となっていると判断してシステムリセットを行う。すなわち、新たなバージョンのファームウェアをダウンロードすると、そのファームウェアで動作するために再起動をかける。
【００２８】
また、制御部１１は、ＳＤＲＡＭ１３に記憶させたファームウェアをＦＲＯＭ１２に書き込む転送開始時にタイマを設定し、ファームウェアのＦＲＯＭ１２への転送が完了したか否かの判定を行う。この場合、転送開始時から一定時間を経過してもＦＲＯＭ書込完了フラグがオンとならなければ、ダウンロード失敗と判断し（装置として異常であると判断し）てアラームランプ１５を点灯させる。
【００２９】
また、制御部１１は、ファームウェアのＦＲＯＭ１２への転送開始時にダウンロードランプ１４を点灯し、転送完了時に消灯する。このダウンロードランプ１４の点灯制御により、ユーザがＦＲＯＭ１２へのファームウェア書き込み中にシステム電源断を行うなどの操作誤りを冒すことがなくなる。
【００３０】
次に、上記構成のファームウェア書換装置１の動作について図４のフローチャートを参照しながら説明する。
【００３１】
まず、制御部１１は、ステップ２０１で、装置立ち上げに必要な各種パラメータの初期化を行う。この場合、自律再起動時に関連するパラメータとして、プログラムバージョン値の初期化、ＦＲＯＭ書き込み完了フラグの初期化、ＳＤＲＡＭ１３のダウンロード領域の初期化を行う。
【００３２】
次に、ステップ２０２で、ＦＲＯＭ１２のファームヘッダ領域に記憶されているファームヘッダをＳＤＲＡＭ１３のファームヘッダ領域に書き込む。これにより、ＦＲＯＭ１２に記憶されているファームウェアのバージョンがＳＤＲＡＭ１３に設定される。
【００３３】
次いで、ステップ２０３で、自装置（ファームウェア書換装置）１で保持しているファームウェアとダウンロード元のダウンロード制御装置２が保持しているファームウェアのバージョンを比較し、バージョンが一致するか否かの判定を行う。この判定において、双方のバージョンが一致する場合はステップ２０４に進み、ダウンロード対象のデータがないと判断してＦＲＯＭ１２に記憶されているファームウェアを実行することでシステム起動を行う。これに対して、双方のバージョンが一致しない場合はステップ２０５に進み、ダウンロード対象のファームウェアがあると判断して、ダウンロード制御装置２から対象ファームウェアのダウンロードを行う。
【００３４】
そして、ダウンロードした新規のファームウェアをＳＤＲＡＭ１３に書き込んだ後、ステップ２０６で、ＳＤＲＡＭ１３に書き込んだ新規のファームウェアをＦＲＯＭ１２に転送する。次いで、ステップ２０７で、ＦＲＯＭ１２に転送したファームウェアに通常起動ファームウェアが含まれていれば、当該ファームウェアのＦＲＯＭ１２への転送完了時にＳＤＲＡＭ１３上のＦＲＯＭ書込完了フラグをオンとし、通常起動ファームウェアのＦＲＯＭ１２への書き込み終了を設定する。
【００３５】
次いで、制御部１１は、ステップ２０８で装置起動後にＦＲＯＭ書込完了フラグのオンを確認すると、立ち上げプログラムの先頭にジャンプし、ファームウェアの自律起動を行う。自律起動後、ステップ２０９でファームウェア書換装置１の立ち上げに必要な各種パラメータの初期化を行う。この場合、自律再起動時に関連するパラメータとして、プログラムバージョン値の初期化、ＦＲＯＭ書込フラグの初期化、ＳＤＲＡＭ１３のダウンロード領域の初期化を行う。
【００３６】
自律再起動時に関連するパラメータの初期化を行った後、ステップ２１０でＦＲＯＭ１２のファームヘッダ領域に記憶されているファームヘッダをＳＤＲＡＭ１３のファームヘッダ領域に書き込む。これにより、ＦＲＯＭ１２に記憶されているファームウェアバージョンをＳＤＲＡＭ１３に設定することが可能となる。
【００３７】
次いで、ステップ２１１でファームウェア書換装置１で保持されているファームウェアとダウンロード制御装置２で保持されているファームウェアのバージョンを比較する。ここではステップ２０８にて自律起動を行っているので、ファームウェアのバージョンが一致していることから新たにダウンロード制御装置２からファームウェアのダウンロードは行わず、ステップ２１２でファームウェアによる起動処理を終了し、以後アプリケーションに処理に移行してシステム全体のイニシャル処理を行う。
【００３８】
このように、本発明の実施の形態によれば、ファームウェアの書き込み後、自動に立ち上げプログラムの先頭にジャンプすることで、ダウンロードしたファームウェアで自律再起動を行う。
【００３９】
また、ファームウェアの書き換えに失敗した場合は、ＦＲＯＭ１２に記憶されているファームウェアを起動せず、装置をアラーム状態とすることにより、システムの異常を必ず検出することができる。
【００４０】
また、ダウンロード異常時はアラームランプ１５を点灯させる。これにより、ユーザはファームウェア書換装置１にデバッグ端末３を接続して、ＳＤＲＡＭ１３のログデータ保存領域のデータをダンプすることで、ダウンロード失敗要因と、その時のハードウェアのレジスタ状態を確認することができる。
【００４１】
また、緊急起動ファームウェアをダウンロードすることで、前回起動時に通常起動ファームウェアのダウンロードに失敗した場合、緊急起動ファームウェアを起動することでシステム起動を二重に保証できる。
【００４２】
なお、上記実施の形態のファームウェア書換装置１は、例えば携帯電話やコンピュータなどのファームウェア書き換え可能なメモリを具備する電子機器の全てに適用することができる。
【００４３】
また、上記実施の形態のファームウェア書換装置１とデバック端末３を１つのファームウェア書換システムとして提供することも可能である。勿論、このシステムにダウンロード制御装置２を加えても構わない。
【００４４】
【発明の効果】
以上説明したように、本発明によれば、新規のファームウェアが記憶手段に正常に書き込まれた場合に新規のファームウェアに従って再起動を行う。したがって、起動指示を与えることなく新規のファームウェアで自律起動が可能となる。また、書き換え異常時には、本装置内に異常要因を保存しておくことが可能となり、別途、デバッグ端末経由で異常要因を検出することが可能となる。
【図面の簡単な説明】
【図１】本発明の一実施の形態に係るファームウェア書換装置の構成を示すブロック図である。
【図２】図１のＦＲＯＭにおけるアドレス空間割り当てを示すメモリマップである。
【図３】図１のＳＤＲＡＭにおけるアドレス空間割り当てを示すメモリマップである。
【図４】図１のファームウェア書換装置の動作を説明するためのフローチャートである。
【符号の説明】
１　ファームウェア書換装置
２　ダウンロード制御装置
３　デバッグ端末
１１　制御部
１２　ＦＲＯＭ
１３　ＳＤＲＡＭ
１４　ダウンロードランプ
１５　アラームランプ
【図１】
2004094725.tif 000003
【図２】
2004094725.tif 000004
【図３】
2004094725.tif 000005
【図４】
2004094725.tif 000006