(57)【要約】【課題】  外部機器との通信ができない制御プログラムが書き込まれたＲＯＭに対し、この制御プログラムを書き換えられるようにする。【解決手段】  ＢＯＯＴ領域に記憶された起動プログラムは、アプリ領域に制御プログラムが記憶されているか否かをチェックし（ステップ１００）、アプリ領域に制御プログラムが記憶されている場合、強制遷移スイッチに電圧信号が入力されているか否かを判定し（ステップ１１０）、強制遷移スイッチに電圧信号が入力されていると判定された場合、ＢＯＯＴ領域が外部機器からの通信を待つ状態を維持する（ステップ１３０）。ＢＯＯＴ領域に記憶された通信プログラムは、外部機器から入力される指令に従ってアプリ領域に記憶された制御プログラムを消去すると共に、外部機器から新しい制御プログラムをＢＯＯＴ領域にダウンロードしてアプリ領域に書き込む。【選択図】        図２
2006252278.tif 000002
【特許請求の範囲】
【請求項１】
制御プログラムが記憶されるアプリ領域（３２）と、前記アプリ領域に制御プログラムが記憶されている場合にその制御プログラムを実行させる起動プログラム、および外部機器と通信を行う通信プログラムが記憶されたＢＯＯＴ領域（３１）と、を有する記憶手段（３０）を備え、前記記憶手段に記憶された各プログラムに従った制御を行うと共に、起動時に前記起動プログラムを実行するマイクロコンピュータであって、
前記制御プログラムが前記外部機器との通信ができないという不具合を持っていることを示す電気信号が入力される信号入力部（２１、２２）が備えられており、
前記起動プログラムは、前記アプリ領域に制御プログラムが記憶されているか否かをチェックする手段（１００）と、前記アプリ領域に制御プログラムが記憶されている場合、前記信号入力部に前記電気信号が入力されているか否かを判定する手段（１１０）と、前記信号入力部に前記電気信号が入力されていると判定した場合、前記ＢＯＯＴ領域が前記外部機器からの通信を待つ状態を維持する手段（１３０）と、を有し、
前記ＢＯＯＴ領域が前記外部機器からの通信を待つ状態とされた後、前記通信プログラムは、前記外部機器から入力される指令に従って前記アプリ領域に記憶された前記制御プログラムを消去すると共に、前記外部機器から新しい制御プログラムを前記ＢＯＯＴ領域にダウンロードし、ダウンロードした前記新しい制御プログラムを前記アプリ領域に書き込むようになっていることを特徴とするマイクロコンピュータ。
【請求項２】
前記アプリ領域に制御プログラムが記憶されており、かつ、前記信号入力部に前記電気信号が入力されていない場合、前記起動プログラムによって前記アプリ領域に記憶された制御プログラムが実行されるようになっていることを特徴とする請求項１に記載のマイクロコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、外部機器との通信ができないという不具合を持ったプログラムがＲＯＭに書き込まれた場合であっても、そのプログラムを書き換えることができるマイクロコンピュータ（以下、マイコンという）に関する。
【背景技術】
【０００２】
従来より、マイコンに備えられたＲＯＭには、セクタと呼ばれる記録領域が多数設けられている。例えば、この多数のセクタのうちの一部がＢＯＯＴ領域とされ、ＢＯＯＴ領域以外のセクタは制御プログラムが記憶されたアプリ領域とされる。ＢＯＯＴ領域は、マイコンの起動時にアプリ領域に記憶された制御プログラムを実行させる起動プログラムや、外部機器と通信を行う通信プログラム、アプリ領域の制御プログラムを書き換えるリフラッシュプログラム等が記憶された領域である。
【０００３】
このようなＲＯＭを備えたマイコンに電源が供給されると、まず、ＢＯＯＴ領域に記憶された起動プログラムがスタートする。この起動プログラムは、アプリ領域に制御プログラムが存在するか否かをチェックし、アプリ領域に制御プログラムが存在する場合、制御プログラムをスタートさせる。この後、マイコンの外部とＲＯＭとの間の通信は、マイコンの外部とアプリ領域との間で行われることとなる。
【０００４】
上記のようにして実行されるアプリ領域の制御プログラムの書き換えは、以下のように行われる。まず、マイコンの外部からＲＯＭのアプリ領域にリフラッシュ開始コマンドが入力される。リフラッシュ可能であれば、制御プログラムから外部機器に対して肯定応答が行われ、アプリ領域からＢＯＯＴ領域に遷移する。これにより、ＢＯＯＴ領域にて以降の通信が行われる。つまり、ＢＯＯＴ領域の通信プログラムが外部機器と通信を行い、アプリ領域の制御プログラムの消去、新プログラムダウンロード、書き込みを順に実施する。こうしてアプリ領域の制御プログラムが書き換えられる。一方、リフラッシュ開始コマンドが受付不可の場合、制御プログラムから否定応答が行われると共に、アプリ領域での制御プログラムが継続して実行され、リフラッシュは行われない。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、アプリとＢＯＯＴの互換性がない（ＢＯＯＴ領域からアプリを起動できない。リフラッシュコマンドを受け付けても、アプリからＢＯＯＴに遷移できない。など）、アプリ領域で外部との通信ができないなどの不具合を持った制御プログラムがアプリ領域に書き込まれてしまうと、リフラッシュシーケンスが正常に行えないため、アプリ領域の制御プログラムの書き換えができなくなってしまう。
【０００６】
つまり、ＢＯＯＴ領域の起動プログラムは、アプリ領域にデータ（制御プログラム）が存在するか否かをチェックすることはできるが、制御プログラムの不具合までをチェックすることはできない。したがって、マイコンに電源が供給されて起動プログラムがスタートし、起動プログラムがアプリ領域に制御プログラムが存在すると判定すると、たとえアプリ領域の制御プログラムに不具合があったとしても通常通りアプリ領域の制御プログラムを実行させてしまう。このような状態になると、外部機器からアプリ領域にリフラッシュ開始コマンドが入力されたとしても、リフラッシュシーケンスが正常に動作せず、リフラッシュを行うことができない。
【０００７】
本発明は、上記点に鑑み、外部機器との通信ができないという不具合を持ったプログラムがＲＯＭに書き込まれた場合であっても、そのプログラムを書き換えることができるマイクロコンピュータを提供することを目的とする。
【課題を解決するための手段】
【０００８】
発明者らは、ＢＯＯＴ領域からアプリ領域に対するプログラム書き換え手段はすでに存在していることに着目し、記憶手段においてＢＯＯＴ領域の起動プログラムがアプリ領域に記憶された制御プログラムを実行させる前の状態を維持することで、外部との通信ができない制御プログラムの書き換えを可能にできると考えた。
【０００９】
したがって、上記目的を達成するため、請求項１に記載の発明では、記憶手段（３０）のアプリ領域（３２）に記憶された制御プログラムが外部機器との通信ができないということを示す電気信号が入力される信号入力部（２１、２２）が備えられており、記憶手段のＢＯＯＴ領域（３１）に記憶された起動プログラムは、アプリ領域に制御プログラムが記憶されているか否かをチェックする手段（１００）と、アプリ領域に制御プログラムが記憶されている場合、信号入力部に電気信号が入力されているか否かを判定する手段（１１０）と、信号入力部に電気信号が入力されていると判定した場合、ＢＯＯＴ領域が外部機器からの通信を待つ状態を維持する手段（１３０）と、を有し、ＢＯＯＴ領域が外部機器からの通信を待つ状態とされた後、ＢＯＯＴ領域に記憶された通信プログラムは、外部機器から入力される指令に従ってアプリ領域に記憶された制御プログラムを消去すると共に、外部から新しい制御プログラムをＢＯＯＴ領域にダウンロードし、ダウンロードした新しい制御プログラムをアプリ領域に書き込むようになっていることを特徴としている。
【００１０】
このように、信号入力部に電気信号が入力されている場合、アプリ領域の制御プログラムを実行させずにＢＯＯＴ領域が外部機器との通信を待つ状態を維持する。これにより、起動プログラムが、外部機器との通信ができない制御プログラムを実行させないようにすることができる。つまり、記憶手段が外部機器からの指令に応答できる状態とすることができ、外部機器からＢＯＯＴ領域を介してアプリ領域の制御プログラムを消去、および書き込みを行うようにすることができる。このようにして、アプリ領域に外部機器との通信ができない制御プログラムが書き込まれたとしても、その制御プログラムを新しい制御プログラムに書き換えることができる。
【００１１】
請求項２に記載の発明では、アプリ領域に制御プログラムが記憶されており、かつ、信号入力部に電気信号が入力されていない場合、起動プログラムによってアプリ領域に記憶された制御プログラムが実行されるようになっていることを特徴としている。
【００１２】
このように、アプリ領域に制御プログラムが記憶されている場合であって、信号入力部に電気信号が入力されていない場合、起動プログラムによって制御プログラムが実行される。つまり、アプリ領域に記憶された制御プログラムが正常に作動する場合、起動プログラムがこの制御プログラムを実行させるようにすることができる。
【００１３】
なお、上記各手段の括弧内の符号は、後述する実施形態に記載の具体的手段との対応関係を示すものである。
【発明を実施するための最良の形態】
【００１４】
（第１実施形態）
以下、本発明の第１実施形態について図を参照して説明する。本実施形態では、車両に搭載されるエアコンＥＣＵを例にして説明する。
【００１５】
図１は、本発明の一実施形態に係るエアコンＥＣＵのブロック図である。図１に示されるエアコンＥＣＵ１０は、車両の空調制御を行うものであり、マイコン２０を内蔵している。
【００１６】
マイコン２０は、上記空調制御を実行するものであり、ＣＰＵ、ＲＡＭ、Ｉ／Ｏポート、Ａ／Ｄ変換器等（いずれも図示しない）やＲＯＭ３０を有して構成される。また、マイコン２０は、２つの強制遷移スイッチ２１、２２を備えている。これら強制遷移スイッチ２１、２２は、制御プログラムが外部機器との通信ができないという不具合を持っていることを示す電気信号を入力するためのものであり、不具合を持った制御プログラムがアプリ領域３２に書き込まれた場合、この制御プログラムをスタートさせないための手段として用いられるものである。
【００１７】
本実施形態では、強制遷移スイッチ２１、２２は、いわゆる端子（ピン）であり、マイコン２０から突き出ている。このような強制遷移スイッチ２１、２２に入力される信号（電圧値）は、後述するＲＯＭ３０のＢＯＯＴ領域３１の起動プログラムに読み取られるようになっている。通常、強制遷移スイッチ２１、２２はグランドに接続され、電圧０Ｖの信号が入力される。なお、強制遷移スイッチ２１、２２は、本発明の信号入力部に相当する。
【００１８】
ＲＯＭ３０は、上記空調制御に係わる制御プログラムや各種演算式等が記憶されたものであり、電源が供給されなくてもデータを保存しておくことのできる記憶手段である。このようなＲＯＭ３０に、例えばＦｌａｓｈＲＯＭ等が用いられる。なお、ＲＯＭ３０は、本発明の記憶手段に相当する。
【００１９】
上記ＲＯＭ３０は、データを保存するための多数の記憶領域（セクタ）で構成されている。このようなＲＯＭ３０では、全記憶領域のうちの一部がＢＯＯＴ領域３１とされ、ＢＯＯＴ領域３１以外の記憶領域がアプリ領域３２とされる。
【００２０】
ＢＯＯＴ領域３１は、エアコンＥＣＵ１０に電源が供給され、マイコン２０が立ち上げられると、エアコンＥＣＵ１０が空調制御を行えるようにするためのプログラムが保存された領域である。このようなＢＯＯＴ領域３１には、マイコン２０の起動時にアプリ領域３２に記憶されたプログラムを実行させる起動プログラム、エアコンＥＣＵ１０の外部機器と通信を行う通信プログラム、アプリ領域３２に記憶されたプログラムを書き換えるリフラッシュプログラム、が記憶されている。
【００２１】
アプリ領域３２は、制御プログラム、すなわち車両の空調を制御する制御プログラムが記憶された領域である。
【００２２】
以上が、本実施形態に係るエアコンＥＣＵ１０の構成である。
【００２３】
次に、エアコンＥＣＵ１０の外部機器との互換性がないプログラム、全く動作しないプログラムなど、外部機器との通信ができない不具合を持った制御プログラムがＲＯＭ３０のアプリ領域３２に書き込まれた場合、ＲＯＭ３０がエアコンＥＣＵ１０の外部機器との通信状態を確保する作動について、図２を参照して説明する。図２は、ＢＯＯＴ領域３１に記憶された起動プログラムの処理内容を示したフローチャートである。
【００２４】
まず、エアコンＥＣＵ１０に電源を供給し、エアコンＥＣＵ１０を立ち上げる。具体的には、ＲＯＭ３０のＢＯＯＴ領域３１の起動プログラムがスタートし、アプリ領域３１に制御プログラムが記憶されている場合には、その制御プログラムが実行される。
【００２５】
この後、外部機器からアプリ領域３１の制御プログラムを書き換える場合、外部機器からアプリ領域３２の制御プログラムにリフラッシュ開始コマンドが入力される。この際、制御プログラムに不具合があり、外部機器との通信ができない場合、アプリ領域３２からリフラッシュ開始コマンドを受信出来ない、又は、応答できない。これにより、ユーザはアプリ領域３２の制御プログラムに不具合があることを知ることができる。
【００２６】
このような場合、エアコンＥＣＵ１０の電源を落とし、強制遷移スイッチ２１、２２に電圧信号（例えば電圧５Ｖ）を入力し、再びエアコンＥＣＵ１０を立ち上げる。そして、エアコンＥＣＵ１０に電源が供給され、マイコン２０が起動されると、ＲＯＭ３０のＢＯＯＴ領域３１に記憶された起動プログラムがスタートする。これに伴い、ＲＯＭ３０がリセットされる、すなわち各種変数等の設定や定義等の初期設定が行われる。
【００２７】
続いて、図２に示されるステップ１００では、アプリ領域３２にデータ（制御プログラム）が存在するか否かが判定される。これは、ＢＯＯＴ領域３１の起動プログラムがアプリ領域３２にアクセスしてデータが存在するか否かをチェックすることによりなされる。
【００２８】
そして、アプリ領域３２に制御プログラムが存在すると判定されるとステップ１１０に進む。一方、ステップ１００でアプリ領域３２にデータが存在しない、すなわち制御プログラムが存在しないと判定されると、ステップ１３０に進む。
【００２９】
ステップ１１０では、強制遷移スイッチ２１、２２に電圧信号が入力されたか否かが判定される。具体的には、ユーザがアプリ領域３２に不具合を持った制御プログラムを書き込んでしまった場合、アプリ領域３２のデータを書き換えるため、ユーザによって強制遷移スイッチ２１、２２にそれぞれ電圧５Ｖの電圧信号が入力される。起動プログラムには、上記電圧５Ｖよりも小さい値のしきい値（例えば４．５Ｖ）が設定されている。したがって、起動プログラムでは、強制遷移スイッチ２１、２２に入力される電圧信号がそれぞれしきい値を超えるか否かが判定される。
【００３０】
そして、強制遷移スイッチ２１、２２に入力される電圧値が両方ともしきい値を超えると判定されるとステップ１３０に進む。一方、各スイッチ２１、２２から入力される電圧信号のうち少なくとも一方がしきい値を超えないと判定されるとステップ１２０に進む。
【００３１】
なお、アプリ領域３２に記憶されている制御プログラムが正常に作動するプログラムであり、書き換えの必要がない場合、ユーザによって強制遷移スイッチ２１、２２に電圧信号は入力されない。したがって、ステップ１１０では電圧信号がしきい値を超えないと判定される。
【００３２】
ステップ１２０では、制御プログラムが実行される。すなわち、アプリ領域３２に記憶されている制御プログラムは不具合を持たず正常に作動するプログラムであるので、起動プログラムによってアプリ領域３２の制御プログラムがスタートする。本実施形態では、車両の空調制御プログラムが実行され、車両の空調制御がなされることとなる。こうして、起動プログラムの処理は終了する。
【００３３】
ステップ１３０では、リフラッシュプログラムが実行される。すなわち、ステップ１００にてアプリ領域３２にデータが存在しない場合およびステップ１１０にて強制遷移スイッチ２１、２２に信号が入力されている場合、ＲＯＭ３０がＥＣＵ１０の外部機器からの通信を待つ状態とされる。つまり、起動プログラムは、アプリ領域３２のデータの存在に関わらずアプリ領域３２には遷移せず、ＲＯＭ３０がＥＣＵ１０の外部機器からの通信を待つ状態を維持する。
【００３４】
これにより、アプリ領域３２に制御プログラムが存在しており、そのプログラムに不具合があったとしても、起動プログラムがそのプログラムを実行させてしまわないようにすることができる。こうして、起動プログラムの処理は終了する。
【００３５】
ステップ１３０の後、新しい制御プログラムは、以下のようにしてＲＯＭ３０のアプリ領域３２に書き込まれる。まず、エアコンＥＣＵ１０の外部機器からＲＯＭ３０のＢＯＯＴ領域３１のリフラッシュプログラムにリフラッシュ開始コマンドが入力され、以降のシーケンスでアプリ領域３２に記憶された不具合を持った制御プログラムが消去される。この後、ＢＯＯＴ領域３１の通信プログラムを介して、エアコンＥＣＵ１０の外部機器から新しい制御プログラムがダウンロードされ、随時アプリ領域３２に記憶される。このようにして、アプリ領域３２のデータが書き換えられる。
【００３６】
アプリ領域３２の制御プログラムを書き換えた後、エアコンＥＣＵ１０の電源を落とし、さらに電源を供給して制御プログラムを立ち上げる。そして、外部機器からアプリ領域３２に対して例えば消去コマンドを入力し、これに対する応答が外部機器に入力されれば、アプリ領域３２に書き込まれた制御プログラムが外部機器との通信が正常に行えることを確認することができる。
【００３７】
以上、説明したように、本実施形態では、強制遷移スイッチ２１、２２に電圧信号が入力されている場合、アプリ領域３２の制御プログラムを実行させずにＢＯＯＴ領域３１が外部機器との通信を待つ状態を維持するようにしている。これにより、起動プログラムが、外部機器との通信ができない制御プログラムを実行させないようにすることができる。
【００３８】
したがって、ＲＯＭ３０が外部機器からの指令に応答できる状態を確保することができ、外部機器からＢＯＯＴ領域３１を介してアプリ領域３２の制御プログラムの消去、および新しい制御プログラムの書き込みを行うようにすることができる。このようにして、アプリ領域３２に外部機器との通信ができない制御プログラムが書き込まれたとしても、その制御プログラムを新しい制御プログラムに書き換えることができる。
【００３９】
（他の実施形態）
上記第１実施形態では、強制遷移スイッチ２１、２２に端子を採用したが、スイッチ手段はこれに限定されるものではなく、電圧信号を入力することができるものであればどんな手段であっても構わない。また、スイッチ手段に入力する信号は電圧値でなくても良い。
【００４０】
上記第１実施形態では、強制遷移スイッチ２１、２２（各端子）にそれぞれ電圧信号を入力しているが、例えばエアコンＥＣＵ１０に備えられたコネクタを介して外部機器から各スイッチ２１、２２に電圧信号を入力するようにしても構わない。
【００４１】
上記第１実施形態では、図２に示されるように、強制遷移スイッチ２１、２２に電圧信号が入力されたか否かを判定するステップ１１０が独立して設けられているが、このステップ１１０をステップ１２０中に設けるようにしても良い。これにより、制御プログラムが実行している最中に各スイッチ２１、２２の電圧信号の入力を判定することができるため、エアコンＥＣＵ１０の電源を落とさずに、制御プログラムの実行ルーチンをＢＯＯＴ領域３１が外部機器との通信を待つ状態に遷移させることができる。
【００４２】
なお、各図中に示したステップは、各種処理を実行する手段に対応するものである。
【図面の簡単な説明】
【００４３】
【図１】本発明の一実施形態に係るエアコンＥＣＵのブロック図である。
【図２】起動プログラムの処理内容を示したフローチャートである。
【符号の説明】
【００４４】
１０…エアコンＥＣＵ、２０…マイコン、２１、２２…強制遷移スイッチ、
３０…ＲＯＭ、３１…ＢＯＯＴ領域、３２…アプリ領域。
【図１】
2006252278.tif 000003
【図２】
2006252278.tif 000004