(57)【要約】【課題】ＣＰＵの動作に必要な最小限の構成で、周辺ＩＣの制御・通信の主要機能を停止させることなく、ファームウェア更新を行うことが可能なファームウェア更新方法及びファームウェア更新装置を提供する。【解決手段】ファームウェア更新用プログラムの実行が開始されると、ＲＯＭ１１０の第２保存領域１１２及び第４保存領域１１４のうち、更新対象のプログラムが保存されている領域のバックアップ用プログラムデータを消去する。以降の処理では、上位装置１０から新プログラムのデータが送信されて受信バッファに書き込まれる毎に、送信されたデータをＲＯＭ１１０のデータ消去された領域に書き込む。一方ＲＡＭ１２０上の制御・通信プログラムは、ファームウェア更新用プログラムの処理がＣＰＵ１０１で行われていない時間帯に、プログラムカウンタに制御・通信プログラムのアドレスを設定することにより、所定の周期あるいは必要に応じて適宜実行される。【選択図】図１
2011039825.tif 000002
【特許請求の範囲】
【請求項１】
ファームウェア更新用プログラムと、所定の処理を行う動作プログラムと、周辺ＩＣの制御・通信を処理する制御・通信プログラムと、がＲＯＭ（Read Only Memory）に格納されており、前記動作プログラムと前記制御・通信プログラムのいずれか一方または両方を前記ファームウェア更新用プログラムを用いて新プログラムに書き換えることでファームウェア更新を行うファームウェア更新方法であって、
前記ファームウェア更新用プログラムの処理の合間だけプログラムカウンタを前記制御・通信プログラムに切り替えることで、前記制御・通信プログラムと前記ファームウェア更新用プログラムとを並行して実行させる
ことを特徴とするファームウェア更新方法。
【請求項２】
前記ファームウェア更新用プログラムと前記制御・通信プログラムとを、前記ＲＯＭからＲＡＭ（Random Access Memory）にコピーして保存し、
前記ＲＡＭに保存された前記ファームウェア更新用プログラムと前記制御・通信プログラムとを並行して実行させる
ことを特徴とする請求項１に記載のファームウェア更新方法。
【請求項３】
前記ＲＯＭは、前記動作プログラム及び前記制御・通信プログラムとして、それぞれ実行用とバックアップ用の２種類のプログラムを異なる保存領域に格納しており、
前記ファームウェア更新用プログラムは、更新対象の前記バックアップ用動作プログラムまたは／及び前記バックアップ用制御・通信プログラムを前記新プログラムに書き換える
ことを特徴とする請求項１または２に記載のファームウェア更新方法。
【請求項４】
前記ＲＯＭは、さらにブートローダを格納しており、
前記ファームウェア更新用プログラムが、前記新プログラムの保存領域の情報を含むファームウェア更新情報を前記ＲＯＭまたは前記ＲＡＭに保存しておき、
前記新プログラムへの書き換え終了後の再起動時に、前記ブートローダが前記ファームウェア更新情報をもとに前記動作プログラムと前記制御・通信プログラムのそれぞれの実行用とバックアップ用のプログラムの保存領域の情報を更新する
ことを特徴とする請求項３に記載のファームウェア更新方法。
【請求項５】
前記ファームウェア更新用プログラムは、前記ファームウェア更新中に異常が発生したことを検出するデータ異常検出手段を備え、
前記データ異常検出手段により前記ＲＯＭに保存された前記新プログラムのデータ異常が検出されると、前記保存領域の情報を更新しない
ことを特徴とする請求項４に記載のファームウェア更新方法。
【請求項６】
所定の処理を行う動作プログラムと周辺ＩＣの制御・通信を処理する制御・通信プログラムとを格納したＲＯＭと、実行させるプログラムを前記ＲＯＭからコピーして保存するＲＡＭと、を有するＣＰＵのファームウェア更新を行うファームウェア更新装置であって、
前記ＲＯＭの所定の保存領域のデータを消去するＲＯＭデータ消去手段と、
外部から更新用の新プログラムを受信する受信手段と、
前記受信手段から前記新プログラムを入力して前記ＲＯＭの所定の保存領域に書き込むＲＯＭデータ書込手段と、
前記ＲＯＭデータ消去手段により前記動作プログラムまたは／及び前記制御・通信プログラムのバックアップ用プログラムを保存している保存領域のプログラムデータを消去した後に、前記受信手段と前記ＲＯＭデータ書込手段とを交互に実行して前記保存領域に前記新プログラムを書き込むとともに、前記受信手段による前記新プログラムの受信中、前記ＲＯＭデータ消去手段による前記保存領域のデータ消去中、及び前記ＲＯＭデータ書込手段による前記保存領域へのデータ書き込み中は、プログラムカウンタを前記制御・通信プログラムに切り替えることで、前記制御・通信プログラムと前記ファームウェア更新とを並行して実行させるファームウェア更新手段と、を備える
ことを特徴とするファームウェア更新装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファームウェア更新方法及びファームウェア更新装置に関する。
【背景技術】
【０００２】
マイクロプロセッサ（ＣＰＵ）等を搭載した電子機器が広く利用されるようになっている。このような電子機器には、要求される機能を実現するためにファームウェアと呼ばれるハードウェアの基本機能を制御するためのプログラムが搭載されている。電子機器の機能拡張を行う場合やプログラム上の不具合が見つかった場合には、ファームウェアの更新を行う必要がある。このようなファームウェアは、フラッシュメモリなどのＲＯＭ（Read Only Memory）に格納されており、ファームウェア更新を行うためには、ＲＯＭ上のプログラムデータを消去したのち、外部から更新用のプログラムデータを受信し、これをＲＯＭに書き込むといった手順が必要となる（特許文献１、２）。
【０００３】
ファームウェアの更新が可能なＣＰＵの従来の構成例を図６に示す。従来のＣＰＵ９０１は、ＲＯＭ９０２とＲＡＭ（Random Access Memory）９０３、及び外部から受信したデータを一時的に保存する受信バッファ９０４を備えている。ＲＯＭ９０２は、大きく４つの領域に区分されており、第１の領域に実行用のプログラムが保存され、第２の領域にバックアップ用のプログラムが保存され、第３の領域にファームウェア更新用プログラムが保存され、さらに第４の領域にブートローダが保存されている。また、ＲＡＭ９０３は、プログラムを実行させたときに変数の値を保存するための変数保存領域９０３ａと、実行させるプログラムをＲＯＭ９０２からコピーして保存するためのプログラム領域９０３ｂに区分されている。
【０００４】
このような構成のＣＰＵ９０１において、ファームウェア更新を行う従来の方法を図７の流れ図を用いて説明する。まず、ステップＳ９１で外部からファームウェア更新命令を受信すると、ステップＳ９２でＲＯＭ９０２の第３の領域からファームウェア更新用プログラムを読み込み、これをＲＡＭ９０３のプログラム領域９０３ｂにコピーし、ステップＳ９３でこれを起動させる。次のステップＳ９４では、バックアップ用プログラムが保存されているＲＯＭ９０２の第２の領域のプログラムデータを消去する。そして、ステップＳ９５で外部から受信バッファ９０４に新プログラムのデータが送信される毎に、ステップＳ９７までの処理を繰り返し行う。ステップＳ９６では、ステップＳ９５で受信したプログラムデータをＲＯＭ９０２の第２の領域に書き込む。ステップＳ９７では、新プログラムのデータ受信が終了したか否かを判定し、終了していない場合には、再びステップＳ９５からの処理を繰り返す。一方、新プログラムの全データの受信を終了したと判定した場合には、ステップＳ９８でＣＰＵ９０１を再起動して新プログラムを使用可能とする。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００３−１０８３９６号公報
【特許文献２】特開２００４−３４１７８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、通常の電子機器では、ファームウェア更新を行っている間も、制御や通信などのサービスを継続させたいといった要望がある。また、マイクロプロセッサを組み込んだシステムにおいては、許容されるリソースが限られることが多いため、可能な限り小さな構成で所望の機能を実現させたいという要望がある。
【０００７】
しかしながら、図６に示すような従来のＣＰＵ構成におけるファームウェア更新方法では、ファームウェア更新用プログラムの処理にＣＰＵが占有されていた。そのため、周辺ＩＣの制御やデジタル演算装置との通信等が行えなくなり、所定のサービスが一時的に停止して電子機器の性能を満たすことができなくなってしまうといった問題があった。
【０００８】
また、図８に示すように、ＲＡＭ９１３には変数保存領域のみが設けられ、ＲＯＭ９１２に保存されているプログラムは、ＲＡＭ９１３にコピーされることなくＲＯＭ９１２上で動作するように構成されている場合には、ＲＯＭ９１２に保存されているファームウェア更新用プログラムをＲＯＭ９１２上で動作させながら、同じＲＯＭ９１２上のバックアップ用プログラムが保存されている領域のプログラムデータを書き換えることになる。そのため、ＲＯＭ９１２には、プログラムの実行とプログラムデータの書き換えが並行して行えるようなＲＯＭを用いなければならないといった問題がある。
【０００９】
図８に示すような構成のＣＰＵ９１１において、プログラムの実行とプログラムデータの書き換えを並行して行えないＲＯＭを用いる場合には、図９に示すように、受信した新プログラムのデータを一時的に保存するメモリ９２５を追加する必要がある。そして、ＲＯＭ９１２でファームウェア更新用プログラムを実行させ、新プログラムのデータを受信するとこれを一時的にメモリ９２５に保存し、プログラムデータの受信を完了した時点でメモリ９２５に保存したデータを一括してＲＯＭ９１２に書き込むようにする必要がある。このような方法では、メモリ９２５を追加する必要があるため、コストアップ及び電子機器のサイズアップにつながるといった問題があった。
【００１０】
そこで、本発明はこのような問題を解決するためになされたものであり、ＣＰＵの動作に必要な最小限の構成で、周辺ＩＣの制御・通信の主要機能を停止させることなく、ファームウェア更新を行うことが可能なファームウェア更新方法及びファームウェア更新装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明のファームウェア更新方法の第１の態様は、ファームウェア更新用プログラムと、所定の処理を行う動作プログラムと、周辺ＩＣの制御・通信を処理する制御・通信プログラムと、がＲＯＭに格納されており、前記動作プログラムと前記制御・通信プログラムのいずれか一方または両方を前記ファームウェア更新用プログラムを用いて新プログラムに書き換えることでファームウェア更新を行うファームウェア更新方法であって、前記ファームウェア更新用プログラムの処理の合間だけプログラムカウンタを前記制御・通信プログラムに切り替えることで、前記制御・通信プログラムと前記ファームウェア更新用プログラムとを並行して実行させることを特徴とする。
【００１２】
本発明のファームウェア更新方法の他の態様は、前記ファームウェア更新用プログラムと前記制御・通信プログラムとを、前記ＲＯＭからＲＡＭにコピーして保存し、前記ＲＡＭに保存された前記ファームウェア更新用プログラムと前記制御・通信プログラムとを並行して実行させることを特徴とする。
【００１３】
本発明のファームウェア更新方法の他の態様は、前記ＲＯＭは、前記動作プログラム及び前記制御・通信プログラムとして、それぞれ実行用とバックアップ用の２種類のプログラムを異なる保存領域に格納しており、前記ファームウェア更新用プログラムは、更新対象の前記バックアップ用動作プログラムまたは／及び前記バックアップ用制御・通信プログラムを前記新プログラムに書き換えることを特徴とする。
【００１４】
本発明のファームウェア更新方法の他の態様は、前記ＲＯＭは、さらにブートローダを格納しており、前記ファームウェア更新用プログラムが、前記新プログラムの保存領域の情報を含むファームウェア更新情報を前記ＲＯＭまたは前記ＲＡＭに保存しておき、前記新プログラムへの書き換え終了後の再起動時に、前記ブートローダが前記ファームウェア更新情報をもとに前記動作プログラムと前記制御・通信プログラムのそれぞれの実行用とバックアップ用のプログラムの保存領域の情報を更新することを特徴とする。
【００１５】
本発明のファームウェア更新方法の他の態様は、前記ファームウェア更新用プログラムは、前記ファームウェア更新中に異常が発生したことを検出するデータ異常検出手段を備え、前記データ異常検出手段により前記ＲＯＭに保存された前記新プログラムのデータ異常が検出されると、前記保存領域の情報を更新しないことを特徴とする。
【００１６】
本発明のファームウェア更新装置の第１の態様は、所定の処理を行う動作プログラムと周辺ＩＣの制御・通信を処理する制御・通信プログラムとを格納したＲＯＭと、実行させるプログラムを前記ＲＯＭからコピーして保存するＲＡＭと、を有するＣＰＵのファームウェア更新を行うファームウェア更新装置であって、前記ＲＯＭの所定の保存領域のデータを消去するＲＯＭデータ消去手段と、外部から更新用の新プログラムを受信する受信手段と、前記受信手段から前記新プログラムを入力して前記ＲＯＭの所定の保存領域に書き込むＲＯＭデータ書込手段と、前記ＲＯＭデータ消去手段により前記動作プログラムまたは／及び前記制御・通信プログラムのバックアップ用プログラムを保存している保存領域のプログラムデータを消去した後に、前記受信手段と前記ＲＯＭデータ書込手段とを交互に実行して前記保存領域に前記新プログラムを書き込むとともに、前記受信手段による前記新プログラムの受信中、前記ＲＯＭデータ消去手段による前記保存領域のデータ消去中、及び前記ＲＯＭデータ書込手段による前記保存領域へのデータ書き込み中は、プログラムカウンタを前記制御・通信プログラムに切り替えることで、前記制御・通信プログラムと前記ファームウェア更新とを並行して実行させるファームウェア更新手段と、を備えることを特徴とする。
【発明の効果】
【００１７】
本発明によれば、１つのＲＯＭと１つのＲＡＭというＣＰＵの動作に必要な最小限の構成で、周辺ＩＣの制御・通信の主要機能を停止させることなく、ファームウェア更新を行うことが可能なファームウェア更新方法及びファームウェア更新装置を提供するを提供することが可能となる。
【図面の簡単な説明】
【００１８】
【図１】第１の実施形態のファームウェア更新装置の構成を示すブロック図である。
【図２】第１の実施形態のファームウェア更新方法による処理手順を示す流れ図である。
【図３】ブートローダによる再起動後の処理手順を示す流れ図である。
【図４】第２の実施形態のファームウェア更新装置の構成を示すブロック図である。
【図５】第２の実施形態のファームウェア更新方法による処理手順を示す流れ図である。
【図６】従来のファームウェア更新装置の構成を示すブロック図である。
【図７】従来のファームウェア更新方法による処理手順を示す流れ図である。
【図８】従来の別のファームウェア更新装置の構成を示すブロック図である。
【図９】従来のさらに別のファームウェア更新装置の構成を示すブロック図である。
【発明を実施するための形態】
【００１９】
本発明の好ましい実施の形態におけるファームウェア更新方法及びファームウェア更新装置の構成について、図面を参照して以下に詳細に説明する。なお、同一機能を有する各構成部については、図示及び説明簡略化のため、同一符号を付して示す。
【００２０】
本発明の第１の実施の形態に係るファームウェア更新方法及びファームウェア更新装置を、図１を用いて説明する。図１は、本実施形態のファームウェア更新装置の構成を示すブロック図である。本実施形態のファームウェア更新装置は、ＣＰＵ等を搭載した電子機器に適用することができ、該電子機器が有する機能を実行するための動作プログラムや、周辺ＩＣの制御・通信等を処理するための制御・通信プログラムを更新するのに用いられる。
【００２１】
図１では、ＣＰＵ１０１が不揮発メモリのＲＯＭ１１０と揮発メモリのＲＡＭ（Random Access Memory）１２０を１つずつ備えており、本実施形態ではこのような構成のＣＰＵ１１０を対象としたファームウェア更新方法を提供する。ＣＰＵ１１０は、外部から受信したデータを一時的に保存するために、さらに受信バッファ１３０を備えている。また、ＣＰＵ１０１には所定の信号線路で周辺ＩＣが接続されており、本実施形態で対象とするＣＰＵ１１０は周辺ＩＣの制御等を行っている。図１では、周辺ＩＣの一例として、Ｄ／Ａコンバータ２１、Ａ／Ｄコンバータ２２、及びデジタル演算装置２３がＣＰＵ１０１に接続されているものとしている。
【００２２】
ＣＰＵ１０１では、電子機器の機能を実現する動作プログラムや、周辺ＩＣの制御・通信を処理する制御・通信プログラムが、所定の周期あるいは必要に応じて適宜実行される。これらの動作プログラムや制御・通信プログラムはＲＯＭ１１０に保存されており、必要なときにＲＡＭ１２０にコピーして実行される。ＲＯＭ１１０には、動作プログラムを保存するための第１保存領域１１１と第２保存領域１１２が設けられており、図１では第１保存領域１１１に実行用のプログラムが保存され、第２保存領域１１２にはバックアップ用のプログラムが保存されている。実行用プログラムとバックアップ用プログラムの保存領域は、動作プログラムの更新毎に第１保存領域１１１と第２保存領域１１２との間で交互に入れ替わる。同様に、制御・通信プログラムを保存するための第３保存領域１１３と第４保存領域１１４が設けられており、図１では第３保存領域１１３に実行用のプログラムが保存され、第４保存領域１１４にはバックアップ用のプログラムが保存されている。ここでも、実行用プログラムとバックアップ用プログラムの保存領域は、制御・通信プログラムの更新毎に第３保存領域１１１と第４保存領域１１２との間で交互に入れ替わる。
【００２３】
さらにＲＯＭ１１０には、動作プログラムや制御・通信プログラムを更新するのに用いるファームウェア更新用プログラムを保存するための第５保存領域１１５と、ＣＰＵ１０１の起動時に所定の処理を行うブートローダを保存するための第６保存領域１１６も設けられている。
【００２４】
ＲＡＭ１２０は、各プログラムを演算処理するときに用いるメモリであり、演算に用いられる変数の値を保存するための変数保存領域１２１と、処理対象のプログラムを保存するためのプログラム領域１２２とで構成されている。
【００２５】
ＣＰＵ１０１では、制御・通信プログラムが所定の周期あるいは必要に応じて適宜実行されることから、本実施形態のファームウェア更新方法では、ファームウェア更新用プログラムを実行して動作プログラムまたは／及び制御・通信プログラムの更新を行っている間も、制御・通信プログラムを継続して実行できるようにしている。すなわち、ファームウェアの更新が要求されると、ファームウェア更新用プログラムの実行と制御・通信プログラムの実行とを並行して行えるようにするために、ＲＯＭ１１０の第５領域１１５に保存されているファームウェア更新用プログラムと第３領域１１３に保存されている制御・通信プログラム（実行用）の両方を、ＲＡＭ１２０のプログラム領域１２２にコピーして保存させる。
【００２６】
図１では、制御・通信プログラムがプログラム領域１２２ａにコピーして保存され、ファームウェア更新用プログラムがプログラム領域１２２ｂにコピーして保存されている。本実施形態では、ファームウェア更新用プログラムの実行アドレスと制御・通信プログラムの実行アドレスとを、プログラムカウンタに適宜入れ替えながら両方のプログラムを並行して実行させる構成としている。
【００２７】
ファームウェアの更新は、外部からのファームウェア更新命令を受けて開始される。図１に示す実施形態では、一例としてＣＰＵ１０１に上位装置１０が接続されており、上位装置１０から送信されたファームウェア更新命令が受信バッファ１３０に書き込まれると、ＣＰＵ１０１ではファームウェア更新を開始するための準備が行われる。すなわち、ファームウェア更新用プログラムを実行可能とするために、ＲＯＭ１１０の第５領域１１５からファームウェア更新用プログラムが読み出されてＲＡＭ１２０のプログラム領域１２２ｂにコピーされる。また、それと同時に、制御・通信プログラムが第３領域１１３から読み出されてプログラム領域１２２ａにコピーされる。なお、制御・通信プログラムについては、起動時等に予め第３領域１１３から読み出してプログラム領域１２２ａに保存しておくことで、これをプログラム領域１２２ａに常駐させるようにしてもよい。
【００２８】
ファームウェア更新用プログラムがＲＡＭ１２０のプログラム領域１２２ｂに保存されると、プログラム領域１２２ｂのファームウェア更新用プログラムのアドレスがプログラムカウンタに設定される。これにより、ＣＰＵ１０１ではプログラムカウンタに設定されたファームウェア更新用プログラムの実行が開始される。ファームウェア更新用プログラムは、ＲＯＭデータ消去手段１４１とＲＯＭデータ書込手段１４２を有しており、これらを用いてファームウェアの更新を実行する。
【００２９】
本実施形態のファームウェア更新方法では、外部から入力する新プログラムが、ＲＯＭ１１０のバックアップ用プログラムが保存されている第２保存領域１１２または第４保存領域１１４に保存される。そのため、ファームウェア更新用プログラムの実行が開始されると、まず、ＲＯＭ１１０の第２保存領域１１２及び第４保存領域１１４のうち、更新対象のプログラムが保存されている領域のバックアップ用プログラムデータを、ＲＯＭデータ消去手段１４１を用いて消去する。
【００３０】
更新対象のバックアップ用プログラムデータが消去されると、以降のファームウェア更新用プログラムの処理では、上位装置１０から新プログラムのデータが送信されて受信バッファに書き込まれる毎に、ＲＯＭデータ書込手段１４２を用いて送信されたデータをＲＯＭ１１０のデータ消去された領域に書き込む。新プログラムのデータを受信してＲＯＭ１１０に書き込まれるまでの間に、何らかの異常が発生しないかを監視するデータ異常検出手段１４３をファームウェア更新用プログラムに設けるのが好ましい。このようなデータ異常検出手段１４３として、例えばチェックサムのような方法を用いることができる。
【００３１】
一方、ＲＡＭ１２０のプログラム領域１２２ａに書き込まれた制御・通信プログラムは、ファームウェア更新用プログラムの処理がＣＰＵ１０１で行われていない時間帯に、プログラムカウンタに制御・通信プログラムのアドレスを設定することにより、所定の周期あるいは必要に応じて適宜実行される。このような時間帯として、ＲＯＭデータ消去手段１４１によるＲＯＭデータの消去が行われている期間、上位装置１０から新プログラムのデータを受信している期間、及びＲＯＭデータ書込手段１４２によりＲＯＭ１１０の所定の領域にデータが書き込まれている期間、等がある。このような時間帯に制御・通信プログラムが実行されることにより、Ｄ／Ａコンバータ２１、Ａ／Ｄコンバータ２２、及びデジタル演算装置２３などの周辺ＩＣの制御・通信処理も並行して実行されることになる。
【００３２】
新プログラムのデータ受信がすべて終了してＲＯＭデータ書込手段１４２によるＲＯＭ１１０への書き込みが完了すると、所定のファームウェア更新情報がＲＯＭ１１０またはＲＡＭ１２０の所定の位置に記録される。ファームウェア更新情報の記録位置として、図１ではＲＡＭ１２０の変数保存領域１２１の特定の位置１２１ａに保存させるものとしている。ファームウェア更新情報には、少なくともＲＯＭ１１０の第１保存領域１１１〜第４保存領域１１４のうち新プログラムが書き込まれた領域の情報が含まれている。また、データ異常検出手段１４３による異常検出結果もファームウェア更新情報に含めるようにするのがよい。ファームウェア更新情報が特定の位置１２１ａに保存された後、プログラムカウンタにブートローダのアドレスが設定され、これによりＣＰＵ１０１の再起動が行われる。
【００３３】
ＣＰＵ１０１の再起動が行われると、ブートローダは、ＲＡＭ１２０の特定の位置１２１ａに保存されているファームウェア更新情報を入力し、これをもとに新プログラムが保存されているＲＯＭ１１０上の領域と、ファームウェア更新前に実行用であったプログラムが保存されている領域を判定する。ここで、データ異常検出手段１４３による異常検出結果として異常が検出されなかった場合には、新プログラムが保存されている領域を実行用プログラム保存領域とし、ファームウェア更新前に実行用であったプログラムの保存領域をバックアップ用プログラム保存領域とする。これに対し、データ異常検出手段１４３による異常検出結果として異常が検出されている場合には、新プログラムが保存された領域をバックアップ用プログラム保存領域のままとし、ファームウェア更新前に実行用のプログラムを保存していた領域も実行用プログラム保存領域のままとする。
【００３４】
以下では、ファームウェア更新の一例として、動作プログラムが更新された場合について説明する。この場合、上位装置１０から動作プログラムを対象とするファームウェア更新命令を受信すると、ＲＯＭ１１０の第５領域１１５からファームウェア更新用プログラムが読み出され、ＲＡＭ１２０のプログラム領域１２２ｂにコピーされる。そして、プログラムカウンタにファームウェア更新用プログラムのアドレスが設定されて実行が開始される。ファームウェア更新用プログラムの実行が開始されると、まずＲＯＭデータ消去手段１４１を用いて動作プログラムのバックアップ用プログラムが保存されている第２保存領域１１２のデータが消去される。
【００３５】
第２保存領域１１２のデータ消去が終了すると、上位装置１０から新プログラムのデータが受信される毎に、ＲＯＭデータ書込手段１４２を用いて受信したデータをＲＯＭ１１０の第２保存領域１１２に書き込む。この間も、制御・通信プログラムは、所定の周期または必要に応じて適宜実行される。データ異常検出手段１４３により異常が検出されることなく新プログラムのＲＯＭ１１０への書き込みが完了すると、新プログラムの保存領域はＲＯＭ１１０の第２保存領域１１２であることを示す情報をファームウェア更新情報としてＲＡＭ１２０上の特定の位置１２１ａに保存する。これにより、ブートローダは再起動後に、新プログラムが保存されているＲＯＭ１１０の第２保存領域１１２を実行用の動作プログラムが保存されている領域と判定し、第１領域１１１をバックアップ用プログラムの保存領域と判定する。
【００３６】
なお、上記では再起動後に実行用のプログラム保存領域とバックアップ用プログラム保存領域を判定するようにしているが、この判定を新プログラムのＲＯＭ１１０への書き込み完了直後に行わせるようにすることも可能である。すなわち、新プログラムのＲＯＭ１１０への書き込み完了後に、データ異常検出手段１４３により異常が検出されたかを判定する。その結果、異常が検出されなかった場合には、新プログラムの保存領域を示すファームウェア更新情報をＲＡＭ１２０上の特定の位置１２１ａに保存させる。これに対し、データ異常検出手段１４３により異常が検出された場合には、ＲＡＭ１２０上の特定の位置１２１ａに保存されているファームウェア更新情報を変更せず、図１に示したＲＯＭ１１０のプログラム保存構成を維持させる。
【００３７】
以下では、図２を用いて本実施形態のファームウェア更新方法を説明する。図２は、本実施形態のファームウェア更新方法による処理手順を示す流れ図である。まず、図２（ａ）に示すステップＳ１において、上位装置１０からファームウェア更新命令を受信する。これにより、ステップＳ２ではＲＯＭ１１０の第５領域１１５に保存されているファームウェア更新用プログラムが、ＲＡＭ１２０上のプログラム領域１２２ｂにコピーされる。また、必要に応じて制御・通信プログラムも第３領域１１３からプログラム領域１２２ａにコピーされる。ステップＳ３では、プログラム領域１２２ｂのファームウェア更新用プログラムのアドレスがプログラムカウンタに設定されることにより、ファームウェア更新用プログラムが起動される。
【００３８】
ファームウェア更新用プログラムが起動された後は、図２（ｂ）に示す処理が行われる。まず、ステップＳ１１では、更新対象のプログラムのバックアップ用プログラムが保存されているＲＯＭ１１０上の領域（図１の第２保存領域１１２または第４保存領域１１４）のデータを、ＲＯＭデータ消去手段１４１を用いて消去する。ＲＯＭデータ消去手段１４１によるデータ消去が開始されると、ステップＳ１２でデータ消去の終了が判定されるまでの間、ステップＳ２１において制御・通信プログラムが実行される。制御・通信プログラムは、所定の周期あるいは必要に応じて適宜実行される。
【００３９】
ステップＳ１２でデータ消去の終了が判定されると、次のステップＳ１３で上位装置１０からの新プログラムデータの受信を開始する。そして、ステップＳ１４で新プログラムデータの受信終了が判定されるまでの間、ステップＳ２２において制御・通信プログラムが実行される。また、ステップＳ１４で新プログラムデータの受信終了が判定されると、ステップＳ１５で受信データのＲＯＭ１１０上の所定の保存領域への書き込みが開始される。そして、ステップＳ１６で受信データのＲＯＭ１１０への書込み完了が判定されるまでの間、ステップＳ２３において制御・通信プログラムが実行される。また、ステップＳ１６で受信データの書込み終了が判定されると、次のステップＳ１７に進む。
【００４０】
ステップＳ１７では、上位装置１０から新プログラムのデータをすべて受信したかを判定する。これは、上位装置１０から新プログラムのデータをすべて送信した後に所定の送信完了信号を送信させることにより、この送信完了信号を受信したことを確認することで行える。ステップＳ１７で受信が完了していないと判定されると、ステップＳ１３に戻って再び新プログラムのデータ受信を開始する。一方、ステップＳ１７で受信完了が判定されると、ステップＳ１８において、所定のファームウェア更新情報がＲＡＭ１２０上の特定の位置１２１ａに記録される。そして、次のステップＳ１９において、ブートローダによりＣＰＵ１０１の再起動が行われる。
【００４１】
つぎに、ブートローダによる再起動後の処理を、図３に示す流れ図を用いて説明する。ステップＳ３１でブートローダによる再起動が行われると、ステップＳ３２でファームウェア更新情報をＲＡＭ１２０上の特定の位置１２１ａから入力する。ステップＳ３３では、ファームウェア更新情報に含まれているデータ異常検出手段１４３による異常検出結果を判定する。その結果、異常が検出されなかったと判定された場合には、ファームウェア更新後のＲＯＭ１１０の保存領域の構成に従って制御・通信プログラムをＲＡＭ１２０にコピーして実行させる。
【００４２】
すなわち、ステップＳ３４では、制御・通信プログラムをＲＯＭ１１０の所定の保存領域（制御・通信プログラムが更新されているときは第４保存領域１１４、更新されていないときは第３保存領域１１３）からＲＡＭ１２０にコピーする。その後、ステップＳ３５で更新後の実行用動作プログラムの開始アドレスをプログラムカウンタにセットすることによりサービスを開始する。なお、ＲＡＭ１１０上の変数保存領域１２１のメモリマップを固定化、すなわち変数保存領域１２１における各変数の保存位置を固定化することによって、更新後の新プログラムにおいても更新前のプログラムによる処理結果から継続して処理させることが可能となる。
【００４３】
一方、ステップＳ３３で異常が検出されたと判定された場合には、ファームウェア更新前のＲＯＭ１１０の保存領域の構成に従ってプログラムをＲＡＭ１２０にコピーして実行させる。すなわち、ステップＳ３６では、制御・通信プログラムをＲＯＭ１１０の第３保存領域１１３からＲＡＭ１２０にコピーして実行させる。また、ステップＳ３７で動作プログラムを実行させる場合には、更新前の実行用動作プログラムの開始アドレスをプログラムカウンタにセットすることによりサービスを開始する。
【００４４】
上記説明のように、本実施形態のファームウェア更新方法及びファームウェア更新装置によれば、１つのＲＯＭと１つのＲＡＭというＣＰＵの動作に必要な最小限の構成で、周辺ＩＣの制御・通信の主要機能を停止させることなく、ファームウェア更新を行うことが可能となる。
【００４５】
本発明の第２の実施の形態に係るファームウェア更新方法及びファームウェア更新装置を、図４を用いて説明する。図４は、本実施形態のファームウェア更新装置の構成を示すブロック図である。本実施形態のファームウェア更新装置では、ＲＡＭ２２０のプログラム領域２２２が予め制御・通信プログラム保存領域２２２ａ、ファームウェア更新用プログラム保存領域２２２ｂ、及び必要に応じて動作プログラムをコピーして保存させるための動作プログラム保存領域２２２ｃに区分されている。そして、制御・通信プログラム保存領域２２２ａ及びファームウェア更新用プログラム保存領域２２２ｂには、それぞれ制御・通信プログラム及びファームウェア更新用プログラムが予めＲＯＭ１１０の第３保存領域１１３及び第５領域からコピーされて保存されている。このＲＡＭ２２０への保存は、ＣＰＵ１０１の起動／再起動時に行われる。
【００４６】
ファームウェア更新用プログラムを予めＲＡＭ２２０のファームウェア更新用プログラム保存領域２２２ｂに保存しておくことで、本実施形態では、上位装置１０からファームウェア更新命令を受信すると、ファームウェアの更新を直ちに開始することが可能となる。本実施形態のファームウェア更新方法を、図５を用いて説明する。図５は、本実施形態のファームウェア更新方法による処理手順を示す流れ図である。図５に示す本実施形態のファームウェア更新方法は、図２に示した第１の実施形態のファームウェア更新方法と比べて、ステップＳ２のファームウェア更新用プログラムのＲＯＭ１１０からＲＡＭ１２０へコピーする処理が省略されている。このように、ファームウェア更新用プログラムをＲＡＭ１２０にコピーする手間を省略することで、制御・通信プログラムの実行に影響を与えることなく、ファームウェア更新を実行することが可能となる。
【００４７】
本発明のファームウェア更新方法及びファームウェア更新装置によれば、１つのＲＯＭと１つのＲＡＭというＣＰＵの動作に必要な最小限の構成で、周辺ＩＣの制御・通信の主要機能を停止させることなく、ファームウェア更新を行うことが可能となる。また、動作させる必要のある制御・通信プログラム及びファームウェア更新用プログラムをＲＡＭ上にコピーして実行させる構成としていることから、保存しているプログラムを動作させながら別のプログラムの書き換えを行うことができないＲＯＭに対しても、実行用のプログラムをバックアップ用として残しながらファームウェアの更新を行うことが可能となる。
【００４８】
なお、本実施の形態における記述は、本発明に係るファームウェア更新方法及びファームウェア更新装置の一例を示すものであり、これに限定されるものではない。本実施の形態におけるファームウェア更新方法等の細部構成及び詳細な動作等に関しては、本発明の趣旨を逸脱しない範囲で適宜変更可能である。
【符号の説明】
【００４９】
１０      上位装置
２１      Ｄ／Ａコンバータ
２２      Ａ／Ｄコンバータ
２３      デジタル演算装置
１０１    ＣＰＵ
１１０    ＲＯＭ
１１１    第１保存領域
１１２    第２保存領域
１１３    第３保存領域
１１４    第４保存領域
１２０、２２０    ＲＡＭ
１２１、２２１    変数保存領域
１２２、２２２    プログラム領域
１３０    受信バッファ
１４１    ＲＯＭデータ消去手段
１４２    ＲＯＭデータ書込手段
１４３    データ異常検出手段
【図１】
2011039825.tif 000003
【図２】
2011039825.tif 000004
【図３】
2011039825.tif 000005
【図４】
2011039825.tif 000006
【図５】
2011039825.tif 000007
【図６】
2011039825.tif 000008
【図７】
2011039825.tif 000009
【図８】
2011039825.tif 000010
【図９】
2011039825.tif 000011