(57)【要約】【課題】フラッシュＲＯＭ内部の状態に応じて、書き換えプログラムの起動及び書き換え対象のプログラムを選択的に切り替えできなかった。【解決手段】第１の書き換えプログラムによって、ユーザープログラムを書き換える第1の書き換えステップと、第1の書き換えステップでの書き換えエラーを検出する第１の検出ステップと、第１の検出ステップでエラーを検出した場合には、第１の書き換えプログラムによって、再度ユーザープログラムを書き換えるリトライステップと、リトライステップでの書き換えエラーを検出する第２の検出ステップと、第２の検出ステップでエラーを検出した場合には、第１の書き換えプログラムによって、第２の書き換えプログラムを書き換える第２の書き換えステップと、第２の書き換えステップで書き換えられた第２の書き換えプログラムによって、ユーザープログラムを書き換える第３の書き換えステップとを有する。【選択図】図１４
2010033486.tif 000002
【特許請求の範囲】
【請求項１】
複数の書き換えプログラムをもつ、プログラムの書き換え方法であって、
第１の書き換えプログラムによって、ユーザープログラムを書き換える第1の書き換えステップと、
前記第1の書き換えステップでの書き換えエラーを検出する第１の検出ステップと、
前記第１の検出ステップでエラーを検出した場合には、第１の書き換えプログラムによって、再度ユーザープログラムを書き換えるリトライステップと、
前記リトライステップでの書き換えエラーを検出する第２の検出ステップと、
前記第２の検出ステップでエラーを検出した場合には、第１の書き換えプログラムによって、第２の書き換えプログラムを書き換える第２の書き換えステップと、
前記第２の書き換えステップで書き換えられた第２の書き換えプログラムによって、ユーザープログラムを書き換える第３の書き換えステップと
を有することを特徴とするプログラムの書き換え方法。
【請求項２】
複数の書き換えプログラムをもつ、プログラムの書き換え方法であって、
第１の書き換えプログラムによって、第２の書き換えプログラムを書き換える第４の書き換えステップと、
前記第４の書き換えステップでの書き換えエラーを検出する第３の検出ステップと、
前記第３の検出ステップでエラーを検出した場合には、第１の書き換えプログラムによって、再度第２の書き換えプログラムを書き換えるリトライステップと、
前記リトライステップでの書き換えエラーを検出する第４の検出ステップと、
前記第４の検出ステップでエラーを検出した場合には、第１の書き換えプログラムによって、ユーザープログラムを書き換える第５の書き換えステップと
を有することを特徴とするプログラムの書き換え方法。
【請求項３】
複数の書き換えプログラムをもつ、プログラムの書き換え装置であって、
第１の書き換えプログラムによって、ユーザープログラムを書き換える第1の書き換え手段と、
前記第1の書き換え手段での書き換えエラーを検出する第１の検出手段と、
前記第１の検出手段でエラーを検出した場合には、第１の書き換えプログラムによって、再度ユーザープログラムを書き換えるリトライ手段と、
前記リトライ手段での書き換えエラーを検出する第２の検出手段と、
前記第２の検出手段でエラーを検出した場合には、第１の書き換えプログラムによって、第２の書き換えプログラムを書き換える第２の書き換え手段と、
前記第２の書き換え手段で書き換えられた第２の書き換えプログラムによって、ユーザープログラムを書き換える第３の書き換え手段と
を備えることを特徴とするプログラムの書き換え装置。
【請求項４】
複数の書き換えプログラムをもつ、プログラムの書き換え装置であって、
第１の書き換えプログラムによって、第２の書き換えプログラムを書き換える第４の書き換え手段と、
前記第４の書き換え手段での書き換えエラーを検出する第３の検出手段と、
前記第３の検出手段でエラーを検出した場合には、第１の書き換えプログラムによって、再度第２の書き換えプログラムを書き換えるリトライ手段と、
前記リトライ手段での書き換えエラーを検出する第４の検出手段と、
前記第４の検出手段でエラーを検出した場合には、第１の書き換えプログラムによって、ユーザープログラムを書き換える第５の書き換え手段と
を備えることを特徴とするプログラムの書き換え装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムの書き換えをより安全に行うための方法及び装置に関するものである。
【背景技術】
【０００２】
近年、外部装置からフラッシュＲＯＭに書き込まれた装置の本体機能を実現するユーザープログラムを書き換える機能が様々な装置に実装されている。ユーザープログラムは、フラッシュＲＯＭやＥＥＰＲＯＭに記憶されており、ファームウェアプログラムの書き換え中、何らかの外乱により書き換えに失敗すると、バージョンアップされたファームウェアプログラムが記憶されたフラッシュＲＯＭやＥＥＰＲＯＭに張替える必要があり、時間や手間、更には張替え技術も必要である。また、書き換えプログラムと通常機能を実現するためのユーザープログラムを分けて、ユーザープログラムのみを安全に書き換えるなどの様々な書き換え方法が提案されている。
【０００３】
例として、書き換えプログラム領域を２つ持ち、一方の書き換えプログラムが他方の書き換えプログラムを更新し、書き換え中にエラーが発生した場合には、一方の書き換えプログラムで再試行することで、プログラムの書き換えをより安全に行う方法が提案されている。（例えば、特許文献１，２参照。）。
【特許文献１】特開２００２−２６４４４９号公報
【特許文献２】特開２００３−１０８３９６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記のような従来のシステムでは、書き換えプログラムにバグがあり、ユーザープログラムが書き換えられない場合や、ユーザープログラム以外のプログラム（例えばＥＥＰＲＯＭのデータや、他のマイコンのプログラム）を書き換える機能を付加したい場合に、安全に書き換えができないという問題があった。
【０００５】
本発明は、上記の従来の問題点を解決するもので、フラッシュＲＯＭの内部状態に応じて、プログラムの起動及び書き換え対象のプログラムを選択的に切り替えることを目的とする。
【課題を解決するための手段】
【０００６】
この目的を達成するために、本発明のプログラム書き換え方法は、複数の書き換えプログラムをもつ、プログラムの書き換え方法であって、
第１の書き換えプログラムによって、第２の書き換えプログラムを書き換える第１の書き換えステップと、第１の書き換えステップでの書き換えエラーを検出する第１の検出ステップと、第１の検出ステップでエラーを検出した場合には、第１の書き換えプログラムによって、再度ユーザープログラムを書き換えるリトライステップと、リトライステップでの書き換えエラーを検出する第２の検出ステップと、第２の検出ステップでエラーを検出した場合には、第１の書き換えプログラムによって、第２の書き換えプログラムを書き換える第２の書き換えステップと、第２の書き換えステップで書き換えられた第２の書き換えプログラムによって、ユーザープログラムを書き換える第３の書き換えステップとを有することを特徴とする。
【０００７】
また、本発明のプログラム書き換え装置は、複数の書き換えプログラムをもつ、プログラムの書き換え装置であって、
第１の書き換えプログラムによって、第２の書き換えプログラムを書き換える第１の書き換え手段と、第１の書き換え手段での書き換えエラーを検出する第１の検出手段と、第１の検出手段でエラーを検出した場合には、第１の書き換えプログラムによって、再度ユーザープログラムを書き換えるリトライ手段と、リトライ手段での書き換えエラーを検出する第２の検出手段と、第２の検出手段でエラーを検出した場合には、第１の書き換えプログラムによって、第２の書き換えプログラムを書き換える第２の書き換え手段と、第２の書き換え手段で書き換えられた第２の書き換えプログラムによって、ユーザープログラムを書き換える第３の書き換え手段とを備えることを特徴とする。
【０００８】
このような構成により、フラッシュＲＯＭ内部の状態に応じて、プログラムの起動及び書き換え対象のプログラムを選択的に切り替えることが可能になる。
【発明の効果】
【０００９】
以上のように、本発明により、フラッシュＲＯＭ内部の状態に応じて、書き換えプログラムの起動及び書き換え対象のプログラムを選択的に切り替えることが可能になる。具体的には、アップデートプログラムを複数持つことで、書き換えプログラムにバグがあり、ユーザープログラム領域を書き換えられない場合や、ユーザープログラム以外のプログラム（例えばＥＥＰＲＯＭのデータや、他のマイコンのプログラム）を書き換える機能を付加したい場合に、安全に書き換えができ、また仮に一方の書き換えプログラムの書き換えに失敗しても、ユーザープログラムの書き換えに成功すれば、装置の本体動作を確立させることができる。すなわち、ユーザープログラムばかりでなく、アップデートプログラムも安全、確実に書き換えることができる、という効果がある。
【発明を実施するための最良の形態】
【００１０】
本発明の実施の形態にかかるプログラム書き換えシステムでは、フラッシュＲＯＭ内部の状態に応じて、書き換えプログラムの起動及び書き換え対象のプログラムを選択的に切り替えることが可能になる。
【００１１】
（実施の形態１）
以下では、本発明の実施の形態１について、図面を参照して説明する。
【００１２】
図１は本発明のプログラムの書き換えを実現するためのブロック図である。１０４の装置は、１０６のデータのやり取りを制御するための送受信部を使用し、１０５の外部通信インターフェース（ｂ）、１０３の通信路、１０５の外部装置付属の外部通信インターフェース（ａ）を経由して１０１の外部装置と通信を行う。１０７はプログラムの実行に必要な各種データ及びダウンロードしたファームウェアを一時的に記憶するためのＲＡＭである。１０８は全体を制御するためのＣＰＵである。１０９はプログラムを格納するフラッシュＲＯＭである。１１０はＥＥＰＲＯＭであり、装置に付与されるシリアル番号、出荷時の初期設定情報等を記憶する。１１１は装置付属のキーに該当する操作部を示す。１０１の外部装置から送信された更新用ファームウェアデータは、１０７のＲＡＭに一時的に記憶され、１０９のフラッシュＲＯＭに書き込まれる。
【００１３】
図２は本発明の実施の形態におけるプログラム書き換えステップのフローチャートである。ステップＳ２０１の起動プログラム判定ステップにより、書き換え状態フラグの状態と、キー状態からユーザープログラム、書き換えプログラムＡ、書き換えプログラムＢのいずれで起動するかを判定し起動させる。次にステップＳ２０２の書き換え対象判定ステップにより、ＰＣからヘッダを受信し、その中に含まれる書き換え対象情報を確認し、書き換え対象がユーザープログラムと書き換えプログラムのどちらであるかを判定する。書き換え対象情報が、書き換えプログラムであった場合、ステップＳ２０３の書き換えプログラム書き換えステップにより、ＰＣから受信したプログラムデータで、書き換えプログラムＡまたは書き換えプログラムＢを書き換える。それに成功した場合は、ステップＳ１０５の書き換え終了ステップにより、書き換え状態フラグとバージョン情報を更新し、失敗した場合はリトライできる。ステップＳ２０２において、書き換え対象がユーザープログラムと判定された場合、ステップＳ２０４のユーザープログラム書き換えステップにより、ＰＣから受信したプログラムデータで、ユーザープログラムを書き換える。それに成功した場合は、正常に終了し、失敗した場合はリトライできる。それに成功した場合は、ステップＳ２０５の書き換え終了ステップにより、書き換え状態フラグとバージョン情報を更新し、失敗した場合はリトライできる。
【００１４】
図３は、本発明における起動プログラム判定ステップの詳細を表したフローチャートである。まず、ステップＳ３０１の起動選択プログラムが起動し、ステップＳ３０２の書き換え状態フラグを確認し、“書き換え完了”または“書き換えプログラムＡ書き換え中”または“書き換えプログラムＢ書き換え中”であれば、ユーザープログラムは動作できるので、ステップＳ３０３のキー状態を確認し、特定のキーが押下されていなかった場合は、ステップＳ３０４のユーザープログラムで起動する。一方、ステップＳ３０３のキー状態確認で、特定のキーが押下されていた場合、またはステップＳ３０２において、書き換え状態フラグが“ユーザープログラム書き換え中”または“ユーザープログラム書き換え中／書き換えプログラムＡ書き換え中”または“ユーザープログラム書き換え中／書き換えプログラムＢ書き換え中”であった場合は、ステップＳ３０５の書き換えプログラムのバージョンを確認し、書き換えプログラムＢの方が新しい場合は、ステップＳ３０６の書き換えプログラムＢが起動し、書き換えプログラムＡの方が新しいまたは同一のバージョンであった場合は、ステップＳ３０７の書き換えプログラムＡが起動する。
【００１５】
図４は、本発明における書き換え対象判定ステップの詳細を表したフローチャートである。書き換えプログラムＡまたは書き換えプログラムＢは、ＰＣからヘッダを受信する（ステップＳ４０１）。次に、ステップＳ４０２の機種コードを確認する。フラッシュＲＯＭに保存された機種コードと一致しない場合は、書き換え動作を行わず、一致した場合はステップＳ４０３のバージョン確認を行い、バージョンダウンであれば書き換えを行わず、バージョンアップであればステップＳ４０４の書き換え対象情報を確認する。書き換え対象がユーザープログラムであれば、書き換え対象をユーザープログラムに設定（ステップＳ４０５）し、書き換え対象が書き換えプログラムであれば、書き換えプログラムに設定する（ステップＳ４０６）。
【００１６】
図５は、本発明における書き換えプログラムＡによるユーザープログラム書き換えステップの詳細を表したフローチャートである。まず、起動プログラムを確認し（ステップＳ５０１）、書き換えプログラムＡであれば、フラッシュＲＯＭに保存された書き換え状態フラグを確認し（ステップＳ５０２）、“書き換え完了”であれば、ステップＳ５０３の書き換え状態フラグを“ユーザープログラム書き換え中”に更新し、“書き換えプログラムＢ書き換え中”であれば、ステップＳ５０４の“ユーザープログラム書き換え中／書き換えプログラムＢ書き換え中”に更新し、“ユーザープログラム書き換え中”または“ユーザープログラム書き換え中／書き換えプログラムＢ書き換え中”であれば書き換え状態フラグを更新せず、それ以外の場合は、書き換えを行わない。ステップＳ５０５のユーザープログラムバージョン情報クリアを行った後、ステップＳ５０６のプログラムデータを受信し、ステップＳ５０７のユーザープログラムを書き換える。
【００１７】
図６、本発明における書き換えプログラムＢによるユーザープログラム書き換えステップの詳細を表したフローチャートである。まず、起動プログラムを確認し（ステップＳ６０１）、書き換えプログラムＢであれば、フラッシュＲＯＭに保存された書き換え状態フラグを確認し（ステップＳ６０２）、“書き換え完了”であれば、書き換え状態フラグを“ユーザープログラム書き換え中”に更新し（ステップＳ６０３）、“書き換えプログラムＡ書き換え中”であれば、“ユーザープログラム書き換え中／書き換えプログラムＡ書き換え中”に更新し（ステップＳ６０４）、“ユーザープログラム書き換え中”または“ユーザープログラム書き換え中／書き換えプログラムＡ書き換え中”であれば書き換え状態フラグを更新せず、それ以外の場合は、書き換えを行わない。ステップＳ６０５のユーザープログラムバージョン情報クリアを行った後、ステップＳ６０６のプログラムデータを受信し、ステップＳ６０７のユーザープログラムを書き換える。
【００１８】
図７は、本発明における書き換え対象が書き換えプログラムＢであった場合の書き換えプログラム書き換えステップの詳細を表したフローチャートである。書き換えプログラムＢの書き換えは、書き換えプログラムＡによって行われる。まず、起動プログラムを確認し（ステップＳ７０１）、書き換えプログラムＡであれば、フラッシュＲＯＭに保存された書き換え状態フラグを確認し（ステップＳ７０２）、“書き換え完了”であれば、書き換え状態フラグを“書き換えプログラムＢ書き換え中”に更新し（ステップＳ７０３）、“ユーザープログラム書き換え中”であれば、“ユーザープログラム書き換え中／書き換えプログラムＢ書き換え中”に更新し（ステップＳ７０４）、“書き換えプログラムＢ書き換え中”または“ユーザープログラム書き換え中／書き換えプログラムＢ書き換え中”であれば、書き換え状態フラグを更新せず、それ以外の場合は、書き換えを行わない。ステップＳ７０５の書き換えプログラムＢバージョン情報クリアを行った後、ステップＳ７０６のプログラムデータを受信し、ステップＳ７０７の書き換えプログラムＢを書き換える。
【００１９】
図８は、本発明における書き換え対象が書き換えプログラムＡであった場合の書き換えプログラム書き換えステップの詳細を表したフローチャートである。書き換えプログラムＡの書き換えは、書き換えプログラムＢによって行われる。まず、起動プログラムを確認し（ステップＳ８０１）、書き換えプログラムＢであれば、フラッシュＲＯＭに保存された書き換え状態フラグを確認し（ステップＳ８０２）、“書き換え完了”であれば、書き換え状態フラグを“書き換えプログラムＡ書き換え中”に更新し（ステップＳ８０３）、“ユーザープログラム書き換え中”であれば、“ユーザープログラム書き換え中／書き換えプログラムＡ書き換え中”に更新し（ステップＳ８０４）、“書き換えプログラムＡ書き換え中”または“ユーザープログラム書き換え中／書き換えプログラムＡ書き換え中”であれば、書き換え状態フラグを更新せず、それ以外の場合は、書き換えを行わない。ステップＳ８０５の書き換えプログラムＡバージョン情報クリアを行った後、ステップＳ８０６のプログラムデータを受信し、ステップＳ８０７の書き換えプログラムＡを書き換える。
【００２０】
図９は、本発明における書き換え対象がユーザープログラムであった場合の書き換え終了ステップの詳細を表したフローチャートである。まず、ステップＳ９０１の書き換え対象を確認し、ユーザープログラムであった場合、ステップＳ９０２の書き換え状態フラグを確認する。フラグが“ユーザープログラム書き換え中”であった場合は、書き換え状態フラグを“書き換え完了”に更新し（ステップＳ９０３）、“ユーザープログラム書き換え中／書き換えプログラムＡ書き換え中”であった場合は、“書き換えプログラムＡ書き換え中”に更新し（ステップＳ９０４）、“ユーザープログラム書き換え中／書き換えプログラムＢ書き換え中”であった場合は、“書き換えプログラムＢ書き換え中”に更新し（ステップＳ９０５）、それ以外の場合は、何も行わない。次に、ステップＳ９０６のヘッダに書き込まれたプログラムデータのバージョンで、ユーザープログラムバージョン情報を更新する。
【００２１】
図１０は、本発明における書き換え対象が書き換えプログラムＡであった場合の書き換え終了ステップの詳細を表したフローチャートである。まず、ステップＳ１００１の書き換え対象情報を確認し、書き換えプログラムＡであった場合は、ステップＳ１００２の書き換え状態フラグを確認し、“書き換えプログラムＡ書き換え中”であれば、書き換え状態フラグを“書き換え完了”に更新し（ステップＳ１００３）、“ユーザープログラム書き換え中／書き換えプログラムＡ書き換え中”の場合は、“ユーザープログラム書き換え中”に更新し（ステップＳ１００４）、その他の場合は、何も行わない。次に、ステップＳ１００５のヘッダに書き込まれたプログラムデータのバージョンで、書き換えプログラムＡバージョン情報を更新する。
【００２２】
図１１は、本発明における書き換え対象が書き換えプログラムＢであった場合の書き換え終了ステップの詳細を表したフローチャートである。まず、ステップＳ１１０１の書き換え対象情報を確認し、書き換えプログラムＢであった場合は、ステップＳ１１０２の書き換え状態フラグを確認し、“書き換えプログラムＢ書き換え中”であれば、書き換え状態フラグを“書き換え完了”に更新し（ステップＳ１１０３）、“ユーザープログラム書き換え中／書き換えプログラムＢ書き換え中”の場合は、“ユーザープログラム書き換え中”に更新し（ステップＳ１１０４）、その他の場合は、何も行わない。次に、ステップＳ１１０５のヘッダに書き込まれたプログラムデータのバージョンで、書き換えプログラムＢバージョン情報を更新する。
【００２３】
図１２は、フラッシュＲＯＭ内部のプログラムのマッピングを示したものである。１２０１の起動選択プログラムは電源起動時に動作し、ユーザープログラムと書き換えプログラムＡ、書き換えプログラムＢのいずれで起動するかを選択的に切り替えるプログラムである。１２０２のユーザープログラムは、本体機能を実現するためのプログラムである。１２０３の書き換え状態フラグは、現在の書き換えの進捗状況を示すものであり、“書き換え完了”、“ユーザープログラム書き換え中”、“書き換えプログラムＡ書き換え中”、“書き換えプログラムＢ書き換え中”、“ユーザープログラム／書き換えプログラムＡ書き換え中”、“ユーザープログラム／書き換えプログラムＢ書き換え中”という６つの状態を有する。起動選択プログラムは、書き換え状態フラグの状態からどのプログラムを起動させるかを決定する。１２０４の機種コードは、デバイス自身を示すもので、他のデバイスのプログラムを誤って書き込むことを防止するために記憶されている。１２０５のユーザープログラムバージョン情報は、ユーザープログラムのバージョンを示し、１２０６の書き換えプログラムＡバージョン情報は、書き換えプログラムＡのバージョンを示し、１２０７の書き換えプログラムＢバージョン情報は、書き換えプログラムＢのバージョン情報を示す。これらは、バージョンダウン防止判定に用いられ、それぞれのプログラム書き換え開始直後に消去、書き換え完了時に更新される。書き換えプログラムＡおよび書き換えプログラムＢバージョン情報は、起動選択プログラムが、書き換えプログラム起動時により新しい書き換えプログラムを起動させるための判定に用いられる。１２０８の書き換えプログラムＡは、フラッシュＲＯＭ内部を書き換えるプログラムで、ユーザープログラムまたは書き換えプログラムＢを書き換える。１２０９の書き換えプログラムＢは、フラッシュＲＯＭ内部を書き換えるプログラムで、ユーザープログラムまたは書き換えプログラムＡを書き換える。
【００２４】
図１３は、ＰＣから送信されるプログラム書き換え用データの構成を示す。１３０１はヘッダを示し、ヘッダには、どのプログラム書き換え用データであるかを示す１３０２の書き換え対象情報と、１３０３の機種コードと、１３０４のプログラムデータのバージョンが含まれる。１３０５のプログラムデータは、書き換え用のプログラムデータである。
【００２５】
（実施の形態２）
以下では、本発明の実施の形態２について、図面を参照して説明する。なお、実施の形態２によるプログラムの書き換え方法は、実施の形態１と同様に図１のブロック図に表される装置によって実現される。
【００２６】
図１４は本発明のプログラムの書き換えを実現するためのシーケンスである。まず、ステップＳ１４０１の書き換えプログラムＡまたはＢが起動し、ステップＳ１４０２のユーザープログラムの書き換え処理を行う。ユーザープログラムの書き換えでエラーを検出した場合には、ユーザープログラムの書き換えをリトライし（ステップＳ１４０３）、エラーを検出しなかった場合は、処理を終了する。リトライでエラーを検出した場合には（ステップＳ１４０４）、ユーザープログラムの書き換えプログラムにバグがあると判断し、書き換えプログラムＡまたはＢを起動し、書き換えプログラムＢまたはＡの書き換え処理を行う（ステップＳ１４０５）。その後、書き換えプログラムＢまたはＡを起動してユーザープログラムの書き換え処理を行う（ステップＳ１４０６）。書き換えプログラムＢまたはＡによるユーザープログラムの書き換え処理が成功すれば、一連の処理を終了する。
【００２７】
具体的には、書き換えプログラムＡまたはＢにユーザープログラム書き換え時のバグがある場合に、有効な方法となる。また、ユーザープログラム以外のプログラム（例えばＥＥＰＲＯＭのデータや、他のマイコンのプログラム）を書き換える機能を付加したい場合、ステップＳ１４０３の書き換えプログラムＡ書き換え処理により、書き換えプログラムＡを書き換え、ステップＳ１４０４のユーザープログラム書き換え処理を行うことで、書き換えの機能追加を実現できる。なお、この一連のシーケンスは、連続的に処理しても、書き換え処理毎に装置の再起動を行ってもよい。
【００２８】
図１５は本発明のプログラム書き換えを実現するためのシーケンスである。まず、ステップＳ１５０１の書き換えプログラムＡまたはＢが起動し、ステップＳ１５０２の書き換えプログラムＢまたはＡの書き換え処理を行う。書き換えプログラムＢまたはＡの書き換えでエラーを検出した場合には、該プログラムの書き換えをリトライし（ステップＳ１５０３）、エラーを検出しなかった場合は、処理を終了する。リトライでエラーを検出した場合には（ステップＳ１５０４）、書き換えプログラムＢまたはＡを書き換える書き換えプログラムＡまたはＢにバグがあると判断し、書き換えプログラムＡまたはＢを起動し、ユーザープログラムの書き換え処理を行う（ステップＳ１５０５）。書き換えプログラムＡまたはＢによるユーザープログラムの書き換え処理が成功すれば、一連の処理を終了する。
具体的には、書き換えプログラムＡまたはＢに、書き換えプログラムの書き換え時のバグがあるが、ユーザープログラムの書き換えは正常に行える場合に、有効な方法となる。これに失敗した場合でも、ステップＳ１５０３のユーザープログラム書き換え処理を行い、成功した場合、書き換えプログラムＡは壊れているが、書き換えプログラムＡの書き換えリトライをしなくても装置を通常動作させられる。
【産業上の利用可能性】
【００２９】
本発明のプログラム書き換えシステムによれば、ユーザープログラムばかりでなく書き換えプログラムも安全かつ確実に書き換えられるので、様々なデバイスへ利用可能である。
【図面の簡単な説明】
【００３０】
【図１】本発明の実施の形態１における装置のブロック図
【図２】本発明の実施の形態１における方法のフローチャート
【図３】プログラム判定ステップのフローチャート
【図４】書き換え対象判定ステップのフローチャート
【図５】書き換えプログラムＡによるユーザープログラム書き換えステップのフローチャート
【図６】書き換えプログラムＢによるユーザープログラム書き換えステップのフローチャート
【図７】書き換え対象が書き換えプログラムＢであった場合の、書き換えステップのフローチャート
【図８】書き換え対象が書き換えプログラムＡであった場合の、書き換えステップのフローチャート
【図９】ユーザープログラムの書き換え終了時の書き換え終了ステップのフローチャート
【図１０】書き換えプログラムＡの書き換え終了時の書き換え終了ステップのフローチャート
【図１１】書き換えプログラムＢの書き換え終了時の書き換え終了ステップのフローチャート
【図１２】本発明の実施の形態におけるフラッシュＲＯＭのプログラムマッピング図
【図１３】本発明の実施の形態におけるＰＣから送信されるプログラム書き換え用データ構成図
【図１４】本発明の実施の形態２における方法のフローチャート
【図１５】本発明の実施の形態２における別の方法のフローチャート
【符号の説明】
【００３１】
１０１    外部装置
１０２    外部通信インターフェース（ａ）
１０３    通信路
１０４    装置
１０５    外部通信インターフェース（ｂ）
１０６    送受信部
１０７    ＲＡＭ
１０８    ＣＰＵ
１０９    フラッシュＲＯＭ
１１０    ＥＥＰＲＯＭ
１１１    操作部
１２０１    起動選択プログラム
１２０２    ユーザープログラム
１２０３    書き換え状態フラグ
１２０４    機種コード
１２０５    ユーザープログラムバージョン情報
１２０６    書き換えプログラムＡバージョン情報
１２０７    書き換えプログラムＢバージョン情報
１２０８    書き換えプログラムＡ
１２０９    書き換えプログラムＢ
１３０１    ヘッダ
１３０２    書き換え対象情報
１３０３    機種コード
１３０４    プログラムデータのバージョン
１３０５    プログラムデータ
【図１】
2010033486.tif 000003
【図２】
2010033486.tif 000004
【図３】
2010033486.tif 000005
【図４】
2010033486.tif 000006
【図５】
2010033486.tif 000007
【図６】
2010033486.tif 000008
【図７】
2010033486.tif 000009
【図８】
2010033486.tif 000010
【図９】
2010033486.tif 000011
【図１０】
2010033486.tif 000012
【図１１】
2010033486.tif 000013
【図１２】
2010033486.tif 000014
【図１３】
2010033486.tif 000015
【図１４】
2010033486.tif 000016
【図１５】
2010033486.tif 000017