(57)【特許請求の範囲】
【請求項１】
車両用の電子制御装置であって、
車載装置に接続されるインタフェースと、
電気的にデータ書換可能な第一の不揮発性メモリを内蔵し、前記第一の不揮発性メモリが記憶するソフトウェアに基づき動作して、前記インタフェースに接続された車載装置を使用した車両制御を実現するマイクロコンピュータと、
前記マイクロコンピュータによる車両制御用のソフトウェアを記憶する第二の不揮発性メモリと、
外部装置から指令信号を受信すると、前記第二の不揮発性メモリが記憶するソフトウェアを、前記第二の不揮発性メモリから読み出し、読み出したソフトウェアを、前記マイクロコンピュータが内蔵する前記第一の不揮発性メモリに書き込む書込手段と、
を備えることを特徴とする車両用の電子制御装置。
【請求項２】
前記第二の不揮発性メモリには、前記車両制御用のソフトウェアとして、複数種類のソフトウェアが記憶されており、
前記書込手段は、前記外部装置から指令信号を受信すると、前記複数種類のソフトウェアの内、前記指令信号が指定する種類のソフトウェアを、前記第二の不揮発性メモリから読み出し、読み出したソフトウェアを、前記第一の不揮発性メモリに書き込む構成にされていることを特徴とする請求項１記載の車両用の電子制御装置。
【請求項３】
車両用の電子制御装置であって、
車載装置に接続されるインタフェースと、
電気的にデータ書換可能な第一の不揮発性メモリを内蔵し、前記第一の不揮発性メモリが記憶するソフトウェアに基づき動作して、前記インタフェースに接続された車載装置を使用した車両制御を実現するマイクロコンピュータと、
前記マイクロコンピュータによる車両制御用のソフトウェアとして、予め定められた車両タイプ毎に、車両タイプに適合するソフトウェアを記憶する第二の不揮発性メモリと、
自車の車両タイプを識別する車両タイプ識別手段と、
前記第一の不揮発性メモリが記憶するソフトウェアが、自車の車両タイプに適合するソフトウェアであるか否かを判定する適合判定手段と、
前記適合判定手段により、前記第一の不揮発性メモリが記憶するソフトウェアが、自車の車両タイプに適合するソフトウェアではないと判定されると、前記第二の不揮発性メモリが記憶するソフトウェアであって、前記車両タイプ識別手段によって識別された自車の車両タイプに適合するソフトウェアを、前記第二の不揮発性メモリから読み出し、読み出したソフトウェアを、前記第一の不揮発性メモリに書き込むことで、前記マイクロコンピュータが内蔵する前記第一の不揮発性メモリが記憶する車両制御用のソフトウェアを、自車の車両タイプに適合するソフトウェアに置換する書込手段と、
を備えることを特徴とする車両用の電子制御装置。
【請求項４】
前記第一の不揮発性メモリに、車両制御用のソフトウェアが書き込まれているか否かを判定する書込判定手段
を備え、
前記書込手段は、前記書込判定手段により、前記第一の不揮発性メモリに車両制御用のソフトウェアが書き込まれていないと判定されると、前記第二の不揮発性メモリが記憶するソフトウェアであって、前記車両タイプ識別手段によって識別された車両タイプに適合するソフトウェアを、前記第二の不揮発性メモリから読み出し、読み出したソフトウェアを、前記第一の不揮発性メモリに書き込む構成にされていることを特徴とする請求項３記載の車両用の電子制御装置。
【請求項５】
車両用の電子制御装置であって、
車載装置に接続されるインタフェースと、
電気的にデータ書換可能な第一の不揮発性メモリを内蔵し、前記第一の不揮発性メモリが記憶するソフトウェアに基づき動作して、前記インタフェースに接続された車載装置を使用した車両制御を実現するマイクロコンピュータと、
前記マイクロコンピュータによる車両制御用のソフトウェアとして、任意に装備される車載装置を使用した車両制御を前記マイクロコンピュータに実現させるためのソフトウェアを記憶する第二の不揮発性メモリと、
前記インタフェースに、前記任意に装備される車載装置が接続されたか否かを判定する装備判定手段と、
前記装備判定手段によって前記インタフェースに前記任意に装備される車載装置が接続されたと判定されると、前記第二の不揮発性メモリが記憶する前記任意に装備される車載装置を使用した車両制御をマイクロコンピュータに実現させるためのソフトウェアを、前記第二の不揮発性メモリから読み出し、読み出したソフトウェアを、前記マイクロコンピュータが内蔵する前記第一の不揮発性メモリに書き込む書込手段と、
を備えることを特徴とする車両用の電子制御装置。
【請求項６】
車両用の電子制御装置であって、
車載装置に接続されるインタフェースと、
電気的にデータ書換可能な第一の不揮発性メモリを内蔵し、前記第一の不揮発性メモリが記憶するソフトウェアに基づき動作して、前記インタフェースに接続された車載装置を使用した車両制御を実現するマイクロコンピュータと、
前記マイクロコンピュータによる車両制御用のソフトウェアであって、前記第一の不揮発性メモリが記憶するソフトウェアと同一種類のソフトウェアを記憶する第二の不揮発性メモリと、
前記第一の不揮発性メモリが記憶するソフトウェアと、前記第二の不揮発性メモリが記憶する同一種類のソフトウェアとを、比較することによって、前記第一の不揮発性メモリ上のソフトウェアの記憶状態の異常を検知する異常検知手段と、
前記異常検知手段により異常が検知されると、前記第二の不揮発性メモリが記憶するソフトウェアを、前記第二の不揮発性メモリから読み出し、読み出したソフトウェアを、前記マイクロコンピュータが内蔵する前記第一の不揮発性メモリに書き込むことで、前記異常検知手段にて異常が検知されたソフトウェアを、前記読み出したソフトウェアに置換する書込手段と、
を備えることを特徴とする車両用の電子制御装置。
【請求項７】
前記第二の不揮発性メモリには、前記車両制御用のソフトウェアとして、前記第一の不揮発性メモリが記憶するソフトウェアと同一種類のソフトウェアを含む複数種類のソフトウェアが記憶されており、
当該電子制御装置は、
前記第二の不揮発性メモリにおける前記第一の不揮発性メモリが記憶するソフトウェアと同一種類のソフトウェアの記憶状態の異常を検知する予備検知手段
を備え、
前記書込手段は、前記異常検知手段により異常が検知され、前記予備検知手段により異常が検知されていない場合には、前記第一の不揮発性メモリが記憶するソフトウェアと同一種類のソフトウェアを、前記第二の不揮発性メモリから読み出し、読み出したソフトウェアを、前記第一の不揮発性メモリに書き込むことで、前記異常検知手段にて異常が検知されたソフトウェアを、前記第二の不揮発性メモリが記憶する同一種類のソフトウェアに置換し、前記異常検知手段により異常が検知され、且つ、前記予備検知手段により異常が検知されている場合には、前記第二の不揮発性メモリが記憶する同一種類のソフトウェアを除くソフトウェアであって、前記異常検知手段により異常が検知されたソフトウェアに代替するソフトウェアを、前記第二の不揮発性メモリから読み出し、読み出したソフトウェアを、前記第一の不揮発性メモリに書き込むことで、前記異常検知手段にて異常が検知されたソフトウェアを、読み出した前記代替するソフトウェアに置換する構成にされていること特徴とする請求項６記載の車両用の電子制御装置。
【請求項８】
車両用の電子制御装置であって、
車載装置に接続されるインタフェースと、
電気的にデータ書換可能な第一の不揮発性メモリを内蔵し、前記第一の不揮発性メモリが記憶するソフトウェアに基づき動作して、前記インタフェースに接続された車載装置を使用した車両制御を実現するマイクロコンピュータと、
前記マイクロコンピュータによる車両制御用のソフトウェアとして、前記第一の不揮発性メモリが記憶するソフトウェアと同一種類のソフトウェアを含む複数種類のソフトウェアを記憶する第二の不揮発性メモリと、
前記第一の不揮発性メモリ上のソフトウェアの記憶状態の異常を検知する異常検知手段と、
前記第二の不揮発性メモリにおける前記第一の不揮発性メモリが記憶するソフトウェアと同一種類のソフトウェアの記憶状態の異常を検知する予備検知手段と、
前記異常検知手段により異常が検知され、前記予備検知手段により異常が検知されていない場合には、前記第一の不揮発性メモリが記憶するソフトウェアと同一種類のソフトウェアを、前記第二の不揮発性メモリから読み出し、読み出したソフトウェアを、前記マイクロコンピュータが内蔵する前記第一の不揮発性メモリに書き込むことで、前記異常検知手段にて異常が検知されたソフトウェアを、前記第二の不揮発性メモリが記憶する同一種類のソフトウェアに置換し、前記異常検知手段により異常が検知され、且つ、前記予備検知手段により異常が検知されている場合には、前記第二の不揮発性メモリが記憶する同一種類のソフトウェアを除くソフトウェアであって、前記異常検知手段により異常が検知されたソフトウェアに代替するソフトウェアを、前記第二の不揮発性メモリから読み出し、読み出したソフトウェアを、前記第一の不揮発性メモリに書き込むことで、前記異常検知手段にて異常が検知されたソフトウェアを、読み出した前記代替するソフトウェアに置換する書込手段と、
を備えることを特徴とする車両用の電子制御装置。
【請求項９】
前記第一の不揮発性メモリの異常を検知するハードウェア異常検知手段
を備え、
前記マイクロコンピュータは、前記ハードウェア異常検知手段により前記第一の不揮発性メモリの異常が検知されると、前記第二の不揮発性メモリにアクセスし、前記第二の不揮発性メモリが記憶するソフトウェアに基づき動作して、前記車両制御を実現する構成にされていることを特徴とする請求項１〜請求項８のいずれかに記載の車両用の電子制御装置。
【請求項１０】
前記第二の不揮発性メモリは、電気的にデータ書換可能な不揮発性メモリであることを特徴とする請求項１〜請求項９のいずれかに記載の車両用の電子制御装置。
【請求項１１】
車両用の電子制御装置であって、
車載装置に接続されるインタフェースと、
電気的にデータ書換可能な第一の不揮発性メモリを内蔵し、前記第一の不揮発性メモリが記憶するソフトウェアに基づき動作して、前記インタフェースに接続された車載装置を使用した車両制御を実現するマイクロコンピュータと、
前記マイクロコンピュータによる車両制御用のソフトウェアを記憶する電気的にデータ書換可能な不揮発性メモリである第二の不揮発性メモリと、
所定条件が満足されると、前記第二の不揮発性メモリが記憶するソフトウェアを、前記第二の不揮発性メモリから読み出し、読み出したソフトウェアを、前記マイクロコンピュータが内蔵する前記第一の不揮発性メモリに書き込む書込手段と、
を備え、
前記書込手段は、外部装置から指令信号を受信すると、前記指令信号と共に前記外部装置から受信した書込対象のソフトウェアを、前記第二の不揮発性メモリに書き込み、この書き込みが正常終了した後、前記書込対象のソフトウェアを、前記第一の不揮発性メモリに書き込む構成にされていること
を特徴とする車両用の電子制御装置。
【請求項１２】
前記第二の不揮発性メモリは、前記マイクロコンピュータとは別体に構成され、前記マイクロコンピュータに外部接続されていることを特徴とする請求項１〜請求項１１のいずれかに記載の車両用の電子制御装置。
【請求項１３】
前記第二の不揮発性メモリは、前記第一の不揮発性メモリよりも記憶容量が大きいことを特徴とする請求項１〜請求項１２のいずれかに記載の車両用の電子制御装置。
【請求項１４】
前記第一の不揮発性メモリは、ＮＯＲ型のフラッシュメモリであり、
前記第二の不揮発性メモリは、ＮＡＮＤ型のフラッシュメモリであることを特徴とする請求項１〜請求項１３のいずれかに記載の車両用の電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車両用の電子制御装置に関する。
【背景技術】
【０００２】
近年、マイクロコンピュータ搭載の電子制御装置（ＥＣＵ）を用いて、車両制御を行う方法が広く普及している。この種の電子制御装置が搭載された車両では、マイクロコンピュータが、メモリに記憶されたソフトウェアに基づき、車両制御を行う。このようにソフトウェアにより車両制御を実現する場合には、不揮発性メモリに、車両タイプに適合するソフトウェアを格納することで、電子制御装置のハードウェア構成を変更することなく、電子制御装置を、様々なタイプの車両に対応させることができる。
【０００３】
特に、自動車等では、車両タイプ（グレード等）に応じて車載装置の種類が異なるといった理由や、消費者が車両への装着要否を任意に選択可能な車載装置（所謂オプション）が様々に存在するといった理由、エンジン制御用のマップを、スポーツタイプなどの車両タイプに応じて変更しなければならないといった理由等により、ソフトウェア記憶用の不揮発性メモリとして、電気的にデータ書換可能なメモリが採用される場合が多い。
【０００４】
上記不揮発性メモリを採用すれば、車両の生産ラインや、車両のメンテナンスを行うサービスセンタ等において、電子制御装置の不揮発性メモリに、車両タイプに適合したソフトウェアを書き込むことで、電子制御装置を、様々な車両タイプに適合させることができる。尚、電気的にデータ書換可能な不揮発性メモリが搭載された電子制御装置としては、マイクロコンピュータに上記不揮発性メモリが内蔵された電子制御装置が知られている。
【０００５】
また、車両制御の形態を変更する方法としては、取り外し自在な外部記憶装置（メモリカード）に、車両制御用のソフトウェアを書き込み、外部記憶装置から、マイクロコンピュータ内蔵のＲＡＭにソフトウェアを取り込むように、電子制御装置を構成することで、電子制御装置が実行する車両制御の形態を変更する方法が知られている（例えば、特許文献１参照）。
【特許文献１】特開平５−３８９６９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来の電子制御装置では、次のような問題があった。
例えば、外部記憶装置からマイクロコンピュータ内蔵のＲＡＭに、ソフトウェアを取り込み、車両制御を実現する電子制御装置では、外部記憶装置の取り外しが容易であるため、電子制御装置に組み込むソフトウェアの変更が容易であるものの、ＲＡＭにおいてソフトウェアを記憶維持できないため、この種の電子制御装置では、起動時に、外部記憶装置からソフトウェアを読み出す作業が必要で、立ち上がりに時間が掛かるといった問題があった。
【０００７】
一方、上記不揮発性メモリ内蔵のマイクロコンピュータを備える電子制御装置では、起動時に外部記憶装置からソフトウェアを読み出す必要がないため、電子制御装置を高速に立ち上げることができるものの、不揮発性メモリ内のソフトウェアの書き換えに際し、専用ツールが必要で、ソフトウェアの書き換えを容易に行うことができないといった問題があった。即ち、この種の電子制御装置を車両に搭載する場合には、サービスセンタ等でソフトウェアの書き換えができるようにするために、各サービスセンタに、ソフトウェア及びソフトウェア書換用の専用ツールを提供しなければならず、ソフトウェアの書き換えに係る運用コストが多大であるといった問題があった。
【０００８】
また、上記種類の電子制御装置を車両に搭載する場合には、不揮発性メモリが記憶するソフトウェアの一部が揮発してしまった場合、対応するソフトウェアが手元にないといった理由で、電子制御装置（車両）の修理に時間が掛かる可能性があった。
【０００９】
本発明は、こうした問題に鑑みなされたものであり、電気的にデータ書換可能な不揮発性メモリを内蔵するマイクロコンピュータを備えた車両用の電子制御装置において、マイクロコンピュータが内蔵する不揮発性メモリへ、ソフトウェアを簡単に書き込むことが可能な技術を提供することを目的とする。
【課題を解決するための手段】
【００１０】
かかる目的を達成するため、本発明では、車両用の電子制御装置に、第一及び第二の不揮発性メモリを設けた。第一の不揮発性メモリは、マイクロコンピュータに内蔵され、電気的にデータ書換可能な構成にされたものである。マイクロコンピュータは、第一の不揮発性メモリが記憶するソフトウェアに基づき動作し、インタフェースに接続された車載装置を使用した車両制御を実現する。
【００１１】
また、第二の不揮発性メモリは、マイクロコンピュータによる車両制御用のソフトウェアを記憶する不揮発性メモリであり、マイクロコンピュータに内蔵、若しくは、外部接続されている。そして、この電子制御装置においては、所定条件が満足されると、書込手段が、第二の不揮発性メモリが記憶するソフトウェアを、第二の不揮発性メモリから読み出し、読み出したソフトウェアを、マイクロコンピュータが内蔵する第一の不揮発性メモリに書き込む。尚、書込手段としての機能は、プログラムにより、マイクロコンピュータに実現させることができる。
【００１２】
この電子制御装置によれば、第二の不揮発性メモリに、第一の不揮発性メモリが記憶するソフトウェアとは異なる種類のソフトウェアを記憶させておくことで、外部装置からソフトウェアを電子制御装置内に転送しなくても、第一の不揮発性メモリが記憶するソフトウェアを書き換えることができる。
【００１３】
また、第二の不揮発性メモリに、第一の不揮発性メモリに記憶されたソフトウェアと同一種類のソフトウェアを記憶させておけば、第一の不揮発性メモリにおいてソフトウェアの一部が揮発してしまった場合に、外部装置からソフトウェアを電子制御装置内に転送しなくても、正常なソフトウェアを、第一の不揮発性メモリに再度書き込むことができる。
【００１４】
即ち、この発明によれば、車両制御の形態を変更する場合や、揮発したソフトウェアを第一の不揮発性メモリに再度書き込む際、第一の不揮発性メモリに書き込むソフトウェアを、外部装置から電子制御装置に転送する必要がないため、サービスセンタ等において、ソフトウェア類を揃えておかなくても済む。従って、この電子制御装置によれば、マイクロコンピュータが内蔵するソフトウェアの書き換えを、簡単に行うことができる。
【００１５】
また、この発明では、マイクロコンピュータ内蔵の不揮発性メモリに実行用のソフトウェアを搭載するため、起動時に、外部記憶装置（メモリカード）から、ソフトウェアをＲＡＭに読み出す従来の電子制御装置よりも、電子制御装置を高速に起動することができる。即ち、この発明によれば、ソフトウェアの書き換えが容易で、高速動作（起動）可能な電子制御装置を構成することができる。
【００１６】
尚、上記目的を達成するためには、第一の不揮発性メモリに、複数種のソフトウェアを記憶させ、車両制御の形態を変更する場合には、第一の不揮発性メモリにおいて、実行するソフトウェアを変更すればよいと思われるかもしれないが、車両用の電子制御装置では、高速な演算処理が求められ、それに伴って、第一の不揮発性メモリとしては、高速アクセス可能な不揮発性メモリを採用する必要がある。しかしながら、高速アクセス可能な不揮発性メモリは、高速性に重点を置かれて設計されているため、大容量化（高集積化）に不向きである。即ち、第一の不揮発性メモリに、多くのソフトウェアを記憶させるのは、技術的な面及びコストの面から難しい。
【００１７】
これに対し、本発明では、第一の不揮発性メモリとは別に、第二の不揮発性メモリを設けているので、第二の不揮発性メモリを、記憶容量やコストの面で有利な不揮発性メモリとすることができる。従って、本発明では、安価に、多くのソフトウェアを、電子制御装置に予め記憶させておくことができるのである。
【００１８】
ところで、第二の不揮発性メモリを、マイクロコンピュータに内蔵させると、第二の不揮発性メモリについても記憶容量の制約を受け易くなり、又、電子制御装置の製造コストが割高になる可能性がある。また、不揮発性メモリをマイクロコンピュータに内蔵させると、メモリ制御信号が伝送される不揮発性メモリまでの線路が短いため、メモリ制御信号の遅延が生じにくく、不揮発性メモリに高速アクセスすることが可能であるものの、第二の不揮発性メモリについては、その用途から、高速性について第一の不揮発性メモリほど重要視する必要がない。
【００１９】
従って、第二の不揮発性メモリは、電子制御装置において、マイクロコンピュータとは別体に構成され、マイクロコンピュータに外部接続されると好ましい。このように電子制御装置を構成すれば、第二の不揮発性メモリとして、安価に、必要な記憶容量を有する不揮発性メモリを、電子制御装置に搭載することができる。
【００２０】
また、電子制御装置には、第二の不揮発性メモリとして、マイクロコンピュータが内蔵する第一の不揮発性メモリよりも、記憶容量の大きい不揮発性メモリを搭載するとよい。このように構成された電子制御装置によれば、多くのソフトウェアを、第二の不揮発性メモリに蓄積させておくことができ、第二の不揮発性メモリから第一の不揮発性メモリに様々な種類の車両制御用ソフトウェアを書き込むことができる。従って、この電子制御装置によれば、車両制御の形態を、多様に切り替えることができる。
【００２１】
詳述すると、この発明によれば、第二の不揮発性メモリに、様々なタイプの車両に適合するソフトウェアを搭載することができ、オプションの車両への搭載などに合わせて、第二の不揮発性メモリに記憶されたソフトウェアを、第一の不揮発性メモリに書き込み、電子制御装置を、様々な車両タイプに適合させることができる。また、この際には、外部装置からソフトウェアを電子制御装置に転送する必要がないので、簡単に、電子制御装置を、自車の車両タイプに適合させることができる。
【００２２】
尚、第二の不揮発性メモリは、マスクＲＯＭであってもよいし、電気的にデータ書換可能な不揮発性メモリであってもよい。第二の不揮発性メモリとして、マスクＲＯＭを採用すれば、安価に、第二の不揮発性メモリを導入することができる。また、第二の不揮発性メモリとして、電気的にデータ書換可能な不揮発性メモリを採用すれば、メモリ内のソフトウェアを、新バージョンのソフトウェアに更新することができる。
【００２３】
その他、上記第一の不揮発性メモリは、ＮＯＲ型のフラッシュメモリで構成されるのが好ましく、第二の不揮発性メモリは、ＮＡＮＤ型のフラッシュメモリで構成にされるのが好ましい。
【００２４】
周知のようにＮＯＲ型のフラッシュメモリは、大容量化（高集積化）には不向きであるが、高速なランダムアクセスが可能であるといった利点を有する。一方、ＮＡＮＤ型のフラッシュメモリは、ランダムアクセスの性能の点でＮＯＲ型に劣るものの、大容量化に優れているといった利点を有する。
【００２５】
従って、高速性が求められる第一の不揮発性メモリに、ＮＯＲ型のフラッシュメモリを採用し、第二の不揮発性メモリに、記憶容量の点で優れたＮＡＮＤ型のフラッシュメモリを採用すれば、第一の不揮発性メモリに記憶されたソフトウェアに基づき、高速な演算を行うことが可能な電子制御装置を製造することができると共に、第二の不揮発性メモリに大量のソフトウェアを記憶させておくことで、多様に、車両制御の形態を切り替えることが可能な電子制御装置を製造することができる。
【００２６】
ところで、上記電子制御装置は、外部装置から指令信号を受信すると、書込手段が、第二の不揮発性メモリが記憶するソフトウェアを、第二の不揮発性メモリから読み出し、読み出したソフトウェアを、第一の不揮発性メモリに書き込む構成にすることができる。
【００２７】
このように構成された電子制御装置によれば、第二の不揮発性メモリに記憶されたソフトウェアの第一の不揮発性メモリへの書込動作を、外部装置から制御することができる。尚、電子制御装置は、サービスセンタ等に設けられた専用ツールから送信される指令信号を、ＣＡＮ（Controller Area Network）等を通じて受信する構成にされてもよいし、車両に設けられた操作部から車両所有者の操作に応じて送信される指令信号を受信する構成にされてもよい。
【００２８】
専用ツールから送信される指令信号を受信し、指令信号の受信を契機として、書込動作を行うように電子制御装置を構成する場合には、サービスセンタ等に専用ツールを設ける必要があるが、専用ツールには、転送用のソフトウェアを記憶させておく必要がないので、この点で、本発明は、従来装置に対して優れ、マイクロコンピュータが内蔵する第一の不揮発性メモリへのソフトウェアの書込作業を、簡単に行うことができる。
【００２９】
また、第二の不揮発性メモリには、第一の不揮発性メモリへ書き込む車両制御用のソフトウェアを、一種類又は複数種類記憶させることができるが、複数種類のソフトウェアを、第二の不揮発性メモリに記憶させる場合には、書込動作の契機となる指令信号に、書込対象のソフトウェアを指定する情報を含ませ、上記書込手段を、次のように構成するとよい。
【００３０】
即ち、書込手段は、外部装置から指令信号を受信すると、第二の不揮発性メモリが記憶する複数種類のソフトウェアの内、指令信号が指定する種類のソフトウェアを、第二の不揮発性メモリから読み出し、読み出したソフトウェアを、第一の不揮発性メモリに書き込む構成にされるとよい。このように電子制御装置を構成すれば、外部装置からの制御で、第一の不揮発性メモリへ任意のソフトウェアを書き込むことができる。
【００３１】
その他、電子制御装置には、自車の車両タイプを識別する車両タイプ識別手段と、第一の不揮発性メモリが記憶するソフトウェアが、自車の車両タイプに適合するソフトウェアであるか否かを判定する適合判定手段と、を設けて、電子制御装置自らが能動的に、第二の不揮発性メモリから、自車の車両タイプに適合するソフトウェアを読み出し、このソフトウェアを、マイクロコンピュータ内蔵の上記第一の不揮発性メモリに書き込むように、電子制御装置を構成するとよい。
【００３２】
具体的に、このような電子制御装置を構成する場合には、第二の不揮発性メモリに、車両タイプに適合するソフトウェアを、予め定められた車両タイプ毎に記憶させておき、書込手段を次のように構成すればよい。即ち、適合判定手段により、第一の不揮発性メモリが記憶するソフトウェアが、自車の車両タイプに適合するソフトウェアではないと判定されると、第二の不揮発性メモリが記憶するソフトウェアであって、車両タイプ識別手段によって識別された自車の車両タイプに適合するソフトウェアを、第二の不揮発性メモリから読み出し、読み出したソフトウェアを、第一の不揮発性メモリに書き込むことで、第一の不揮発性メモリが記憶する車両制御用のソフトウェアを、自車の車両タイプに適合するソフトウェアに置換するように、書込手段を構成すればよい。
【００３３】
このように構成された電子制御装置によれば、装置自らが、第二の不揮発性メモリから、自車の車両タイプに適合するソフトウェアを読み出し、自車の車両タイプに適合するソフトウェアを、マイクロコンピュータ内蔵の上記第一の不揮発性メモリに書き込むので、上述したような指令信号を送信するための専用ツールを、サービスセンタ等に設けなくても済む。従って、この発明によれば、第一の不揮発性メモリへのソフトウェアの書込（ソフトウェア更新）を、簡単に行うことができる。
【００３４】
また、この電子制御装置には、各車両タイプに適合するソフトウェアが、第二の不揮発性メモリに記憶されていることから、第一の不揮発性メモリに、車両制御用のソフトウェアが書き込まれているか否かを判定する書込判定手段を設け、書込手段を次のように構成するとよい。
【００３５】
即ち、書込判定手段により、第一の不揮発性メモリに車両制御用のソフトウェアが書き込まれていないと判定されると、第二の不揮発性メモリが記憶するソフトウェアであって、車両タイプ識別手段によって識別された車両タイプに適合するソフトウェアを、第二の不揮発性メモリから読み出し、読み出したソフトウェアを、第一の不揮発性メモリに書き込むように、書込手段を構成するとよい。
【００３６】
このように構成された電子制御装置によれば、第一の不揮発性メモリに車両タイプに適合するソフトウェアを書き込んでおく必要がなく、生産ラインでの工程数を削減することができる。
【００３７】
また、第一の不揮発性メモリに、基本のソフトウェアを記憶させておき、第二の不揮発性メモリに、車両制御用のソフトウェアとして、任意に装備される車載装置（オプション）を使用した車両制御をマイクロコンピュータに実現させるためのソフトウェアを記憶させておく場合には、電子制御装置を、次のように構成にすればよい。
【００３８】
即ち、電子制御装置は、上記任意に装備される車載装置がインタフェースに接続されたか否かを判定する装備判定手段を備え、装備判定手段によって、上記任意に装備される車載装置がインタフェースに接続されたと判定されると、書込手段が、第二の不揮発性メモリが記憶する上記任意に装備される車載装置を使用した車両制御をマイクロコンピュータに実現させるためのソフトウェアを、第二の不揮発性メモリから読み出し、読み出したソフトウェアを、第一の不揮発性メモリに書き込む構成にされるとよい。
【００３９】
このように構成された電子制御装置によれば、オプションが装着された場合に、書込手段が、オプションに対応するソフトウェアを、第一の不揮発性メモリに書き込むので、サービスセンタ等では、単にオプションを電子制御装置に装着するだけでよく、オプションの装着に合わせて、専用ツールを用いソフトウェアを書き換える作業をしなくて済む。
【００４０】
また、本発明の電子制御装置は、第一の不揮発性メモリにおいて、ソフトウェアの一部が揮発してしまった場合であっても、外部装置からのソフトウェアの提供を必要とせずに、第一の不揮発性メモリ内のソフトウェアを、車両制御に支障のないソフトウェアに書き換えることが可能な構成にすることができる。
【００４１】
即ち、電子制御装置には、第一の不揮発性メモリ上のソフトウェアの記憶状態の異常を検知する異常検知手段を設け、異常検知手段により異常が検知されると、第二の不揮発性メモリが記憶するソフトウェアを、第二の不揮発性メモリから読み出し、読み出したソフトウェアを、第一の不揮発性メモリに書き込むことで、異常検知手段にて異常が検知されたソフトウェアを、読み出したソフトウェアに置換するように、書込手段を構成してもよい。
【００４２】
このように構成された電子制御装置によれば、揮発等で第一の不揮発性メモリが記憶するソフトウェアに異常が発生した際に、サービスセンタ等で正常なソフトウェアを外部から転送しなくても、第一の不揮発性メモリ上のソフトウェアの記憶状態の異常を解消することができる。換言すると、この発明によれば、マイクロコンピュータ内蔵の第一の不揮発性メモリにおいてソフトウェアの記憶状態の異常が発生した際、簡単に、ソフトウェアの再書込を実現することができる。
【００４３】
尚、第二の不揮発性メモリに記憶させるソフトウェアとしては、第一の不揮発性メモリが記憶するソフトウェアと同一種類のソフトウェアを挙げることができるが、第二の不揮発性メモリには、上記同一種類のソフトウェアに代えて、各車両タイプ共通のソフトウェアを記憶させてもよい。第二の不揮発性メモリに、各車両タイプ共通のソフトウェアを記憶させる場合には、異常発生時、オプション的な位置付けの車載装置を使用した車両制御を行うことができない可能性があるが、車両制御の基本的な機能は、共通のソフトウェアを用いて実現することができる。
【００４４】
また、第二の不揮発性メモリに、第一の不揮発性メモリが記憶するソフトウェアと同一種類のソフトウェアを記憶させる場合には、第一の不揮発性メモリが記憶するソフトウェアと、第二の不揮発性メモリが記憶する同一種類のソフトウェアとを、比較することによって、第一の不揮発性メモリ上のソフトウェアの記憶状態の異常を検知するように、異常検知手段を構成するとよい。
【００４５】
ソフトウェアの記憶状態の異常検知方法としては、その他に、チェックサムによる手法を挙げることができるが、チェックサム方式では、ソフトウェアを構成する全ビットの合計を、正常値と比較して、異常を検知するため、合計値が正常であると、ソフトウェアに異常があるのにも拘らず、その異常を検知することができない可能性がある。これに対し、第一の不揮発性メモリが記憶するソフトウェアの各ビットを、第二の不揮発性メモリが記憶する同一種類のソフトウェアの各ビットと比較すれば、異常を見過ごす可能性をチェックサム方式よりも格段に小さくすることができる。
【００４６】
また、第二の不揮発性メモリに、第一の不揮発性メモリが記憶するソフトウェアと同一種類のソフトウェアを記憶させても、第二の不揮発性メモリに記憶された上記同一種類のソフトウェアにも異常が発生する可能性がある。
【００４７】
従って、第二の不揮発性メモリには、第一の不揮発性メモリが記憶するソフトウェアと同一種類のソフトウェアを含む複数種類のソフトウェアを記憶させておくとよい。複数種類のソフトウェアとしては、他に、各車両タイプ共通のソフトウェアを挙げることができる。そして、このように電子制御装置を構成する場合には、装置内に、第二の不揮発性メモリにおける「第一の不揮発性メモリが記憶するソフトウェアと同一種類のソフトウェア」の記憶状態の異常を検知する予備検知手段を設け、書込手段を、次のように構成するとよい。
【００４８】
即ち、書込手段は、異常検知手段により異常が検知されているが、予備検知手段により異常が検知されていない場合、第一の不揮発性メモリが記憶するソフトウェアと同一種類のソフトウェアを、第二の不揮発性メモリから読み出し、読み出したソフトウェアを、第一の不揮発性メモリに書き込むことで、異常検知手段にて異常が検知されたソフトウェアを、第二の不揮発性メモリが記憶する同一種類のソフトウェアに置換し、異常検知手段により異常が検知され、且つ、予備検知手段により異常が検知されている場合には、第二の不揮発性メモリが記憶する上記同一種類のソフトウェアを除くソフトウェアであって、異常検知手段により異常が検知されたソフトウェアに代替するソフトウェアを、第二の不揮発性メモリから読み出し、読み出したソフトウェアを、第一の不揮発性メモリに書き込むことで、異常検知手段にて異常が検知されたソフトウェアを、読み出したソフトウェア（代替ソフトウェア）に置換する構成にされるとよい。
【００４９】
このように構成された電子制御装置によれば、マイクロコンピュータ内蔵の第一の不揮発性メモリにおいてソフトウェアの記憶状態の異常が発生した際、専用ツールを用いなくても、同一種のソフトウェアを、第一の不揮発性メモリに書き込むことができる。また、第二の不揮発性メモリ内のソフトウェアに異常が発生した場合でも、仮対処的に、ソフトウェアの再書込を、実現することができる。
【００５０】
その他、本発明では、第一の不揮発性メモリに異常が発生した場合、第二の不揮発性メモリを利用して、ソフトウェアを実行するよう電子制御装置を構成するとよい。
【００５１】
即ち、電子制御装置には、第一の不揮発性メモリの異常を検知するハードウェア異常検知手段を設け、ハードウェア異常検知手段により第一の不揮発性メモリの異常が検知されると、マイクロコンピュータが、第二の不揮発性メモリにアクセスし、第二の不揮発性メモリが記憶するソフトウェアに基づき動作して、車両制御を実現するように、電子制御装置を構成するとよい。
【００５２】
このように構成された電子制御装置によれば、第一の不揮発性メモリ内のソフトウェアを用いた車両制御が、第一の不揮発性メモリのハードウェア的な異常によって、正常に実行することができなくなった場合でも、第二の不揮発性メモリ内のソフトウェアを用いて、適切に車両制御を実現することができる。従って、この発明によれば、車両の安全性を高めることができる。
【００５３】
また、第二の不揮発性メモリを、電気的にデータ書換可能な不揮発性メモリで構成する場合には、次のように、電子制御装置を構成するとよい。
即ち、電子制御装置は、外部装置から指令信号を受信すると、書込手段が、指令信号と共に外部装置から受信した書込対象のソフトウェアを、第二の不揮発性メモリに書き込み、この書き込みが正常終了した後、書込対象のソフトウェアを、第一の不揮発性メモリに書き込む構成されるとよい。
【００５４】
この電子制御装置では、第一の不揮発性メモリが記憶するソフトウェアを、外部装置から転送されてきたソフトウェアに更新する際、一旦、ソフトウェアを、第二の不揮発性メモリに書き込む。このため、この電子制御装置によれば、ソフトウェアを外部装置から転送する程度で、第一及び第二の不揮発性メモリに、同一種類のソフトウェアを書き込むことができる。また、第一の不揮発性メモリにソフトウェアを書き込む過程で、電源遮断等のトラブルが生じても、外部装置からソフトウェアを再度転送する必要がなく、第二の不揮発性メモリに記憶されたソフトウェアに基づき、第一の不揮発性メモリへのソフトウェアの書込作業をやり直すことができる。その他、第二の不揮発性メモリにソフトウェアを書き込む過程で、電源遮断等のトラブルが生じても、第一の不揮発性メモリに記憶されたソフトウェアに基づいて、第二の不揮発性メモリにおけるソフトウェアをリカバリーすることができる。
【発明を実施するための最良の形態】
【００５５】
以下、本発明の実施例について、図面と共に説明する。
（第一実施例）
図１は、本発明が適用された電子制御装置１０を備える車両制御システム１の構成を表す説明図である。図１に示す車両（自動車）に構築された車両制御システム１は、ＣＡＮを通じて、複数の電子制御装置１０が通信可能に接続された構成にされたものであり、各電子制御装置１０は、車両内に搭載されたセンサ類５や、アクチュエータ等の制御対象装置７と接続されている。各電子制御装置１０は、センサ類５からの入力信号や、他の電子制御装置１０からの入力信号に基づき、入出力インタフェース２５（図２参照）に接続された制御対象装置７を制御し、これにより車両制御を実現する。
【００５６】
尚、電子制御装置１０としては、エンジン制御に必要な各種アクチュエータ及びセンサに接続されたエンジン制御用の電子制御装置１０、変速制御に必要な各種アクチュエータ及びセンサに接続された変速制御用の電子制御装置１０、ブレーキ制御に必要な各種アクチュエータ及びセンサに接続された走行制御用の電子制御装置１０、エアコン制御に必要な各種アクチュエータ及びセンサに接続されたエアコン制御用の電子制御装置１０、インストルメントパネル内の計器や警告ランプ、パワーウィンドウの開閉やドアの施解錠を制御するボデー制御用の電子制御装置１０、位置検出用のセンサ（ＧＰＳ受信機等）や地図表示用のモニタ等に接続されたナビゲーション用の電子制御装置１０などを挙げることができる。
【００５７】
また、この車両は、車外装置３をＣＡＮに接続可能な接続部９を有し、車外装置３を通じて、車両に搭載された電子制御装置１０を診断したり、電子制御装置１０内のソフトウェアを書き換え可能な構成にされている。
【００５８】
続いて、各電子制御装置１０の詳細構成について説明する。図２は、車両に搭載された電子制御装置１０の構成を表す説明図である。
図２に示すように、本実施例の車両に搭載された電子制御装置１０は、不揮発性メモリ２３を内蔵するマイクロコンピュータ（以下、単に「マイコン」と称する。）２０と、マイコン２０に外部接続された外部不揮発性メモリ３０と、を有する。マイコン２０が内蔵する不揮発性メモリ（以下、「内蔵不揮発性メモリ」と称する。）２３は、電気的にデータ書換可能なＮＯＲ型のフラッシュメモリで構成され、マイコン２０に外部接続された外部不揮発性メモリ３０は、電気的にデータ書換可能なＮＡＮＤ型のフラッシュメモリであって、内蔵不揮発性メモリ２３よりも記憶容量が大きいメモリで構成されている。
【００５９】
また、電子制御装置１０が備えるマイコン２０は、内蔵不揮発性メモリ２３の他に、各種演算処理を行うＣＰＵ２１と、制御対象装置７やセンサ類５などの車載装置にコネクタＣＮＴを通じて接続される入出力インタフェース２５と、ＣＡＮに接続され、ＣＡＮ内の端末装置（他の電子制御装置１０）と通信可能な通信インタフェース２７と、外部不揮発性メモリ３０に接続された外部メモリインタフェース２９とを備える。
【００６０】
この電子制御装置１０は、複数タイプの車両に適合可能な構成にされており、外部不揮発性メモリ３０には、車両タイプ毎の車両制御用ソフトウェア（以下、「制御ソフトウェア」とも言う。）が記憶されている。また、これらの制御ソフトウェアには、ソフトウェアの種類を表すソフトウェアＩＤと、ソフトウェアのバージョンを表すバージョン情報が記述されている。
【００６１】
具体的に、当該電子制御装置１０がエンジン制御用の電子制御装置である場合、外部不揮発性メモリ３０には、車両タイプ毎の制御ソフトウェアとして、各車両タイプに適合するエンジン制御用のソフトウェアが格納される。例えば、外部不揮発性メモリ３０には、エンジン制御用のソフトウェアとして、オートエアコン搭載車両用のソフトウェアや、オートエアコン非搭載車両用のソフトウェアなどが格納される。
【００６２】
また、内蔵不揮発性メモリ２３には、書換禁止領域と、データ書換可能な書換可能領域と、が設けられており、書換禁止領域には、メインルーチン（図３参照）をマイコン２０のＣＰＵ２１に実行させるためのメインソフトウェアが記憶されている。また、書換可能領域には、外部不揮発性メモリ３０に記憶された複数種の制御ソフトウェアの一つが、ＣＰＵ２１の処理によって、書き込まれる。
【００６３】
そして、マイコン２０は、内蔵不揮発性メモリ２３に記憶された制御ソフトウェアに基づいて、入出力インタフェース２５に接続された制御対象装置７及びセンサ類５を使用した車両制御を実現すると共に、必要に応じて、通信インタフェース２７に接続された他の電子制御装置１０からの入力信号に基づき、車両制御を実現する。
【００６４】
続いて、マイコン２０のＣＰＵ２１が実行するメインルーチンについて説明する。図３は、マイコン２０のＣＰＵ２１が実行するメインルーチンを表すフローチャートである。
マイコン２０のＣＰＵ２１は、電子制御装置１０へ電源が投入されると、メインルーチンを開始し、まずＳ１１０にて、内蔵不揮発性メモリ２３に、制御ソフトウェアが書き込まれているか否かを判断する。具体的に、書換可能領域に制御ソフトウェアが書き込まれておらず、書換可能領域が空である場合には、制御ソフトウェアが内蔵不揮発性メモリ２３に書き込まれていないと判断し（Ｓ１１０でＮｏ）、Ｓ１６０に移行する。
【００６５】
Ｓ１６０に移行すると、ＣＰＵ２１は、車外装置３から、接続部９及びＣＡＮ並びに通信インタフェース２７を通じて、メモリ書換指令信号を受信するまで待機し、メモリ書換指令信号を受信すると、受信したメモリ書換指令信号が、内蔵メモリ書換指令信号であるか否かを判断する（Ｓ１６５）。尚、本実施例では、メモリ書換指令信号として、内蔵メモリ書換指令信号及び外部メモリ書換指令信号の二種類が存在するものとする。
【００６６】
そして、受信したメモリ書換指令信号が、内蔵メモリ書換指令信号ではない（換言すると、外部メモリ書換指令信号である）と判断すると（Ｓ１６５でＮｏ）、ＣＰＵ２１は、Ｓ２００に移行し、図４に示す外部メモリ書換処理を実行する。その後、Ｓ１１０に移行する。
【００６７】
一方、受信したメモリ書換指令信号が、内蔵メモリ書換指令信号であると判断すると（Ｓ１６５でＹｅｓ）、ＣＰＵ２１は、Ｓ１７０に移行し、車外装置３から続いて送信されてくる書込対象の制御ソフトウェアの指定信号を、通信インタフェース２７を通じて受信するまで待機する。尚、指定信号には、書込対象の制御ソフトウェアに対応するソフトウェアＩＤの情報が格納されているものとする。
【００６８】
そして、上記指定信号を、車外装置３から受信すると（Ｓ１７０でＹｅｓ）、ＣＰＵ２１は、Ｓ１８０に移行し、指定信号に従って、車外装置３から指定された書込対象の制御ソフトウェアを、外部不揮発性メモリ３０から読み出し、読み出した制御ソフトウェアを、内蔵不揮発性メモリ２３の書換可能領域に書き込む。また、この処理を終えると、制御ソフトウェアの書込が正常終了した旨の書込完了通知信号を、車外装置３に、通信インタフェース２７を通じて送信する（Ｓ１８５）。その後、Ｓ１１０に移行する。
【００６９】
一方、Ｓ１１０にて、制御ソフトウェアが内蔵不揮発性メモリ２３に書き込まれていると判断すると（Ｓ１１０でＹｅｓ）、ＣＰＵ２１は、Ｓ１２０に移行し、制御対象装置７を初期化するなど、車両制御の開始に必要な初期化処理を実行する。また、この処理を終えると、ＣＰＵ２１は、Ｓ１３０に移行し、内蔵不揮発性メモリ２３が記憶する制御ソフトウェアを、このメモリ上で実行し、内蔵不揮発性メモリ２３が記憶する上記制御ソフトウェアに基づく車両制御を実行する。具体的に、当該電子制御装置１０が、エンジン制御用の電子制御装置１０である場合には、入出力インタフェース２５に接続されたセンサ類５（アクセル開度センサ等）からの入力信号に基づき、アクチュエータを制御して、エンジン制御を実現する。
【００７０】
尚、内蔵不揮発性メモリ２３に記憶された制御ソフトウェアが、オートエアコン機能搭載車両用の制御ソフトウェアである場合、ＣＰＵ２１は、エンジン制御と共に、エアコン制御用の電子制御装置を通じ、コンプレッサを車両の加減速に応じて細かくオン／オフする制御を行う。
【００７１】
また、ＣＰＵ２１は、内蔵不揮発性メモリ２３に記憶されている制御ソフトウェアに基づき、１単位分の車両制御を実行すると、Ｓ１４０に移行し、車両が走行中であるか否かを判断し、車両が走行中であると判断すると（Ｓ１４０でＹｅｓ）、Ｓ１３０に移行して、再び、内蔵不揮発性メモリ２３が記憶する上記制御ソフトウェアに基づく車両制御を実行する。
【００７２】
一方、車両が走行中ではない（換言すると停車中である）と判断すると、ＣＰＵ２１は、Ｓ１４５に移行し、車外装置３から通信インタフェース２７を通じて、内蔵メモリ書換指令信号を受信したか否かを判断し、車外装置３から内蔵メモリ書換指令信号を受信したと判断すると（Ｓ１４５でＹｅｓ）、Ｓ１５０に移行し、制御対象装置７を停止状態に移行させるなど、車両制御を停止する処理を行う。
【００７３】
そして、この処理を終えると、Ｓ１７０に移行して、車外装置３から上記指定信号を受信するまで待機する。また、この指定信号を受信すると（Ｓ１７０でＹｅｓ）、ＣＰＵ２１は、車外装置３から指定された書込対象の制御ソフトウェアを、外部不揮発性メモリ３０から読み出し、これを内蔵不揮発性メモリ２３に、既に記憶されている制御ソフトウェアに上書きするようにして、書き込む（Ｓ１８０）。そして、この処理を終えると、Ｓ１８５の処理を実行し、その後、Ｓ１１０〜Ｓ１２０の処理を経て、更新した制御ソフトウェアに基づく車両制御を実行する（Ｓ１３０）。
【００７４】
また、ＣＰＵ２１は、Ｓ１４５にて、車外装置３から内蔵メモリ書換指令信号を受信していないと判断すると（Ｓ１４５でＮｏ）、Ｓ１９０に移行し、通信インタフェース２７を通じて、車外装置３から外部メモリ書換指令信号を受信したか否かを判断する。そして、通信インタフェース２７を通じて、車外装置３から外部メモリ書換指令信号を受信していないと判断すると（Ｓ１９０でＮｏ）、Ｓ１３０に移行し、再び、内蔵不揮発性メモリ２３が記憶する上記制御ソフトウェアに基づく車両制御を実行する。
【００７５】
一方、ＣＰＵ２１は、Ｓ１９０にて、車外装置３から外部メモリ書換指令信号を受信したと判断すると（Ｓ１９０でＹｅｓ）、Ｓ１９５に移行し、制御対象装置７を停止状態に移行させるなどして、車両制御を停止する処理を行う。また、この処理を終えると、ＣＰＵ２１は、Ｓ２００に移行し、図４に示す外部メモリ書換処理を実行する。その後、Ｓ１１０に移行する。
【００７６】
続いて、ＣＰＵ２１が実行する外部メモリ書換処理について説明する。図４は、ＣＰＵ２１が実行する外部メモリ書換処理を表すフローチャートである。
外部メモリ書換処理を開始すると、ＣＰＵ２１は、外部メモリ書換指令信号に続いて、車外装置３から送信されてくる書込対象の制御ソフトウェアを、通信インタフェース２７を通じて、車外装置３から受信し、受信した制御ソフトウェアを、外部不揮発性メモリ３０に書き込む（Ｓ２１０）。尚、受信した制御ソフトウェアと同一のソフトウェアＩＤを示す制御ソフトウェアが、外部不揮発性メモリ３０に記憶されている場合には、車外装置３から受信した制御ソフトウェアを、既に外部不揮発性メモリ３０に記憶されている同一ソフトウェアＩＤの制御ソフトウェアに上書きする。一方、受信した制御ソフトウェアと同一のソフトウェアＩＤを示す制御ソフトウェアが、外部不揮発性メモリ３０に記憶されていない場合、ＣＰＵ２１は、車外装置３から受信した制御ソフトウェアを、外部不揮発性メモリ３０に追加書込する。
【００７７】
また、このようにしてＳ２１０での処理を終えると、ＣＰＵ２１は、Ｓ２２０に移行し、車外装置３から送信されてきた制御ソフトウェアの外部不揮発性メモリ３０への書込動作がソフトウェア終端まで正常終了したか否かを判断する。そして、正常終了したと判断すると（Ｓ２２０でＹｅｓ）、Ｓ２３０に移行し、今回、外部不揮発性メモリ３０に書き込んだ制御ソフトウェアが、内蔵不揮発性メモリ２３に記憶されている制御ソフトウェアと同一種類（同一ソフトウェアＩＤ）の制御ソフトウェアであって、新バージョンの制御ソフトウェアであるか否かを判断する。尚、内蔵不揮発性メモリ２３に制御ソフトウェアが書き込まれていない場合、ＣＰＵ２１は、Ｓ２３０でＮｏと判断する。
【００７８】
Ｓ２３０で、今回外部不揮発性メモリ３０に書き込んだ制御ソフトウェアが、内蔵不揮発性メモリ２３に記憶されている制御ソフトウェアと同一種類の制御ソフトウェアであって、新バージョンの制御ソフトウェアであると判断すると（Ｓ２３０でＹｅｓ）、ＣＰＵ２１は、Ｓ２４０に移行し、今回外部不揮発性メモリ３０に書き込んだ制御ソフトウェアを、外部不揮発性メモリ３０から読み出し、これを、内蔵不揮発性メモリ２３に書き込むことにより、内蔵不揮発性メモリ２３が記憶する旧バージョンの制御ソフトウェアを、新バージョンの制御ソフトウェアに更新する。
【００７９】
そして、この処理を終えると、ＣＰＵ２１は、Ｓ２５０に移行し、制御ソフトウェアの書込が正常終了した旨の書込完了通知信号を、車外装置３に、通信インタフェース２７を通じて送信する。その後、外部メモリ書換処理を終了する。
【００８０】
これに対し、ＣＰＵ２１は、Ｓ２３０にて、今回外部不揮発性メモリ３０に書き込んだ制御ソフトウェアが、内蔵不揮発性メモリ２３に記憶されている制御ソフトウェアと同一種類の制御ソフトウェア若しくは新バージョンの制御ソフトウェアではないと判断すると（Ｓ２３０でＮｏ）、Ｓ２４０の処理を実行することなく、Ｓ２５０に移行し、書込完了通知信号を、車外装置３に送信した後、外部メモリ書換処理を終了する。
【００８１】
その他、ＣＰＵ２１は、Ｓ２２０にて、車外装置３から送信されてきた制御ソフトウェアの外部不揮発性メモリ３０への書込動作がソフトウェア終端まで正常終了していないと判断すると（Ｓ２２０でＮｏ）、Ｓ２６０に移行し、今回書込に失敗した制御ソフトウェアが、内蔵不揮発性メモリ２３に記憶されている制御ソフトウェアと同一種類（同一ソフトウェアＩＤ）の制御ソフトウェアであるか否かを判断する。尚、内蔵不揮発性メモリ２３に制御ソフトウェアが書き込まれていない場合、ＣＰＵ２１は、Ｓ２６０でＮｏと判断する。
【００８２】
そして、今回書込に失敗した制御ソフトウェアが、内蔵不揮発性メモリ２３に記憶されている制御ソフトウェアと同一種類の制御ソフトウェアであると判断すると（Ｓ２６０でＹｅｓ）、ＣＰＵ２１は、Ｓ２７０に移行し、内蔵不揮発性メモリ２３から上記同一種類の制御ソフトウェアを読み出し、これを、外部不揮発性メモリ３０における今回書込に失敗した制御ソフトウェアに上書きする。また、この処理を終えると、ＣＰＵ２１は、制御ソフトウェアの書込に失敗した旨の書込失敗通知信号を、車外装置３に、通信インタフェース２７を通じて送信する（Ｓ２８０）。その後、外部メモリ書換処理を終了する。
【００８３】
一方、ＣＰＵ２１は、Ｓ２６０にて、今回書込に失敗した制御ソフトウェアが、内蔵不揮発性メモリ２３に記憶されている制御ソフトウェアと同一種類の制御ソフトウェアではないと判断すると（Ｓ２６０でＮｏ）、Ｓ２７０の処理を実行することなく、Ｓ２８０に移行し、書込失敗通知信号を、車外装置３に送信する。但し、この際には、Ｓ２７０の処理（リカバリー処理）を実行していない旨の情報を付加した書込失敗通知信号を、車外装置３に送信する。その後、外部メモリ書換処理を終了する。
【００８４】
以上、第一実施例の電子制御装置１０について説明したが、この電子制御装置１０では、図５に示すように、車外装置３から、内蔵メモリ書換指令信号を受信した場合、受信した内蔵メモリ書換指令信号に続いて車外装置３から送信されてくる書込対象の制御ソフトウェアの指定信号に従い、車外装置３から指定された書込対象の制御ソフトウェアを、車両タイプ毎の制御ソフトウェアを記憶する外部不揮発性メモリ３０から読み出し、この制御ソフトウェアを内蔵不揮発性メモリ２３に書き込むことによって、内蔵不揮発性メモリ２３が記憶する制御ソフトウェアを、車外装置３から指定された制御ソフトウェアに更新する。この処理によって、電子制御装置１０は、マイコン２０を、上記車外装置３から指定された制御ソフトウェアに基づく車両制御を実行する構成に変更する。
【００８５】
従って、本実施例の電子制御装置１０を用いれば、マイコン２０に制御ソフトウェアを未搭載の状態で、電子制御装置１０を車両に組みつけても、電子制御装置１０を、組み付けられた車両のタイプに、簡単に適合させることができる。また、オプション等の搭載により車両のタイプが変更となっても、電子制御装置１０を、自車の車両タイプに、簡単に適合させることができる。即ち、本実施例によれば、車両タイプに適合する制御ソフトウェアを、車外装置３から電子制御装置１０に転送する必要がなく、生産ラインやサービスセンタ等では、手元にソフトウェアがなくとも、適切な制御ソフトウェアを、マイコン２０に簡単に書き込むことができる。
【００８６】
また、本実施例の電子制御装置１０では、図６に示すように、車外装置３から、外部メモリ書換指令信号を受信した場合、受信した外部メモリ書換指令信号に基づいて車外装置３から送信されてくる書込対象の制御ソフトウェアを、外部不揮発性メモリ３０に書き込み、外部不揮発性メモリ３０への制御ソフトウェアの書込動作が正常終了した後、同種の制御ソフトウェアが内蔵不揮発性メモリ２３に書き込まれている場合には、外部不揮発性メモリ３０に書き込んだ制御ソフトウェアを、内蔵不揮発性メモリ２３にも書き込んで、内蔵不揮発性メモリ２３内の制御ソフトウェアを更新する。
【００８７】
従って、本実施例によれば、新バージョンの制御ソフトウェアを車外装置３から転送する程度で、内蔵不揮発性メモリ２３及び外部不揮発性メモリ３０の両者に、新バージョンの制御ソフトウェアを、一括して簡単に書き込むことができる。
【００８８】
また、本実施例によれば、内蔵不揮発性メモリ２３にソフトウェアを書き込む過程で、電源遮断等のトラブルが生じ、書込動作が正常終了しなかった場合でも、車外装置３からソフトウェアを再度転送する必要がなく、外部不揮発性メモリ３０に記憶された制御ソフトウェアを、内蔵不揮発性メモリ２３へ転送することで、内蔵不揮発性メモリ２３への制御ソフトウェアの書込作業を簡単にやり直すことができる。
【００８９】
その他、本実施例によれば、外部不揮発性メモリ３０に制御ソフトウェアを書き込む過程で、電源遮断等のトラブルが生じても、内蔵不揮発性メモリ２３に記憶されたソフトウェアに基づいて、外部不揮発性メモリ３０におけるソフトウェアをリカバリーすることができ、大変便利である。
【００９０】
（第二実施例）
続いて、第二実施例について説明する。第二実施例の車両制御システム１は、車両制御システム１に、自車の車両タイプを識別し、自車の車両タイプに適合する制御ソフトウェアを、外部不揮発性メモリ３０から選択的に読み出し、これを内蔵不揮発性メモリ２３に書き込む機能を備えた電子制御装置１０を設けたものである。この機能は、ソフトウェア的に実現されており、第二実施例の車両制御システム１及び車両制御システム１が備える電子制御装置１０のハードウェア構成は、図１及び図２に示す通りであり、第一実施例の車両制御システム１及び電子制御装置１０と同様である。従って、以下では、第二実施例の車両制御システム１及び電子制御装置１０について、第一実施例と異なる構成要素のみを詳細に説明し、その他の構成要素の説明については、適宜省略することにする。
【００９１】
図７は、第二実施例の電子制御装置１０における外部不揮発性メモリ３０に記憶されたソフトウェア選択テーブルの構成を表す説明図である。第二実施例の電子制御装置１０は、予め定められた車両タイプ毎の制御ソフトウェアを、外部不揮発性メモリ３０に有すると共に、図７に示す構成のソフトウェア選択テーブルを、外部不揮発性メモリ３０に有する。
【００９２】
このソフトウェア選択テーブルは、車両タイプに適合する制御ソフトウェア（以下、「適合制御ソフトウェア」とも言う。）のソフトウェアＩＤを示すレコードを、車両タイプ毎に有し、各レコードは、索引番号（Ｉｎｄｅｘ）と、適合制御ソフトウェアのソフトウェアＩＤと、から構成されている。このソフトウェア選択テーブルは、マイコン２０が、自車の車両タイプに適合する制御ソフトウェアを識別する際に用いられる。
【００９３】
具体的に、本実施例では、車両タイプとして、マイコン２０の入出力インタフェース２５が備える第一ポートＰ１及び第二ポートＰ２（図１０参照）のいずれにも車載装置が接続されていない車両タイプ、第一ポートＰ１には車載装置が接続されていないが、第二ポートＰ２には車載装置が接続されている車両タイプ、第一ポートＰ１には車載装置が接続されているが、第二ポートＰ２には車載装置が接続されていない車両タイプ、第一ポートＰ１及び第二ポートＰ２の両者に車載装置が接続されている車両タイプが存在するものとする。尚、第一ポートＰ１及び第二ポートＰ２には、接続される車載装置（センサ類５、制御対象装置７）の種類が予め定められているものとする。
【００９４】
そして、第一ポートＰ１に車載装置が接続されている車両タイプ用の適合制御ソフトウェアには、第一ポートＰ１に接続されている車載装置を使用した車両制御を行うためのプログラムが組み込まれ、第二ポートＰ２に車載装置が接続されている車両タイプ用の適合制御ソフトウェアには、第二ポートＰ２に接続されている車載装置を使用した車両制御を行うためのプログラムが組み込まれているものとする。
【００９５】
次に、第二実施例の電子制御装置１０において、マイコン２０のＣＰＵ２１が、内蔵不揮発性メモリ２３に記憶されたメインソフトウェアに基づいて実行するメインルーチンについて説明する。図８は、マイコン２０のＣＰＵ２１が実行する第二実施例のメインルーチンを表すフローチャートである。
【００９６】
ＣＰＵ２１は、電子制御装置１０へ電源が投入されると、図８に示すメインルーチンを開始し、まずＳ３１０にて、内蔵不揮発性メモリ２３に、制御ソフトウェアが書き込まれているか否かを判断する。そして、制御ソフトウェアが内蔵不揮発性メモリ２３に書き込まれていないと判断すると（Ｓ３１０でＮｏ）、Ｓ３６０に移行する。
【００９７】
Ｓ３６０に移行すると、ＣＰＵ２１は、車外装置３から、接続部９及びＣＡＮ並びに通信インタフェース２７を通じて、外部メモリ書換指令信号を受信したか否かを判断し、外部メモリ書換指令信号を受信したと判断すると（Ｓ３６０でＹｅｓ）、Ｓ４００に移行して、図４に示す外部メモリ書換処理を実行する。また、Ｓ４００での処理を終えると、ＣＰＵ２１は、Ｓ３１０に移行する。
【００９８】
一方、車外装置３から外部メモリ書換指令信号を受信していないと判断すると（Ｓ３６０でＮｏ）、ＣＰＵ２１は、Ｓ３７０に移行し、図９に示すソフトウェア選択処理を実行する。図９は、ＣＰＵ２１が実行するソフトウェア選択処理を表すフローチャートである。
【００９９】
ソフトウェア選択処理を開始すると、ＣＰＵ２１は、第一ポートＰ１への入力信号がＨｉ（ハイ）信号であるか否かを判断することにより、入出力インタフェース２５の第一ポートＰ１に車載装置ＤＥＶ１が接続されているか否かを判断する（Ｓ３７１）。尚、図１０は、電子制御装置１０における第一ポートＰ１及び第二ポートＰ２と、車載装置ＤＥＶ１，ＤＥＶ２との接続関係を表した説明図である。本実施例では、第一ポートＰ１に車載装置ＤＥＶ１が接続されていない場合、第一ポートＰ１に、常にＨｉ信号が入力される。従って、Ｓ３７１においては、第一ポートＰ１への入力信号がＨｉ信号である場合、第一ポートＰ１に車載装置ＤＥＶ１が接続されていないと判断する。
【０１００】
Ｓ３７１において、第一ポートＰ１に車載装置ＤＥＶ１が接続されていないと判断すると（Ｓ３７１でＮｏ）、ＣＰＵ２１は、Ｓ３７２に移行する。そして、Ｓ３７２では、第二ポートＰ２への入力信号がＨｉ信号であるか否かを判断することにより、入出力インタフェース２５の第二ポートＰ２に車載装置ＤＥＶ２が接続されているか否かを判断する。また、Ｓ３７２において、第二ポートＰ２への入力信号がＨｉ信号であり、第二ポートＰ２に車載装置ＤＥＶ２が接続されていないと判断すると（Ｓ３７２でＮｏ）、ＣＰＵ２１は、Ｓ３７３に移行し、ソフトウェア選択テーブルにおいて索引番号が値１（Ｉｎｄｅｘ＝１）のレコードを、参照対象のレコードに決定し、その後、Ｓ３７９に移行する。
【０１０１】
一方、Ｓ３７２において、第二ポートＰ２に車載装置ＤＥＶ２が接続されていると判断すると（Ｓ３７２でＹｅｓ）、ＣＰＵ２１は、Ｓ３７４に移行し、ソフトウェア選択テーブルにおいて索引番号が値２（Ｉｎｄｅｘ＝２）のレコードを、参照対象のレコードに決定する。その後、Ｓ３７９に移行する。
【０１０２】
その他、ＣＰＵ２１は、Ｓ３７１において、第一ポートＰ１に車載装置ＤＥＶ１が接続されていると判断すると（Ｓ３７１でＹｅｓ）、Ｓ３７６に移行し、Ｓ３７２での処理と同様の手法で、第二ポートＰ２に車載装置ＤＥＶ２が接続されているか否かを判断する。そして、第二ポートＰ２に車載装置ＤＥＶ２が接続されていないと判断すると（Ｓ３７６でＮｏ）、ソフトウェア選択テーブルにおいて索引番号が値３（Ｉｎｄｅｘ＝３）のレコードを、参照対象のレコードに決定する（Ｓ３７７）。その後、Ｓ３７９に移行する。
【０１０３】
また、ＣＰＵ２１は、Ｓ３７６において、第二ポートＰ２に車載装置ＤＥＶ２が接続されていると判断すると（Ｓ３７６でＹｅｓ）、ソフトウェア選択テーブルにおいて索引番号が値４（Ｉｎｄｅｘ＝４）のレコードを、参照対象のレコードに決定し（Ｓ３７８）、その後、Ｓ３７９に移行する。
【０１０４】
Ｓ３７９に移行すると、ＣＰＵ２１は、先の処理（Ｓ３７３，Ｓ３７４，Ｓ３７７，Ｓ３７８のいずれか）で決定した参照対象のレコードを、ソフトウェア選択テーブル内において参照し、このレコードが示す適合制御ソフトウェアと同一のソフトウェアＩＤを示す外部不揮発性メモリ３０内の制御ソフトウェアを、内蔵不揮発性メモリ２３に書き込む制御ソフトウェア（書込対象の制御ソフトウェア）に決定する。その後、当該ソフトウェア選択処理を終了する。
【０１０５】
また、このようにして、Ｓ３７０でのソフトウェア選択処理を終了すると、ＣＰＵ２１は、Ｓ３８０に移行し、Ｓ３７０で決定した書込対象の制御ソフトウェアを、外部不揮発性メモリ３０から読み出し、読み出した制御ソフトウェアを、内蔵不揮発性メモリ２３の書換可能領域に書き込む。そして、この処理を終えると、Ｓ３１０に移行する。
【０１０６】
これに対し、Ｓ３１０で、制御ソフトウェアが内蔵不揮発性メモリ２３に書き込まれていると判断すると（Ｓ３１０でＹｅｓ）、ＣＰＵ２１は、Ｓ３２０に移行し、制御対象装置７を初期化するなど、車両制御の開始に必要な初期化処理を実行する。また、この処理を終えると、Ｓ３３０に移行し、内蔵不揮発性メモリ２３に書き込まれている制御ソフトウェアを、このメモリ上で実行し、内蔵不揮発性メモリ２３が記憶する上記制御ソフトウェアに基づく車両制御を実行する。
【０１０７】
また、ＣＰＵ２１は、Ｓ３３０において、内蔵不揮発性メモリ２３に記憶されている制御ソフトウェアに基づき１単位分の車両制御を実行すると、Ｓ３４０に移行し、車両が走行中であるか否かを判断する。そして、車両が走行中であると判断すると（Ｓ３４０でＹｅｓ）、Ｓ３３０に移行し、再び、内蔵不揮発性メモリ２３が記憶する上記制御ソフトウェアに基づく車両制御を１単位分実行する。
【０１０８】
一方、車両が走行中ではない（換言すると停車中である）と判断すると（Ｓ３４０でＮｏ）、ＣＰＵ２１は、Ｓ３４５に移行し、第一ポートＰ１及び第二ポートＰ２に対する車載装置ＤＥＶ１，ＤＥＶ２の接続パターンが変化したか否かを判断する。即ち、第一ポートＰ１に対する車載装置ＤＥＶ１の着脱、若しくは、第二ポートＰ２に対する車載装置ＤＥＶ２の着脱があった場合には、Ｓ３４５にて、接続パターンが変化したと判断する。
【０１０９】
また、接続パターンが変化したと判断すると（Ｓ３４５でＹｅｓ）、ＣＰＵ２１は、Ｓ３５０に移行し、制御対象装置７を停止状態に移行させるなど、車両制御を停止する処理を行う。そして、この処理を終えると、Ｓ３７０に移行して、上述のソフトウェア選択処理を実行し、Ｓ３８０で、現在の車載装置ＤＥＶ１，ＤＥＶ２の接続パターン（換言すると、現在の車両タイプ）に適合する制御ソフトウェアを、外部不揮発性メモリ３０から読み出し、これを内蔵不揮発性メモリ２３に、既に記憶されている制御ソフトウェアに上書きするようにして、書き込む。また、この処理を終えると、Ｓ３１０〜Ｓ３２０の処理を経て、更新した制御ソフトウェアに基づく車両制御を実行する（Ｓ３３０）。
【０１１０】
この他、ＣＰＵ２１は、Ｓ３４５にて、接続パターンが変化していないと判断すると（Ｓ３４５でＮｏ）、Ｓ３９０に移行し、通信インタフェース２７を通じて、車外装置３から外部メモリ書換指令信号を受信したか否かを判断する。そして、通信インタフェース２７を通じて、車外装置３から外部メモリ書換指令信号を受信していないと判断すると（Ｓ３９０でＮｏ）、Ｓ３３０に移行し、再び、内蔵不揮発性メモリ２３が記憶する上記制御ソフトウェアに基づく車両制御を実行する。
【０１１１】
一方、ＣＰＵ２１は、車外装置３から外部メモリ書換指令信号を受信したと判断すると（Ｓ３９０でＹｅｓ）、Ｓ３９５に移行し、制御対象装置７を停止状態に移行させるなどして、車両制御を停止する処理を行う。また、この処理を終えると、ＣＰＵ２１は、Ｓ４００に移行し、図４に示す外部メモリ書換処理を実行する。その後、Ｓ３１０に移行する。
【０１１２】
以上、第二実施例について説明したが、この電子制御装置１０では、第一ポートＰ１及び第二ポートＰ２に対する車載装置ＤＥＶ１，ＤＥＶ２の接続パターンが変化したか否かを判断することにより、内蔵不揮発性メモリ２３が記憶するソフトウェアが、自車の車両タイプに適合するソフトウェアであるか否かを判定し、接続パターンが変化した場合には、ソフトウェア選択処理で、第一ポートＰ１及び第二ポートＰ２に対する車載装置ＤＥＶ１，ＤＥＶ２の接続パターンを識別することにより、自車の車両タイプを識別する。そして、Ｓ３８０では、自車の車両タイプに適合する制御ソフトウェアを、外部不揮発性メモリ３０から読み出し、この制御ソフトウェアを、内蔵不揮発性メモリ２３に上書きして、内蔵不揮発性メモリ２３が記憶する制御ソフトウェアを、自車の車両タイプに適合する制御ソフトウェアに置換する。
【０１１３】
このように本実施例の電子制御装置１０では、装置自らが、外部不揮発性メモリ３０から、自車の車両タイプに適合するソフトウェアを読み出し、自車の車両タイプに適合するソフトウェアを、内蔵不揮発性メモリ２３に書き込むので、車外装置３から指令信号や制御ソフトウェアを入力しなくても、内蔵不揮発性メモリ２３に自車の車両タイプに適合するソフトウェアを書き込んで、ＣＰＵ２１に、これを実行させることができる。即ち、本実施例によれば、車外装置３を必要とせず、内蔵不揮発性メモリ２３へのソフトウェアの書込作業を、自動でマイコン２０に実行させることができ、簡単に電子制御装置１０を車両タイプに適合させることができる。
【０１１４】
また、第二実施例の電子制御装置１０では、内蔵不揮発性メモリ２３に制御ソフトウェアが書き込まれていない場合（Ｓ３１０でＮｏ）、外部不揮発性メモリ３０が記憶する制御ソフトウェアであって、車両タイプに適合するソフトウェアを、外部不揮発性メモリ３０から読み出し、これを、内蔵不揮発性メモリ２３に書き込む（Ｓ３７０，Ｓ３８０）。従って、この電子制御装置１０を用いれば、車両に電子制御装置１０を搭載する前に、内蔵不揮発性メモリ２３に制御ソフトウェアを書き込んでおく必要がなく、生産ラインでの工程数を削減することができる。
【０１１５】
また、本実施例では、後付するようにして、装置（オプション）を車両に搭載しても、装置搭載時には、マイコン２０にて、車載装置が入出力インタフェース２５に接続されたか否かが判断され（Ｓ３４５）、装置が入出力インタフェース２５に接続された場合には、接続された車載装置に適合する制御ソフトウェアが、外部不揮発性メモリ３０から読み出されて、内蔵不揮発性メモリ２３に書き込まれる（Ｓ３７０，Ｓ３８０）。従って、本実施例によれば、後付で装置（オプション）を車両に搭載する場合でも、単に装置を車両に搭載し入出力インタフェース２５に接続する程度で済み、作業する者は、装置の搭載に伴って別途、制御ソフトウェアを書き換える作業をしなくても済む。
【０１１６】
尚、第二実施例では、入出力インタフェース２５への装置の接続パターンにより車両タイプを識別するように、電子制御装置１０を構成したが、電子制御装置１０は、通信インタフェース２７を通じて、他の電子制御装置１０と通信し、車両制御システム１の構成（例えば、ＣＡＮに接続されている電子制御装置１０の種類）を判断して、車両タイプを識別するように構成されてもよい。
【０１１７】
（第三実施例）
続いて、第三実施例について説明する。第三実施例の車両制御システム１は、内蔵不揮発性メモリ２３に記憶された制御ソフトウェアを検査し、この制御ソフトウェアに異常が発見された場合には、外部不揮発性メモリ３０に記憶された制御ソフトウェアを、内蔵不揮発性メモリ２３に書き込むなどして異常に対処する機能を備えた電子制御装置１０を設けたものである。この機能は、ソフトウェア的に実現されており、第三実施例の車両制御システム１及び車両制御システム１が備える電子制御装置１０のハードウェア構成は、図１及び図２に示す通り、第一実施例及び第二実施例の車両制御システム１及び電子制御装置１０と同様である。
【０１１８】
また、第三実施例の電子制御装置１０は、外部不揮発性メモリ３０に、図１１に示すソフトウェア選択テーブルを有し、メインルーチンにおいて一部処理を追加して実行する他は、概ね、第二実施例の電子制御装置１０と同一構成であるので、以下では、第三実施例の電子制御装置１０について、ＣＰＵ２１が実行するメインルーチンの構成、及び、外部不揮発性メモリ３０に記憶されたソフトウェア選択テーブルの構成を詳細に説明することとし、第二実施例と同一の構成要素の説明については、省略することにする。
【０１１９】
図１１は、第三実施例の電子制御装置１０における外部不揮発性メモリ３０に記憶されたソフトウェア選択テーブルの構成を表す説明図である。第三実施例の電子制御装置１０は、予め定められた車両タイプ毎の制御ソフトウェアを、外部不揮発性メモリ３０に有すると共に、図１１に示す構成のソフトウェア選択テーブルを、外部不揮発性メモリ３０に有する。
【０１２０】
このソフトウェア選択テーブルは、予め定められた車両タイプ毎に、車両タイプに適合する制御ソフトウェア（適合制御ソフトウェア）のソフトウェアＩＤ、及び、この適合制御ソフトウェアに異常が発生した場合に用いる別の制御ソフトウェア（以下、「代替制御ソフトウェア」とも言う。）のソフトウェアＩＤを示すレコードを有し、各レコードは、索引番号（Ｉｎｄｅｘ）と、適合制御ソフトウェアのソフトウェアＩＤと、代替制御ソフトウェアのソフトウェアＩＤと、から構成されている。尚、代替制御ソフトウェアとしては、類似する車両タイプの制御ソフトウェアを挙げることができる。その他、各車両タイプに共通する汎用の制御ソフトウェアを、代替制御ソフトウェアとして設定してもよい。
【０１２１】
また、図１２及び図１３は、第三実施例の電子制御装置１０におけるＣＰＵ２１が実行するメインルーチンを表すフローチャートである。尚、第三実施例のメインルーチンは、第二実施例のメインルーチンにおけるＳ３３０の処理後、Ｓ５００及びＳ５１０の処理を実行して、Ｓ３４０に移行する程度の構成であるので、図１２には、Ｓ３１０〜Ｓ３２０の処理、Ｓ３４５〜Ｓ４００の処理を図示しないことにする。
【０１２２】
即ち、第三実施例のメインルーチンは、図８に示すメインルーチンにおいて、Ｓ３３０〜Ｓ３４０までの間の経路に、図１２に示す点線内に図示する処理を追加した程度のものである。従って、以下では、Ｓ３３０以降の処理について説明する。
【０１２３】
第三実施例におけるＣＰＵ２１は、メインルーチンを開始し、上述したＳ３１０及びＳ３２０の処理を経て、Ｓ３３０に移行すると、内蔵不揮発性メモリ２３に書き込まれている制御ソフトウェアを実行し、内蔵不揮発性メモリ２３が記憶する上記制御ソフトウェアに基づく車両制御を実行する。
【０１２４】
そして、１単位分の車両制御を終了すると、Ｓ５００に移行し、図１４に示す内蔵メモリ検査処理を実行する。図１４は、マイコン２０のＣＰＵ２１が実行する内蔵メモリ検査処理を表すフローチャートである。
【０１２５】
内蔵メモリ検査処理を開始すると、ＣＰＵ２１は、まず、内蔵不揮発性メモリ２３における制御ソフトウェアが記憶されている領域の先頭アドレス（メモリアドレス）を、検査アドレスに設定すると共に（Ｓ７１０）、外部不揮発性メモリ３０において、内蔵不揮発性メモリ２３が記憶する制御ソフトウェアと同一ソフトウェアＩＤの制御ソフトウェアが記憶されている領域の先頭アドレス（メモリアドレス）を、参照アドレスに設定する（Ｓ７２０）。
【０１２６】
そして、検査アドレスに記憶された制御ソフトウェアのコードを、内蔵不揮発性メモリ２３から読み出し（Ｓ７３０）、更に、参照アドレスに記憶された制御ソフトウェアのコードを、外部不揮発性メモリ３０から読み出す（Ｓ７４０）。そして、検査アドレスに記憶されたコードと、参照アドレスに記憶されたコードとを比較し、両コードが一致するか否かを判断する（Ｓ７５０）。
【０１２７】
また、両コードが一致すると判断すると（Ｓ７５０でＹｅｓ）、ＣＰＵ２１は、検査アドレスを１増加させ（Ｓ７６０）、参照アドレスを１増加させる（Ｓ７７０）。その後、Ｓ７８０に移行する。また、Ｓ７８０に移行すると、ＣＰＵ２１は、内蔵不揮発性メモリ２３に記憶された制御ソフトウェアの末尾まで、Ｓ７５０においてコード比較を実行したか否かを判断し、実行していないと判断すると（Ｓ７８０でＮｏ）、Ｓ７３０に移行し、更新後の検査アドレス及び参照アドレスに基づき、対応するコードを、内蔵不揮発性メモリ２３及び外部不揮発性メモリ３０から読み出し、両コードを比較する（Ｓ７３０〜Ｓ７５０）。
【０１２８】
また、Ｓ７５０において、検査アドレスに記憶されたコードと、参照アドレスに記憶されたコードとを比較した結果、両コードが一致しないと判断すると（Ｓ７５０でＮｏ）、Ｓ７９０に移行し、内蔵不揮発性メモリ２３に記憶された制御ソフトウェアが異常であると判定する（Ｓ７９０）。その後、当該内蔵メモリ検査処理を終了する。
【０１２９】
一方、内蔵不揮発性メモリ２３に記憶された制御ソフトウェアの末尾までコード比較を実行したと判断すると（Ｓ７８０でＹｅｓ）、ＣＰＵ２１は、内蔵不揮発性メモリ２３に記憶された制御ソフトウェアが正常であると判定する（Ｓ８００）。その後、内蔵メモリ検査処理を終了する。
【０１３０】
また、Ｓ５００での内蔵メモリ検査処理を終了すると、ＣＰＵ２１は、Ｓ５１０に移行し、内蔵メモリ検査処理での判定結果が、制御ソフトウェアが正常との判定結果であるか否かを判断する。そして、正常との判定結果であると判断すると（Ｓ５１０でＹｅｓ）、Ｓ３４０に移行する。一方、内蔵メモリ検査処理での判定結果が、制御ソフトウェアが異常との判定結果であると判断すると（Ｓ５１０でＮｏ）、ＣＰＵ２１は、Ｓ５２０に移行し、インストルメントパネルに設けられた停車を促すための警告ランプを、点灯させる。尚、警告ランプは、当該電子制御装置１０の入出力インタフェース２５に接続され、当該電子制御装置１０から直接制御可能な構成にされていてもよいし、ボデー制御用の電子制御装置を介して、制御されてもよい。
【０１３１】
Ｓ５２０での処理を終えると、ＣＰＵ２１は、Ｓ５３０に移行し、車両が走行中であるか否かを判断する。そして、車両が走行中であると判断すると（Ｓ５３０でＹｅｓ）、内蔵不揮発性メモリ２３が記憶する制御ソフトウェアに基づく車両制御を実行する（Ｓ５４０）。尚、異常が検出されたにもかかわらず、Ｓ５４０で車両制御を実行するのは、車両が走行中であるのにもかかわらず、車両制御を強制的に停止させると、かえって、車両の安全が維持できなくなる可能性があるためである。また、Ｓ５４０に移行した場合には、１単位分の車両制御を実行した後、再び、Ｓ５３０に移行し、車両が走行中であるか否かを判断する。
【０１３２】
そして、車両が走行中ではない（停車中である）と判断すると（Ｓ５３０でＮｏ）、ＣＰＵ２１は、Ｓ５５０に移行し、制御対象装置７を停止状態に移行させるなど、車両制御を停止する処理を行う。
【０１３３】
また、この処理を終えると、ＣＰＵ２１は、Ｓ５６０に移行し、外部不揮発性メモリ３０が記憶する制御ソフトウェアであって、内蔵不揮発性メモリ２３に記憶されている制御ソフトウェアと同一種類（同一ソフトウェアＩＤ）の制御ソフトウェアを、チェックサム方式により検査する。
【０１３４】
そして、この検査の結果、上記制御ソフトウェアが正常であると判断すると（Ｓ５７０でＹｅｓ）、Ｓ５８０に移行し、検査された制御ソフトウェア（内蔵不揮発性メモリ２３に記憶されている制御ソフトウェアと同一種類の制御ソフトウェア）を、外部不揮発性メモリ３０から読み出し、これを内蔵不揮発性メモリ２３に、既に記憶されている制御ソフトウェアに上書きするようにして、書き込む。また、この処理を終えると、Ｓ５９０に移行し、図１４に示す内蔵メモリ検査処理を実行する。
【０１３５】
また、Ｓ５９０での内蔵メモリ検査処理を終了すると、ＣＰＵ２１は、Ｓ６００に移行し、Ｓ５９０での判定結果が、内蔵不揮発性メモリ２３の制御ソフトウェアが正常との判定結果であるか否かを判断する。そして、正常との判定結果であると判断すると（Ｓ６００でＹｅｓ）、Ｓ６１０に移行し、Ｓ５２０で点灯させた警告ランプを消灯させる。また、この処理を終えると、ＣＰＵ２１は、当該電子制御装置１０をリセットし、再びメインルーチンの先頭（Ｓ３１０）から処理を開始する。
【０１３６】
一方、Ｓ６００において、Ｓ５９０での判定結果が、内蔵不揮発性メモリ２３内の制御ソフトウェアが異常であるとの判定結果であると判断すると（Ｓ６００でＮｏ）、ＣＰＵ２１は、Ｓ６８０に移行する。そして、Ｓ６８０では、外部不揮発性メモリ３０に記憶された退避用の制御ソフトウェアを直接参照し、外部不揮発性メモリ３０上で、この制御ソフトウェアに基づいた退避用の車両制御を実行する。
【０１３７】
尚、本実施例においては、外部不揮発性メモリ３０に上記退避用の制御ソフトウェアが記憶されているものとする。退避用の制御ソフトウェアとしては、安全走行に必要最低限の車両制御を行うための制御ソフトウェアであって、各車両タイプ共通の制御ソフトウェアを挙げることができる。また、Ｓ６８０では、アクセス性能に劣る外部不揮発性メモリ３０上で、制御ソフトウェアを実行するため、退避用の制御ソフトウェアは、このアクセス性能を考慮した構成にされているものとする（換言すると、他の制御ソフトウェアは、内蔵不揮発性メモリ２３に転送されることを前提として、最適化されているものとする。）。
【０１３８】
その他、ＣＰＵ２１は、Ｓ５６０での検査の結果、制御ソフトウェアが正常ではないと判断すると（Ｓ５７０でＮｏ）、Ｓ６２０に移行し、内蔵不揮発性メモリ２３に記憶されている制御ソフトウェアに対応する代替制御ソフトウェアを識別する。尚、代替制御ソフトウェアの識別は、図１１に示すソフトウェア選択テーブルに基づいて行われる。
【０１３９】
即ち、Ｓ６２０において、ＣＰＵ２１は、現在内蔵不揮発性メモリ２３に記憶されている制御ソフトウェアを適合制御ソフトウェアとして示すレコードを、ソフトウェア選択テーブル内において検索し、このレコードが示す代替制御ソフトウェアのソフトウェアＩＤを識別する。また、別例として、ＣＰＵ２１は、最後にＳ３７０にて参照したソフトウェア選択テーブル内のレコードと同一のレコードを参照し、このレコードが示す代替制御ソフトウェアのソフトウェアＩＤを、Ｓ６２０で識別する。
【０１４０】
また、このようにしてＳ６２０での処理を終えると、ＣＰＵ２１は、外部不揮発性メモリ３０に記憶されている代替制御ソフトウェアを、チェックサム方式にて検査し（Ｓ６３０）、検査の結果、代替制御ソフトウェアが正常であると判断すると（Ｓ６４０でＹｅｓ）、Ｓ６５０に移行し、代替制御ソフトウェアが正常でないと判断すると（Ｓ６４０でＮｏ）、Ｓ６８０に移行する。
【０１４１】
また、Ｓ６５０に移行すると、ＣＰＵ２１は、外部不揮発性メモリ３０が記憶する代替制御ソフトウェア（Ｓ６２０で識別したソフトウェア）を外部不揮発性メモリ３０から読み出し、読み出した代替制御ソフトウェアを、内蔵不揮発性メモリ２３に、既に記憶されている制御ソフトウェアに上書きするようにして、書き込む。また、この処理を終えると、Ｓ６６０に移行し、図１４に示す内蔵メモリ検査処理を実行する。
【０１４２】
また、Ｓ６６０での内蔵メモリ検査処理を終了すると、ＣＰＵ２１は、Ｓ６７０に移行し、Ｓ６６０での判定結果が、内蔵不揮発性メモリ２３の制御ソフトウェアが正常との判定結果であるか否かを判断し、正常との判定結果であると判断すると（Ｓ６７０でＹｅｓ）、当該電子制御装置１０をリセットし、再びメインルーチンの先頭（Ｓ３１０）から処理を開始する。
【０１４３】
一方、Ｓ６６０での判定結果が、異常との判定結果であると判断すると（Ｓ６７０でＮｏ）、ＣＰＵ２１は、Ｓ６８０に移行する。そして、上記退避用の制御ソフトウェアに基づいた車両制御を実行する。
【０１４４】
以上、第三実施例について説明したが、この電子制御装置１０によれば、内蔵不揮発性メモリ上の制御ソフトウェアの記憶状態の異常をＳ５００で検知し、異常を検知すると（Ｓ５１０でＮｏ）、外部不揮発性メモリ３０が記憶する同一種類の制御ソフトウェアを、外部不揮発性メモリ３０から読み出し、これを内蔵不揮発性メモリに書き込むことで（Ｓ５８０）、異常が検知された制御ソフトウェアを、正常な同一種類の制御ソフトウェアに置換する。
【０１４５】
従って、この電子制御装置１０を用いれば、揮発等で内蔵不揮発性メモリ２３が記憶する制御ソフトウェアに異常が発生した際に、サービスセンタ等で正常な制御ソフトウェアを外部から転送しなくても、内蔵不揮発性メモリ２３上の制御ソフトウェアの記憶状態の異常を解消することができる。
【０１４６】
また、この電子制御装置１０によれば、内蔵不揮発性メモリ２３が記憶する制御ソフトウェアと同一種類の制御ソフトウェアが、外部不揮発性メモリ３０においても揮発する等して異常を示していないかどうか判断し、外部不揮発性メモリ３０が記憶する制御ソフトウェアについても異常を検知した場合には（Ｓ５７０でＮｏ）、外部不揮発性メモリ３０が記憶する代替制御ソフトウェアを、内蔵不揮発性メモリ２３に書き込んで、内蔵不揮発性メモリ２３が記憶する異常のある制御ソフトウェアを、代替制御ソフトウェアに置換する（Ｓ６５０）。
【０１４７】
従って、本実施例によれば、外部不揮発性メモリ３０及び内蔵不揮発性メモリ２３の両者において、同一種類の制御ソフトウェアが異常を示していても、代替制御ソフトウェアの書込により、異常修復に係る一応のソフトウェア更新は、外部からの制御ソフトウェアの転送なく実現することができ、車外装置３を必要とすることなく、車両の基本性能を維持することができる。
【０１４８】
その他、第三実施例によれば、内蔵不揮発性メモリ２３上の制御ソフトウェアの記憶状態の異常を検知するに際して、外部不揮発性メモリ３０内の同一種類の制御ソフトウェアと、内蔵不揮発性メモリ２３内の制御ソフトウェアとをコード比較するので、チェックサム方式により異常を検知する手法よりも、内蔵不揮発性メモリ２３上の制御ソフトウェアの記憶状態の異常を、感度よく検知することができる。但し、制御ソフトウェアの検査に係る処理負荷が大きくなる可能性があるので、場合によっては、検査処理を分割し、車両制御１単位分ごとに、分割された検査処理を実行することにより、処理負荷を下げると良い。また、コード比較では内蔵不揮発メモリ２３内の制御ソフトウェアの記憶状態と、外部不揮発性メモリ３０内の同一種類の制御ソフトウェアの記憶状態のうち、いずれの異常であるか判別できない場合もあるため、チェックサム方式等により補完することも考えられる。
【０１４９】
また、本実施例によれば、書込前の制御ソフトウェアには異常がないのもかかわらず（Ｓ５７０でＹｅｓ，Ｓ６４０でＹｅｓ）、内蔵不揮発性メモリ２３に制御ソフトウェアを書き込んだ直後から異常が見られる場合（Ｓ６００でＮｏ，Ｓ６７０でＮｏ）には、内蔵不揮発性メモリ２３にハードウェア的な欠陥があるとして、Ｓ６８０に移行し、外部不揮発性メモリ３０に記憶された退避用の制御ソフトウェアに基づき動作して、退避用の車両制御を実現する。従って、本実施例の電子制御装置１０を用いれば、内蔵不揮発性メモリ２３がハードウェア的に故障しても、車両の安全を確保することができる。
【０１５０】
以上、本発明の実施例について説明したが、本発明の第一の不揮発性メモリは、内蔵不揮発性メモリ２３に相当し、第二の不揮発性メモリは、外部不揮発性メモリ３０に相当し、本発明のインタフェースは、入出力インタフェース２５及び通信インタフェース２７に相当する。
【０１５１】
この他、本発明の書込手段は、Ｓ１８０，Ｓ２００，Ｓ３８０，Ｓ４００，Ｓ５８０，Ｓ６５０の処理にて実現され、車両タイプ識別手段は、ソフトウェア選択処理にて実現され、適合判定手段及び装備判定手段は、Ｓ３４５の処理にて実現され、書込判定手段は、Ｓ３１０の処理にて実現され、異常検知手段は、Ｓ５００，Ｓ５１０の処理にて実現され、予備検知手段は、Ｓ５６０，Ｓ５７０の処理にて実現され、ハードウェア異常検知手段は、Ｓ５９０，Ｓ６００，Ｓ６６０，Ｓ６７０の処理にて実現されている。
【０１５２】
また、本発明の電子制御装置は、上記実施例に限定されるものではなく、種々の態様を採ることができる。
例えば、第三実施例では、図１２点線内に示すＳ５００以降の処理を、図８に示すメインルーチンに組み込んだ例を説明したが、図１２点線内に示す処理は、図３において、Ｓ１３０及びＳ１４０の間に組み込まれてもよい。
【０１５３】
即ち、第一実施例の電子制御装置１０は、図１１に示すソフトウェア選択テーブルを、外部不揮発性メモリ３０に有し、Ｓ１３０の処理後、Ｓ５００にて内蔵メモリ検査処理を実行し、この処理にて内蔵不揮発性メモリ２３の制御ソフトウェアが正常であると判定された場合には、Ｓ５１０でＹｅｓと判断して、Ｓ１４０に移行し、内蔵不揮発性メモリ２３の制御ソフトウェアが異常であると判定された場合には、Ｓ５１０でＮｏと判断して、Ｓ５２０に移行する構成にされてもよい。
【図面の簡単な説明】
【０１５４】
【図１】本発明が適用された電子制御装置１０を備える車両制御システム１の構成を表す説明図である。
【図２】電子制御装置１０の構成を表す説明図である。
【図３】ＣＰＵ２１が実行する第一実施例のメインルーチンを表すフローチャートである。
【図４】ＣＰＵ２１が実行する外部メモリ書換処理を表すフローチャートである。
【図５】内蔵不揮発性メモリ２３への制御ソフトウェアの書込態様を表す図である。
【図６】外部不揮発性メモリ３０への制御ソフトウェアの書込態様を表す図である。
【図７】第二実施例において外部不揮発性メモリ３０に記憶されたソフトウェア選択テーブルの構成を表す説明図である。
【図８】ＣＰＵ２１が実行する第二実施例のメインルーチンを表すフローチャートである。
【図９】ＣＰＵ２１が実行するソフトウェア選択処理を表すフローチャートである。
【図１０】ポートＰ１，Ｐ２と車載装置との接続関係を表す説明図である。
【図１１】第三実施例において外部不揮発性メモリ３０に記憶されたソフトウェア選択テーブルの構成を表す説明図である。
【図１２】ＣＰＵ２１が実行する第三実施例のメインルーチンを表すフローチャートである。
【図１３】ＣＰＵ２１が実行する第三実施例のメインルーチンを表すフローチャートである。
【図１４】ＣＰＵ２１が実行する内蔵メモリ検査処理を表すフローチャートである。
【符号の説明】
【０１５５】
１…車両制御システム、３…車外装置、５…センサ類、７…制御対象装置、９…接続部、１０…電子制御装置、２０…マイコン、２１…ＣＰＵ、２３…内蔵不揮発性メモリ、２５…入出力インタフェース、２７…通信インタフェース、２９…外部メモリインタフェース、３０…外部不揮発性メモリ
【図１】
0004692231.tif 000002
【図２】
0004692231.tif 000003
【図３】
0004692231.tif 000004
【図４】
0004692231.tif 000005
【図５】
0004692231.tif 000006
【図６】
0004692231.tif 000007
【図７】
0004692231.tif 000008
【図８】
0004692231.tif 000009
【図９】
0004692231.tif 000010
【図１０】
0004692231.tif 000011
【図１１】
0004692231.tif 000012
【図１２】
0004692231.tif 000013
【図１３】
0004692231.tif 000014
【図１４】
0004692231.tif 000015