(57)【要約】【課題】  通常処理を行いながらダウンロード処理を実施することを可能にする。【解決手段】  ＥＰＲＯＭにはＢＯＯＴプログラム，運用プログラム，予備プログラムを格納する各プログラム領域１０，２０，３０および切替えフラグ４０が設けられる。マイクロプロセッサはＲＯＭに格納されているプログラムに従って処理を実行し、内蔵するＲＡＭには、ＢＯＯＴプログラムおよび運用プログラムを起動するために参照される割込みベクタ５０を設けている。切替回路は切替えフラグに基づくマイクロプロセッサからの切替え制御信号に応答して運用プログラム領域と予備プログラム領域のアドレスを交換する。ＢＯＯＴプログラムは、最新のプログラムをダウンロードするときは、割込みベクタをＢＯＯＴプログラム用に書き換えて予備プログラム領域にダウンロードするとともに切替えフラグを反転し、一方、通常動作時は割込みベクタを運用プログラム用に書き換える。【選択図】        図２
2005332228.tif 000002
【特許請求の範囲】
【請求項１】
ＢＯＯＴプログラム，運用プログラム，予備プログラムを格納する各プログラム領域および切替えフラグが設けられた電気的に書換え可能なＲＯＭと、
前記プログラムに従って処理を実行するとともに、前記ＢＯＯＴプログラムおよび前記運用プログラムを起動するために参照される割込みベクタが内蔵するＲＡＭに設けられたマイクロプロセッサと、
前記切替えフラグに基づくマイクロプロセッサからの切替え制御信号に応答して前記運用プログラム領域と予備プログラム領域のアドレスを交換する切替回路とから構成され、
前記ＢＯＯＴプログラムは、外部から最新のプログラムをダウンロードするときは、前記割込みベクタをＢＯＯＴプログラム用に書き換えて最新のプログラムを前記予備プログラム領域にダウンロードするとともに前記切替えフラグを反転し、一方、前記ダウンロードをしないときは前記割込みベクタを運用プログラム用に書き換えることを特徴とするプログラム切替え制御装置。
【請求項２】
前記マイクロプロセッサに、外部から強制的にＢＯＯＴプログラムと運用プログラムを切り替えるためのＢＯＯＴ切替え信号を入力する端子を設けたことを特徴とする請求項１に記載のプログラム切替え制御装置。
【請求項３】
前記ＢＯＯＴプログラム領域と、運用プログラム領域および予備プログラム領域とを異なるメモリバンクに設けたことを特徴とする請求項１または請求項２に記載のプログラム切替え制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュＲＯＭ等の書換え可能な不揮発性メモリに書き込まれるプログラムの切替え制御装置に関する。
【背景技術】
【０００２】
プログラム制御される電子機器では、各種の割込み発生に応じて起動される割込み処理プログラムや、割込み発生時に割込み処理プログラムを起動するために参照される割込みベクタなどが含まれているプログラムを、フラッシュＲＯＭのようなＲＡＭより安定した記憶ができる書換え可能なＲＯＭ（以下、単に「ＲＯＭ」と記す）に格納している。
【０００３】
そして、プログラムの仕様変更やバグがある時には、新しく作成したプログラムをダウンロードすることにより、アップデートするという手法が一般的に行われている。しかし、アップデートされた新プログラムにもバグがあったり、ダウンロード中の通信エラーなどでダウンロード処理が途中で失敗し、電源を再投入した時にプログラムが正常に動作しない場合がしばしばある。
【０００４】
そこで、複数のＲＯＭを使用して各々のＲＯＭにプログラムを格納し、いずれかのＲＯＭを選択されすることによって動作させるプログラムを決定し、新プログラムをアップデートする際には、動作していないＲＯＭを書き換える方法が用いられている（例えば、特許文献１参照）。
【０００５】
この従来の方法では、同一構成のＲＯＭを２個備えており、マイクロプロセッサは、上記ＲＯＭが格納しているプログラムに従って処理を実行する。このプログラムは、ダウンロード入力端子から、一方のＲＯＭ内のプログラムに従って、他方のＲＯＭにマイクロプロセッサのアドレス／データバスを介してダウンロードされる。そして、診断回路により正常にダウンロードできたか判別し、再起動時にダウンロードを行ったＲＯＭを選択することによってＲＯＭを切り替えるというものである。
【０００６】
【特許文献１】特開2002-7171（第１頁ー第６頁、図１）
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述した従来技術では、複数のＲＯＭを使用しているため、ＲＯＭの切替え時に複雑な切替え回路が必要であり、また高価になるという第１の問題点がある。
【０００８】
また、１つのＲＯＭを使用して実現した場合、割込み発生に応じて起動される割込み処理プログラムを書き換えてしまうと、書き換え中に割込み処理が発生した場合に割込み処理プログラムが正常に動作しない不具合が発生するという第２の問題点もある。
【０００９】
そこで、本発明の目的は、１つのＲＯＭを使用し、かつ通常運用動作を行いながらダウンロード処理を実施することが可能なプログラム切替え制御装置を提供することにある。
【００１０】
本発明の他の目的は、ダウンロード処理が失敗して運用プログラムと予備プログラムの両方が正常に動作できない場合にも、容易に復旧可能なプログラム切替え制御装置を提供することにある。
【課題を解決するための手段】
【００１１】
請求項１記載の発明は、ＢＯＯＴプログラム，運用プログラム，予備プログラムを格納する各プログラム領域（図２の１０，２０，３０）および切替えフラグ（図２の４０）が設けられたＲＯＭ（図１の２）と、プログラムに従って処理を実行するとともに、ＢＯＯＴプログラムおよび運用プログラムを起動するために参照される割込みベクタ（図２の５０）が内蔵するＲＡＭに設けられたマイクロプロセッサ（図１の１）と、切替えフラグに基づくマイクロプロセッサからの切替え制御信号（図１の６）に応答して運用プログラム領域と予備プログラム領域のアドレスを交換する切替回路（図１の３）とから構成され、ＢＯＯＴプログラムは、外部から最新のプログラムをダウンロードするときは、割込みベクタをＢＯＯＴプログラム用に書き換えて最新のプログラムを予備プログラム領域にダウンロードするとともに切替えフラグを反転し、一方、通常動作時は割込みベクタを運用プログラム用に書き換えることを特徴とするプログラム切替え制御装置である。
【００１２】
請求項２記載の発明は、請求項１記載の発明において、マイクロプロセッサに、外部から強制的にＢＯＯＴプログラムと運用プログラムを切り替えるためのＢＯＯＴ切替え信号を入力する端子（図１の５）を設けたことを特徴とするプログラム切替え制御装置である。
【００１３】
請求項３記載の発明は、請求項１または請求項２記載の発明において、ＢＯＯＴプログラム領域と、運用プログラム領域および予備プログラム領域とを異なるメモリバンクに設けたことを特徴とするプログラム切替え制御装置である。
【発明の効果】
【００１４】
本発明の第１の効果は、１つのＲＯＭを使用して、ＲＯＭ内のプログラム構成と、割込み発生時に参照される割込みベクタの参照方法を工夫することによって、通常運用動作を行いながらダウンロード処理を実施することができることにある。
【００１５】
本発明の第２の効果は、ダウンロード処理中であっても、運用プログラムを保持することができるため、プログラムの書換えに失敗した場合でも容易に復旧することができることにある。
【００１６】
本発明の第３の効果は、ＢＯＯＴプログラムにもダウンロード機能を持たせることによって、運用プログラムと予備プログラムの両方の領域に異常が生じて正常に動作できない場合には、強制的にＢＯＯＴプログラムを起動させる機能を備えることよって、再ダウンロードも可能となり、容易に復旧できることにある。
【発明を実施するための最良の形態】
【００１７】
次に、発明を実施するための最良の形態について図面を参照して詳細に説明する。
【００１８】
図１を参照すると、本発明のプログラム切替え制御装置は、マイクロプロセッサ１と、ＲＯＭ２と、切替回路３とから構成されている。マイクロプロセッサ１は、ＲＯＭ２に格納されているプログラムに従って処理を実行する。このプログラムは、電子機器制御プログラム等のアプリケーションプログラムの他、外部から供給されるプログラムデータをダウンロードするＢＯＯＴプログラムを含む。アプリケーションプログラムは、運用プログラムと予備プログラムとで二重化されている。
【００１９】
マイクロプロセッサ１には、ダウンロードデータ入力端子４と、ＢＯＯＴ切替え信号入力端子５とが設けられている。ダウンロードデータ入力端子４は、ダウンロード用のプログラムデータをマイクロプロセッサ１に入力するための端子である。また、ＢＯＯＴ切替え信号入力端子５は、実行すべきプログラムとしてＢＯＯＴプログラムと運用プログラムを外部から強制的に切り替えるためのＢＯＯＴ切替え信号を入力するための端子である。
【００２０】
マイクロプロセッサ１と、ＲＯＭ２および切替回路３との間はアドレス／データバス７で接続されている。上記のプログラムデータはアドレス／データバス７経由でマイクロプロセッサ１からＲＯＭ２にダウンロードされる。
【００２１】
マイクロプロセッサ１は、ダウンロード処理終了後、切替回路３に切替え制御信号６を出力する。切替回路３は、切替え制御信号６に応答して、アドレス／データバス７経由で運用プログラムと予備プログラムを切り替える機能を備えている。
【実施例１】
【００２２】
図２は、本発明のプログラム切替え制御装置におけるメモリマップの一例を示す。図２（Ａ）は通常時におけるメモリマップであって、ＲＯＭ２は、ＢＯＯＴプログラム領域（アドレス0000000h〜003FFFFh）１０と、運用プログラム領域（アドレス0040000h〜00FFFFFh）２０と、予備プログラム領域（アドレス0140000h〜01FFFFFh）３０と、切替えフラグ４０（アドレス0100000h）を備えており、電源投入時のリセットベクタはアドレス0000000hに配置されている。また、ＲＡＭには割込みベクタ５０（アドレス3FFE000h）が設けられている。割込みベクタ５０は、ＢＯＯＴプログラム１０と運用プログラム２０を切り替えるためのものである。
【００２３】
なお、ＢＯＯＴプログラム領域１０，運用プログラム領域２０，予備プログラム領域３０の各参照番号は、便宜、ＢＯＯＴプログラム，運用プログラム，予備プログラムの参照番号としても使用する。
【００２４】
ここで、ＲＯＭが複数のバンクから構成されている性質を利用して、ＢＯＯＴプログラム領域１０と、運用プログラム領域２０および予備プログラム領域３０とを異なるバンクに設定し、ＢＯＯＴプログラム１０から予備プログラム領域３０のへの書込みを可能にする。
【００２５】
ＢＯＯＴプログラム１０は、割込み発生時に参照される割込みベクタ１１と、割込み発生に応じて起動される割込み処理プログラム１２とを含んであり、実行するプログラム領域を選択する機能と、選択したプログラムによって割込みベクタ５０を書き換える機能と、ＲＯＭ２の予備プログラム３０を書き換える機能とを有する。
【００２６】
運用プログラム２０と予備プログラム３０には、同等のメモリ容量が割り当てられており、各プログラムには割込み発生に応じて起動される割込み処理プログラムと電子機器制御プログラムが格納されている。ここでは、特に運用プログラム領域２０に含まれる割込み処理プログラム２１のみを明示しているが、予備プログラム領域３０にも同様な割込み処理プログラム３１（図示省略）が格納されている。
【００２７】
通常、割込み処理プログラム２１は、ＥＰＲＯＭ２のＢＯＯＴプログラム領域１０内の割込みベクタ１１を参照することによって起動される。そのため、ＢＯＯＴプログラム１０によって予備プログラム３０を書き換えるためには、ＢＯＯＴプログラム領域１０内の割込み処理プログラム１２が起動されるように割込みベクタ１１を書き換える必要がある。
【００２８】
そこで、ＢＯＯＴプログラム領域１０内の割込み処理プログラム１２と運用プログラム領域３０内の割込み処理プログラム２１を容易に切り替えるために、割込みベクタ１１は常に割込みベクタ５０を参照することとし、割込みベクタ５０を書換え容易なＲＡＭに設けることで、必要に応じてＢＯＯＴプログラム１０と運用プログラム２０を切り替えることができる。例えば、マイクロプロセッサ１に内臓されるＲＡＭを使用すれば、新たにハードを追加することなく、容易に実現できる。
【００２９】
切替えフラグ４０には、実行すべき電子機器制御プログラムを指定する情報が書き込まれており、ＢＯＯＴプログラム１０によって参照され、これにより運用プログラム２０と予備プログラム３０のいずれか一方を選択することができる。図２（Ｂ）は、予備プログラム３０を選択して切り替えた場合のメモリマップを示す。
【００３０】
通常動作時、ダウンロードは図２（Ａ）に示す予備プログラム領域３０（アドレス0140000h〜01FFFFFh）に対して行われる。ダウンロード終了後、切替えフラグ４０を反転する。すると、図２（Ｂ）に示すように、運用プログラム領域２０と予備プログラム領域３０のアドレスが切り替わる。ここまでが、一連のダウンロード処理であって、ダウンロード処理後のＣＰＵリセットによって、図２（Ａ）の通常時のメモリマップに戻る。この結果、予備プログラム領域３０（アドレス0140000h〜01FFFFFh）にダウンロードされた新プログラムが運用プログラム領域２０（アドレス0040000h〜00FFFFFh）に移動し、新たに運用プログラム２０として動作する。
【００３１】
次に、本実施例において、ダウンロード処理を行い新プログラムに切り替わるまでの動作を図３のフローチャートにより説明する。
【００３２】
マイクロプロセッサ１は、ダウンロードデータ入力端子４からダウンロード開始要求の信号を受信するとダウンロードモードとなり、ダウンロードデータ入力端子４からダウンロードデータを受信する（図３のステップＳ１）。そして、全てのダウンロードデータ受信後、ダウンロードフラグをＯＮし（Ｓ２）、ＣＰＵリセットを行う（Ｓ３）。
【００３３】
ダウンロードフラグとは、ダウンロード中であるか否かを判別するためのフラグであり、通常はＯＦＦとなっている。ＣＰＵリセット後、ＢＯＯＴプログラム１０が起動し、ダウンロードフラグのチェックを行う（Ｓ４）。その時、ダウンロードフラグがＯＮであればダウンロードモードとなり、予備プログラム領域３０にダウンロードデータを書き込むため、ＲＡＭ上の割込みベクタ５０をＢＯＯＴプログラム１０参照用に書き換え（Ｓ５）、ＢＯＯＴプログラム１０で動作するように設定する。
【００３４】
そして、受信したダウンロードデータをＲＯＭ２の予備プログラム３０領域に書き込む（Ｓ６）。受信したダウンロードデータの書き込み終了後、ダウンロードフラグをＯＦＦに戻し（Ｓ７）、切替え制御信号６が‘０’の時は‘１’に、切替え制御信号６が‘１’の時は‘０’に設定して（Ｓ８）、ＣＰＵリセットを行う（Ｓ９）。この結果、再びＢＯＯＴプログラム１０が再起動し、ダウンロードフラグのチェックを行う（Ｓ４）。この時、ダウンロードフラグはＯＦＦのため、ＲＡＭ上の割込みベクタ５０を運用プログラム２０参照用に書き換え（Ｓ１０）、運用プログラム１３が起動する（Ｓ１２）。
【００３５】
切替え制御信号６は、ダウンロード処理を実行する度に、‘１’と‘０’のどちらかの値を交互に繰り返し、切替回路３に入力される。切替回路３は、切替え制御信号６を使用して、運用プログラム２０と予備プログラム３０のアドレスを切り替え、常にダウンロードした新プログラムが運用プログラム２０の先頭アドレスである４００００ｈ番地（図２Ａ）になるように制御されている。そのため、ダウンロード処理を行う前にどちらのプログラム領域を書き換えるべきか確認する必要がなく、常に予備プログラム３０にダウンロードすれば良い。
【００３６】
次に、本実施例におけるＢＯＯＴプログラム１０のＣＰＵ起動時の動作を図４のフローチャートにより詳細に説明する。ＣＰＵリセット後、実行するプログラム領域を選択するためにプログラム選択機能が動作する。
【００３７】
まず、ダウンロードフラグを判別して（図４のステップＴ１）、ダウンロードフラグがＯＮであればダウンロードモードとなり、予備プログラム３０にダウンロードデータを書き込むため、ＲＡＭ上の割り込みベクタ５０をＢＯＯＴプログラム１０参照用に書き換え（Ｔ２）、ＢＯＯＴプログラム１０で動作するように設定する。
【００３８】
そして、受信したダウンロードデータをＥＰＲＯＭ２の予備プログラム３０に書き込む（Ｔ３）。受信したダウンロードデータの書込み終了後、ダウンロードフラグをＯＦＦに戻し（Ｔ４）、切替え制御信号６が‘０’の時は‘１’に、切替え制御信号６が‘１’の時は‘０’に設定して（Ｔ５）、ＣＰＵリセットを行う（Ｔ６）。
【００３９】
次に、ダウンロード処理が失敗した場合など、運用プログラム２０と予備プログラム３０が共に正常動作できない時は（Ｔ７）、ＲＡＭ上の割込みベクタ５０をＢＯＯＴプログラム１０参照用に書き換え（Ｔ８）、ＢＯＯＴプログラム１０で動作する（Ｔ９）。ここで、ＢＯＯＴプログラム１０に簡単なデバッグ機能や、ダウンロード機能を持たせることによって、ダウンロード処理や異常処理の解析をすることも可能である。
【００４０】
また、運用プログラム２０と予備プログラム３０が共に正常動作できない時には、予備プログラム３０だけでなく、運用プログラム２０も書換え対象とし、運用プログラム領域２０と予備プログラム領域３０両方のエリアにダウンロードできる機能を持たせても良い。
【００４１】
更に、運用プログラム２０と予備プログラム３０のいずれかが正常動作可能な時であっても、ＢＯＯＴ切替え信号入力端子５からＢＯＯＴプログラム１０で動作するように設定することによって（Ｔ１０）、ＲＡＭ上の割込みベクタ５０をＢＯＯＴプログラム１０参照用に書き換え（Ｔ８）、強制的にＢＯＯＴプログラム１０で動作させることも可能である（Ｔ９）。
【００４２】
以上の各ケース以外の場合は、ＲＡＭ上の割込みベクタ５０を運用プログラム２０参照用に書き換え（Ｔ１１）、運用プログラム２０が起動する（Ｔ１２）。
【００４３】
このように、ＲＡＭ上の割込みベクタ５０を書き換えるだけで、簡単にＢＯＯＴプログラム１０と運用プログラム２０を切り替えることができる。
【産業上の利用可能性】
【００４４】
本発明は、フラッシュＲＯＭ等の書換え可能な不揮発性メモリを使用したプログラムのダウンロード方式に適用できる。
【図面の簡単な説明】
【００４５】
【図１】本発明のプログラム切替え制御装置を示すブロック図
【図２】本発明のプログラム切替え制御装置におけるメモリマップの一例を示す図
【図３】本発明のプログラム切替え制御装置においてダウンロード処理を行い新プログラムに切り替わるまでの動作を示すフローチャート
【図４】本発明のプログラム切替え制御装置におけるＢＯＯＴプログラムのＣＰＵ起動時の動作を示すフローチャート
【符号の説明】
【００４６】
１      マイクロプロセッサ
２      ＲＯＭ
３      切替回路
４      ダウンロードデータ入力端子
５      ＢＯＯＴ切替え信号入力端子
６      切替え制御信号
７      アドレス／データバス
１０    ＢＯＯＴプログラム
１１    割込みベクタ
１２    割込み処理プログラム
２０    運用プログラム
２１    割込み処理プログラム
３０    予備プログラム
４０    切替えフラグ
５０    割込みベクタ
【図１】
2005332228.tif 000003
【図２】
2005332228.tif 000004
【図３】
2005332228.tif 000005
【図４】
2005332228.tif 000006