(57)【要約】【課題】ハードウェア資源の使用を最小限に抑えながら、修正プログラムを実行する。【解決手段】修正プログラムの開始アドレスを示す修正開始アドレス１０５及び修正プログラムが格納されているアドレスを示す修正プログラムアドレス１０６をそれぞれ修正開始アドレスレジスタ１０１及び修正プログラムアドレスレジスタ１０２に格納し、プログラムの実行アドレスと修正開始アドレスレジスタ１０１に格納された修正プログラムアドレス１０５との一致を検出して、修正プログラムアドレスレジスタ１０２に格納された修正開始アドレス１０６の修正プログラム１０７を実行する。【選択図】  図１
2005173727.tif 000002
【特許請求の範囲】
【請求項１】
修正プログラムの実行によりプログラムの不具合が存在するアドレスを回避してソフトウェアの不具合を修正する方法であって、
前記修正プログラムの開始アドレスを示す修正開始アドレス及び前記修正プログラムが格納されているアドレスを示す修正プログラムアドレスをそれぞれ第１及び第２のレジスタに格納し、
前記プログラムの実行アドレスと前記第１のレジスタに格納された修正プログラムアドレスとの一致を検出して、前記第２のレジスタに格納された修正開始アドレスの修正プログラムを実行するソフトウェア不具合修正方法。
【請求項２】
前記第１及び第２のレジスタをそれぞれ次の修正プログラムの開始アドレスを示す修正開始アドレス及び次の修正開始プログラムが格納されているアドレスを示す修正プログラムアドレスで更新する請求項１記載のソフトウェア不具合修正方法。
【請求項３】
請求項１又は２記載のソフトウェア不具合修正方法であって、通信データに多重された修正プログラムを取得するソフトウェア不具合修正方法。
【請求項４】
修正プログラムの実行によりプログラムの不具合が存在するアドレスを回避してソフトウェアの不具合を修正するソフトウェア不具合修正プログラムであって、コンピュータに、
前記修正プログラムの開始アドレスを示す修正開始アドレス及び前記修正プログラムが格納されているアドレスを示す修正プログラムアドレスをそれぞれ第１及び第２のレジスタに格納するステップ、
前記プログラムの実行アドレスと前記第１のレジスタに格納された修正プログラムアドレスとの一致を検出して、前記第２のレジスタに格納された修正開始アドレスの修正プログラムを実行するステップを実行させるソフトウェア不具合修正プログラム。
【請求項５】
請求項４記載のソフトウェア不具合修正プログラムであって、コンピュータに、
通信データに多重された修正プログラムを受信するステップ、受信した通信データから修正プログラムを取得するステップを実行させるソフトウェア不具合修正プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、修正プログラムの実行によりプログラムの不具合が存在するアドレスを回避してソフトウェアの不具合を修正する技術に関する。
【背景技術】
【０００２】
ＣＰＵ、ＲＯＭ、ＲＡＭなどを１チップ上に構成したシングルチップ型マイクロコンピュータ（ワンチップマイコン）は、家電製品をはじめとする各種機器の制御用途に広く使用されている。ＣＰＵの命令実行部で実行されるプログラムは、一般に、マイクロコンピュータに内蔵されるマスクＲＯＭに書き込まれるが、プログラム中にバグ等が発見されても製造後にこれを修正することはできない。そのため、プログラムのバグ等が存在するアドレスの実行を回避して修正後のプログラムを実行できるようにしたいわゆるＲＯＭコレクション機能付きのマイクロコンピュータが近年多用されている。
【０００３】
ＲＯＭコレクション機能とは、修正プログラムをマイクロコンピュータ外部の不揮発性メモリ内に記憶させておき、当該修正プログラムをＲＡＭ領域に読み込んで、ＲＡＭ領域をあたかもプログラム領域であるかの様に使用してマスク化されたプログラムの一部を修正するプログラム修正機能である。ＲＯＭコレクションを行う方法として、マイクロコンピュータに内蔵されたハードウェアとプログラムを用いる方法が知られており、例えば、複数種類の不揮発性メモリに対応可能なマイクロコンピュータなど、各種のマイクロコンピュータが提案されている（例えば、特許文献１参照）。
【０００４】
プログラム修正を行う従来シーケンスの概略は次の通りである。ＲＯＭのプログラムを実行中、命令実行アドレスと修正対象となるプログラムの修正開始位置を示す修正開始アドレスとが常時比較されており、アドレスが一致した場合に限り、修正プログラムの格納位置を示す修正プログラムアドレス（ＲＡＭアドレス）に格納されているプログラムへ間接分岐する。その後、ＲＡＭに格納されたプログラムコードを実行し、修正プログラム実行後、ＲＯＭ領域のプログラムへ間接分岐して復帰する。尚、修正プログラムは、システム起動時に不揮発性メモリからＲＡＭへロードされる。
【０００５】
【特許文献１】特開平９−６８３１８号公報（第４頁、第２図）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、プログラム修正機能を有する従来のマイクロコンピュータの構成においては、ＲＯＭコレクションをプログラムの複数箇所で実施しようとする場合、実施箇所の数に応じて複数の修正開始アドレスレジスタや修正プログラムアドレスレジスタ、アドレスの比較を行うＲＡＭ領域など、多くのハードウェア資源が必要となり、マイクロコンピュータ側の負荷が増加する。また、修正プログラムの更新を行う場合、操作者が専用治具等を用いて手動で修正プログラムを不揮発性メモリへ書き込むため、機器の回収や書き込み操作など煩雑な作業が発生する。
【０００７】
本発明は、ハードウェア資源の使用を最小限に抑えながら、修正プログラムの実行が可能なソフトウェア不具合修正方法及びプログラムを提供することを目的とする。また、本発明は、修正プログラムの自動更新が可能なソフトウェア不具合修正方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明のソフトウェア不具合修正方法は、修正プログラムの実行によりプログラムの不具合が存在するアドレスを回避してソフトウェアの不具合を修正する方法であって、前記修正プログラムの開始アドレスを示す修正開始アドレス及び前記修正プログラムが格納されているアドレスを示す修正プログラムアドレスをそれぞれ第１及び第２のレジスタに格納し、前記プログラムの実行アドレスと前記第１のレジスタに格納された修正プログラムアドレスとの一致を検出して、前記第２のレジスタに格納された修正開始アドレスの修正プログラムを実行する。この構成によれば、第１及び第２のレジスタを使用するだけで、修正プログラムの実行が可能となるため、ハードウェア資源の使用を最小限に抑えることができる。
【０００９】
本発明のソフトウェア不具合修正方法において、前記第１及び第２のレジスタをそれぞれ次の修正プログラムの開始アドレスを示す修正開始アドレス及び次の修正開始プログラムが格納されているアドレスを示す修正プログラムアドレスで更新する。この構成によれば、修正開始アドレス及び修正プログラムアドレスを更新することで、複数の修正プログラムを実行する場合でも、第１及び第２のレジスタを共用することができ、ハードウェア資源の使用を最小限に抑えることができる。
【００１０】
本発明のソフトウェア不具合修正方法は、さらに、通信データに多重された修正プログラムを取得することを含む。この構成によれば、修正プログラムが多重された通信データから修正プログラムを取得することができるため、修正プログラムの自動更新が可能となる。
【００１１】
本発明のソフトウェア不具合修正プログラムは、修正プログラムの実行によりプログラムの不具合が存在するアドレスを回避してソフトウェアの不具合を修正するソフトウェア不具合修正プログラムであって、コンピュータに、前記修正プログラムの開始アドレスを示す修正開始アドレス及び前記修正プログラムが格納されているアドレスを示す修正プログラムアドレスをそれぞれ第１及び第２のレジスタに格納するステップ、前記プログラムの実行アドレスと前記第１のレジスタに格納された修正プログラムアドレスとの一致を検出して、前記第２のレジスタに格納された修正開始アドレスの修正プログラムを実行するステップを実行させる。
【００１２】
さらに、コンピュータに、通信データに多重された修正プログラムを受信するステップ、受信した通信データから修正プログラムを取得するステップを実行させる。
【発明の効果】
【００１３】
本発明によれば、２つのレジスタを使用するだけで、修正プログラムの実行が可能となるため、ハードウェア資源の使用を最小限に抑えることができる。また、修正プログラムが多重された通信データから修正プログラムを取得することができるため、修正プログラムの自動更新が可能となる。
【発明を実施するための最良の形態】
【００１４】
（実施の形態１）
図１は本発明のソフトウェア不具合修正方法を実施するためのマイクロコンピュータの構成を示す図であり、専用レジスタを２つのみ設け、ハードウェア資源の使用を最小限に抑制する。マイクロコンピュータ１００は、修正開始アドレスレジスタ１０１、修正プログラムアドレスレジスタ１０２、ＲＡＭ１０３及び図示しないＣＰＵやＲＯＭ、プログラムカウンタを備える。
【００１５】
修正開始アドレスレジスタ１０１は、次に修正を行うプログラムのアドレス（ＲＯＭ）を保持する２０Ｂｉｔレジスタであり、プログラム実行中は常にプログラムカウンタと比較される。また、修正プログラムアドレスレジスタ１０２は、プログラムカウンタが修正開始アドレスレジスタのアドレス値と一致した場合に実行する修正プログラムが格納されているＲＡＭアドレスを保持する１６Ｂｉｔレジスタである。
【００１６】
ＲＡＭ１０３は、修正プログラム情報格納領域１０４とユーザー領域に分割される。修正プログラム情報格納領域１０４の詳細なメモリ配置図（修正プログラム情報テーブル）を図に示す。修正プログラム情報格納領域１０４は、修正開始アドレス（２０Ｂｉｔ）と修正プログラムアドレス（１６Ｂｉｔ）をペアで格納する領域と、修正プログラムデータ（可変長）を格納する領域で構成される。アドレス情報格納領域１０５及び１０６と、修正プログラムデータ格納領域１０７の境界には、修正プログラムの終了を表すコード１０８（０ｘ００）が記録されている。
【００１７】
修正プログラム情報は、修正開始アドレス情報、修正プログラムアドレス情報、修正プログラムデータの３種類で構成され、プログラムの修正１箇所につき１セット必要である。尚、修正プログラム情報格納領域１０４の情報は、後述するように、システム起動時に、マイクロコンピュータ１００が外部接続する不揮発性メモリ２００から読み出される。
【００１８】
図２は修正プログラム読み出し動作の手順を示すフローチャートである。マイクロコンピュータ１００は、リセットスタート後に必要な初期設定を実施する（ステップＳ１０１）。次に、マイクロコンピュータ１００は、不揮発性メモリ２００に修正プログラム情報が格納されているか否かを判断し（ステップＳ１０２）、格納されている場合、１番目の修正プログラム情報を読み出して（ステップＳ１０３）、ＲＡＭ１０３の修正プログラム情報格納領域へ設定する（ステップＳ１０４）。ステップＳ１０２からステップＳ１０４までの手順を、読み出す修正プログラム情報がなくなるまで繰り返す。
【００１９】
ステップＳ１０２において、修正プログラム情報がない場合、修正開始アドレスレジスタ１０１と修正プログラムアドレスレジスタ１０２に、最初の修正開始アドレスと修正プログラムアドレス（即ち、修正開始アドレス１と修正プログラムアドレス１）をセットしてから（ステップＳ１０５）、ユーザープログラムの実行を開始する（ステップＳ１０６）。
【００２０】
図３は修正プログラム実行動作の手順を示すフローチャートである。マイクロコンピュータ１００は、プログラム実行中、修正開始アドレスレジスタ１０１のアドレス値とプログラムカウンタ（図示省略）の値とを常時比較していて（ステップＳ２０１）、値が一致した場合、修正プログラムアドレスレジスタ１０２が示すアドレスへジャンプして（ステップＳ２０２）、最初の修正プログラム（即ち、この場合、修正プログラム１）を実行する（ステップＳ２０３）。次に、マイクロコンピュータ１００は、次に修正を行うプログラムの修正開始アドレスと修正プログラムアドレスを修正プログラム情報テーブル１０４内より取得する（ステップＳ２０４）。
【００２１】
マイクロコンピュータ１００は、次の修正開始アドレスが、修正プログラムの終了コード１０８（０ｘ００）であるか否かを判断し（ステップＳ２０５）、終了コードである場合、修正プログラム情報テーブル１０４の先頭に戻り、最初に登録されている修正開始アドレスと修正プログラムアドレス（即ち、この場合修正開始アドレス１と修正プログラムアドレス１）を取得する（ステップＳ２０６）。一方、終了コードでない場合、取得した修正開始アドレスと修正プログラムアドレスを修正開始アドレスレジスタと修正プログラムアドレスレジスタにセットする（ステップＳ２０７）。
【００２２】
以降、ステップＳ２０１からステップＳ２０７までの手順を繰り返すことにより、プログラムの所定の実行位置において、対応する修正プログラムを順次実行することができる。つまり、任意の修正プログラムの実行が終了した後、次に実行する修正プログラムに係わる修正開始アドレスと修正プログラムアドレスを２つの専用アドレスに順次セットし直していくことにより、異なる複数の修正プログラムを実行できる。図４は、修正プログラム情報テーブル１０４のアドレス情報をインクリメントしながらレジスタにアドレスをセットする状況を概念的に示した図である。
【００２３】
以上のように、実施の形態１によれば、専用レジスタを２種類だけ用い、修正開始アドレスと修正プログラムアドレスを、プログラムの実行に従って順次セットして修正プログラムを順次実行していくことにより、ハードウェア資源の使用を最小限に抑制しながら、プログラムに対して複数の異なる修正プログラムを実行することができる。
【００２４】
（実施の形態２）
図５は本発明の実施の形態２に係るマイクロコンピュータの概略構成を示しており、ＦＭ文字多重放送を利用して修正プログラムデータを受信し、ユーザー等の手動によらず自動的に修正プログラムの更新を行う。システム全体は、マイクロコンピュータ３００と、ＲＦモジュールであるＦＭ文字多重放送受信システム３０１と、不揮発性メモリ２００とを備え、マイクロコンピュータ３００は更に、信号受信部３０２、信号解析部３０３、データ取得部３０４、メモリ制御部３０５、及び図示しないＣＰＵやＲＯＭ、ＲＡＭ、プログラムカウンタを備える。
【００２５】
ＣＰＵの信号受信部３０２は、受信システム部３０１で受信された修正プログラムデータを、マイクロコンピュータのＲＡＭ上に取り込む。取り込まれた修正プログラムデータは、決められたデータフォーマットであるか否かを信号解析部５０３で解析し、必要な情報の並び替え等を行なってデータ取得部５０４により取得される。取得された修正プログラムデータは、メモリ制御部５０５より、不具合修正用の修正プログラムデータとして不揮発性メモリ２００に格納される。
【００２６】
図６はＦＭ多重システムの受信データフォーマットを模式的に示した図である。ＦＭ文字多重放送には、一般情報サービスがあり、その中のグループコミュニケーション情報を使用して特定顧客の状況を提供できるエリアを利用する。データは、メーカーコード（8bit）、特定機器コード（8bit）、そのデータが何を意味するかの情報を持つ目的コード（8bit）、そしてプログラム修正データ（可変長）から構成される。また可変長のプログラム修正データは、何番目の修正プログラムの情報であるかを識別するフレームNo情報（8bit）、修正プログラムの長さを表すデータ長情報（8bit）（１修正プログラムあたり、２５６Byte）、修正開始アドレスが格納される修正開始アドレス情報（16bit）、修正プログラムデータ（可変長）、パリティデータ（下位16bit）、のフォーマットで構成される。これらの情報は、外部に接続される不揮発性メモリのメモリ容量と、その情報を取り込むマイクロコンピュータのＲＡＭ容量によって決定される。
【００２７】
図７はＦＭ多重システムを利用した修正プログラム更新動作の手順を示すフローチャートである。マイクロコンピュータ３００がリセットスタート後、ＦＭ文字多重放送受信システム３０１のチューナーが起動される（ステップＳ３０１）。具体的には、チューナーへコマンド送信を行ない、受信部をアクティブにする。その後、ＦＭ多重システムからの文字情報の受信を行ない（ステップＳ３０２）、受信データの有無を判別する（ステップＳ３０３）。
【００２８】
その際、図６に示したデータフォーマットのチェックを行ない、条件を満たしたデータを修正プログラムデータとして認識し、受信データの解析処理を開始する（ステップＳ３０４）。解析処理では、まずメーカーコードの判定を行ない（ステップＳ３０５）、メーカーコードが一致したデータについて、機器コード解析（ステップＳ３０６）、目的コード解析（ステップＳ３０７）を行ない、その解析結果に基づいてデータを取得する（ステップＳ３０８）。取得した修正プログラムデータは不揮発性メモリに書き込まれ（ステップＳ３０９）、以降は、システム起動時に、実施の形態１の図１に示したようなフォーマットでＲＡＭに読み出される。尚、プログラム不具合修正方法における修正プログラム読み出し動作や修正プログラム実行動作は、実施の形態１と同じである。
【００２９】
実施の形態２によれば、ＦＭ文字放送を利用して修正プログラムを受信し、受信した修正プログラムを不揮発性メモリに書き込むことにより、ユーザーや操作者の手動によらず、修正プログラムの更新を自動的に行うことができる。
【産業上の利用可能性】
【００３０】
本発明のソフトウェア不具合修正方法及びプログラムは、２つのレジスタを使用するだけで、修正プログラムの実行が可能となるため、ハードウェア資源の使用を最小限に抑えることができるという効果を有し、修正プログラムの実行によりプログラムの不具合が存在するアドレスを回避してソフトウェアの不具合を修正する技術等として有用である。
【図面の簡単な説明】
【００３１】
【図１】本発明の実施の形態１に係るマイクロコンピュータを示す図
【図２】修正プログラム読み出し動作の手順を示す図
【図３】修正プログラム実行動作の手順を示す図
【図４】修正プログラム情報テーブルのアドレス情報をインクリメントしながらレジスタにアドレスをセットする状況を概念的に示す図
【図５】本発明の実施の形態２に係るマイクロコンピュータの概略構成を示す図
【図６】ＦＭ多重システムの受信データフォーマットを模式的に示す図
【図７】ＦＭ多重システムを利用した修正プログラム更新動作の手順を示す図
【符号の説明】
【００３２】
１００、３００  マイクロコンピュータ
１０１  修正開始アドレスレジスタ
１０２  修正プログラムアドレスレジスタ
１０３  ＲＡＭ
１０４  修正プログラム情報格納領域
２００  不揮発性メモリ
３０１  ＦＭ文字多重放送受信システム
３０２  信号受信部
３０３  信号解析部
３０４  データ取得部
３０５  メモリ制御部
【図１】
2005173727.tif 000003
【図２】
2005173727.tif 000004
【図３】
2005173727.tif 000005
【図４】
2005173727.tif 000006
【図５】
2005173727.tif 000007
【図６】
2005173727.tif 000008
【図７】
2005173727.tif 000009