(57)【要約】      （修正有）【課題】プログラミングの書き換えモードで異常が生じてもそのまま停滞することを回避可能な車載制御装置を提供する。【解決手段】車両外部から送信されたソフトウェアで記憶部のソフトウェアを書き換える電子制御装置であって、車両外部又は車両内部からソフトウェアの書き換え要求があった場合に、イグニッションがＯＮ状態かＯＦＦ状態かを判定する判定手段と、イグニッションがＯＦＦ状態の場合、当該電子制御装置のマイコンをリセットするリセット手段と、イグニッションがＯＮ状態の場合、前記記憶部のソフトウェアの書き換えを行う書き換え手段と、を有する。【選択図】図１
2015098311.tif 000002
【特許請求の範囲】
【請求項１】
車両外部から送信されたソフトウェアで記憶部に記憶されているソフトウェアを書き換える電子制御装置であって、
車両外部又は車両内部からソフトウェアの書き換え要求があった場合に、イグニッションがＯＮ状態かＯＦＦ状態かを判定する判定手段と、
イグニッションがＯＦＦ状態の場合、当該電子制御装置のマイコンをリセットするリセット手段と、
イグニッションがＯＮ状態の場合、前記記憶部のソフトウェアの書き換えを行う書き換え手段と、を有することを特徴とする電子制御装置。
【請求項２】
車両外部から送信されたソフトウェアで記憶部に記憶されているソフトウェアを書き換える電子制御装置であって、
車両外部又は車両内部からソフトウェアの書き換え要求があった場合に、イグニッションがＯＮ状態かＯＦＦ状態かを判定する判定手段と、
イグニッションがＯＦＦ状態の場合、前記記憶部のソフトウェアの誤り検出を行う誤り検出手段と、
前記誤り検出手段が前記記憶部のソフトウェアの誤りを検出した場合、又は、イグニッションがＯＮ状態の場合、ソフトウェアの書き換えを行う書き換え手段と、
前記誤り検出手段が前記記憶部のソフトウェアの誤りを検出しない場合、当該電子制御装置のマイコンをリセットするリセット手段と、
を有することを特徴とする電子制御装置。
【請求項３】
ソフトウェアの書き換えが始められた後、書き換えが終わるまでの間、前記判定手段は、イグニッションがＯＮ状態かＯＦＦ状態かを複数回、判定する、
ことを特徴とする請求項１又は２記載の電子制御装置。
【請求項４】
前記記憶部に記憶されているソフトウェアの誤り検出を行う誤り検出手段を有し、
前記誤り検出手段は、前記書き換え手段がソフトウェアの書き換えを完了した場合、前記記憶部のソフトウェアの誤り検出を行い、
前記誤り検出手段が前記記憶部のソフトウェアの誤りを検出した場合、前記書き換え手段は、再度、ソフトウェアの書き換えを行う、
ことを特徴とする請求項１記載の電子制御装置。
【請求項５】
前記誤り検出手段は、前記書き換え手段がソフトウェアの書き換えを完了した場合、前記記憶部のソフトウェアの誤り検出を行い、
前記誤り検出手段が前記記憶部のソフトウェアの誤りを検出した場合、前記書き換え手段は、再度、ソフトウェアの書き換えを行う、
ことを特徴とする請求項２記載の電子制御装置。
【請求項６】
前記マイコンのリセット解除の直後に、前記記憶部のソフトウェアの誤り検出を行う第２の誤り検出手段を有し、
前記第２の誤り検出手段が前記記憶部のソフトウェアの誤りを検出せず、かつ、前記書き換え要求を取得した場合、前記判定手段はイグニッションがＯＮ状態かＯＦＦ状態かを判定し、
前記第２の誤り検出手段が前記記憶部のソフトウェアの誤りを検出した場合、前記判定手段はイグニッションがＯＮ状態かＯＦＦ状態かを判定する、
ことを特徴とする請求項１〜５いずれか１項記載の電子制御装置。
【請求項７】
外部装置と、前記外部装置から送信されたソフトウェアで記憶部に記憶されているソフトウェアを書き換える電子制御装置とを有するソフトウェア書き換えシステムであって、
前記外部装置は、ソフトウェアを記憶するためのソフトウェア記憶部を有し、
前記電子制御装置は、
前記外部装置又は車両内部からソフトウェアの書き換え要求があった場合に、イグニッションがＯＮ状態かＯＦＦ状態かを判定する判定手段と、
イグニッションがＯＦＦ状態の場合、当該電子制御装置のマイコンをリセットするリセット手段と、
イグニッションがＯＮ状態の場合、前記記憶部のソフトウェアの書き換えを行う書き換え手段と、を有することを特徴とするソフトウェア書き換えシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、外部から送信されたソフトウェアで記憶部のソフトウェアを書き換える電子制御装置等に関する。
【背景技術】
【０００２】
車載される多くの装置は電子制御装置により制御される。車両によっては数十個以上の電子制御装置が搭載される場合があり、それぞれがエンジン、ブレーキ、パワーステアリング、トランスミッション、ドアロック、ナビゲーション装置などを制御している。各電子制御装置はネットワークを介して互いに通信してシステムとして作動したり、互いに協調制御したりする。
【０００３】
電子制御装置はマイコンを有しており、マイコンがプログラムを実行することで各種の制御を行っている。このプログラムは不揮発性のメモリに記憶されているが、車両の出荷後にプログラムをバージョンアップ可能なように、外部から不揮発性のメモリに記憶されたプログラムが書き換えられることが可能になっている。
【０００４】
しかしながら、プログラムの書き換えが正常に完了しないと車載装置の制御が困難になるため、従来からプログラムを正常に書き換えるための技術が考案されている（例えば、特許文献１参照。）。特許文献１には、プログラムの書き換え中、イグニッション・スイッチがＯＮかＯＦＦかを監視し、イグニッション・スイッチがＯＦＦの場合、書き換え処理を中止すると共に、他の電子制御装置へ故障検知の停止命令を行う書き換え装置が開示されている。これにより、電子制御装置のプログラムの書き換え中に誤って電源が遮断された場合であっても、再度電源を投入することにより、書き換えを行うことができる一方、故障検知を停止することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−０２６６２３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に記載された書き換え装置は、書き換え処理を中止した後、書き換えを再開するために、イグニッション・スイッチの状態判定処理を実行し続けるため、バッテリ電力が消費され続けるという問題がある。すなわち、イグニッション・スイッチがＯＦＦでも動作するマイコン（常時電源系マイコン）の場合、プログラミングの書き換えモードで停滞してしまい、ユーザやサービスマンが気づいてバッテリを外すまで電源供給されることでバッテリ上がりとなるおそれがある。
また、特許文献１では書き換え処理の中止後、イグニッション・スイッチがＯＮにならない限り、書き換え処理を再開できない。例えば、バッテリ電圧の低下で瞬間的に車両がＩＧ−ＯＦＦになった時にイグニッション・スイッチに固着異常（イグニッション・スイッチがＯＦＦのままになる異常）が生じた場合、電子制御装置は書き換え処理が中止された状態で停滞する。また、例えば、電源遷移を制御している電子制御装置が書き換え対象の場合、バッテリ電圧低下で瞬間的にＩＧ−ＯＦＦになると、電子制御装置は書き換え処理が中止された状態で停滞する。書き換え処理が中止された状態で停滞すると、最悪の場合、電子制御装置の交換が必要になる。
【０００７】
また、特許文献１に記載の書き換え装置では、書き換え装置側がイグニッション・スイッチのＯＮ／ＯＦＦの判定及び書き換え処理の中止を行うため、電子制御装置の種類が増える毎に書き換え装置の開発が必要になる。
【０００８】
本発明は上記課題に鑑み、プログラミングの書き換えモードで異常が生じてもそのまま停滞することを回避可能な車載制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記課題に鑑み、本発明は、車両外部から送信されたソフトウェアで記憶部のソフトウェアを書き換える電子制御装置であって、車両外部又は車両内部からソフトウェアの書き換え要求があった場合に、イグニッションがＯＮ状態かＯＦＦ状態かを判定する判定手段と、イグニッションがＯＦＦ状態の場合、当該電子制御装置のマイコンをリセットするリセット手段と、イグニッションがＯＮ状態の場合、前記記憶部のソフトウェアの書き換えを行う書き換え手段と、を有することを特徴とする。
【発明の効果】
【００１０】
プログラミングの書き換えモードで異常が生じてもそのまま停滞することを回避可能な車載制御装置を提供することができる。
【図面の簡単な説明】
【００１１】
【図１】マイコンがプログラムを書き換える手順の概略を説明するフローチャート図の一例である。
【図２】システム構成図の一例である。
【図３】プログラムＯＬＤと書き換えプログラムの機能ブロック図の一例である。
【図４】従来の電子制御装置のプログラムの書き換え手順を示すフローチャート図の一例である。
【図５】従来の電子制御装置のプログラムの書き換え手順により生じる不都合を説明するフローチャート図の一例である。
【図６】本実施形態の電子制御装置のプログラムの書き換え手順を説明するフローチャート図の一例である。
【図７】電子制御装置のプログラムの書き換え手順の変形例を説明するフローチャート図の一例である。
【図８】電子制御装置のプログラムの書き換え手順を説明するフローチャート図の一例である（実施例２）。
【発明を実施するための形態】
【００１２】
以下、本発明を実施するための形態について図面を参照しながら実施例を挙げて説明する。
【実施例１】
【００１３】
〔本実施形態の書き換え動作の概略〕
図１は、本実施形態のマイコンがプログラムを書き換える手順の概略を説明するフローチャート図の一例である。本実施形態のマイコンは、ＩＧ（イグニッション）-ＯＮ状態でプログラムが書き換えられることが推奨されているものとする。
【００１４】
S1：マイコンはリセットが解除されると、正常動作モードで動作する。正常動作モードは、電子制御装置が書き換え対象のプログラムを実行して車載装置を制御する動作モードである。マイコンは、後述するツールからの書き換え要求がない場合、正常動作モードを繰り返し実行している。正常動作モードでは、ＩＧ-ＯＦＦ状態になると、低消費電力モードに移行するためバッテリ電力を大きく消費することはない。
【００１５】
S2：マイコンはツールからの書き換え要求を受信すると所定の認証を行い、認証が成立するとマイコンはプログラム書き換えモードに移行する。
【００１６】
S3：本実施形態のマイコンは、プログラム書き換えモードに移行した後、エンジン運転状態がＩＧ-ＯＮ状態か否かを判定する。プログラム書き換えモードに移行した後とは、書き換えが始まる前のタイミングを言う。換言すると、正常動作モードからプログラム書き換えモードに移行する過程、プログラム書き換えモードへの移行時、又は、プログラム書き換えモードに移行した直後と表現できる。
【００１７】
S4：プログラム書き換えモードに移行直後、ＩＧ-ＯＮ状態の場合、正常に書き換え可能であると判定して、マイコンは書き換えを開始する。書き換え完了後はリセットされ、正常動作モードで起動する。
【００１８】
S5：一方、プログラム書き換えモードに移行直後、ＩＧ-ＯＦＦ状態の場合、マイコンはマイコンをリセットする。すなわち、ＩＧ-ＯＦＦ状態ではプログラム書き換えモードに移行すべきでなく、また、プログラム書き換えモードに移行直後のＩＧ-ＯＦＦはツールなどでも検出が困難なので、ＩＧ-ＯＦＦ状態の場合にはマイコンが自身をリセットすることで正常動作モードに復帰させる。正常動作モードではＩＧ-ＯＦＦ状態で低消費電力モードに移行するので、ＩＧ-ＯＦＦ状態であってもバッテリ上がりを防止できる。
【００１９】
〔構成例〕
図２は、システム構成図の一例である。車両には１つ以上の電子制御装置（ＥＣＵ：Electronic  Control  Unit）１００が搭載されている。各電子制御装置はバッテリの電力で動作するが、本実施形態の電子制御装置１００はＩＧ−ＯＦＦ状態でもバッテリから常時、電力が供給される。ＩＧ−ＯＦＦ状態では電力が供給されない電子制御装置１００ではバッテリが上がるという課題が発生しないためである。しかしながら、ＩＧ-ＯＦＦ状態では電力が供給されない電子制御装置１００に本実施形態で説明する書き換えプログラムを適用することは可能である。
【００２０】
電子制御装置１００とツール５０はＣＡＮバス１４を介して接続されている。ＣＡＮバス１４は、車外のツール５０が接続されるためのＤＬＣ（データリンクコネクタ）コネクタ１５を有しており、ツール５０はＤＬＣコネクタ１５を介して電子制御装置１００と通信する。なお、ＤＬＣコネクタ１５は例えば運転席のメータパネルの右下などに配置されている。
【００２１】
運転者は定期点検時や車両の不具合を把握すると車両をディーラーに持ち込むので、一般にサービスマンがツール５０をＤＬＣコネクタ１５に接続する。サービスマンがツール５０を操作することでプログラムの書き換えが開始される。サービスマン以外に運転者などが書き換えを行うこともあり、主体は問わないが以下ではサービスマンが書き換えするものとして説明する。
【００２２】
車載される電子制御装置１００には、例えばメータＥＣＵ、エンジンＥＣＵ、ＨＶ（hybrid）-ＥＣＵ、ブレーキＥＣＵ、電源制御ＥＣＵ、トランスミッションＥＣＵ、ゲートウェイ、ボディＥＣＵ、ナビ制御用ＥＣＵ、電動パワステＥＣＵ、照合ＥＣＵ、エアコンＥＣＵ、前照灯ＥＣＵ、カメラＥＣＵ、障害物検知用の電子制御装置１００などがある。これらの電子制御装置１００の呼称は一例でありこの他の電子制御装置１００に適用されてもよいし、このうちの一部又は全部に適用されてもよい。
【００２３】
電子制御装置１００は主にマイコン１１、電源回路１３、及び、ＩＣ１２を有している。電源回路１３はバッテリ１６の電力を降圧するコンバータであり、定電圧をマイコン１１とＩＣ１２の端子に供給する（いずれも不図示）。
【００２４】
マイコン１１は、バスに接続されたＣＰＵ２１、キャッシュメモリ２２、フラッシュメモリ２３、ＣＡＮコントローラ２４、ＲＡＭ２５、及び、Ｉ／Ｏ２６を有する。
【００２５】
ＣＰＵ２１は、正常動作モードでは、フラッシュメモリ２３に記憶されたプログラムＯＬＤ３２（以下、符号は省略する）を実行して、書き換えモードではフラッシュメモリ２３に記憶された書き換えプログラムを実行する。プログラムＯＬＤは、電子制御装置１００に特有の処理を実行するためのプログラムであり、マイコン１１はプログラムＯＬＤを実行して例えばセンサの検出した信号の処理、演算、アクチュエータの制御等を実行する。プログラムＯＬＤとプログラムＮＥＷは特許請求の範囲のソフトウェアの一例である。ソフトウェアにはプログラムと呼ばれるものの他ファームウェアなど、ＣＰＵ２１が行う処理が記述されたものが含まれる。
また、マイコン１１は書き換えプログラム３４（以下、符号は省略する）を実行して、プログラムＯＬＤをプログラムＮＥＷで書き換える。プログラムＯＬＤ３２には書き換えプログラム３４が含まれており、プログラム書き換え時には、書き換え対象外のメモリに退避させてもよい。
【００２６】
キャッシュメモリ２２は、フラッシュメモリ２３に記憶されたプログラムＯＬＤ又は書き換えプログラムの一部のコピーを記憶する高速小容量の記憶素子（例えば、ＳＲＡＭ（Static RAM)）である。ＣＰＵ２１はキャッシュメモリ２２を介してフラッシュメモリ２３にアクセスする。キャッシュメモリ２２にＣＰＵ２１が指定したアドレスが記憶されていない場合、キャッシュメモリ２２がページフォールトを発生するので、ＣＰＵ２１はフラッシュメモリ２３からプログラム（プログラムＯＬＤ又は書き換えプログラム）を読み出すと共にキャッシュメモリ２２に書き込む。
【００２７】
なお、図ではＣＰＵ２１の外部にキャッシュメモリ２２が記載さているが、キャッシュメモリ２２はＣＰＵ２１に内蔵されていてもよい。また、キャッシュメモリ２２が複数存在し、ＣＰＵ２１から近い順に１次キャッシュ〜３次キャッシュと呼ばれるキャッシュメモリ２２を有するマイコン１１も存在する。本実施例では、ＣＰＵ２１の内外のいずれにキャッシュメモリ２２が配置されていてもよい。
【００２８】
ＲＡＭ２５は、ＣＰＵ２１がプログラムＯＬＤ又は書き換えプログラムを実行する際の作業メモリとなる。正常動作モードでは、センサ信号や他の電子制御装置から受信したデータが保存されたり、演算結果が保存されたり、他の電子制御装置に送信するデータが保存されたりする。書き換えモードでは、ツール５０から送信されたプログラムＮＥＷが一時保存される。なお、書き換えモードにおいて、ツール５０から送信されたプログラムＮＥＷがＲＡＭ２５ではなくキャッシュメモリ２２に一時保存されるマイコン１１がある。本実施形態では、どちらに記憶されてもよいものとする。
【００２９】
フラッシュメモリ２３は、書き換え可能な不揮発メモリの一例であり、フラッシュメモリ２３でなくても書き換え可能な不揮発メモリであればよい。書き換え可能な不揮発メモリとしては、例えば、ＥＥＰＲＯＭ、ＦｅＲＡＭ（Ferroelectric Random Access Memory）、ＭＲＡＭ（Magnetoresistive Random Access Memory）等がある。
【００３０】
ＣＡＮコントローラ２４はＣＡＮバス１４に接続されており、ＣＡＮプロトコルに従ってツール５０からプログラムＮＥＷを受信する。ＣＡＮプロトコルは一例であって、FlexRay、Ethernet（登録商標）、MOST、LINなどでもよい。また、ツール５０と電子制御装置１００を物理的に接続するのでなく、例えば、無線ＬＡＮやBluetooth（登録商標）などの無線通信で接続してもよい。さらに、公衆の携帯電話網や無線ＬＡＮ網を経由して不図示のサーバと通信し、サーバからプログラムＮＥＷをダウンロードしてもよい。
【００３１】
Ｉ／Ｏ２６は例えばＵＡＲＴ（Universal Asynchronous Receiver Transmitter）やＳＰＩ（Serial Peripheral Interface）などの入出力インタフェースである。ＣＰＵ２１は、Ｉ／Ｏ２６を介してＩＣ１２にプログラムの書き換えが可能か否かを問い合わせたり、マイコン１１のリセットを要求する。また、ＣＰＵ２１はＩ／Ｏ２６を介してＩＣ１２からプログラムの書き換えの許可を取得する。
【００３２】
続いてＩＣ１２について説明する。ＩＣ１２は、マイコン１１をリセットしたり、プログラムの書き換えが可能か否かを判定して書き換えを許可する。ＩＣ１２は、マイコン１１から判定要求を取得すると、マイコン１１がプログラムＯＬＤの書き換えが可能な状態か否かを判定する。判定内容はマイコン１１によって様々であるが、例えば、バッテリ電圧が閾値以上か否か、マイコン１１に異常がないかなどである。
【００３３】
ＩＣ１２は、判定結果をＩ／Ｏ２６に出力すると共に、例えば、マイコン１１のモードＳＷ２７と接続された信号線をＨｉｇｈにする。これにより、モードＳＷ２７がＯＮとなる。モードＳＷ２７はマイコン１１のリセットでＯＦＦとなる。マイコン１１はＩＣ１２からの書き換えの許可を取得し、かつ、モードＳＷ２７がＯＮの間、プログラム書き込みモードになる。なお、書き換えの許可又はモードＳＷ２７がＯＮのいずれかに応じてプログラム書き込みモードになってもよい。また、ＩＣ１２に問い合わせることなくプログラム書き換えモードになってもよい。ＩＣ１２のこのような動作は一例にすぎず、このような動作に限定されるものではない。
【００３４】
また、ＩＣ１２はマイコン１１をリセットする機能を有する。ＩＣ１２が有するリセット回路は、電源回路１３が生成した定電圧Ｖccと接続された抵抗１２１、コンデンサ１２２、及び、スイッチ１２３を有している。スイッチ１２３がＯNの場合、マイコン１１のＲＥＳ#２８はLowになりマイコン１１はリセットされる。スイッチ１２３がＯＦＦの場合、定電圧Ｖccがマイコン１１のＲＥＳ#２８に入力されＲＥＳ#２８はHighとなりリセットは解除される。
【００３５】
なお、ＩＣ１２がマイコン１１をリセットするのでなく、マイコン１１が自身を直接、リセットしてもよい。この場合、マイコン１１にリセット回路のスイッチ１２３が接続されており、マイコン１１がスイッチ１２３をＯＮすることでリセットできる。
【００３６】
続いて、ツール５０について説明する。ツール５０は情報処理装置を実体とし、不図示のＣＰＵ、ＲＯＭ、ＲＡＭ、Ｉ／Ｏなどを有している。サービスマンがツール５０から延設されているケーブルをＤＬＣコネクタ１５に接続することで、ＣＡＮコントローラ３３がＣＡＮバス１４に接続される。ツール５０のメモリにはプログラムＮＥＷ３１（以下、符号は省略する）が記憶されている。プログラムＮＥＷは、電子制御装置１００のプログラムＯＬＤと置き換えられるプログラムである。
【００３７】
サービスマンは書き換え作業の前に、ＵＳＢメモリなどの記憶媒体で配布されるプログラムＮＥＷをツール５０のＲＯＭやＲＡＭにコピーしておく。または、ツール５０をＰＣ（Personal Computer）に接続し、ＰＣがインターネットを介してサーバからダウンロードしたプログラムＮＥＷをツール５０にコピーしてもよい。または、ＰＣをツール本体としてもよい。
【００３８】
〔プログラムＯＬＤ、書き換えプログラムの機能について〕
図３は、プログラムＯＬＤと書き換えプログラムの機能ブロック図の一例を示す。プログラムＯＬＤは正常動作モードで実行され、書き換えプログラムは書き換えモードで実行される。プログラムＯＬＤのうち正誤判定部４２はマイコン１１のリセット直後に正常か否かを判定するために実行されるので、正常動作モードに含めなくてもよい。
【００３９】
正誤判定部４２は、マイコン１１のリセットが解除された直後に実行される。正誤判定部４２は、フラッシュメモリ２３に記憶されている少なくともプログラムＯＬＤが正常か否かを判定するプログラムである。プログラムＯＬＤに加え書き換えプログラムが正常か否かを判定してもよいし、フラッシュメモリ２３の全体が正常か否かを判定してもよい。
【００４０】
リセットが解除されマイコン１１が起動すると、正誤判定部４２はプログラムＯＬＤがノイズなどでビット反転していないか否かを判定する。判定方法はどのようなものでもよいが、例えばチェックサム、ＣＲＣ、ＭＤ５などがある。
【００４１】
車両制御部４１は、電子制御装置１００に接続された車載装置を制御するもので、センサなどを用いたセンシング、他の電子制御装置からのデータの受信、演算、及び、アクチュエータの制御などを行う。ツール５０から「書き換え要求」が送信されるまでの間、又は、異常が検出されるような特殊な状況以外では、車両制御部４１は周期的に処理を繰り返す。なお、プログラムＮＥＷがサーバからダウンロードされ任意の電子制御装置が一時的に保持したり、ツール５０から送信されたプログラムＮＥＷを任意の電子制御装置が一時的に保持したりする場合がある。この場合、任意の電子制御装置は電子制御装置１００のフラッシュメモリ２３のプログラムＯＬＤの書き換えを制御するため、「書き換え要求」を出力する場合がある。したがって、「書き換え要求」はツール５０以外の車両内部からも送信される場合がある。
【００４２】
ツール５０から「書き換え要求」を受信すると、車両制御部４１は書き換え判定部４３に対し、プログラムＯＬＤの書き換え条件を満たすか否かの判定を要求する。この判定は、ＩＣ１２による判定と同様な内容に加え、ＣＰＵ２１の負荷が高いか否か、異常の有無などが含まれる。プログラムＯＬＤの書き換え条件を満たすと判定した場合、書き換え判定部４３はＩＣ１２に判定要求を出力する。これにより、ＩＣ１２はモードＳＷ２７をＯＮにし、判定結果をマイコン１１に返す。
【００４３】
書き換え判定部４３はモードＳＷ２７の状態と判定結果を参照して、書き換えプログラム起動部４４を呼び出す。書き換えプログラム起動部４４は、ＣＰＵ２１のＰＣ（プログラムカウンタ）に書き換えプログラムの先頭アドレスをセットする。こうすることで、ＣＰＵ２１が書き換えプログラムを実行でき、以下の書き換えプログラムの機能が実現される。
【００４４】
書き換えプログラムは、ＩＧ判定部４５、書き換え部４８、リセット部４６、及び、正誤判定部４７を有している。ＩＧ判定部４５は従来技術に対する本実施形態の特徴部の１つである。ＩＧ判定部４５は、書き換え部４８が書き換えを開始する前にＩＧ-ＯＮかＯＦＦかを判定する。ＩＧ-ＯＮかＯＦＦかは例えば電子制御装置１００のＩＧＳＷ端子の電圧を監視すればよい。
【００４５】
リセット部４６は以下の場合にＩＣ１２にマイコン１１のリセットを要求する。
・プログラム書き換えモードに移行した後、ＩＧ-ＯＮ状態でない場合
・書き換えが正常に終了した場合
このうち、ＩＧ-ＯＮ状態でない場合のリセットが従来技術に対する本実施形態の特徴の１つである。
【００４６】
書き換え部４８は、ＣＡＮバス経由でツール５０から受信したプログラムＮＥＷを作業メモリであるＲＡＭ２５に格納していき、また、ＲＡＭ２５からフラッシュメモリ２３にプログラムＮＥＷを書き込んでいく。フラッシュメモリ２３の書き換えは、プログラムＯＬＤだけでもよいし、フラッシュメモリ２３の全体を書き換えてもよい。全体を書き換える場合、マイコン１１は予め書き換えプログラムをＲＡＭ２５などに転送しておく。
【００４７】
書き換え部４８は、ツール５０から書き換え終了コマンドを受信するまで、プログラムＮＥＷの受信とＲＡＭ２５への書き込み、ＲＡＭ２５からフラッシュメモリ２３への転送を繰り返す。なお、フラッシュメモリ２３のアドレスマップは既知なので、プログラムＯＬＤのアドレス範囲にプログラムＮＥＷを書き込めばよい。
【００４８】
書き換えプログラムの正誤判定部４７の機能はプログラムＯＬＤのものと同じである。書き換えプログラムが正誤判定部４７を有することで、書き換え完了後に正誤判定を行い、正常でない場合は再度、書き換えを行うことができる。
【００４９】
〔動作手順〕
まず、図４、５を用いて従来の動作手順と生じる課題について詳細に説明する。
Ａ．従来の動作手順
図４は従来の電子制御装置のプログラムの書き換え手順を示すフローチャート図の一例である。リセットが解除されると、正誤判定部４２がフラッシュメモリ２３の正誤判定を行う（Ｓ１０）。リセットが解除されるのは、プログラムＯＬＤの書き換え後のリセットの他、バッテリ１６が接続された場合、異常が検出された場合などがある。
【００５０】
フラッシュメモリ２３が正常な場合（Ｓ１０のＹｅｓ）、マイコン１１は正常動作モードとなり車両制御部４１が、当該電子制御装置１００が行うべき車両制御を行う（Ｓ２０）。
【００５１】
車両制御部４１は、所定のサイクル時間毎に同じ処理を繰り返すが、その間にサービスマンがツール５０を接続して書き換え要求を送信する場合がある。この場合、車両制御部４１は書き換え判定部４３に書き換え可能か否かを判定させる（Ｓ３０）。
【００５２】
書き換え要求が送信されない場合や、書き換え判定部４３が書き換え可能でないと判定した場合（Ｓ３０のＮｏ）、車両制御部４１が車両制御を継続する。
【００５３】
書き換え判定部４３が自らの判定とＩＣ１２からの判定結果に基づき、書き換え可能であると判定した場合（Ｓ３０のＹｅｓ）、書き換えプログラム起動部４４が書き換えプログラムを起動する。これによりマイコン１１はプログラム書き換えモードとなる。なお、正常に移行すれば、プログラム書き換えモードに移行した場合、モードＳＷがＯＮであるが、プログラム書き換えモードか否かはモードＳＷのＯＮ／ＯＦＦを問わないものとする。
【００５４】
従来の書き換えモードのマイコン１１はＩＧ-ＯＮ状態か否かを判定することなく、書き換え部４８がツール５０と通信してフラッシュメモリ２３の書き換えを開始する（Ｓ４０）。
【００５５】
書き換えに当たり、ツール５０から書き換え開始コマンドが送信され、これによりメモリの書き換えが始まる。
【００５６】
書き換え部４８は、ツール５０から送信されたプログラムＮＥＷの一部をフラッシュメモリ２３に書き込みながら、書き換えが完了するまで次のプログラムＮＥＷの一部をツール５０に要求することを繰り返す（Ｓ５０）。書き換えの完了は、ツール５０からデータの終わり（EOF）を受信すること、書き換えの開始時に受け取ったデータ量の書き込みが終了すること、などにより判定される。
【００５７】
書き換えが完了すると、書き換え部４８はツール５０から書き換え終了コマンドを受信する（Ｓ６０）。これにより、ツール５０との通信を終了できる。
【００５８】
また、書き換えが完了すると、正誤判定部４７がフラッシュメモリ２３の正誤判定を行う（Ｓ７０）。なお、ステップＳ７０の正誤判定は必須ではない。
【００５９】
フラッシュメモリ２３が正常な場合（Ｓ７０のＹｅｓ）、リセット部４６はＩＣ１２にマイコン１１のリセットを要求するので、マイコン１１がリセットされる（Ｓ８０）。リセットが解除されるとステップＳ１０以降の処理が繰り返されるので、正誤判定で正常であると判定され、マイコン１１は正常動作モードとなる。
【００６０】
フラッシュメモリ２３が正常でない場合（Ｓ７０のＮｏ）、書き換えが失敗したため、書き換え部４８は、再度、書き換えを実行される。
【００６１】
このように、マイコン１１はプログラムＯＬＤを書き換えると共に書き換えに失敗したことを検知して、再度書き換えることができる。
【００６２】
Ｂ．従来の動作手順の課題
図５（ａ）は従来の電子制御装置のプログラムの書き換え手順により生じる不都合を説明するフローチャート図の一例である。
【００６３】
図４と同様に、書き換え判定部４３が書き換えモードに移行可能であると判定したとする（Ｓ３０）。この時、書き換え部４８がツール５０と通信してメモリの書き換えを始めるまでに遅延時間が生じる。サービスマンはツール５０を操作しているが、何らかの理由で書き換え開始コマンドを送信する前にＩＧ-ＯＦＦに操作する場合がある。ＩＧ-ＯＦＦに操作されても＋Ｂ端子に電力が供給されるのでマイコン１１は動作可能だが、プログラム書き換えモードに移行しているため、正常動作モードのように省エネモードに入ることができない。
【００６４】
また、書き換えが始まる前なのでツール５０も車両の異常（ＩＧ-ＯＦＦ）を検出できない。プログラム書き換えモードにおいても、ツール５０が書き換え開始コマンドを送信した後にＩＧ−ＯＦＦ状態になった場合は、ツール５０は書き換え条件が不成立であると判断して（ＩＧ−ＯＦＦ状態であると判定して）リセットすることができたり、書き換えを完了できる場合がある。これらの場合は、ツール５０はエラーを表示するので、ユーザは書き換えに失敗したことを把握できる。
【００６５】
したがって、書き換えが始まる前にＩＧ−ＯＦＦ状態になると、書き換えモードで停滞してバッテリ上がりにつながるおそれがあった。すなわち、仮にツール５０が異常を検出しエラー表示しても、サービスマンは意図して書き換えを中断しているため、エラー表示に気づかない、又は、気に留めない可能性がある。この結果、バッテリ上がりにつながるおそれがある。
【００６６】
図５（ｂ）は従来の電子制御装置１００のプログラムの書き換え手順により生じる別の不都合を説明するフローチャート図の一例である。図５（ｂ）ではすでにＩＧ−ＯＦＦ状態であるとする。
【００６７】
正常動作モードのマイコン１１は車両制御を実行しているが、ＩＧ-ＯＦＦになっても省エネモードに移行するまでの間にプログラムＯＬＤを実行している場合がある。また、省エネモードにおいても定期的に起動して異常の有無を監視するなどのためにプログラムＯＬＤを実行する場合がある。このため、プログラムカウンタに異常が生じることで、ＣＰＵ２１が書き換えプログラムを実行するおそれがある。
【００６８】
この場合、書き換えプログラムはツール５０と通信してプログラムＯＬＤを書き換えようとする。しかし、ツール５０が接続されていないため、マイコン１１は書き換えモードで停滞してしまい、省エネモードに入ることができない。このため、バッテリ上がりにつながるおそれがあった。
【００６９】
なお、ＩＧ-ＯＮ状態の間に誤って書き換えモードに移行した場合、運転者などが車内にいるため、挙動の違和感やメータの警報点灯などで気づくことができる。また、ＩＧ-ＯＮ状態では、ウォッチドッグタイマなどの機構でリセットすることができる場合がある。
【００７０】
Ｃ．本実施形態の動作手順
図６は本実施形態の電子制御装置１００のプログラムの書き換え手順を説明するフローチャート図の一例である。図５と比較すると、ステップＳ３５が追加されている。
【００７１】
すなわち、ステップＳ３０で書き換えモードに移行すると判定された場合、ＩＧ判定部４５がＩＧ-ＯＮ状態か否かを判定する（Ｓ３５）。これにより、書き換えが始まる前にＩＧ-ＯＦＦに操作されたことを検出できる。なお、ＩＧ-ＯＮ状態か否かの判定は、書き換えモードに移行する前に行ってもよい。
【００７２】
ＩＧ-ＯＦＦ状態だった場合（Ｓ３５のＮｏ）、リセット部４６はマイコン１１をリセットする（Ｓ８０）。したがって、サービスマンが書き換えモードに移行した後にＩＧ−ＯＦＦに操作した場合、マイコン１１は正常動作モードに復帰できる。
【００７３】
また、ステップＳ１０の正誤判定で正常でないと判定された場合（Ｓ１０のＮｏ）、ＩＧ-ＯＮ状態か否かが判定されるので、正常動作モードを経ない場合も、ＩＧ-ＯＦＦ状態ではマイコンをリセットできる。
【００７４】
図７は、図６の手順の変形例である。図６との違いは、ステップＳ５０でＮｏと判定された場合、ステップＳ３５のＩＧ-ＯＮ状態か否かが判定される点である。このように、図７の手順では、周期的に、定期的に、又は、負荷が低下した時などの任意のタイミングで、ＩＧ−ＯＮ状態か否かを判定する。タイマーを利用して定期的に判定することも有効である。書き換えが完了するまでに複数回、ＩＧ-ＯＦＦ状態か否かを判定することで、書き換え中、ＩＧ-ＯＦＦ状態か否かを検出できる。
【００７５】
したがって、図５（ｂ）のように、ツール５０が接続されていない状態でプログラムカウンタの異常により書き換えモードに移行した場合も、ＩＧ-ＯＦＦ状態であることを検出して、マイコン１１をリセットして正常動作モードに復帰できる。
【００７６】
以上、説明したように、本実施例のマイコン１１は、書き換えモード中にＩＧ-ＯＦＦに操作されてもバッテリ上がりすることを防止できる。
【実施例２】
【００７７】
本実施例ではＩＧ判定後に正誤判定を行うマイコン１１について説明する。正誤判定により処理を振り分けることで、サービスマンが書き換えを行いたいのに誤ってＩＧ−ＯＦＦに操作してしまった場合、再度、書き換えを行うことが可能になる。
【００７８】
なお、本実施例において、実施例１にて説明した構成要素は同様の機能を果たすので、主に本実施例の主要な構成要素についてのみ説明する場合がある。
【００７９】
図８は、本実施例の電子制御装置１００のプログラムの書き換え手順を説明するフローチャート図の一例である。図６と比較すると、ステップＳ３７が追加されている。
【００８０】
ステップＳ３０で書き換えモードに移行すると判定された場合、ＩＧ判定部４５がＩＧ-ＯＮ状態か否かを判定する（Ｓ３５）。上記のように、サービスマンが書き換えモードに移行後にＩＧ-ＯＦＦに操作したことを検出できる。
【００８１】
ＩＧ-ＯＦＦ状態だった場合（Ｓ３５のＮｏ）、正誤判定部４７は正誤判定を行う（Ｓ３７）。例えば、サービスマンが書き換え中に誤ってＩＧ-ＯＦＦに操作する場合があり得る。この場合、フラッシュメモリ２３は途中までしか書き換えられていないので、サービスマンは書き換えを行いたいはずである。また、この場合、正誤判定は正常でないと想定される。
【００８２】
そこで、正誤判定で正常でないと判定された場合（Ｓ３７のＮｏ）、書き換え部４８がメモリの書き換えを行う（Ｓ４０）。以降の処理は図６と同じである。
【００８３】
一方、正誤判定で正常であると判定された場合（Ｓ３７のＹｅｓ）、図６で説明したように、書き換え前にＩＧ-ＯＦＦに操作されており、サービスマンに書き換えの意志があるか否か不明なので、リセット部４６がリセットすることで正常動作モードに復帰できる（Ｓ８０）。
【００８４】
したがって、本実施例のマイコン１１によれば、サービスマンが書き換え中に誤ってＩＧ−ＯＦＦに操作する場合には再書き込みを、それ以外の場合は正常動作モードに復帰できる。
【００８５】
また、追加されたステップＳ３７の正誤判定は、元々、書き換えプログラムが有しているロジック又はリセット解除直後に実行されるロジックなので、書き換えプログラムの変更コストを抑制することができる。
【００８６】
なお、本実施例においても、図７と同様に、書き換え完了までにＩＧ-ＯＮ状態か否かを適宜判断することができる。
【００８７】
以上、本発明を実施するための形態について実施例を用いて説明したが、本発明はこうした実施例に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。
【００８８】
例えば、上記の実施例ではＩＧ-ＯＮ状態でない場合にリセットしたが、ＡＣＣ-ＯＮ状態でない場合にリセットしてもよい。
【００８９】
また、マイコンのリセットにより正常動作モードに戻ると説明したが、例えばプログラムカウンタにプログラムＯＬＤのアドレスを設定するなどして正常動作モードに戻ってもよい。
【００９０】
また、マイコンによっては、正常動作モードとプログラム書き換えモードという動作モードの区別が明確でない場合があり、２つの動作モードが区別されていなくてもよい。
【００９１】
また、書き換えが開始されたか否かの判断は、書き換え開始コマンドが送信されることであるとしたが、マイコンが書き換えプログラムＮＥＷの最初の一部を受信したこと、又は、書き換えプログラムＮＥＷの最初の一部がフラッシュメモリ２３に書き込まれたことで、書き換えが開始されたと判断してもよい。
【符号の説明】
【００９２】
１１    マイコン
１２    ＩＣ
２１    ＣＰＵ
２３    フラッシュメモリ
５０    ツール
１００  電子制御装置
【図１】
2015098311.tif 000003
【図２】
2015098311.tif 000004
【図３】
2015098311.tif 000005
【図４】
2015098311.tif 000006
【図５】
2015098311.tif 000007
【図６】
2015098311.tif 000008
【図７】
2015098311.tif 000009
【図８】
2015098311.tif 000010