(57)【要約】    【課題】      端末装置内に記録されたプログラムの更新に要する作業時間を短縮すること。    【解決手段】  本発明は、Ｆｌａｓｈ  ＲＯＭ等の書換え可能な不揮発性メモリ内に格納されたプログラムを更新する際に、格納されているプログラムの更新が必要な部分が含まれている不揮発性メモリのブロック内のプログラム部分をＲＡＭに展開し、展開したプログラム部分のうち更新が必要な部分のみを外部から指示し更新する。そして、不揮発性メモリの該当するブロックを消去しＲＡＭ内において更新したプログラム部分を再び不揮発性メモリの消去したブロックに記録するようにした。  【選択図】      図３
2004152279.tif 000002
【特許請求の範囲】
【請求項１】
複数のブロックからなる書換え可能な不揮発性メモリに格納されているプログラムを更新する際に、前記プログラムの更新対象部分を格納する前記ブロック内のプログラム部分をＲＡＭに展開し、外部インターフェースを通じて指示された書換え指示に従って、前記ＲＡＭに展開された前記プログラム部分の前記更新対象部分のみを更新し、更新した前記プログラム部分を前記不揮発性メモリに一括して書き戻すことを特徴とするプログラム更新方法。
【請求項２】
前記書換え指示は、前記更新対象部分が更新に伴ってサイズが大きくなる場合に、前記不揮発性メモリに格納時における前記更新対象部分と前記更新対象部分の後続部分との相対位置を広げるように、前記後続部分を前記ＲＡＭに展開する際に移動する指示であることを特徴とする請求項１に記載のプログラム更新方法。
【請求項３】
前記書換え指示は、前記後続部分を特定するためのアドレス情報と、前記後続部分を前記ＲＡＭ内において展開する先頭アドレスと、であることを特徴とする請求項２に記載のプログラム更新方法。
【請求項４】
前記後続部分を特定するためのアドレス情報は、前記不揮発性メモリ内または前記ＲＡＭ内における前記後続部分の先頭アドレスとデータ数であることを特徴とする請求項３に記載のプログラム更新方法。
【請求項５】
前記後続部分を特定するためのアドレス情報は、前記不揮発性メモリ内または前記ＲＡＭ内における前記後続部分の先頭アドレスと終了アドレスであることを特徴とする請求項３に記載のプログラム更新方法。
【請求項６】
前記後続部分の前記ＲＡＭ内の移動に関する情報を前記ＲＡＭ内のプログラムが展開された領域とは別の領域に記録し、
前記書換え指示により、前記不揮発性メモリもしくは前記ＲＡＭのアドレスが指示された場合に、指示された前記アドレスに格納されている絶対アドレス値を前記移動に関する情報に従って修正することを特徴とする請求項２から請求項５のいずれかに記載のプログラム更新方法。
【請求項７】
前記移動に関する情報は、前記後続部分の格納場所を特定するためのアドレス情報と、前記後続部分を前記ＲＡＭ内において展開する先頭アドレスと、であることを特徴とする請求項６に記載のプログラム更新方法。
【請求項８】
前記後続部分を特定するためのアドレス情報は、前記不揮発性メモリ内または前記ＲＡＭ内における前記後続部分の先頭アドレスとデータ数、もしくは前記不揮発性メモリ内または前記ＲＡＭ内における前記後続部分の先頭アドレスと終了アドレスであることを特徴とする請求項７に記載のプログラム更新方法。
【請求項９】
前記後続部分を前記ＲＡＭ内において展開する先頭アドレスは、前記不揮発性メモリ内または前記ＲＡＭ内における前記後続部分の先頭アドレスからの相対アドレスであることを特徴とする請求項７または請求項８に記載のプログラム更新方法。
【請求項１０】
書換え指示は、前記不揮発性メモリ内もしくは前記ＲＡＭ内のアドレスを指示し、指示された前記アドレスに格納されている絶対アドレス指定分岐命令が使用する絶対アドレス値を、前記移動に関する情報に従って修正することを特徴とする請求項６から請求項９のいずれかに記載のプログラム更新方法。
【請求項１１】
書換え指示は、前記不揮発性メモリ内もしくは前記ＲＡＭ内のアドレスを指示し、指示された前記アドレスに格納されている絶対アドレス指定関数呼出命令が使用する絶対アドレス値を、前記移動に関する情報に従って修正することを特徴とする請求項６から請求項９のいずれかに記載のプログラム更新方法。
【請求項１２】
書換え指示は、前記不揮発性メモリ内もしくは前記ＲＡＭ内のアドレスを指示し、指示されたアドレスに格納されている相対アドレス値を、前記移動に関する情報に従って修正することを特徴とする請求項６から請求項９のいずれかに記載のプログラム更新方法。
【請求項１３】
書換え指示は、前記不揮発性メモリ内もしくは前記ＲＡＭ内のアドレスを指示し、指示された前記アドレスに格納されている相対アドレス指定分岐命令が使用する相対アドレス値を、前記移動に関する情報に従って修正することを特徴とする請求項６から請求項９のいずれかに記載のプログラム更新方法。
【請求項１４】
書換え指示は、前記不揮発性メモリ内もしくは前記ＲＡＭ内のアドレスを指示し、指示されたアドレスに格納されている相対アドレス指定関数呼出命令が使用する相対アドレス値を、前記移動に関する情報に従って修正することを特徴とする請求項６から請求項９のいずれかに記載のプログラム更新方法。
【請求項１５】
前記移動に関する情報に従って前記プログラムの相対アドレス値を修正する際に、修正後の前記相対アドレスが相対アドレス指定可能な範囲を越える場合に絶対アドレス値に変換することを特徴とする請求項１２から請求項１４のいずれかに記載のプログラム更新方法。
【請求項１６】
前記移動に関する情報に従って前記プログラムの相対アドレス値を修正し修正後の前記相対アドレスを絶対アドレス値に変換する際に、修正前の前記相対アドレス値を使用する相対アドレス指定分岐命令を絶対アドレス指定分岐命令に変換することを特徴とする請求項１３に記載のプログラム更新方法。
【請求項１７】
前記移動に関する情報に従って前記プログラムの相対アドレス値を修正し修正後の前記相対アドレスを絶対アドレス値に変換する際に、修正前の前記相対アドレス値を使用する相対アドレス指定関数呼出命令を絶対アドレス指定関数呼出命令に変換することを特徴とする請求項１４に記載のプログラム更新方法。
【請求項１８】
前記書換え指示は、前記不揮発性メモリ内または前記ＲＡＭに展開された前記プログラム部分の開始アドレスと書換えるデータの数および連続する実書換えデータであることを特徴とする請求項１に記載のプログラム更新方法。
【請求項１９】
前記書換え指示は、前記不揮発性メモリ内または前記ＲＡＭに展開された前記プログラム部分の開始アドレスと連続する実書換えデータおよび書換え終了を示す特別なデータであることを特徴とする請求項１に記載のプログラム更新方法。
【請求項２０】
前記書換え指示におけるアドレス指定は、最初のアドレス指定は絶対アドレスで行い、それ以降のアドレス指定は直前に指定されたアドレスからの相対アドレスであることを特徴とする請求項３から請求項１９のいずれかに記載のプログラム更新方法。
【請求項２１】
前記書換え指示におけるアドレス指示は、最初のアドレス指定は絶対アドレスで行い、それ以降のアドレス指定は前記アドレス指定されたアドレスからの連続する書換え処理終了時のアドレスからの相対アドレスであることを特徴とする請求項３から請求項１９のいずれかに記載のプログラム更新方法。
【請求項２２】
前記書換え指示におけるアドレス指定は、最初のアドレス指定は予め決められた特定のアドレスを基準とし、それ以降は直前に指定されたアドレスを基準とした相対アドレス指示であることを特徴とする請求項３から請求項１９のいずれかに記載のプログラム更新方法。
【請求項２３】
前記書換え指示におけるアドレス指定は、最初のアドレス指定は予め決められた特定のアドレスを基準とし、それ以降のアドレス指定は前記アドレス指定されたアドレスからの連続する書換え処理終了時のアドレスからの相対アドレス指示であることを特徴とする請求項３から請求項１９のいずれかに記載のプログラム更新方法。
【請求項２４】
複数のブロックにプログラムを格納する書換え可能な不揮発性メモリと、ＲＡＭと、前記プログラムの書換え指示を受ける外部インターフェースと、前記プログラムの更新対象部分を格納する前記ブロック内のプログラム部分をＲＡＭに展開し、前記書換え指示に従って、前記ＲＡＭに展開された前記プログラム部分の前記更新対象部分のみを更新し、更新した前記プログラム部分を前記不揮発性メモリに一括して書き戻す制御部と、を具備したことを特徴とする端末装置。
【請求項２５】
前記外部インターフェースは、有線接続インターフェースであることを特徴とする請求項２４記載の端末装置。
【請求項２６】
前記外部インターフェースは、無線接続インターフェースであることを特徴とする請求項２４記載の端末装置。
【請求項２７】
前記外部インターフェースはメモリカードインターフェースであり、前記制御部は、前記メモリカードインターフェースに挿入されたメモリカードから前記書換え指示を読出すことを特徴とする請求項２４記載の端末装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、端末装置内のＦｌａｓｈ  ＲＯＭ等の書換え可能な不揮発性メモリに記録されたプログラム更新方法および端末装置に関する。
【背景技術】
【０００２】
従来より、端末装置は、Ｆｌａｓｈ  ＲＯＭ等の書換え可能な不揮発性メモリに、端末装置を制御するためのＣＰＵの動作を指示する制御用ソフトウェア（プログラム）を格納している。
【０００３】
このような端末装置において、制御ソフトウェアに不具合が発見された場合に、制御ソフトウェアを更新する方法が提案されている（例えば、特許文献１参照）。
【０００４】
特許文献１に記載された方法は、まず、不具合を修正した新しい制御ソフトウェアを作成する。次に、不具合が記録された書換え可能な不揮発性メモリを一度消去し新しい制御ソフトウェアを記録する。このようにして、制御ソフトウェアの更新を行っている。
【特許文献１】特開２００１−１５４８３８号公報（第３−５頁、第３図）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上述したようなＦｌａｓｈ  ＲＯＭ等の書換え可能な不揮発性メモリを一度消去し新しい制御ソフトウェアを記録する制御ソフトウェアの更新方法では、Ｆｌａｓｈ  ＲＯＭ等の不揮発性メモリの制約上、メモリ内を複数のブロックに分割し、分割されたブロック単位でしか古い制御ソフトウェアの消去および新しい制御ソフトウェアの記録を行うことができない。
【０００６】
そのために、例え１バイトの修正であった場合も、不揮発性メモリのブロックが１６キロバイトや６４キロバイト単位であった場合は、１６キロバイトないしは６４キロバイト全体を消去し、不具合を修正した新しい制御ソフトウェアを１６キロバイトないしは６４キロバイト分、装置外部から転送して不揮発性メモリに記録する必要がある。
【０００７】
このため、端末装置の制御ソフトウェアの更新に際しては、装置外部から転送するデータ量が多くなり、データ転送に要する時間も含めた作業時間が増大するという問題点がある。
【０００８】
本発明は、端末装置の装置内に記録されたプログラムの更新に要する作業時間の短縮を目的とする。
【課題を解決するための手段】
【０００９】
この課題を解決するために本発明は、Ｆｌａｓｈ  ＲＯＭ等の書換え可能な不揮発性メモリ内に格納されたプログラムを更新する際に、格納されているプログラムの更新が必要な部分が含まれている不揮発性メモリのブロック内のプログラム部分をＲＡＭに展開し、展開したプログラム部分のうち更新が必要な部分のみを外部から指示し更新する。そして、不揮発性メモリの該当するブロックを消去しＲＡＭ内において更新したプログラム部分を再び不揮発性メモリの消去したブロックに記録する。
【発明の効果】
【００１０】
このように、更新が必要な部分を含むプログラム部分をＲＡＭに展開することにより、プログラム部分のうち更新が必要な部分のみを更新することができる。これにより、更新が必要な部分のみを指示すればよく、プログラム部分全てに関する更新情報を指示する必要がなくなる。つまり、装置外部から転送する書換え指示を削減できるので、データ伝送に要する時間を含むプログラムの更新作業時間の短縮を達成することができる。
【発明を実施するための最良の形態】
【００１１】
本発明の第１の態様にかかるプログラム更新方法は、複数のブロックからなる書換え可能な不揮発性メモリに格納されているプログラムを更新する際に、前記プログラムの更新対象部分を格納する前記ブロック内のプログラム部分をＲＡＭに展開し、外部インターフェースを通じて指示された書換え指示に従って、前記ＲＡＭに展開された前記プログラム部分の前記更新対象部分のみを更新し、更新した前記プログラム部分を前記不揮発性メモリに一括して書き戻すものである。
【００１２】
これにより、更新が必要な部分を含むプログラム部分をＲＡＭに展開することにより、プログラム部分のうち更新が必要な部分のみを更新することができる。これにより、更新が必要な部分のみを指示すればよく、プログラム部分全てに関する更新情報を指示する必要がなくなる。つまり、装置外部から転送する書換え指示を削減できるので、データ転送時間を含むプログラムの更新作業時間の短縮を達成することができる。
【００１３】
また、ＲＡＭ内でプログラム部分の更新を完了してから、不揮発性メモリに書き込むことができる。これにより、例えば、不揮発性メモリを消去して、不揮発性メモリに更新プログラムをダウンロードする方法のように、不揮発性メモリに更新プログラム情報を書き込み中に通信が途切れた場合に、更新プログラムの書き込みを失敗するだけでなく、不揮発性メモリに記憶してあった元のプログラムまでも消失してしまうという事態を回避できる。
【００１４】
本発明の第２の態様は、第１の態様にかかるプログラム更新方法において、前記書換え指示は、前記更新対象部分が更新に伴ってサイズが大きくなる場合に、前記不揮発性メモリに格納時における前記更新対象部分と前記更新対象部分の後続部分との相対位置を広げるように、前記後続部分を前記ＲＡＭに展開する際に移動する指示である。
【００１５】
これにより、書き換え部分のプログラムのコード（即値データを含む）量が大きくなった場合にも、書き換えの必要のない部分のコードを移動することができるため、書き換えた部分の後続のコードに関する情報を必要とせずにプログラムの書き換えを行うことができる。そのため、装置外部から転送する書換え指示を削減できる。この結果、データ転送時間を含むプログラムの更新作業時間の短縮を達成することができる。
【００１６】
本発明の第３の態様は、第２の態様にかかるプログラム更新方法において、前記書換え指示は、前記後続部分を特定するためのアドレス情報と、前記後続部分を前記ＲＡＭ内において展開する先頭アドレスと、である。
【００１７】
これにより、後続部分の指定を後続部分の実体ではなく、アドレス情報により行える。この結果、書換え指示のデータ量を削減でき、データ転送時間を含むプログラムの更新作業時間の短縮ができる。
【００１８】
本発明の第４の態様は、第３の態様にかかるプログラム更新方法において、前記後続部分を特定するためのアドレス情報は、前記不揮発性メモリ内または前記ＲＡＭ内における前記後続部分の先頭アドレスとデータ数である。
【００１９】
これにより、後続部分の指定を少ないデータ量でできる。
【００２０】
本発明の第５の態様は、第３の態様にかかるプログラム更新方法において、前記後続部分を特定するためのアドレス情報は、前記不揮発性メモリ内または前記ＲＡＭ内における前記後続部分の先頭アドレスと終了アドレスである。
【００２１】
これにより、後続部分の指定を少ないデータ量でできる。
【００２２】
本発明の第６の態様は、第２の態様から第５の態様のいずれかにかかるプログラム更新方法において、前記後続部分の前記ＲＡＭ内の移動に関する情報を前記ＲＡＭ内のプログラムが展開された領域とは別の領域に記録し、前記書換え指示により、前記不揮発性メモリもしくは前記ＲＡＭのアドレスが指示された場合に、指示された前記アドレスに格納されている絶対アドレス値を前記移動に関する情報に従って修正する。
【００２３】
これにより、後続部分のＲＡＭ内の移動に関する情報の記録を達成することができる。この結果、移動に関する情報を用いて、絶対アドレス値を自動的に修正できる。よって、外部からの指示のデータ量を削減できる。
【００２４】
本発明の第７の態様は、第６の態様にかかるプログラム更新方法において、前記移動に関する情報は、前記後続部分の格納場所を特定するためのアドレス情報と、前記後続部分を前記ＲＡＭ内において展開する先頭アドレスと、である。
【００２５】
これにより、プログラム更新時における移動に関する情報を記録することができる。また、後続部分をアドレス情報により指定できるので、データ量を削減できる。
【００２６】
本発明の第８の態様は、第７の態様にかかるプログラム更新方法において、前記後続部分を特定するためのアドレス情報は、前記不揮発性メモリ内または前記ＲＡＭ内における前記後続部分の先頭アドレスとデータ数、もしくは前記不揮発性メモリ内または前記ＲＡＭ内における前記後続部分の先頭アドレスと終了アドレスである。
【００２７】
これにより、後続部分の指定をアドレスにより行える。
【００２８】
本発明の第９の態様は、第７の態様または第８の態様にかかるプログラム更新方法において、前記後続部分を前記ＲＡＭ内において展開する先頭アドレスは、前記不揮発性メモリ内または前記ＲＡＭ内における前記後続部分の先頭アドレスからの相対アドレスである。
【００２９】
これにより、後続部分の指定をアドレスにより行える。
【００３０】
本発明の第１０の態様は、第６の態様から第９の態様のいずれかにかかるプログラム更新方法において、書換え指示は、前記不揮発性メモリ内もしくは前記ＲＡＭ内のアドレスを指示し、指示された前記アドレスに格納されている絶対アドレス指定分岐命令が使用する絶対アドレス値を、前記移動に関する情報に従って修正する。
【００３１】
これにより、絶対アドレス指定分岐命令が使用する絶対アドレス値を自動的に修正できるので、外部から指示するデータ量を削減できる。この結果、データ転送時間を含むプログラムの更新作業時間の短縮を達成することができる。
【００３２】
本発明の第１１の態様は、第６の態様から第９の態様のいずれかにかかるプログラム更新方法において、書換え指示は、前記不揮発性メモリ内もしくは前記ＲＡＭ内のアドレスを指示し、指示された前記アドレスに格納されている絶対アドレス指定関数呼出命令が使用する絶対アドレス値を、前記移動に関する情報に従って修正する。
【００３３】
これにより、絶対アドレス指定関数呼出命令が使用する絶対アドレス値を自動的に修正できるので、外部から指示するデータ量を削減できる。この結果、データ転送時間を含むプログラムの更新作業時間の短縮を達成することができる。
【００３４】
本発明の第１２の態様は、第６の態様から第９の態様のいずれかにかかるプログラム更新方法において、書換え指示は、前記不揮発性メモリ内もしくは前記ＲＡＭ内のアドレスを指示し、指示されたアドレスに格納されている相対アドレス値を、前記移動に関する情報に従って修正する。
【００３５】
これにより、相対アドレス値を自動的に修正できるので、外部から指示するデータ量を削減できる。この結果、データ転送時間を含むプログラムの更新作業時間の短縮を達成することができる。
【００３６】
本発明の第１３の態様は、第６の態様から第９の態様のいずれかにかかるプログラム更新方法において、書換え指示は、前記不揮発性メモリ内もしくは前記ＲＡＭ内のアドレスを指示し、指示された前記アドレスに格納されている相対アドレス指定分岐命令が使用する相対アドレス値を、前記移動に関する情報に従って修正する。
【００３７】
これにより、相対アドレス指定分岐命令が使用する相対アドレス値を自動的に修正できるので、外部から指示するデータ量を削減できる。この結果、データ転送時間を含むプログラムの更新作業時間の短縮を達成することができる。
【００３８】
本発明の第１４の態様は、第６の態様から第９の態様のいずれかにかかるプログラム更新方法において、書換え指示は、前記不揮発性メモリ内もしくは前記ＲＡＭ内のアドレスを指示し、指示されたアドレスに格納されている相対アドレス指定関数呼出命令が使用する相対アドレス値を、前記移動に関する情報に従って修正する。
【００３９】
これにより、相対アドレス指定関数呼出命令が使用する相対アドレス値を自動的に修正できるので、外部から指示するデータ量を削減できる。この結果、データ転送時間を含むプログラムの更新作業時間の短縮を達成することができる。
【００４０】
本発明の第１５の態様は、第１２の態様から第１４の態様のいずれかにかかるプログラム更新方法において、前記移動に関する情報に従って前記プログラムの相対アドレス値を修正する際に、修正後の前記相対アドレスが相対アドレス指定可能な範囲を越える場合に絶対アドレス値に変換する。
【００４１】
このように、変換を行うことで、相対アドレス指定可能な範囲を超えたアドレス指定が必要な場合にも、更新後のプログラムに変更するためのアドレスデータを外部インターフェースからダウンロードすることが不要となるので、外部インターフェースから指示するデータ量を削減できる。この結果、データ転送時間を含むプログラムの更新作業時間の短縮を達成することができる。
【００４２】
本発明の第１６の態様は、第１３の態様にかかるプログラム更新方法において、前記移動に関する情報に従って前記プログラムの相対アドレス値を修正し修正後の前記相対アドレスを絶対アドレス値に変換する際に、修正前の前記相対アドレス値を使用する相対アドレス指定分岐命令を絶対アドレス指定分岐命令に変換する。
【００４３】
このように、変換を行うことで、相対アドレス指定の分岐命令が利用された場合に、相対アドレス指定分岐命令で利用可能なアドレスの範囲を超えた場合にも、更新後のプログラムに変更するための相対アドレス指定分岐命令から絶対アドレス指定分岐命令への変換指示データを外部インターフェースからダウンロードすることが不要となるので、外部インターフェースから指示するデータ量を削減できる。この結果、データ転送時間を含むプログラムの更新作業時間の短縮を達成することができる。
【００４４】
本発明の第１７の態様は、第１４の態様にかかるプログラム更新方法において、前記移動に関する情報に従って前記プログラムの相対アドレス値を修正し修正後の前記相対アドレスを絶対アドレス値に変換する際に、修正前の前記相対アドレス値を使用する相対アドレス指定関数呼出命令を絶対アドレス指定関数呼出命令に変換する。
【００４５】
このように、変換を行うことで、相対アドレス指定による関数呼び出し命令が利用された場合に、相対アドレス指定関数呼び出しで利用可能なアドレスの範囲を超えた場合にも、更新後のプログラムに変更するための相対アドレス指定関数呼出命令から絶対アドレス指定関数呼出命令への変換指示データを外部インターフェースからダウンロードすることが不要となるので、外部インターフェースから指示するデータ量を削減できる。この結果、データ転送時間を含むプログラムの更新作業時間の短縮を達成することができる。
【００４６】
本発明の第１８の態様は、第１の態様にかかるプログラム更新方法において、前記書換え指示は、前記不揮発性メモリ内または前記ＲＡＭに展開された前記プログラム部分の開始アドレスと書換えるデータの数および連続する実書換えデータである。
【００４７】
これにより、更新するプログラム部分の指定を実データでなく、アドレスとデータ数という簡単な情報により指定できる。この結果、書換え指示のデータ量の削減ができ、プログラム更新の短縮ができる。
【００４８】
本発明の第１９の態様は、第１の態様にかかるプログラム更新方法において、前記書換え指示は、前記不揮発性メモリ内または前記ＲＡＭに展開された前記プログラム部分の開始アドレスと連続する実書換えデータおよび書換え終了を示す特別なデータである。
【００４９】
これにより、更新するプログラム部分の指定を実データでなく、アドレスという簡単な情報により指定できる。また、書換え終了もアドレスでなく、特別なデータにより行える。この結果、書換え指示のデータ量の削減ができ、プログラム更新の短縮ができる。
【００５０】
本発明の第２０の態様は、第３の態様から第１９の態様のいずれかにかかるプログラム更新方法において、前記書換え指示におけるアドレス指定は、最初のアドレス指定は絶対アドレスで行い、それ以降のアドレス指定は直前に指定されたアドレスからの相対アドレスである。
【００５１】
これにより、最初のアドレス指定以降のアドレス指示を相対アドレスで指定できる。相対アドレスは絶対アドレスよりデータ量が少ないので、装置外部から転送する書換え指示を削減でき、データ転送時間を含むプログラムの更新作業時間の短縮を達成することができる。
【００５２】
本発明の第２１の態様は、第３の態様から第１９の態様のいずれかにかかるプログラム更新方法において、前記書換え指示におけるアドレス指示は、最初のアドレス指定は絶対アドレスで行い、それ以降のアドレス指定は前記アドレス指定されたアドレスからの連続する書換え処理終了時のアドレスからの相対アドレスである。
【００５３】
これにより、最初のアドレス指定以降のアドレス指示を相対アドレスで指定できる。相対アドレスは絶対アドレスよりデータ量が少ないので、装置外部から転送する書換え指示を削減でき、データ転送時間を含むプログラムの更新作業時間の短縮を達成することができる。
【００５４】
本発明の第２２の態様は、第３の態様から第１９の態様のいずれかにかかるプログラム更新方法において、前記書換え指示におけるアドレス指定は、最初のアドレス指定は予め決められた特定のアドレスを基準とし、それ以降は直前に指定されたアドレスを基準とした相対アドレス指示である。
【００５５】
これにより、最初のアドレス指定以降のアドレス指示を相対アドレスで指定できる。相対アドレスは絶対アドレスよりデータ量が少ないので、装置外部から転送する書換え指示を削減でき、データ転送時間を含むプログラムの更新作業時間の短縮を達成することができる。
【００５６】
本発明の第２３の態様は、第３の態様から第１９の態様のいずれかにかかるプログラム更新方法において、前記書換え指示におけるアドレス指定は、最初のアドレス指定は予め決められた特定のアドレスを基準とし、それ以降のアドレス指定は前記アドレス指定されたアドレスからの連続する書換え処理終了時のアドレスからの相対アドレス指示である。
【００５７】
これにより、最初のアドレス指定以降のアドレス指示を相対アドレスで指定できる。相対アドレスは絶対アドレスよりデータ量が少ないので、装置外部から転送する書換え指示を削減でき、データ転送時間を含むプログラムの更新作業時間の短縮を達成することができる。
【００５８】
本発明の第２４の態様にかかる端末装置は、複数のブロックにプログラムを格納する書換え可能な不揮発性メモリと、ＲＡＭと、前記プログラムの書換え指示を受ける外部インターフェースと、前記プログラムの更新対象部分を格納する前記ブロック内のプログラム部分をＲＡＭに展開し、前記書換え指示に従って、前記ＲＡＭに展開された前記プログラム部分の前記更新対象部分のみを更新し、更新した前記プログラム部分を前記不揮発性メモリに一括して書き戻す制御部と、を具備した構成を採る。
【００５９】
これにより、データ転送時間を含む更新作業時間を短縮したプログラムの更新を達成することができる。
【００６０】
本発明の第２５の態様は、第２４の態様にかかる端末装置において、前記外部インターフェースは、有線接続インターフェースである。
【００６１】
これにより、有線接続インターフェースを使用して外部より書換え指示を与えることによって、不揮発性メモリを取り出してプログラムの更新をする必要がなくなり、更新作業時間を短縮したプログラムの更新を達成することができる。
【００６２】
本発明の第２６の態様は、第２４の態様にかかる端末装置において、前記外部インターフェースは、無線接続インターフェースである。
【００６３】
これにより、無線接続インターフェースを使用して外部より書換え指示を与えることによって、不揮発性メモリを取り出してプログラムの更新をする必要がなくなり、更新作業時間を短縮したプログラムの更新を達成することができる。
【００６４】
本発明の第２７の態様は、第２４の態様にかかる端末装置において、前記外部インターフェースはメモリカードインターフェースであり、前記制御部は、前記メモリカードインターフェースに挿入されたメモリカードから前記書換え指示を読出す。
【００６５】
これにより、外部より書換え指示をできるので、不揮発性メモリを取り出してプログラムの更新をする必要がなくなり、更新作業時間を短縮したプログラムの更新を達成することができる。
【００６６】
以下、本発明の実施の形態について、添付図面を用いて説明する。
【００６７】
（実施の形態１）
図１は、本発明の実施の形態１における端末装置のブロック図の一例である。図１において、１で示されるものは端末装置である。
【００６８】
端末装置１は、外部との信号の送受信をする外部接続インターフェース１１と、端末装置１を制御する制御ＣＰＵ１２と、書換え可能な不揮発性メモリであるＦｌａｓｈ  ＲＯＭ１３と、ＲＡＭ１４と、が各機能ブロックを接続するデータバス１５を介して接続された構成を採る。
【００６９】
外部インターフェース１１としては、有線接続インターフェースや無線接続インターフェースが考えられる。また、外部インターフェース１１として、メモリカードインターフェースを用いてもよい。この場合は、制御ＣＰＵ１２が、メモリカードインターフェースに挿入されたメモリカードから各種情報を読み出す。
【００７０】
なお、外部インターフェース１１が、有線接続インターフェースや無線接続インターフェースの場合に、それらが、ネットワークと接続している場合には、ＨＴＴＰやＦＴＰ、ＴＦＴＰその他の伝送プロトコルによってデータを入力することができる。また、有線接続、無線接続、メモリカードインターフェースなどの外部インターフェースによる入力の場合にも、入力された情報は、制御ＣＰＵ１２を介してＲＡＭ１４または、ＦＬＡＳＨ  ＲＯＭ１３に記録される。なお、本構成においては制御ＣＰＵ１２を介してデータの記録を行うが、ＤＭＡ転送が可能な場合などには、ＤＭＡ転送を利用してデータのコピーを行っても良い。
【００７１】
次に、端末装置１におけるメモリマップの一例を図２に示す。
【００７２】
図２に示すように、データバス１５に接続されたＦｌａｓｈ  ＲＯＭ１３のメモリ領域２０１は、制御ＣＰＵ１２が制御するメモリ空間中の十六進数００００００００番地（以下０ｘ００００００００と表記する）から０ｘ０００５ＦＦＦＦまでである。また、ＲＡＭ１４のメモリ領域２０２は、０ｘ００１０００００から０ｘ００１５ＦＦＦＦまで存在するものとする。また、Ｆｌａｓｈ  ＲＯＭ１３の消去単位は６４キロバイト単位とし、すなわち０ｘ００００００００〜０ｘ００００ＦＦＦＦ、０ｘ０００１００００〜０ｘ０００１ＦＦＦＦ・・とする。
【００７３】
上記のように構成された端末装置１について、図３に示すフローチャートを用いてその動作を説明する。
【００７４】
ステップＳ１０１において、端末装置１の制御ＣＰＵ１２は、図１中に示されていない外部装置から外部接続インターフェース１１を通してＲＡＭ１４中の任意の領域（ここでは仮に図２中の０ｘ００１０００００から始まる領域とする）に書換え指示を読み込む。
【００７５】
また、ここでＦｌａｓｈ  ＲＯＭ１３に格納されている制御ソフトウェアの書換えるべきアドレスとデータは、図４に示す通りであるとする。
【００７６】
また、図４に示すように制御ソフトウェアの書換える部分をアドレスで指示することにより、書換える部分を実データにより指示する必要がなくなり、書換え指示のデータ量の削減ができ、プログラム更新の短縮ができる。
【００７７】
次に、ステップＳ１０２において、制御ＣＰＵ１２は、Ｆｌａｓｈ  ＲＯＭ１３内の書換えブロックを決定する。例えば、制御ＣＰＵ１２は、図４中の書換えアドレスを検査することにより、Ｎｏ．１〜Ｎｏ．６までの書換え指示がＦｌａｓｈ  ＲＯＭ１３の０ｘ０００１００００〜０ｘ０００１ＦＦＦＦまでのブロック内の書換えであると判断する。
【００７８】
次に、ステップＳ１０３において、制御ＣＰＵ１２は、ステップＳ１０２で決定した書換え該当ブロックを、ステップＳ１０１においてＲＡＭ１４中の書換え指示が読み込まれた領域以外の任意の領域（ここでは仮に図２中の０ｘ００１１００００〜０ｘ００１１ＦＦＦＦとする）に展開する。
【００７９】
さらに、制御ＣＰＵ１２は、ステップＳ１０４において、図４中の書換え指示Ｎｏ．１が指示するアドレス０ｘ０００１００３０が展開されているＲＡＭ内のアドレス０ｘ００１１００３０のデータを０ｘ４３に更新する。
【００８０】
次に、ステップＳ１０５において、制御ＣＰＵ１２は、ステップＳ１０２において決定した書換え該当ブロック内の書換え指示がすべて処理されたかを判定する。この場合は、制御ＣＰＵ１２は、書換え指示Ｎｏ．２〜Ｎｏ．６が残っているのでステップＳ１０４に遷移し、以下同様に書換え指示Ｎｏ．２〜Ｎｏ．６に従ってＲＡＭ内に展開された制御ソフトウェアを更新する。
【００８１】
書換え指示Ｎｏ．６の処理終了後は、制御ＣＰＵ１２は、ステップＳ１０５において、書換え該当ブロック内の書換え指示がすべて処理されたと判定できるので、ステップＳ１０６に遷移する。
【００８２】
次に、制御ＣＰＵ１２は、ステップＳ１０６において、Ｆｌａｓｈ  ＲＯＭ１３内の該当するブロック０ｘ０００１００００〜０ｘ０００１ＦＦＦＦを消去する。そして、制御ＣＰＵ１２は、ＲＡＭ１４内の０ｘ００１１００００〜０ｘ００１１ＦＦＦＦの領域に格納されている更新済みの制御ソフトウェアをＦｌａｓｈ  ＲＯＭ１３内の消去済みの該当するブロックに記録する。
【００８３】
次に、制御ＣＰＵ１２は、ステップＳ１０７において読み込んだすべての書換え指示を処理したかを判定する。この場合は、制御ＣＰＵ１２は、書換え指示Ｎｏ．７以降の指示が残っているのでステップＳ１０２に遷移する。
【００８４】
次に、制御ＣＰＵ１２は、ステップＳ１０２において、図４中の書換え指示Ｎｏ．７以降の書換えアドレスを検査することにより、Ｎｏ．７〜Ｎｏ．１０までの書換え指示はＦｌａｓｈ  ＲＯＭ１３の０ｘ０００２００００〜０ｘ０００２ＦＦＦＦまでのブロック内の書換えであると判断する。
【００８５】
次に、制御ＣＰＵ１２は、ステップＳ１０３において、該当するブロックをＲＡＭ１４中の書換え指示が読み込まれた領域以外の任意の領域（ここでは仮に図２中の０ｘ００１１００００〜０ｘ００１１ＦＦＦＦとする）に展開する。さらに、制御ＣＰＵ１２は、ステップＳ１０４において、図４中の書換え指示Ｎｏ．７が指示するアドレス０ｘ０００２１０００が展開されているＲＡＭ１４内のアドレス０ｘ００１１１０００のデータを０ｘ１Ｆに更新する。
【００８６】
以下、制御ＣＰＵ１２は、同様に書換え指示Ｎｏ．８〜Ｎｏ．１０に従ってＲＡＭ内に展開された制御ソフトウェアを更新する。さらに、ステップＳ１０６において、制御ＣＰＵ１２は、Ｆｌａｓｈ  ＲＯＭ１３内の該当するブロックを消去する。そして、制御ＣＰＵ１２は、ＲＡＭ１４内の０ｘ００１１００００〜０ｘ００１１ＦＦＦＦの領域に格納されている更新済みの制御ソフトウェアをＦｌａｓｈ  ＲＯＭ１３内の消去済みの該当するブロックに記録する。
【００８７】
以上の処理をステップＳ１０７において、端末装置１内に読み込んだ書換え指示の処理がすべて終了したと判定されるまで繰り返す。
【００８８】
以上説明したように、実施の形態１によれば、更新が必要な部分を含むプログラム部分をＲＡＭ１４に展開することにより、プログラム部分のうち更新が必要な部分のみを更新することができる。これにより、更新が必要な部分のみを指示すればよく、プログラム部分全てに関する更新情報を指示する必要がなくなる。つまり、端末装置１への外部から転送する書換え指示を削減できる。この結果、データ転送時間を含むＦｌａｓｈ  ＲＯＭ１３に格納されている制御プログラムの更新作業時間の短縮を達成することができる。
【００８９】
また、ＲＡＭ１４内で制御プログラムプログラム部分の更新を完了してから、Ｆｌａｓｈ  ＲＯＭ１３を消去してＦｌａｓｈ  ＲＯＭ１３に書き込むことができる。これにより、例えば、Ｆｌａｓｈ  ＲＯＭ１３内の制御プログラムのうちで、変更の不要な部分のみをＲＡＭ１４内に退避し、次にＦｌａｓｈ  ＲＯＭ１３を消去して、更新プログラム部分をダウンロードしながらＦｌａｓｈ  ＲＯＭ１３に書き込む方法のように、Ｆｌａｓｈ  ＲＯＭ１３に更新プログラム情報を書き込み中に通信が途切れた場合に、更新プログラムの書き込みを失敗するだけでなく、Ｆｌａｓｈ  ＲＯＭ１３に記憶してあった元のプログラムまでも消失してしまうという事態を回避できる。つまり、たとえ更新プログラム情報を書き込み中に通信が途切れた場合としても、Ｆｌａｓｈ  ＲＯＭ１３に更新前のプログラム部分が残っているので、復元できる。
【００９０】
また、実施の形態１によれば、外部インターフェース１１を使用して外部より書換え指示を与えることによって、Ｆｌａｓｈ  ＲＯＭ１３を取り出してプログラムの更新をする必要がなくなり、更新作業時間を短縮したプログラムの更新を達成することができる。
【００９１】
なお、図２に示すメモリ空間は、制御ＣＰＵ１２、Ｆｌａｓｈ  ＲＯＭ１３およびＲＡＭ１４の機種やアーキテクチャ、また端末装置１に搭載するデータ量によって変化しても構わない。
【００９２】
また、本実施の形態においてはＦｌａｓｈ  ＲＯＭ１３を使用しているが、書換え可能な不揮発性メモリであればＥＥＰＲＯＭ等であっても構わない。
【００９３】
また、本実施の形態では、制御ソフトウェアの更新単位を６４キロバイトとしているが、６４キロバイトである必要はなく、Ｆｌａｓｈ  ＲＯＭ１３等の不揮発性メモリの機種に依存する消去ブロックサイズに依存して決定される。また、同様に本実施の形態では書き換えバイト数を１バイトとして記述を行ったが、書き換えデータは１バイトである必要はなく、例えば、２バイト、４バイトなど任意のアドレス指定の方法によって指定可能なデータ量を同時に書き換えることにしても構わない。
【００９４】
また、図４においてはＦｌａｓｈ  ＲＯＭ１３内の書換え対象アドレスを絶対アドレスで指定したが、図５に示すように最初のアドレスのみ絶対アドレスで指定し、それ以降のアドレスに関しては直前に使用したアドレスからの相対値で指定することも可能である。例えば、図５の例では、書換え指示ＮＯ．２の示す書換えアドレスは、書換え指示ＮＯ．１の示す書換えアドレスから０ｘ１後ろのアドレスであることを示す。
【００９５】
これにより、絶対アドレスよりデータ量の少ない相対アドレスで書換え指示を行えるので、書換え指示のデータ量を減らすことができる。
【００９６】
（実施の形態２）
本発明の実施の形態２にかかる端末装置について説明する。
【００９７】
本発明の実施の形態２における端末装置の機能ブロックの一例およびメモリマップの一例は、実施の形態１の端末装置と同様であり、それぞれ図１および図２に示すものと同じであるものとする。
【００９８】
実施の形態１においては、図４に示すような不揮発性メモリ内の書換え対象アドレス４０１と書換えデータ４０２の組合せを書換え指示としたが、実施の形態２では図６に示すような書換え指示命令５０１と、命令を実行するためのデータ５０２、５０３の組合せを書換え指示とした。これによっても、実施の形態１と同様の効果を得ることができる。
【００９９】
例えば、図６における書換え指示ＮＯ．１は、ＲＡＭ１４への展開指示である。書換え指示ＮＯ．１を受けた場合、制御ＣＰＵ１２は、データ１を展開元のアドレス５０４とし、データ２を展開先のアドレス５０５として、Ｆｌａｓｈ  ＲＯＭ１３からＲＡＭ１４へプログラムを展開する。
【０１００】
また、図６に示す書換え指示ＮＯ．８は、Ｆｌａｓｈ  ＲＯＭ１３へ書戻す指示である。書換え指示ＮＯ．８を受けた制御ＣＰＵ１２は、書換え指示に続くデータ２から始まるＦｌａｓｈ  ＲＯＭ１３のブロックを消去後、データ１を展開元のアドレス５０６とし、データ２を記録先のアドレス５０７として、ＲＡＭ１４上のプログラムをＦｌａｓｈ  ＲＯＭ１３へ記録する。
【０１０１】
また、書換え指示ＮＯ．２〜Ｎｏ．７およびＮｏ．１０〜ＮＯ．１３は、データ書換えの指示である。データ書換えの指示を受けた場合、制御ＣＰＵ１２は、データ１を書換える対象アドレス５０８とし、データ２を実書換えデータ５０９であるとしてＲＡＭ上のデータを書換える。
【０１０２】
以下、書換え指示として図６が与えられた場合の動作について、図７に示すフローチャートを用いて説明する。
【０１０３】
まず、ステップＳ１１０において、Ｆｌａｓｈ  ＲＯＭ１３に格納されたプログラムの書換え指示として、図６に示す指示が与えられた場合、制御ＣＰＵ１２は、外部接続インターフェース１１を通してＲＡＭ１４中の任意の領域に図６に示す書換え指示Ｎｏ．１を読み込む。
【０１０４】
読み込まれた指示Ｎｏ．１は、ステップＳ１１１において、制御ＣＰＵ１２により、書換え終了か調べられる。指示ＮＯ．１は書換え終了指示ではないので、制御ＣＰＵ１２は、ステップＳ１１２に遷移する。
【０１０５】
次に、ステップＳ１１２において、制御ＣＰＵ１２は、指示ＮＯ．１がＲＡＭ１４への展開指示であるか調べる。指示Ｎｏ．１は、ＲＡＭ１４への展開指示であるので、制御ＣＰＵ１２は、ステップＳ１１５へ遷移する。
【０１０６】
ステップＳ１１５において、制御ＣＰＵ１２は、指示に続くデータに従ってＦｌａｓｈ  ＲＯＭ１３上の０ｘ０００１００００から始まるブロック、すなわち実施の形態２においては０ｘ０００１００００〜０ｘ０００１ＦＦＦＦまでをＲＡＭ１４上の０ｘ００１１００００〜０ｘ００１１ＦＦＦＦに展開する。そして、制御ＣＰＵ１２は、ステップ１１０に遷移する。
【０１０７】
次に、ステップＳ１１０において、制御ＣＰＵ１２は、指示Ｎｏ．２を読み込む。読み込まれた指示Ｎｏ．２は、制御ＣＰＵ１２により、指示Ｎｏ．１と同様にステップＳ１１１およびＳ１１２でそれぞれ指示内容を調べられる。しかし、指示ＮＯ．２は、ステップＳ１１１およびステップＳ１１２の分岐条件に一致しない。よって、制御ＣＰＵ１２は、ステップＳ１１３に遷移する。
【０１０８】
ステップＳ１１３において、制御ＣＰＵ１２は、指示Ｎｏ．２をデータ書換え指示であると判断するのでステップＳ１１６に遷移する。
【０１０９】
ステップＳ１１６において、制御ＣＰＵ１２は、指示に続くデータに従ってアドレス０ｘ００１１００３０に格納されているデータを０ｘ４３へ書換える。
【０１１０】
次に、制御ＣＰＵ１２は、上述した処理と同様の処理を指示Ｎｏ．７まで繰り返した後、ステップＳ１１０において指示Ｎｏ．８を読み込む。次に、制御ＣＰＵ１２は、上述した処理と同様にステップＳ１１１〜Ｓ１１３において指示内容を調べる。そして、制御ＣＰＵ１２は、ステップＳ１１４に遷移する。
【０１１１】
ステップＳ１１４において、制御ＣＰＵ１２は、指示Ｎｏ．８をＦｌａｓｈ  ＲＯＭ１３への書戻し指示であると判断するので、ステップＳ１１７に遷移する。
【０１１２】
次に、制御ＣＰＵ１２は、ステップＳ１１７において、指示に続くデータに従ってＲＡＭ１４内に展開されたプログラムをＦｌａｓｈ  ＲＯＭ１３内の該当するブロック０ｘ０００１００００〜０ｘ０００１ＦＦＦＦに記録する処理に移行する。まず、制御ＣＰＵ１２は、ＲＡＭ１４内のブロック０ｘ０００１００００〜０ｘ０００１ＦＦＦＦを一度消去する。次に、制御ＣＰＵ１２は、ＲＡＭ１４内のブロック０ｘ００１１００００〜０ｘ００１１ＦＦＦＦの内容をＦｌａｓｈ  ＲＯＭ１３のブロック０ｘ０００１００００〜０ｘ０００１ＦＦＦＦに記録する。
【０１１３】
そして、制御ＣＰＵ１２は、以上の処理を図６によって与えられたすべての書換え指示に対して順次行う。
【０１１４】
以上説明したように、実施の形態２によれば、端末装置１内のＦｌａｓｈ  ＲＯＭ１３に格納されている制御ソフトウェアのうち、更新が必要なデータだけを端末内に読み込んで更新することができる。これにより、端末装置１内のＦｌａｓｈ  ＲＯＭ１３内記録されたソフトウェアの更新時間短縮を達成することができる。
【０１１５】
なお、実施の形態２においては、図６に例示した書換え指示は図１中の外部インターフェース１１を通じて与えられるが、指示内容を逐次与えながら書換え処理を行ってもよい。また、一括して与えて端末装置１内のＲＡＭ１４に格納し、格納した指示に基づいて書換え処理を行っても構わない。
【０１１６】
また、上記説明では、図７において、読み込んだ指示の内容を調べる各処理をステップＳ１１１，Ｓ１１２，Ｓ１１３，Ｓ１１４の順序で行っているが、この順序を任意に変更しても同様の効果を得ることができる。
【０１１７】
（実施の形態３）
実施の形態１においては、図４に示すような不揮発性メモリであるＦｒａｓｈ  ＲＯＭ１３内の書換え対象アドレス４０１と書換えデータ４０２の組合せを書換え指示としたが、実施の形態３では図８に示すような書換え開始アドレス８０１と、書換えデータ数８０２および書換えデータ数８０２分の実書換えデータ８０３の組合せを書換え指示とする。これにより、実施の形態１と同様の効果を得ることができる。
【０１１８】
なお、本発明の実施の形態３における端末装置の機能ブロックの一例およびメモリマップの一例は実施の形態１と同じであり、それぞれ図１および図２に示す。
【０１１９】
以下、書換え指示として図８を与えた場合の端末装置１の動作について、図９に示すフローチャートを用いて説明する。
【０１２０】
ステップＳ１２１において、端末装置１に対してＦｌａｓｈ  ＲＯＭ１３に格納されたプログラムの書換え指示として図８に示す指示が与えられた場合、制御ＣＰＵ１２は、外部接続インターフェース１１を通してＲＡＭ１４中の任意の領域（ここでは仮に図２中の０ｘ００１０００００から始まる領域とする）に図８に示す書換え指示を読み込む。
【０１２１】
次に、制御ＣＰＵ１２は、ステップＳ１２２において、図８中の書換え開始アドレスを検査する。そして、制御ＣＰＵ１２は、書換え指示Ｎｏ．１およびＮｏ．２をＦｌａｓｈ  ＲＯＭ１３の０ｘ０００１００００〜０ｘ０００１ＦＦＦＦまでのブロック内の書換えであると判断する。
【０１２２】
次に、ステップＳ１２３において、制御ＣＰＵ１２は、ステップＳ１２２において判断したブロックをＲＡＭ１４中の書換え指示が読み込まれた領域以外の任意の領域（ここでは仮に図２中の０ｘ００１１００００〜０ｘ００１１ＦＦＦＦとする）に展開する。
【０１２３】
さらに、制御ＣＰＵ１２は、ステップＳ１２４において、図８中の書換え指示Ｎｏ．１からＦｌａｓｈ  ＲＯＭ１３の０ｘ０００１００３０が展開されているＲＡＭ１４のアドレス０ｘ００１１００３０が書換え開始アドレスであり、また書換えデータ数は０ｘ０４であると決定する。
【０１２４】
次に、ステップＳ１２５において、制御ＣＰＵ１２は、図８の指示Ｎｏ．１の書換えデータに基づきアドレス０ｘ００１１００３０の内容を０ｘ４３に変更する。
【０１２５】
次に、ステップＳ１２６において、制御ＣＰＵ１２は、書換えアドレスを１増加させ、０ｘ００１１００３１とする。次に、ステップＳ１２７において、制御ＣＰＵ１２は、書換えデータ数を１減少させ０ｘ０３とする。次に、ステップＳ１２８において、制御ＣＰＵ１２は、書換えデータ数が０であるか検査し、０でない場合はステップＳ１２５に遷移する。
【０１２６】
そして、制御ＣＰＵ１２は、以上のステップＳ１２５〜Ｓ１２８の処理を書換えデータ数が０になるまで繰り返す。
【０１２７】
そして、書換えデータ数が０になった場合、ステップＳ１２９において、制御ＣＰＵ１２は、ステップＳ１２２で決定した書換え該当ブロック内のすべての書換え指示が処理されたかを判定する。そして、ブロック内のすべての書換え指示が処理されていない場合は、制御ＣＰＵ１２は、ステップＳ１２４へと遷移する。そして、制御ＣＰＵ１２は、ステップＳ１２４〜Ｓ１２９の処理をブロック内のすべての書換え指示が処理されるまで繰り返す。
【０１２８】
一方、書換え該当ブロック内のすべての書換え指示がすべて処理された場合、次にステップＳ１３０において、制御ＣＰＵ１２は、Ｆｌａｓｈ  ＲＯＭ１３内のステップＳ１２２で決定した該当ブロックを消去する。そして、制御ＣＰＵ１２は、ＲＡＭ１４内の０ｘ００１１００００〜０ｘ００１１ＦＦＦＦの領域に格納されている更新済みの制御ソフトウェアをＦｌａｓｈ  ＲＯＭ１３内の消去済みの該当ブロックに記録する。
【０１２９】
次に、制御ＣＰＵ１２は、ステップＳ１３１において図８に例示された書換え指示に対するすべての処理が完了したか判断する。そして、完了していない場合は、制御ＣＰＵ１２は、ステップＳ１２２に遷移する。
【０１３０】
そして、制御ＣＰＵ１２は、以上のステップＳ１２２〜Ｓ１３１の処理をすべての書換え指示に対する処理が終了するまで繰り返す。
【０１３１】
以上説明したように、実施の形態３によれば、端末装置１内のＦｌａｓｈ  ＲＯＭ１３に格納されている制御ソフトウェアのうち、更新が必要なデータだけを端末装置１内に読み込んで更新することができる。
【０１３２】
また、本実施の形態３においては、図８に示した書換え開始アドレス８０１と書換えデータ数８０２および実書換えデータ８０３の組合せを書換え指示としたが、図１０に示した書換え開始アドレス１００１と書換え終了アドレス１００２および実書換えデータ１００３の組合せを書換え指示としてもよい。この場合、例えば図１０の書換え指示Ｎｏ．１の書換え開始アドレス０ｘ０００１００３０と書換え終了アドレス０ｘ０００１００３３を比較すると実際に書換えるデータ数は０ｘ０４であることが導き出せる。これにより、図１０に示した書換え指示を用いても、図８に示した書換え指示と同様の効果を得ることができる。
【０１３３】
また、本実施の形態３においては、図８に示した書換え開始アドレス８０１と書換えデータ数８０２および実書換えデータ８０３の組合せを書換え指示としたが、図１１に示した書換え開始アドレス１１０１と実書換えデータ１１０２および書換え終了１１０３を示す特別なデータの組合せを書換え指示としてもよい。この場合、例えば図１１の書換え指示Ｎｏ．１においては書換え開始アドレス０ｘ０００１００３０からのプログラムが展開されているＲＡＭ１４内のアドレス０ｘ００１１００３０のデータが０ｘ４３に更新される。また、アドレス０ｘ００１１００３１のデータが０ｘＢＦに、アドレス０ｘ００１１００３２のデータが０ｘ００に、そして０ｘ００１１００３３のデータが０ｘ１０に更新される。
【０１３４】
このように、０ｘ１０に続くデータが書換え終了を示す特別なデータであることから、特別なデータの次のデータは、次の書換え開始アドレスと判断することができる。これにより、上記処理を繰り返すことによって、図１１に示した書換え指示でも図８に示した書換え指示と同様の効果を得ることができる。
【０１３５】
また、本実施の形態３においては、ステップＳ１２６において書換えアドレスを１増加させ、次にステップＳ１２７において書換えデータ数を１減少させたが、先に書換えデータ数を１減少させ、次に書換えアドレスを１増加させても同様の効果を得ることができる。
【０１３６】
（実施の形態４）
実施の形態３においては、図８に示すような不揮発性メモリ内の書換え開始アドレス８０１と書換えデータ数８０２および実書換えデータ８０３の組合せを書換え指示としたが、実施の形態４は図１２に示すような書換え指示命令を含む指示１２０１と、命令を実行するためのデータ１２０２の組合せを書換え指示とするものである。これによっても、実施の形態３と同様の効果を得ることができる。
【０１３７】
また、本発明の実施の形態４における端末装置の機能ブロックの一例およびメモリマップの一例は、実施の形態１と同様であり、それぞれ図１および図２に示す。
【０１３８】
以下、書換え指示として図１２を与えた場合の動作について、図１３に示すフローチャートを用いて説明する。
【０１３９】
なお、図１２における書換え指示の動作のうち、ＲＡＭへ展開とＲＯＭへの書戻しについては、本発明の実施の形態２と同様である。また、書換えは、指示に続くデータによって示されるアドレスに対して、アドレスに続くデータによって示されるデータ数分の連続する実データを用いて書換えることを示す。
【０１４０】
ステップＳ１４１において、Ｆｌａｓｈ  ＲＯＭ１３に格納されたプログラムの書換え指示として図１２に示す指示が与えられた場合、制御ＣＰＵ１２は、指示Ｎｏ．１を読み込む。
【０１４１】
次に、ステップＳ１４２において、制御ＣＰＵ１２は、読み込んだ指示が書換え終了指示であるか調べる。そして、書換え終了指示でない場合は、制御ＣＰＵ１２は、ステップＳ１４３に遷移する。
【０１４２】
ステップＳ１４３において、制御ＣＰＵ１２は、読み込んだ指示がＲＡＭ１４への展開指示であるか調べる。そして、制御ＣＰＵ１２は、ＲＡＭ１４への展開指示の場合はステップＳ１４４へ、またＲＡＭ１４への展開指示でない場合はステップＳ１４５へ遷移する。
【０１４３】
ステップＳ１４４において、読み込んだ指示が図１２の指示Ｎｏ．１の場合はＲＡＭへの展開指示である。よって、制御ＣＰＵ１２は、Ｆｌａｓｈ  ＲＯＭ１３内のアドレス０ｘ０００１００００〜０ｘ０００１ＦＦＦＦまでをＲＡＭ１４内のアドレス０ｘ００１１００００〜０ｘ００１１ＦＦＦＦに展開する。そして、その後、制御ＣＰＵ１２は、ステップＳ１４１に遷移する。
【０１４４】
次に、読み込んだ指示が図１２の指示Ｎｏ．２の場合は、制御ＣＰＵ１２は、ステップＳ１４１にて指示を読み込む。そして、その後、制御ＣＰＵ１２は、ステップＳ１４２，Ｓ１４３の処理を経てステップＳ１４５へ遷移する。
【０１４５】
ステップＳ１４５においては、制御ＣＰＵ１２は、読み込んだ指示がデータ書換え指示であるか調べる。データ書換え指示の場合は、制御ＣＰＵ１２は、ステップＳ１４６へ遷移する。また、読み込んだ指示がデータ書換え指示でない場合は、制御ＣＰＵ１２は、ステップＳ１５１へ遷移する。
【０１４６】
図１２の指示Ｎｏ．２の場合はデータ書換え指示である。よって、制御ＣＰＵ１２はステップＳ１４６に遷移する。
【０１４７】
ステップＳ１４６においては、制御ＣＰＵ１２は、図１２の書換え指示Ｎｏ．２から、ＲＡＭ１４のアドレス０ｘ００１１００３０が書換え開始アドレスであり、また書換えデータ数は０ｘ０４であると決定する。
【０１４８】
次に、ステップＳ１４７において、制御ＣＰＵ１２は、図１２の指示Ｎｏ．２の書換えデータに基づきアドレス０ｘ００１１００３０の内容を０ｘ４３に変更する。次に、制御ＣＰＵ１２は、ステップＳ１４８において書換えアドレスを１増加させ０ｘ００１１００３１とする。
【０１４９】
次に、ステップＳ１４９において、制御ＣＰＵ１２は、書換えデータ数を１減少させ、０ｘ０３とする。
【０１５０】
次に、ステップＳ１５０において、制御ＣＰＵ１２は、書換えデータ数が０であるか検査し、０でない場合はステップＳ１４７に遷移する。
【０１５１】
そして、制御ＣＰＵ１２は、以上のステップＳ１４７〜Ｓ１５０の処理を書換えデータ数が０になるまで繰り返す。書換えデータ数が０になった場合、制御ＣＰＵ１２は、ステップＳ１４１に遷移する。
【０１５２】
また、図１２の指示Ｎｏ．４の場合は、制御ＣＰＵ１２は、ステップＳ１４１にて指示を読み込む。そして、その後、制御ＣＰＵ１２は、ステップＳ１４２，Ｓ１４３，Ｓ１４５の処理を経てステップＳ１５１へ遷移する。そして、ステップＳ１５１において、制御ＣＰＵ１２は、読み込んだ指示がＲＯＭ１３への書き戻し指示であるか調べ、ＲＯＭ１３への書き戻し指示の場合はステップＳ１５２へ遷移し、またＲＯＭ１３への書き戻し指示でない場合はステップＳ１４１へ遷移する。
【０１５３】
図１２の指示Ｎｏ．４の場合は、ＲＯＭ１３への書き戻し指示である。よって、制御ＣＰＵ１２はステップＳ１５２へ遷移する。
【０１５４】
ステップＳ１５２において、制御ＣＰＵ１２は、読み込んだＲＯＭへの書き戻し指示が示すＦｌａｓｈ  ＲＯＭ１３内の該当ブロック、すなわち図１２に例示する指示Ｎｏ．４の場合は０ｘ０００１００００〜０ｘ０００１ＦＦＦＦを消去する。次に、制御ＣＰＵ１２は、指示Ｎｏ．４の示すＲＡＭ１４内の０ｘ００１１００００〜ｘ００１１ＦＦＦＦに格納されている更新済みの制御ソフトウェアをＦｌａｓｈ  ＲＯＭ１３内の消去済みの該当ブロックに記録する。そして、制御ＣＰＵ１２は、ステップＳ１４１に遷移する。
【０１５５】
制御ＣＰＵ１２は、以上の処理をステップＳ１４１で読み込んだ指示がステップＳ１４２において書換え終了指示であると判定されるまで順次繰り返す。
【０１５６】
以上説明したように、実施の形態４によれば、端末装置１内のＦｌａｓｈ  ＲＯＭ１３に格納されている制御ソフトウェアのうち、更新が必要なデータだけを端末装置１内に読み込んで更新することができる。
【０１５７】
なお、本実施の形態４においては、図１２に例示した書換え指示は図１中の外部インターフェース１１を通じて与えられるが、指示内容は逐次与えながら書換え処理を行ってもよい。また、一括して与えて装置内のＲＡＭ１４に格納し、格納した指示に基づいて書換え処理を行っても構わない。
【０１５８】
また、本実施の形態４においては、ステップＳ１４１において読み込んだ指示に対してステップＳ１４２，Ｓ１４３，Ｓ１４５，Ｓ１５１の順に指示内容の判定処理を行う場合を示したが、この判定の順番は任意に入れ替えることができる。
【０１５９】
また、本実施の形態４においては、ステップＳ１４８において書換えアドレスを１増加させ、次に、ステップＳ１４９において書換えデータ数を１減少させたが、先に書換えデータ数を１減少させ、次に書換えアドレスを１増加させても同様の効果を得ることができる。
【０１６０】
（実施の形態５）
図１４は本発明の実施の形態５におけるプログラムのＭｏｄｕｌｅ構成であり、図１４（Ａ）は不具合修正前の構成を、また、図１４（Ｂ）は不具合修正後の構成を示している。
【０１６１】
すなわち図１４（Ａ）に示すプログラムは、Ｍｏｄｕｌｅ  Ａ１４０１、Ｍｏｄｕｌｅ  Ｂ１４０２，Ｍｏｄｕｌｅ  Ｃ１４０３の３Ｍｏｄｕｌｅから構成されている。図１４（Ａ）に示すプログラム、つまり修正前のプログラムは、Ｍｏｄｕｌｅ  Ａが０ｘ００００００００〜０ｘ０００００１ＦＦ、Ｍｏｄｕｌｅ  Ｂが０ｘ０００００２００〜０ｘ０００００２１Ｆ、Ｍｏｄｕｌｅ  Ｃが０ｘ０００００２２０〜０ｘ０００００５ＦＦに配置されている。
【０１６２】
また、図１４（Ｂ）に示すプログラムは、図１４（Ａ）に示すプログラムを修正した結果、Ｍｏｄｕｌｅ  Ｂ１４０２が変更され、Ｍｏｄｕｌｅ  Ｂ’１４０４として０ｘ０００００２００〜０ｘ０００００２２Ｆに配置されている。また、Ｍｏｄｕｌｅ  Ａは図１４（Ａ）から変更ない。また、Ｍｏｄｕｌｅ  Ｃは内容の変更はないが配置が０ｘ０００００２３０〜０ｘ０００００６０Ｆに移動している。
【０１６３】
本発明の実施の形態５における端末装置１の機能ブロックの一例およびメモリマップの一例は図１および図２と同じであるとする。
【０１６４】
以下、図１４（Ａ）のプログラムがＦｌａｓｈ  ＲＯＭ１３に記録されている場合において、端末装置１が、図１４（Ａ）のプログラムをプログラムの図１４（Ｂ）のプログラムへ更新する方法について説明する。ここでは、端末装置１が、図１５に示す書換え指示を受けた場合の動作について、図１６に示したフローチャートを用いて説明する。
【０１６５】
なお、図１５における指示１５０１がＲＡＭ１４へ展開の場合は、指示１５０１に続くデータ１５０２が展開元の開始アドレス１５０３、展開元の開始アドレス１５０３に続くデータが展開元の終了アドレス１５０４、展開元の終了アドレス１５０４に続くデータが、展開先のアドレス１５０５となる。そして、制御ＣＰＵ１２が、これらのデータを用いて、Ｆｌａｓｈ  ＲＯＭ１３からＲＡＭ１４へデータを展開する。
【０１６６】
このように、展開するデータの指定を実体ではなく、アドレス情報により行っている。これにより、書換え指示のデータ量を削減でき、データ転送時間を含むプログラムの更新作業時間の短縮ができる。
【０１６７】
また、ＲＯＭ１３への書戻しについては、本発明の実施の形態２において説明した動作と同じであり、書換えについては本発明の実施の形態４において説明した動作と同じである。
【０１６８】
ステップＳ１６１において、Ｆｌａｓｈ  ＲＯＭ１３に格納されたプログラムの書換え指示として図１５に示す指示１５０１が外部接続インターエース１１を通して与えられた場合、制御ＣＰＵ１２は指示Ｎｏ．１を読み込む。
【０１６９】
次に、ステップＳ１６２において、制御ＣＰＵ１２は、読み込んだ指示が書換え終了であるか調べる。そして、書換え終了指示でない場合は、制御ＣＰＵ１２は、ステップＳ１６３へ遷移する。
【０１７０】
ステップＳ１６３においては、制御ＣＰＵ１２は、読み込んだ指示がＲＡＭ１４への展開指示であるか調べる。そして、ＲＡＭ１４への展開指示の場合は、制御ＣＰＵ１２は、ステップＳ１６６へ遷移する。また、ＲＡＭ１４への展開指示でない場合は、制御ＣＰＵ１２は、ステップＳ１６４へ遷移する。
【０１７１】
図１５の指示Ｎｏ．１の場合はＲＡＭへの展開指示である。よって、制御ＣＰＵ１２はステップＳ１６６において、指示Ｎｏ．１のデータから展開元の開始アドレスとしてＦｌａｓｈ  ＲＯＭ１３内の０ｘ００００００００、展開元の終了アドレスとして０ｘ０００００１ＦＦ、また展開先のアドレスとしてＲＡＭ１４内のｘ００１１００００を決定する。
【０１７２】
次に、ステップＳ１６７において、制御ＣＰＵ１２は、ステップＳ１６６において決定したアドレスに従って、Ｆｌａｓｈ  ＲＯＭ１３からＲＡＭ１４への展開処理を行う。
【０１７３】
図１５に例示した指示Ｎｏ．１の場合は、Ｆｌａｓｈ  ＲＯＭ１３内の０ｘ００００００００〜０ｘ０００００１ＦＦ、すなわち図１４（Ａ）におけるＭｏｄｕｌｅ  Ａ１４０１が、ＲＡＭ１４内の０ｘ００１１００００〜０ｘ００１１０１ＦＦに展開される。
【０１７４】
次に、制御ＣＰＵ１２は、ステップＳ１６１に遷移する。
【０１７５】
次に、図１５の指示Ｎｏ．２の場合も、指示Ｎｏ．１と同じＲＡＭへの展開指示である。よって、制御ＣＰＵ１２は、指示ＮＯ．１の処理と同様に、Ｆｌａｓｈ  ＲＯＭ１３からＲＡＭ１４へデータの展開処理を行う。
【０１７６】
これにより、図１４（Ａ）におけるＭｏｄｕｌｅ  Ｃ１４０３が、ＲＡＭ１４内の０ｘ００１１０２３０〜０ｘ００１１０６０Ｆに展開される。
【０１７７】
次に、図１５の指示Ｎｏ．３の場合は、制御ＣＰＵ１２は、ステップＳ１６１にて指示読み込み後、ステップＳ１６２，Ｓ１６３の処理を経てステップＳ１６４へ遷移する。
【０１７８】
ステップＳ１６４においては、制御ＣＰＵ１２は、読み込んだ指示がデータ書換え指示であるか調べ、データ書換え指示の場合はステップＳ１７０へ遷移する。また、データ書換え指示でない場合は、制御ＣＰＵ１２は、ステップＳ１６５へ遷移する。
【０１７９】
図１５の指示Ｎｏ．３の場合は、データ書換え指示である。よって、制御ＣＰＵ１２は、ステップＳ１７０に遷移する。ステップＳ１７０においては、制御ＣＰＵ１２は、図１５の書換え指示Ｎｏ．３から、ＲＡＭ１４のアドレス０ｘ００１１０２００が書換え開始アドレスであり、また書換えデータ数は０ｘ３０であると決定する。
【０１８０】
次に、ステップＳ１７１において、制御ＣＰＵ１２は、図１５の指示Ｎｏ．３の書換えデータに基づき、アドレス０ｘ００１１０２００の内容を変更する。
【０１８１】
次に、ステップＳ１７２において、制御ＣＰＵ１２は、書換えアドレスを１増加させ０ｘ００１１０２０１とする。次に、制御ＣＰＵ１２は、ステップＳ１７３において、書換えデータ数を１減少させ０ｘ２Ｆとする。
【０１８２】
次に、制御ＣＰＵ１２は、ステップＳ１７４において、書換えデータ数が０であるか検査し、０でない場合はステップＳ１７１に遷移する。
【０１８３】
そして、制御ＣＰＵ１２は、以上のステップＳ１７１〜Ｓ１７４の処理を書換えデータ数が０になるまで繰り返す。書換えデータ数が０になった場合、制御ＣＰＵ１２は、ステップＳ１６１に遷移する。
【０１８４】
ここで、指示Ｎｏ．３によって与えられる連続する０ｘ３０分のデータが、図１４（Ｂ）におけるＭｏｄｕｌｅ  Ｂ’１４０４であるとすると、ステップＳ１７４において書換えデータ数が０になったと判断された際には、ＲＡＭ１４の０ｘ００１１０２００〜０ｘ００１１０２２ＦにＭｏｄｕｌｅ  Ｂ’１４０４が展開される。
【０１８５】
以上により、ＲＡＭ１４のアドレス０ｘ００１１００００からは図１９に示すようなプログラムが展開されていることになる。
【０１８６】
ここで、着目すべき点は、Ｍｏｄｕｌｅ  Ｂが更新に伴ってＭｏｄｕｌｅ  Ｂ’となり、サイズが大きくなるのに伴って、Ｍｏｄｕｌｅ  Ｃの位置がＭｏｄｕｌｅ  ＢとＭｏｄｕｌｅ  Ｂ’の差分だけ後ろに移動している点である。言い換えれば、Ｆｌａｓｈ  ＲＯＭ１３に格納時における更新対象のＭｏｄｕｌｅ  Ｂと後続Ｍｏｄｕｌｅ  Ｃとの相対位置を広げるように、Ｍｏｄｕｌｅ  ＣをＲＡＭ１４に展開する際に移動している。
【０１８７】
これにより、Ｍｏｄｕｌｅ  Ｂが更新に伴ってＭｏｄｕｌｅ  Ｂ’となり、サイズが大きくなっても、Ｍｏｄｕｌｅ  Ｂ’とＭｏｄｕｌｅ  Ｃが重なってしまうことを防止できる。
【０１８８】
また、このように、書換え部分のプログラムのコード（即値データを含む）量（Ｍｏｄｕｌｅ  Ｂ）が大きくなった場合にも、書換えの必要のない部分のコード（Ｍｏｄｕｌｅ  Ｃ）を移動することができるため、書換えた部分（Ｍｏｄｕｌｅ  Ｂ’）の後続のコード（Ｍｏｄｕｌｅ  Ｃ）に関する情報を必要とせずにプログラムの書換えを行うことができる。そのため、端末装置１外部から転送する書換え指示を削減できる。つまり、また、Ｍｏｄｕｌｅ  Ｃの移動を少ないデータ量で実現できる。この結果、データ転送時間を含むプログラムの更新作業時間の短縮を達成することができる。
【０１８９】
次に、図１５の指示Ｎｏ．４の場合は、制御ＣＰＵ１２は、ステップＳ１６１にて指示読み込み後、ステップＳ１６２，Ｓ１６３，Ｓ１６４の処理を経てステップＳ１６５へ遷移する。
【０１９０】
ステップＳ１６５においては、制御ＣＰＵ１２は、読み込んだ指示がＲＯＭへの書き戻し指示であるか調べ、ＲＯＭへの書き戻し指示の場合はステップＳ１６８へ遷移する。
【０１９１】
また、読み込んだ指示がＲＯＭへの書き戻し指示でない場合は、制御ＣＰＵ１２は、ステップ１６１へ遷移する。
【０１９２】
図１５の指示Ｎｏ．４の場合はＲＯＭへの書き戻し指示である。よって、制御ＣＰＵ１２は、ステップＳ１６８へ遷移する。
【０１９３】
ステップＳ１６８においては、制御ＣＰＵ１２は、読み込んだＲＯＭへの書き戻し指示から、ＲＡＭ１４内の更新済みの制御ソフトウェアが格納されているアドレス０ｘ００１１００００〜０ｘ００１１ＦＦＦＦと、Ｆｌａｓｈ  ＲＯＭ１３内の書き戻し該当ブロック、すなわち図１５に例示する指示Ｎｏ．４の場合は０ｘ００００００００〜０ｘ００００ＦＦＦＦを決定する。
【０１９４】
次に、ステップＳ１６９において、制御ＣＰＵ１２は、ステップＳ１６８で決定したＦｌａｓｈ  ＲＯＭ１３内の該当ブロック０ｘ００００００００〜０ｘ００００ＦＦＦＦを消去する。次に、制御ＣＰＵ１２は、ＲＡＭ１４内の０ｘ００１１００００〜ｘ００１１ＦＦＦＦに格納されている更新済みの制御ソフトウェアをＦｌａｓｈ  ＲＯＭ１３内の消去済みの該当ブロックに記録する。
【０１９５】
次に、制御ＣＰＵ１２は、ステップＳ１６１に遷移する。
【０１９６】
そして、制御ＣＰＵ１２は、以上の処理をステップＳ１６１で読み込んだ指示がステップ１６２において書換え終了指示であると判定されるまで順次繰り返す。
【０１９７】
以上説明したように、実施の形態５によれば、図１４（Ｂ）に示した修正後のすべてのプログラムをダウンロードすることなく、端末内のＦｌａｓｈ  ＲＯＭ１３に格納されている制御ソフトウェアを更新することができる。この結果、書換え指示の削減によるソフトウェア更新時間の短縮を達成することができる。
【０１９８】
また、実施の形態５によれば、更新対象のＭｏｄｕｌｅ  Ｂが更新に伴ってサイズが大きくなる場合に、ＦＬＡＳＨ  ＲＯＭ１３に格納時における更新対象のＭｏｄｕｌｅ  ＢとＭｏｄｕｌｅ  Ｂの後続Ｍｏｄｕｌｅ  Ｃとの相対位置を広げるように、Ｍｏｄｕｌｅ  ＣをＲＡＭ１４に展開する際に移動することができる。これにより、装置外部から転送する書換え指示を削減できる。この結果、データ転送時間を含むプログラムの更新作業時間の短縮を達成することができる。
【０１９９】
なお、実施の形態５においては、プログラムは３つのＭｏｄｕｌｅから構成されている場合について説明したが、Ｍｏｄｕｌｅの数や各Ｍｏｄｕｌｅのサイズに関しては、説明したＭｏｄｕｌｅ数、またはサイズに限定されるものではない。
【０２００】
また、図１５では、ＲＡＭへの展開は、展開元のＦｌａｓｈ  ＲＯＭ１３内の先頭アドレス１５０３と終了アドレス１５０４および展開先のＲＡＭの先頭アドレス１５０５の組合せであったが、図１７に示すように展開元の先頭アドレス１７０３とそれに続く展開するデータ数１７０４および展開先のＲＡＭ１４の先頭アドレス１７０５の組合せとしても同様の効果を得ることができる。
【０２０１】
また、図１５では、Ｆｌａｓｈ  ＲＯＭ１３内のプログラムを展開するＲＡＭ１４領域を絶対値アドレスで指定しているが、ＲＡＭ１４領域は作業領域として使用するだけであるため、端末装置１において制御ＣＰＵ１２がＲＡＭ１４内の任意の領域を設定することも可能である。
【０２０２】
この場合は、指示におけるＲＡＭ１４への展開時やＲＡＭ１４の書換え時のアドレス指定は、任意領域の先頭アドレスからのオフセット値として指定する。すなわち、図１８に示す書換え指示において、ＲＡＭ１４へ展開は展開元となるＦｌａｓｈ  ＲＯＭ１３の先頭アドレス１８０３と展開するデータ数１８０４および任意領域の先頭アドレスからのオフセット１８０５値の組合せとなる。
【０２０３】
例えば、指示Ｎｏ．２では、Ｆｌａｓｈ  ＲＯＭ１３のアドレス０ｘ０００００２２０からの連続する０ｘ３Ｅ０分のデータを、任意領域の先頭アドレスに０ｘ０００００２３０を加えたアドレスに展開することを示す。
【０２０４】
また、書換えは、任意領域の先頭アドレスに対するオフセット値１８０６と書換えるデータ数１８０７およびデータ数分の実書換えデータ１８０８の組合せである。例えば、指示Ｎｏ．３では、任意領域の先頭アドレスに０ｘ０００００２００を加えたアドレスから０ｘ３０分のデータを書換えることを示す。
【０２０５】
また、ＲＯＭ１３へ書戻す指示は、Ｆｌａｓｈ  ＲＯＭ１３の消去ブロック単位で書戻すことになる。このため、指示は書戻すブロックの先頭だけとなる。例えば、指示Ｎｏ．４では、書戻すブロックの先頭として０ｘ００００００００が指示され、図２に示すメモリマップにおいて０ｘ００００００００〜０ｘ００００ＦＦＦＦのブロックが消去された後、ＲＡＭ内の任意領域の先頭から、前記任意領域の先頭に０ｘ００００ＦＦＦＦを加えた領域がＦｌａｓｈ  ＲＯＭ１３に書き戻される。
【０２０６】
また、本実施の形態５では、ステップＳ１６１において読み込んだ指示に対してステップＳ１６２，Ｓ１６３，Ｓ１６４，Ｓ１６５の順に指示内容の判定処理を行う場合を示したが、この判定の順番は任意に入れ替えることができる。
【０２０７】
また、本実施の形態５においては、ステップＳ１７２において書換えアドレスを１増加させ、次に、ステップＳ１７３において書換えデータ数を１減少させたが、先に書換えデータ数を１減少させ、次に書換えアドレスを１増加させても同様の効果を得ることができる。
【０２０８】
（実施の形態６）
図２０は本発明の実施の形態６におけるプログラムのＭｏｄｕｌｅ構成を示す図であり、図２０（Ａ）は不具合修正前の構成を、また図２０（Ｂ）は不具合修正後の構成を示している。
【０２０９】
すなわち、図２０（Ａ）に示す、つまり修正前のプログラムは、Ｍｏｄｕｌｅ  Ａ２００１、Ｍｏｄｕｌｅ  Ｂ２００２，Ｍｏｄｕｌｅ  Ｃ２００３の３つのＭｏｄｕｌｅから構成されている。Ｍｏｄｕｌｅ  Ａは０ｘ００００００００〜０ｘ０００００１ＦＦ、Ｍｏｄｕｌｅ  Ｂは０ｘ０００００２００〜０ｘ０００００２１Ｆ、また、Ｍｏｄｕｌｅ  Ｃは０ｘ０００００２２０〜０ｘ０００００５ＦＦに配置されている。
【０２１０】
また、図２０（Ｂ）に示すプログラムは、図２０（Ａ）に示されるプログラムを修正した結果、Ｍｏｄｕｌｅ  Ａ２００１が変更されている。
【０２１１】
具体的には、Ｍｏｄｕｌｅ  Ａ２００１が、Ｍｏｄｕｌｅ  Ａ’２００４として、０ｘ００００００００〜０ｘ０００００１ＦＦに配置されている。また、Ｍｏｄｕｌｅ  Ｂ２００２が変更されＭｏｄｕｌｅ  Ｂ’２００５として０ｘ０００００２００〜０ｘ０００００２２Ｆに配置されている。また、Ｍｏｄｕｌｅ  Ｃ２００３は内容の変更ないが配置が０ｘ０００００２３０〜０ｘ０００００６０Ｆに移動している。
【０２１２】
図２１（Ａ）は不具合を修正する以前のＭｏｄｕｌｅ  Ａ２００１の内容の一部を示し、また、図２１（Ｂ）は不具合を修正した後のＭｏｄｕｌｅ  Ａ’２００４の内容の一部を示す。
【０２１３】
また、図２２に本実施の形態６における端末装置１における制御ＣＰＵ１２の分岐命令の一例を示す。
【０２１４】
オペコード２２０１は、オペコード２２０１に続くオペランド２２０２をアドレスとして分岐するものである。
【０２１５】
具体的には、オペコード０ｘＥＡは、オペコードに続くオペランド３２ビットを絶対値アドレスとして分岐する。また、オペコード０ｘＥ９は、オペコードに続く８ビットを相対値とし、オペコードが格納されているアドレスに相対値を加えたアドレスに分岐する。
【０２１６】
すなわち、図２１（Ａ）に示すように、アドレス（２１０１）０ｘ００００００１０（２１０３）のデータ（２１０２）が０ｘＥＡ（２１０４）である場合、この部分は、アドレス０ｘ００００００１１〜０ｘ００００００１４（２１０５）に格納されているデータ（２１０６）を３２ビットアドレスとして解釈し、０ｘ０００００３１８へ分岐する命令となる。
【０２１７】
また、図２１（Ａ）に示すように、アドレス０ｘ０００００１Ｆ８（２１０７）の内容が０ｘＥ９（２１０８）である場合、これは、アドレス０ｘ０００００１Ｆ９（２１０９）のデータ０ｘ３８（２１１０）を相対値として、０ｘ０００００１Ｆ８に加えた０ｘ０００００２３０へ分岐する命令となる。
【０２１８】
また、図２１（Ｂ）では、図２０（Ａ）に示す制御プログラムの不具合を修正し、図２０（Ｂ）に示す制御プログラムの様子を示している。
【０２１９】
具体的には、図２０（Ｂ）に示すようにＭｏｄｕｌｅ  Ｂ’２００５がＭｏｄｕｌｅ  Ｂ２００２と比較して０ｘ１０バイトほど大きくなっている。この結果、Ｍｏｄｕｌｅ  Ｂ２００２に続くＭｏｄｕｌｅ  Ｃ２００３の配置が０ｘ１０バイトほど移動している。これに伴って、図２１（Ａ）の０ｘ００００００１０（２１０３）に格納されている絶対値アドレス分岐命令の分岐先が０ｘ０００００３２８へ変更されている。また、０ｘ０００００１Ｆ８（２１０９）に格納されている相対値アドレス分岐命令の分岐先が０ｘ０００００２４０へと変更されている。
【０２２０】
次に、実施の形態６における端末装置について説明する。実施の形態６における端末装置の機能ブロックの一例およびメモリマップの一例は、実施の形態１と同様であり、図１および図２に示す。また、制御ＣＰＵ１２によって制御プログラムを修正する際の作業領域として０ｘ００１１００００〜０ｘ００１１ＦＦＦＦが使用されるものとする。
【０２２１】
以下、図２０（Ａ）のプログラムがＦｌａｓｈ  ＲＯＭ１３に記録されている場合において、端末装置１が、図２０（Ａ）のプログラムを図２０（Ｂ）のプログラムへ更新する方法について説明する。ここでは、端末装置１に図２３に示す書換え指示が与えられた場合の動作を、図２４に示すフローチャートを用いて説明する。
【０２２２】
なお、図２３における各指示に対する動作は、書換えについては実施の形態５と同様である。
【０２２３】
また、ＲＡＭ１４へ展開の場合は、指示２３０１Ｎｏ．１に続く部分にデータ２３０２がある。データ２３０２には、展開元の開始アドレス２３０３、展開元の開始アドレス２３０３に続いて展開すべきデータ数２３０４、展開すべきデータ数２３０４に続いて展開先のアドレス２３０５が配置されている。
【０２２４】
そして、制御ＣＰＵ１２は、これらの情報を用いて、Ｆｌａｓｈ  ＲＯＭ１３からＲＡＭ１４へデータを展開することを示す。
【０２２５】
また、ＲＯＭ１３へ書戻しの場合は、指示２３０１Ｎｏ．６に続くデータ２３０２の先頭がＦｌａｓｈ  ＲＯＭ１３の記録対象となるブロックの先頭アドレス２３０６を示す。先頭アドレス２３０６からなるブロックを消去した後、ＲＡＭ１４内の作業領域として任意に決定されている領域のデータを、Ｆｌａｓｈ  ＲＯＭ１３の消去した先頭アドレス２３０６からなるブロックに記録する。
【０２２６】
アドレス変更に関しては、指示２３０１Ｎｏ．４に続くデータ２３０２の先頭部分がプログラムの展開されるＲＡＭ１４内の任意領域の先頭からのオフセット値２３０７である。先頭アドレスにオフセット値２３０７を加えたアドレスに格納されているオペコードを解釈し、そして、解釈したオペコードに応じてオペランドを更新することを示す。
【０２２７】
まず、ステップＳ１８１において、Ｆｌａｓｈ  ＲＯＭ１３に格納されたプログラムの書換え指示として図２３に示す指示が外部接続インターエース１１を通して与えられた場合、制御ＣＰＵ１２は、指示Ｎｏ．１を読み込む。
【０２２８】
次に、ステップＳ１８２において、制御ＣＰＵ１２は、読み込んだ指示が書換え終了であるか調べ、書換え終了指示でない場合はステップＳ１８３へ遷移する。
【０２２９】
ステップＳ１８３においては、制御ＣＰＵ１２は、読み込んだ指示がＲＡＭ１４への展開指示であるか調べ、ＲＡＭ１４への展開指示の場合はステップＳ１８６へ、またＲＡＭ１４への展開指示でない場合はステップＳ１８４へ遷移する。
【０２３０】
図２３の指示Ｎｏ．１の場合は、ＲＡＭ１４への展開指示である。よって、制御ＣＰＵ１２は、ステップＳ１８６において、指示Ｎｏ．１のデータから展開元のアドレスとしてＦｌａｓｈ  ＲＯＭ１３内の０ｘ００００００００、展開するデータ数として０ｘ２００バイト、ＲＡＭ１４内の前期作業領域の先頭アドレス０ｘ００１１００００にオフセット０ｘ００００００００を加えたｘ００１１００００を展開先のアドレスとして決定する。
【０２３１】
次に、ステップＳ１８７において、制御ＣＰＵ１２は、ステップＳ１８６において決定したアドレスおよびデータ数に従ってＦｌａｓｈ  ＲＯＭ１３からＲＡＭ１４への展開処理を行う。
【０２３２】
図２３に例示した指示Ｎｏ．１の場合は、Ｆｌａｓｈ  ＲＯＭ１３内の０ｘ００００００００〜０ｘ０００００１ＦＦ、すなわち図２０（Ａ）におけるＭｏｄｕｌｅ  Ａ２００１が、ＲＡＭ１４内の０ｘ００１１００００〜０ｘ００１１０１ＦＦに展開される。
【０２３３】
次に、制御ＣＰＵ１２は、ステップＳ１９５において、ＲＡＭ１４内の作業領域０ｘ００１１００００〜０ｘ００１１ＦＦＦＦ以外の任意の領域に、Ｆｌａｓｈ  ＲＯＭ１３内における０ｘ００００００００〜０ｘ０００００１ＦＦの領域の移動量が０ｘ００００００００であることを記録する。次に、制御ＣＰＵ１２はステップＳ１８１に遷移する。
【０２３４】
次に、図２３の指示Ｎｏ．２の場合も、指示Ｎｏ．１と同じＲＡＭへの展開指示であるので、制御ＣＰＵ１２は、上述した処理と同様にＦｌａｓｈ  ＲＯＭ１３からＲＡＭ１４へデータの展開処理を行う。
【０２３５】
これにより図２０（Ａ）におけるＭｏｄｕｌｅ  Ｃ２００３がＲＡＭ１４内の０ｘ００１１０２３０〜０ｘ００１１０６０Ｆに展開される。
【０２３６】
また、制御ＣＰＵ１２は、上述した処理と同様に、ステップＳ１９５においてＦｌａｓｈ  ＲＯＭ内におけるｘ０００００２２０〜０ｘ０００００５ＦＦの領域の移動量が０ｘ００００００１０であることを記録する。
【０２３７】
ここまでの処理によって、図２５に示す移動領域である先頭アドレス２５０１、終了アドレス２５０２と該当する領域の移動量２５０３の記録が得られる。
【０２３８】
また、移動領域である先頭アドレス２５０１、終了アドレス２５０２は、それぞれ移動領域の先頭アドレスと、終了アドレスになっている。これにより、移動領域を実体データで記述する必要がないので、データ量を減らすことができる。
【０２３９】
次に、図２３の指示Ｎｏ．３の場合は、制御ＣＰＵ１２は、ステップＳ１８１にて指示読み込み後、ステップＳ１８２，Ｓ１８３の処理を経てステップＳ１８４へ遷移する。
【０２４０】
ステップＳ１８４においては、制御ＣＰＵ１２は、読み込んだ指示がデータ書換え指示であるか調べ、データ書換え指示の場合はステップＳ１９０へ遷移し、またデータ書換え指示でない場合はステップＳ１９６へ遷移する。
【０２４１】
図２３の指示Ｎｏ．３の場合はデータ書換え指示である。よって、制御ＣＰＵ１２は、ステップＳ１９０に遷移する。
【０２４２】
ステップＳ１９０においては、制御ＣＰＵ１２は、図２３の書換え指示Ｎｏ．３から、ＲＡＭ１４の作業領域の先頭アドレス０ｘ００１１００００にオフセット０ｘ０００００２００を加えたアドレス０ｘ００１１０２００が書換え開始アドレスであり、また書換えデータ数は０ｘ３０であると決定する。
【０２４３】
次に、ステップＳ１９１において、制御ＣＰＵ１２は、図２３の指示Ｎｏ．３の書換えデータに基づき、アドレス０ｘ００１１０２００の内容を変更する。
【０２４４】
次に、ステップＳ１９２において、制御ＣＰＵ１２は、書換えアドレスを１増加させ０ｘ００１１０２０１とする。
【０２４５】
次に、ステップＳ１９３において、制御ＣＰＵ１２は、書換えデータ数を１減少させ０ｘ２Ｆとする。
【０２４６】
次に、制御ＣＰＵ１２は、ステップＳ１９４において書換えデータ数が０であるか検査し、０でない場合はステップＳ１９１に遷移する。
【０２４７】
制御ＣＰＵ１２は、以上の、ステップＳ１９１〜Ｓ１９４の処理を書換えデータ数が０になるまで繰り返す。
【０２４８】
書換えデータ数が０になった場合、制御ＣＰＵ１２は、ステップＳ１８１に遷移する。
【０２４９】
ここで指示Ｎｏ．３によって与えられる連続する０ｘ３０分のデータは図２０（Ｂ）におけるＭｏｄｕｌｅ  Ｂ’２００５であるとすると、ステップＳ１９４において書換えデータ数が０になったと判断された際には、ＲＡＭ１４の０ｘ００１１０２００〜０ｘ００１１０２２ＦにＭｏｄｕｌｅ  Ｂ’２００５が展開される。
【０２５０】
ここまでの処理によって、ＲＡＭ１４のアドレス０ｘ００１１００００からは図１９に示すようなプログラムが展開されていることになる。
【０２５１】
また、このときのＲＡＭ１４内の様子を図２６に示す。アドレス（２６０１）０ｘ００１１００１０（２６０３）および０ｘ００１１０１Ｆ８（２６０５）周辺のデータ（２６０２）は、それぞれ０ｘＥＡ（２６０４）、０ｘＥ９（２６０２）となっている。
【０２５２】
次に、図２３の指示Ｎｏ．４の場合は、制御ＣＰＵ１２は、ステップＳ１８１にて指示読み込み後、ステップＳ１８２，Ｓ１８３，Ｓ１８４の処理を経てステップＳ１９６へ遷移する。
【０２５３】
ステップＳ１９６において、制御ＣＰＵ１２は、読み込んだ指示がアドレス変更指示であるか調べる。そして、アドレス変更指示の場合は、制御ＣＰＵ１２は、ステップＳ１９７へ遷移する。また、アドレス変更指示でない場合は、制御ＣＰＵ１２は、ステップＳ１８５へ遷移する。
【０２５４】
図２３の指示Ｎｏ．４の場合は、アドレス変更指示である。よって、制御ＣＰＵ１２は、ステップＳ１９７へ遷移する。
【０２５５】
ステップＳ１９７において、制御ＣＰＵ１２は、読み込んだアドレス変更指示が示すオフセット値０ｘ００００００１０（２３０７）をＲＡＭ１４内の作業領域の先頭アドレス０ｘ００１１００００に加えたアドレス０ｘ００１１００１０に対するアドレス変更指示であると判断する。
【０２５６】
また、制御ＣＰＵ１２は、図２６に示すアドレス０ｘ００１１００１０（２６０３）に格納されているオペコード０ｘＥＡ（２６０４）を、図２２に示すオペコードおよび０ｘ００１１００１０に続く４バイトのオペランドより、アドレス０ｘ０００００３１８への分岐命令であると解釈する。
【０２５７】
さらに、制御ＣＰＵ１２は、図２５に示すＭｏｄｕｌｅの移動に関する情報の記録から、０ｘ０００００３１８が含まれるブロック０ｘ０００００２２０〜０ｘ０００００５ＦＦは移動量０ｘ００００００１０であることが分かる。したがって、制御ＣＰＵ１２は、プログラム修正後の分岐先アドレスは修正前の分岐先アドレス０ｘ０００００３１８に移動量０ｘ００００００１０を加えた０ｘ０００００３２８であると計算する。
【０２５８】
次に、ステップＳ１９８において、制御ＣＰＵ１２は、ステップＳ１９７において決定した分岐先アドレスに従って、図２７に示すようにアドレス（２７０１）０ｘ００１１００１０（２７０３）のオペコード（データ）（２７０２）０ｘＥＡ（２７０４）に続く４バイトのオペランドを０ｘ０００００３２８に更新する。
【０２５９】
次に、制御ＣＰＵ１２は、ステップＳ１８１に遷移する。
【０２６０】
図２３の指示Ｎｏ．５の場合も同様に、制御ＣＰＵ１２は、ステップＳ１８１にて指示読み込み後、ステップＳ１８２，Ｓ１８３，Ｓ１８４，Ｓ１９６の処理を経てステップＳ１９７へ遷移する。
【０２６１】
ステップＳ１９７において、制御ＣＰＵ１２は、読み込んだアドレス変更指示が示すオフセット値０００００１Ｆ８をＲＡＭ１４内の作業領域の先頭アドレス０ｘ００１１００００に加えたアドレス０ｘ００１１０１Ｆ８に対するアドレス変更指示であると判断する。
【０２６２】
例えば、制御ＣＰＵ１２は、図２７よりアドレス（２７０１）０ｘ００１１０１Ｆ８（２７０５）に格納されたオペコード（データ）（２７０２）０ｘＥ９（２７０６）を、図２２に示すオペコードおよび０ｘ００１１０１Ｆ８に続く１バイトのオペランドより、０ｘ０００００１Ｆ８に０ｘ３８を加えたアドレス０ｘ０００００２３０への分岐命令であると解釈する。また、制御ＣＰＵ１２は、図２５に示す移動の記録から、０ｘ０００００２３０が含まれるブロック０ｘ０００００２２０〜０ｘ０００００５ＦＦは移動量０ｘ００００００１０であることが分かる。
【０２６３】
したがって、制御ＣＰＵ１２は、プログラム修正後の分岐先アドレスは、修正前の分岐アドレス０ｘ０００００２３０に移動量０ｘ００００００１０を加えた０ｘ０００００２４０であると判断でき、オペコードが存在する０ｘ０００００１Ｆ８からの相対アドレスは０ｘ４８であると計算する。
【０２６４】
次に、ステップＳ１９８において、制御ＣＰＵ１２は、ステップＳ１９７において決定した分岐先アドレスに従って、図２８に示すようにアドレス（２８０１）０ｘ００１１０１Ｆ８（２８０５）のオペコード（データ）（２８０２）０ｘＥ９（２８０６）に続く１バイトのオペランドを０ｘ４８に更新する。
【０２６５】
このように、制御ＣＰＵ１２は、ＭｏｄｕｌｅＢの大きさが修正になるのに伴って、オペコードが用いるオペランドが移動する場合には、図２５に示すＭｏｄｕｌｅの移動に関する情報の記録に基づいて、このオペランドを自動的に修正することができる。よって、外部からオペランドの修正内容を指示しなくてもよいので、指示のデータ量を削減できる。
【０２６６】
次に、制御ＣＰＵ１２は、ステップＳ１８１に遷移する。
【０２６７】
次に、図２３の指示Ｎｏ．６の場合は、制御ＣＰＵ１２は、ステップＳ１８１にて、指示読み込み後、ステップＳ１８２，Ｓ１８３，Ｓ１８４，Ｓ１９６の処理を経てステップＳ１８５へ遷移する。
【０２６８】
ステップＳ１８５においては、制御ＣＰＵ１２は、読み込んだ指示がＲＯＭ１３への書き戻し指示であるか調べる。そして、制御ＣＰＵ１２は、ＲＯＭ１３への書き戻し指示の場合はステップＳ１８８へ遷移し、またＲＯＭ１３への書き戻し指示でない場合はステップＳ１８１へ遷移する。
【０２６９】
図２３の指示Ｎｏ．６の場合は、ＲＯＭ１３への書き戻し指示である。よって、制御ＣＰＵ１２はステップＳ１８８へ遷移する。
【０２７０】
ステップＳ１８８においては、制御ＣＰＵ１２は、読み込んだＲＯＭ１３への書き戻し指示が示すＦｌａｓｈ  ＲＯＭ１３内の該当ブロックを決定する。例えば、図２３に例示する指示Ｎｏ．６の場合は、制御ＣＰＵ１２は、該当ブロックとして、０ｘ００００００００〜０ｘ００００ＦＦＦＦを決定する。
【０２７１】
次に、ステップＳ１８９においては、制御ＣＰＵ１２は、ステップＳ１８８で決定したＦｌａｓｈ  ＲＯＭ１３内の該当ブロック０ｘ００００００００〜０ｘ００００ＦＦＦＦを消去する。次に、制御ＣＰＵ１２は、ＲＡＭ１４内の作業領域０ｘ００１１００００〜ｘ００１１ＦＦＦＦに格納されている更新済みの制御ソフトウェアをＦｌａｓｈ  ＲＯＭ１３内の消去済みの該当ブロックに記録する。
【０２７２】
次に、制御ＣＰＵ１２は、ステップＳ１８１に遷移する。
【０２７３】
そして、制御ＣＰＵ１２は、以上の処理をステップＳ１８１で読み込んだ指示がステップＳ１８２において書換え終了指示であると判定されるまで順次繰り返す。
【０２７４】
以上説明したように、実施の形態６によれば、図２０（Ｂ）に示した修正後のすべてのプログラムをダウンロードすることなく、端末内のＦｌａｓｈ  ＲＯＭ１３に格納されている制御ソフトウェアを更新することができる。
【０２７５】
なお、実施の形態６においては、プログラムは３つのＭｏｄｕｌｅから構成されている場合について説明したが、Ｍｏｄｕｌｅの数や各Ｍｏｄｕｌｅのサイズに関しては、上記に説明したＭｏｄｕｌｅ数、またはサイズはこれに限定されるものではない。
【０２７６】
また、実施の形態６においては、分岐命令のオペコードの一例として図２２を示したが、端末装置１において使用する制御ＣＰＵ１２の種類によってはオペコードが図２２と異なっても同様の効果を得ることができる。
【０２７７】
また、実施の形態６においては、絶対値分岐および相対値分岐のオペランドを、図２５に示すＭｏｄｕｌｅの移動に関する情報の記録を用いて修正する場合について説明したが、分岐命令以外にも関数呼出し命令にも適用することができる。
【０２７８】
また、実施の形態６によれば、相対アドレス指定の分岐命令および関数呼出命令が利用された場合に、相対アドレス指定分岐命令で利用可能なアドレスの範囲を超えた場合にも、更新後のプログラムに変更するための相対アドレス指定分岐命令または相対アドレス指定関数命令から絶対アドレス指定分岐命令または絶対アドレス指定関数呼出命令への変換指示データを外部インターフェースからダウンロードすることが不要となる。これにより、外部インターフェースから指示するデータ量を削減できる。この結果、データ転送時間を含むプログラムの更新作業時間の短縮を達成することができる。
【０２７９】
また、着信やキー押下などのイベントとイベントに対する処理Ｍｏｄｕｌｅの存在アドレスとからなるルックアップテーブルを具備した構成の場合に、図２５に示すＭｏｄｕｌｅの移動に関する情報の記録を用いて、このルックアップテーブルの処理Ｍｏｄｕｌｅの存在アドレスを修正するようにしてもよい。
【０２８０】
このルックアップテーブルの修正の場合、ルックアップテーブルの所在位置を外部から指示する形態であっても良いし、所在位置を予め端末装置１に埋め込んでおいてもよい。ルックアップテーブルの所在位置を埋め込んでおく形態の場合には、外部からの指示無しでルックアップテーブルを自動的に修正できる。
【０２８１】
また、実施の形態６においては、絶対値分岐および相対値分岐等のアドレス（オペランド）を使用した命令が格納されているアドレスに対してアドレス変更という指示をしている。しかし、単純にアドレスを指示するだけで、自動的に、制御ＣＰＵ１２が、そのアドレスに絶対値分岐および相対値分岐等の命令が入っているか判断し、それらの命令が入っている場合には、図２５に示すＭｏｄｕｌｅの移動に関する情報の記録を用いて、オペランドの修正をしてもよい。
【０２８２】
これにより、外部からの指示を省略することができる。また、絶対値分岐および相対値分岐等の命令が格納されていることを知らなくても、自動的に、この命令が用いているオペランドを修正できる。
【０２８３】
また、プログラムの先頭から逆アセンブルすることにより分岐（関数呼出）命令を抽出し、この命令が用いているアドレスの修正を行うようにしても良い。これにより、外部からの指示を減らすことができる。
【０２８４】
この場合、プログラムとデータ部分が複雑に混ざり合っている際には、プログラム部分を切り分けるのが難しいので、予め外部からプログラム部分を指定し、指定された部分のみを逆アセンブルし、アドレスの再計算を行うようにすればよい。
【０２８５】
これにより、外部から分岐（関数呼出）命令の位置を指示する必要がなくなり、外部からの指示を減らすことができる。
【０２８６】
また、実施の形態６においては、ステップＳ１８１において読み込んだ指示に対してステップＳ１８２，Ｓ１８３，Ｓ１８４，Ｓ１９６，Ｓ１８５の順に指示内容の判定処理を行う場合を示したが、この判定の順番は任意に入れ替えることができる。
【０２８７】
また、実施の形態６においては、ステップＳ１９２において書換えアドレスを１増加させ、次にステップＳ１９３において書換えデータ数を１減少させたが、先に書換えデータ数を１減少させ、次に書換えアドレスを１増加させても同様の効果を得ることができる。
【０２８８】
また、実施の形態６においては、ステップＳ１８６において展開元のアドレス、展開するデータ数および展開先のアドレスを決定した後、ステップＳ１８７においてＦｌａｓｈ  ＲＯＭ１３からＲＡＭ１４へデータを展開し、次にステップＳ１９５において移動の記録を行ったが、先に移動の記録を行い、次にＦｌａｓｈ  ＲＯＭ１３からＲＡＭ１４へのデータの展開を行っても同様の効果を得ることができる。
【産業上の利用可能性】
【０２８９】
本発明によれば、端末内の不揮発性メモリ内に記録されたソフトウェアの修正に伴う更新の際に、修正後のソフトウェアをすべて端末内にダウンロードすることなく修正することができ、端末内のソフトウェアの効率的な更新ができるという効果がある。
【図面の簡単な説明】
【０２９０】
【図１】本発明の実施の形態１における端末装置の機能ブロック図
【図２】端末装置におけるメモリマップの一例を示す図
【図３】実施の形態１における処理フローチャート
【図４】実施の形態１における書換え指示の一例を示す図
【図５】実施の形態１における書換え指示の別例を示す図
【図６】本発明の実施の形態２における書換え指示の一例を示す図
【図７】実施の形態２における処理フローチャート
【図８】本発明の実施の形態３における書換え指示の一例を示す図
【図９】実施の形態３における処理フローチャート
【図１０】実施の形態３における書換え指示の別例を示す図
【図１１】実施の形態３における書換え指示の別例を示す図
【図１２】本発明の実施の形態４における書換え指示の一例を示す図
【図１３】実施の形態４における処理フローチャート
【図１４】（Ａ）本発明の実施の形態５における修正前のソフトウェアのＭｏｄｕｌｅ構成を示す図、（Ｂ）実施の形態５における修正後のソフトウェアのＭｏｄｕｌｅ構成を示す図
【図１５】実施の形態５における書換え指示の一例を示す図
【図１６】実施の形態５における処理フローチャート
【図１７】実施の形態５における書換え指示の別例を示す図
【図１８】実施の形態５における書換え指示の別例を示す図
【図１９】実施の形態５におけるＲＡＭへの展開後のソフトウェアのＭｏｄｕｌｅ構成を示す図
【図２０】（Ａ）本発明の実施の形態６における修正前のソフトウェアのＭｏｄｕｌｅ構成を示す図、（Ｂ）実施の形態６における修正後のソフトウェアのＭｏｄｕｌｅ構成を示す図
【図２１】（Ａ）実施の形態６における修正前のＦｌａｓｈ  ＲＯＭ上のソフトウェアのデータを示す図、（Ｂ）実施の形態６における修正後のＦｌａｓｈ  ＲＯＭ上のソフトウェアのデータを示す図
【図２２】実施の形態６における制御ＣＰＵが使用する命令を示す図
【図２３】実施の形態６における書換え指示を示す図
【図２４】実施の形態６における処理フローチャート
【図２５】実施の形態６における移動の記録を示す図
【図２６】実施の形態６におけるアドレス書換え指示前のＲＡＭ上におけるソフトウェアのデータの一部を示す図
【図２７】実施の形態６におけるアドレス書換え指示処理後のＲＡＭ上におけるソフトウェアのデータの一部を示す図
【図２８】実施の形態６におけるアドレス書換え指示処理後のＲＡＭ上におけるソフトウェアのデータの一部を示す図
【符号の説明】
【０２９１】
１  端末装置
１１  外部接続インターフェース
１２  制御ＣＰＵ
１３  Ｆｌａｓｈ  ＲＯＭ
１４  ＲＡＭ
１５  データバス
【図１】
2004152279.tif 000003
【図２】
2004152279.tif 000004
【図３】
2004152279.tif 000005
【図４】
2004152279.tif 000006
【図５】
2004152279.tif 000007
【図６】
2004152279.tif 000008
【図７】
2004152279.tif 000009
【図８】
2004152279.tif 000010
【図９】
2004152279.tif 000011
【図１０】
2004152279.tif 000012
【図１１】
2004152279.tif 000013
【図１２】
2004152279.tif 000014
【図１３】
2004152279.tif 000015
【図１４】
2004152279.tif 000016
【図１５】
2004152279.tif 000017
【図１６】
2004152279.tif 000018
【図１７】
2004152279.tif 000019
【図１８】
2004152279.tif 000020
【図１９】
2004152279.tif 000021
【図２０】
2004152279.tif 000022
【図２１】
2004152279.tif 000023
【図２２】
2004152279.tif 000024
【図２３】
2004152279.tif 000025
【図２４】
2004152279.tif 000026
【図２５】
2004152279.tif 000027
【図２６】
2004152279.tif 000028
【図２７】
2004152279.tif 000029
【図２８】
2004152279.tif 000030