以下、本発明の例示的な実施形態について、図面を参照しながら詳細に説明する。以下の説明では、本発明の制御装置が車両に搭載されるレーダ装置に適用される場合を例に挙げて説明する。ただし、本発明の制御装置は、車両に搭載されるレーダ装置以外のものに適用されてよい。例えば、車両に搭載されるカメラやLIDAR(Laser Imaging Detection and Ranging)等に適用されてよい。また、本発明は、例えばロボット等の車両以外の移動体に適用されてよい。また、本発明は、家電、OA機器等の移動体以外の機器に適用されてもよい。本発明は、外部装置と通信可能に設けられる第1制御装置と、第1制御装置を介して外部装置と通信可能に設けられる第2制御装置とを有するシステムに広く適用可能である。
本明細書において、ソフトウェアはコンピュータプログラムを含む。ソフトウェアは、コンピュータプログラムの他に、設定ファイルやデータを保管するファイル等を含んでよい。また、本明細書では、コンピュータプログラムのことを単にプログラムと表現する。また、本明細書では、ソフトはソフトウェアの略語である。また、本明細書では、アプリはアプリケーションソフトウェアの略語である。
<1.制御装置システム>
図1は、本発明の実施形態に係る制御装置システムが適用された車両Vを示す模式図である。車両Vは、一例として、後方監視用に2つのレーダ装置201、202を有する。詳細には、車両Vは、後方用左レーダ装置201と、後方用右レーダ装置202とを有する。各レーダ装置201、202は、送受信用のアンテナと、送受信用のアンテナを制御する電子制御装置(ECU:Electronic Control Unit)とを有する。以下、電子制御装置のことを単にECUと記載する。各レーダ装置201、202が有するECUは、受信アンテナにより得られた受信信号を処理して、物標までの距離、物標の相対速度、物標の存在する方位等の物標データを取得する。
図2は、本発明の実施形態に係る制御装置システム200の構成を示すブロック図である。制御装置システム200は、第1制御装置1と第2制御装置2とを有する。本実施形態では、第1制御装置1はマスターECUである。第2制御装置2はスレーブECUである。
本実施形態では、後方用左レーダ装置201のECUと、後方用右レーダ装置202のECUとのうち、いずれか一方が第1制御装置(マスターECU)1となり、他方が第2制御装置(スレーブECU)2となる。例えば、後方用左レーダ装置201のECUが第1制御装置1となり、後方用右レーダ装置202のECUが第2制御装置2となる。
制御装置システム200は、電源3と、第1通信ネットワーク4と、第2通信ネットワーク5とを更に有する。
電源3は、第1制御装置1と第2制御装置2とで共通である。電源3がオンされると、第1制御装置1と第2制御装置2とは同時に動作を開始する。すなわち、第2制御装置2は、第1制御装置1と連動する。電源3は、例えば、車両Vがエンジンで駆動される場合にはイグニッションのオンオフに連動してオンオフされてよい。また、電源3は、例えば、車両Vが電気自動車である場合には、車両Vの駆動系の電源のオンオフに連動してオンオフされてよい。
第1通信ネットワーク4は、第1制御装置1と外部装置6とを通信可能に接続する。すなわち、第1制御装置1は、外部装置6と通信可能に設けられる。本実施形態では、第1通信ネットワーク4はCAN(Controller Area Network)である。詳細には、第1制御装置1は、第1通信チャンネルCH1がCAN4に接続され、CAN4を介して外部装置6と通信することができる。なお、本実施形態においては、外部装置6は、第1制御装置1および第2制御装置2が有するソフトウェアの書き換えを可能とする書き換え装置である。
第2通信ネットワーク5は、第1制御装置1と第2制御装置2とを通信可能に接続する。本実施形態では、第2通信ネットワーク5もCANである。詳細には、第1制御装置1の第2通信チャンネルCH2と、第2制御装置2の第2通信チャンネルCH2とが第2通信ネットワーク5により接続されている。なお、第2制御装置2は、第1通信ネットワーク4には直接接続されていない。第2制御装置2は、第1制御装置1を介して外部装置6と通信可能に設けられる。第2制御装置2は、第1制御装置1を介して外部装置6からの指令を受け取る。第2通信ネットワーク5は、CANに替えてLIN(Local Interconnect Network)であってもよい。
第1制御装置1は、第1通信ネットワーク4と第2通信ネットワーク5との接続関係を変更することにより、第2制御装置2になることができる。また、第2制御装置2は、第1通信ネットワーク4と第2通信ネットワーク5との接続関係を変更することにより、第1制御装置1になることができる。すなわち、第1制御装置1と第2制御装置2とは同一の構成を有する制御装置100である。換言すると、制御装置100は、第1制御装置1と第2制御装置2とのいずれにも使用可能である。制御装置システム200は、第1制御装置1として使用される制御装置100と、第2制御装置2として使用される制御装置100とを有する。本構成によれば、制御装置システム200を構成する制御装置の種類が1種類であるために、例えば車両工場等における制御装置の組み付け作業において、制御装置の種類を間違える作業ミスを無くすことができる。
なお、制御装置システム200が有する制御装置100の数は2つより多くてもよい。例えば、制御装置システム200は、第1制御装置(マスターECU)1として使用される1つの制御装置100と、第2制御装置(スレーブECU)2として使用される2つ以上の制御装置100とを有してよい。
<2.制御装置>
以下、第1制御装置1と第2制御装置2とのいずれにも使用可能な制御装置100について詳細に説明する。
(2-1.制御装置の概略構成)
図2に示すように、制御装置100は制御処理部10を有する。制御処理部10は、例えばマイクロコンピュータ(マイコン)である。図3は、本発明の実施形態に係る制御処理部10の構成を示すブロック図である。図3に示すように、制御処理部10は、CPU(Central Processing Unit)11と、通信コントローラ12と、RAM(Random Access Memory)13と、ROM(Read Only Memory)14とを有する。
CPU11は、制御装置100の動作の全体を制御する。CPU11は、例えば、ROM14に記憶される各種のソフトウェアに含まれるプログラムにしたがって演算処理を行い、各種の機能を発揮させる。
通信コントローラ12は、制御処理部10における通信制御を行う。通信コントローラ12は、例えば、通信フレームを送受信する制御をCAN通信プロトコルに従って実行する。
RAM13は、揮発性記憶部である。RAM13は、例えばDRAM(Dynamic Random Access Memory)やSDRAM(Synchronous Dynamic Random Access Memory)等であってよい。RAM13は、CPU11の演算結果等を一時的記憶する。RAM13は、送受信用のデータを一時的に記憶するバッファを有してよい。このようなバッファはRAM13とは別に設けられてもよい。
ROM14は、不揮発性記憶部である。すなわち、制御装置100は不揮発性記憶部を有する。ROM14は、例えばフラッシュメモリである。ROM14には、制御装置100に各種の機能を発揮させるためのプログラムやデータを記憶する。図4は、本発明の実施形態に係るROM14の構成を示す模式図である。図4に示すように、ROM14は、BOOTソフト141と、調整値142と、第1ソフトウェア143と、第2ソフトウェア144とを記憶する。換言すると、不揮発性記憶部は、第1ソフトウェア143と、第2ソフトウェア144とを記憶する。
BOOTソフト141は、制御処理部10のリセット解除直後に実行されるソフトウェアである。調整値142は、レーダ装置の個体間ばらつきを補正するための補正データである。
第1ソフトウェア143は、第1処理の実行を可能とする。CPU11が、第1ソフトウェア143に含まれるプログラムにしたがって演算処理を行うことにより第1処理が行われる。また、第2ソフトウェア144は、第2処理の実行を可能とする。CPU11が、第2ソフトウェア144に含まれるプログラムにしたがって演算処理を行うことにより第2処理が行われる。すなわち、制御処理部10は、第1処理と第2処理とを切り換えて実行可能に設けられる。
本実施形態では、第1ソフトウェア143は、ROM14に記憶される第2ソフトウェア144を書き換えるために利用されるリプログソフトである。第2ソフトウェア144は、ユーザアプリであり、レーダ装置201、202として主だった機能を発揮させるのに利用される。ユーザアプリが起動されることにより、例えばレーダ波の送受信のための信号処理や、物標認識などの処理が可能となる。以下、第1ソフトウェア143のことをリプログソフト143と呼称することがある。また、第2ソフトウェア144のことをユーザアプリ144と呼称することがある。また、CPU11が第1ソフトウェア143に含まれるプログラムにしたがった演算処理を実行することにより行われる第1処理をリプログ処理と呼称することがある。CPU11が第2ソフトウェア144に含まれるプログラムしたがった演算処理を実行することにより行われる第2処理をユーザアプリ処理と呼称することがある。
なお、BOOTソフト141、調整値142、および、リプログソフト143は、書き換え不可領域R1に記憶され、書き換えることができない。一方、ユーザアプリ144は書き換え可能領域R2に記憶され、書き換えることができる。
本実施形態では、ユーザアプリ処理には、判定処理とゲートウェイ処理とが含まれる。すなわち、第2処理には、判定処理とゲートウェイ処理とが含まれる。
判定処理は、自装置が第1制御装置1と第2制御装置2とのいずれであるかを判定する。本実施形態では、第1制御装置1がマスターECUであり、第2制御装置2がスレーブECUであるために、以下、前述の判定処理のことをマスタースレーブ判定処理と呼称する。マスタースレーブ判定処理は、ユーザアプリ144の起動後、早い段階で実行される。なお、マスタースレーブ判定処理は、定期的に実行される構成であってよい。図5は、本発明の実施形態に係る制御装置100により実行されるマスタースレーブ判定処理の流れを示すフローチャートである。
ステップS1では、制御処理部10は、自装置が第1制御装置(マスターECU)1と第2制御装置(スレーブECU)2とのいずれであるかが未確定であるか否かを確認する。マスターとスレーブとのいずれであるかが確定している場合には(ステップS1でNo)、制御処理部10はマスタースレーブ判定処理を終了する。一方、マスターとスレーブとのいずれであるかが未確定である場合には(ステップS1でYes)、次のステップS2に処理を進める。
ステップS2では、制御処理部10は、第1通信チャンネルCH1からCAN通信の受信履歴があるか否かを確認する。CAN通信の受信履歴がある場合には(ステップS2でYes)、次のステップS3に処理を進める。一方、CAN通信の受信履歴がない場合には(ステップS2でNo)、制御処理部10は後述のステップS5に処理を進める。
ステップS3では、制御処理部10は、CAN通信の受信履歴があるために、マスタースレーブ判定情報をマスターに設定する。すなわち、制御処理部10は、自装置が第1制御装置1であると判定する。制御処理部10は、マスタースレーブ判定情報をマスターに設定後、次のステップS4に処理を進める。
ステップS4では、制御処理部10は、CAN5にスレーブ設定データを送信する。これにより、マスタースレーブ判定処理を終了する。なお、スレーブ設定データが送られた制御装置100は、後述のように、自装置が第2制御装置2であると判定することになる。
ステップS5では、制御処理部10は、CAN通信の受信履歴がないために、第2通信チャンネルCH2からスレーブ設定データの受信履歴があるか否かを確認する。スレーブ設定データの受信履歴がある場合には(ステップS5でYes)、制御処理部10は次のステップS6に処理を進める。一方、スレーブ設定データの受信履歴がない場合には(ステップS5でNo)、制御処理部10は、マスタースレーブ判定処理を終了する。
ステップS6では、制御処理部10は、スレーブ設定データの受信履歴があるために、マスタースレーブ判定情報をスレーブに設定する。すなわち、制御処理部10は、自装置が第2制御装置2であると判定する。マスタースレーブ判定情報をスレーブに設定後、制御処理部10は、次のステップS7に処理を進める。
ステップS7では、制御処理部10は、CAN5にスレーブ設定完了データを送信する。これにより、第2制御装置2と接続される第1制御装置1は、CAN5を介して接続される制御装置100が第2制御装置2であることを認識していることを認識する。制御処理部10は、スレーブ設定完了データの送信後、マスタースレーブ判定処理を終了する。
ゲートウェイ処理は、自装置が第1制御装置1である場合に、外部装置6からの指令を第2制御装置2に転送する処理である。なお、本実施形態では、ユーザアプリ144の起動時においてのみゲートウェイ機能が利用できる。すなわち、リプログソフト143の起動時においては、ゲートウェイ機能は利用できない。
本実施形態では、制御装置100がマスタースレーブ判定処理を行えるために、第1制御装置1と第2制御装置2とを予め区別して準備する必要をなくすことができる。また、本実施形態では、ユーザアプリ144の使用時においてのみゲートウェイ機能を利用することができる構成であるために、リプログソフト143のデータサイズが大きくなることを抑制することができる。この結果、ユーザアプリ144に割り当てることができるデータサイズを増やすことができる。
(2-2.書き換え処理の概要)
図6は、本発明の実施形態に係る制御装置100で実行される書き換え処理の流れを示すシーケンス図である。なお、書き換え処理は、ソフトウェアの書き換え装置として構成される外部装置6を利用して、ROM14に既に記憶されるユーザアプリ144を更新する処理を指す。
外部装置6が、制御処理部10に対して書き換え処理の開始を通知する(ステップS11)。具体的には、外部装置6が、制御処理部10に対して、プログラミングセッションへの移行を要求する。これに対応して、制御処理部10は、プログラミングセッションに移行し、プログラミングセッションへの移行を通知する(ステップS12)。
次に、外部装置6は、制御処理部10に対してセキュリティ解除を要求する(ステップS13)。リプログソフト143には、第3者による不正なリプログラミングを防止するために、セキュリティ機能が組み込まれている。外部装置6は、当該セキュリティ機能を解除すべく所定の要求を行う。これに対応して、制御処理部10は、外部装置6からの要求が正当な要求であることを条件としてセキュリティ解除を行う(ステップS14)。制御処理部10は、フラッシュ制御ソフト遷移要求をオンに設定する。
次に、外部装置6は、フラッシュ制御ソフトを転送する(ステップS15)。制御処理部10は、ROM14に記憶されているプログラムが動作している間は、ROM14の記憶内容を書き換えることができない。このために、外部装置6からROM14の記憶内容を書き換えるためのフラッシュ制御ソフトが転送される。制御処理部10は、転送されたフラッシュ制御ソフトをRAM13に展開する。制御処理部10は、フラッシュ制御ソフトの利用の準備ができたことを外部装置6に通知する(ステップS16)。ここまでは、CPU11がリプログソフト143に含まれるプログラムに従った演算処理を実行することによって行われる。以下は、CPU11が、フラッシュ制御ソフトに含まれるプログラムに従った演算処理を実行することによって行われる。
外部装置6が、現在のユーザアプリ144を更新するソフトウェアとして準備された新第2ソフトウェアを制御処理部10に転送する(ステップS17)。制御処理部10は、現在のユーザアプリ144を転送された新第2ソフトウェアに書き換える。なお、本実施形態では、1回の通信で新第2ソフトウェアの全てのデータが転送されるのではなく、1回の通信で一部のデータが転送され、1回の通信では、当該転送された一部のデータの書き換えのみが行われる。複数回の通信を繰り返すことにより、ソフトウェアの更新処理が完了する。制御処理部10は、新第2ソフトウェアへの更新(書き換え)を完了すると、そのことを外部装置6に通知する(ステップS18)。
次に、外部装置6は、ROM14の書き換えが正しく行えたかを確認するためにベリファイ実施を要求する(ステップS19)。制御処理部10は、ベリファイの実施により書き換えが正常に行われたことを確認すると、そのことを外部装置6に通知する(ステップS20)。
次に、外部装置6は、制御処理部10に対してリセット処理(再起動)を要求する(ステップS21)。これに対応して、制御処理部10はリセット処理を行い、更新されたユーザアプリ144による処理を開始し、リセット処理を行ったことを外部装置6に通知する(ステップS22)。これにより、ユーザアプリ144の書き換え処理が終了する。
(2-3.リプログ処理)
リプログ処理には、メインタスクと、CAN受信タスクと、定期タスクとが含まれる。CAN受信タスクおよび定期タスクは、所定の条件のもと、メインタスクより優先して行われる。定期タスクは、CAN受信タスクより優先して行われる。
[2-3-1.メインタスク]
図7は、本発明の実施形態に係るECU100で実行されるリプログ処理のメインタスクの流れを示すフローチャートである。なお、図7には、CPU11がBOOTソフト141に含まれるプログラムに従って演算処理を行うことによって実行される処理も示されている。
CPU11は、リセット後に、BOOTソフト141に含まれるプログラムに従って演算処理を行うことによりマイコン初期化処理を行う(ステップS31)。リセットには、電源3をオンした際に行われるパワーオンリセットと、ソフトウェア制御の下で実行されるソフトウェアリセット(再起動)とが含まれる。CPU11は、マイコン初期化処理を完了すると、リプログソフト143に含まれるプログラムに従った演算処理を行うことによりリプログ処理を開始し、次のステップ32に処理を進める。なお、リプログ処理の実行中においては、CPU11は、RAM13等に記憶される各種情報を参照しながら処理を進める。
ステップS32では、CPU11は、リセットがパワーオンリセットであったか否かを確認する。リセットがパワーオンリセットである場合(ステップS32でYes)、CPU11は、次のステップS33に処理を進める。一方、リセットがパワーオンリセットでない場合(ステップS32でNo)、CPU11は、後述のステップS42に処理を進める。
ステップS33では、CPU11は、リプログ状態を「強制書き換え要求待ち」に設定する。リプログ状態の設定を完了すると、CPU11は、次のステップS34に処理を進める。
ステップS34では、CPU11は、セッションを「デフォルトセッション」に設定する。セッションの設定を完了すると、CPU11は、次のステップS35に処理を進める。
ステップS35では、CPU11は、リプログ初期化処理を行う。CPU11は、例えば、CAN通信、タイマ等の初期化処理を行う。リプログ初期化処理が完了すると、CPU11は、次のステップS36に処理を進める。
ステップS36では、CPU11は、割り込み許可を行う。リセット後の初期化処理により、割り込みは禁止状態とされる。当該割り込み許可により、メインタスク中に、詳細は後述するCAN受信タスクおよび定期タスクを優先して実行することが可能になる。割り込み許可を行うと、CPU11は、次のステップS37に処理を進める。
ステップS37では、CPU11は、所定の条件を満たしたか否かを確認する処理を繰り返す無限ループを開始する。無限ループは、所定の条件を満たした場合に終了する。
詳細には、CPU11は、無限ループに入ると、フラッシュ制御ソフト遷移要求があったか否かを確認する(ステップS371)。CPU11は、フラッシュ制御ソフト遷移要求フラグの設定を確認して、フラッシュ制御ソフト遷移要求があったか否かを確認する。なお、リプログ状態がセキュリティ解除待ちに設定された状態で外部装置6からセキュリティ解除要求(メッセージ)を正常受信すると、フラッシュ制御ソフト遷移要求は「あり」に設定される。この後、通信タイムアウトが発生した場合には、フラッシュ制御ソフト遷移要求は「なし」に設定される。フラッシュ制御ソフト遷移要求はデフォルトでは「なし」に設定される。
CPU11は、フラッシュ制御ソフト遷移要求がなかった場合(ステップS371でNo)、ユーザアプリ遷移要求があったか否かを確認する(ステップS372)。CPU11は、ユーザアプリ遷移要求フラグの設定を確認して、ユーザアプリ遷移要求があったか否かを確認する。なお、ユーザアプリ遷移要求は、デフォルトでは「なし」に設定され、強制書き換え要求が所定時間なく、他の所定要件を満たした場合に「あり」に設定される。この点の詳細については後述する。ユーザアプリ遷移要求がなかった場合(ステップS372でNo)、CPU11は、ステップS371に処理を戻す。フラッシュ制御ソフト遷移要求があった場合(ステップS371でYes)、CPU11は、無限ループを抜け、次のステップS38に処理を進める。また、ユーザアプリ遷移要求があった場合(ステップS372でYes)、CPU11は、無限ループを抜け、後述のステップS40に処理を進める。
ステップS38では、CPU11は、フラッシュ制御ソフトに遷移するために、データ引き継ぎ処理を行う。CPU11は、フラッシュ制御ソフトと共有したいデータを例えばRAM13等に移動する処理を行う。データ引き継ぎ処理が完了すると、CPU11は、次のステップS39に処理を進める。
ステップS39では、CPU11は、フラッシュ制御ソフトにジャンプ(遷移)する。これにより、フラッシュ制御ソフトが起動し、外部装置6と連携した第2ソフトウェアの書き換え処理が開始される。
ステップS40では、CPU11は、ユーザアプリ144にジャンプ(遷移)する準備としてリプログ終了処理を行う。CPU11は、例えばRAM13のクリアや、ウォッチドッグタイマのタイミング制御など、ソフトウェアリセット実施前に必要な処理を行う。リプログ終了処理が完了すると、CPU11は、次のステップS41に処理を進める。
ステップS41では、CPU11は、ソフトウェアリセットを行う。当該リセットにより、CPU11は、ステップS31の処理に戻り、ステップS32でNoを経てステップS42に処理を進める。
ステップS42では、CPU11は、書き換え要求があるか否かを確認する。CPU11は、書き換え要求フラグの設定を確認して、書き換え要求があったか否かを確認する。書き換え要求フラグは、デフォルトにおいて「なし」である。書き換え要求があった場合(ステップS42でYes)、CPU11は、次のステップS43に処理を進める。一方、書き換え要求がなかった場合(ステップS42でNo)、CPU11は、後述のステップS46に処理を進める。なお、ステップS41のソフトウェアリセットが行われてステップS42に至った場合には、書き換え要求は「なし」であり、CPU11は、ステップS46に処理を進める。
ステップS43では、CPU11は、リプログ状態を「セキュリティ解除待ち」に設定する。リプログ状態の設定を完了すると、CPU11は、次のステップS44に処理を進める。
ステップS44では、CPU11は、セッションを「プログラミングセッション」に設定する。セッションの設定を完了すると、CPU11は、次のステップS45に処理を進める。
ステップS45では、CPU11は、書き換え要求を「なし」に設定する。書き換え要求の設定を完了すると、CPU11は、上述のステップS35に処理を進める。
ステップS46では、CPU11は、ユーザアプリ144にジャンプ(遷移)する。これにより、ユーザアプリ144が起動する。ユーザアプリ144の起動により、CPU11は、レーダ装置201、202として機能を発揮するのに必要な処理を適宜行う。また、ユーザアプリ144の起動により、制御装置100が第1制御装置(マスターECU)1である場合には、ゲートウェイ処理が可能になる。
[2-3-2.CAN受信タスク]
CAN受信タスクは、通信コントローラ12にCANフレームを受信した時に、割り込みにより実行される。図8は、本発明の実施形態に係る制御装置100で実行されるCAN受信タスクの流れを示すフローチャートである。
ステップS51では、CPU11は、通信コントローラ12から受信したCANフレームが、自装置が受信すべきID(Identifier)のCANフレームであるか否かを確認する。自装置が受信すべきIDのCANフレームである場合(ステップS51でYes)、CPU11は、次のステップS52に処理を進める。自装置が受信すべきIDのCANフレームでない場合(ステップS51でNo)、CPU11は、CAN受信タスクを終了する。
ステップS52では、CPU11は、CANフレームのID、DLC(Data Length Code)、および、データ内容を定期タスクとの共有バッファに格納する。この後、CPU11は、CAN受信タスクを終了する。
[2-3-3.定期タスク]
定期タスクは、所定周期で行われる。本実施形態では、定期タスクは、1ミリ秒周期で割り込みにより実行される。定期タスクが実行される周期は適宜変更されてよい。図9は、本発明の実施形態に係る制御装置100で実行される定期タスクの大まかな流れを示すフローチャートである。なお、定期タスクにおいては、図9に示す処理の他に、カウンタ変数によって1ms以上の時間のカウントし、ウォッチドッグパルスの反転などの処理も行う。
ステップS61では、CPU11は、メッセージ結合処理を行う。1つのCANフレームは、8バイトのデータまでしか送信できない。8バイトを超えるサイズのデータ(メッセージ)を送信する場合には、複数のCANフレームに分けてデータが送信される。複数のCANフレームに分けて送信されることにより分割されたメッセージは、メッセージ結合処理により結合される。
図10は、本発明の実施形態に係る制御装置100によって実行されるメッセージ結合処理の流れを示すフローチャートである。ステップS611では、CPU11は、CANデータがCAN受信タスクとの共有バッファに格納されているか否かを確認する。CANデータが共有バッファに格納されている場合(ステップS611でYes)、CPU11は、次のステップS612に処理を進める。CANデータが共有バッファに格納されていない場合(ステップS611でNo)、CPU11は、後述のステップS617に処理を進める。
ステップS612では、CPU11は、バッファに格納されているCANデータを所定の順番に従って1つ取り出す。CANデータの取り出しが完了すると、CPU11は、次のステップS613に処理を進める。
ステップS613では、CPU11は、取り出したCANデータの内容が適切か否かを確認する。CANデータの内容が適切である場合(ステップS613でYes)、CPU11は、次のステップS614に処理を進める。CANデータの内容が不適切な場合(ステップS613でNo)、CPU11は、ステップS611に処理を戻す。
ステップS614では、CPU11は、CANデータをメッセージに追加する。先の処置にてメッセージに追加されたCANデータが存在する場合には、メッセージの結合が行われる。CANデータをメッセージに追加すると、CPU11は、次のステップS615に処理を進める。
ステップS615では、CPU11は、現在のCANデータが結合対象となる一連のメッセージの最後のメッセージに該当するか否かを確認する。最後のメッセージである場合には(ステップS615でYes)、CPU11は、次のステップS616に処理を進める。一方、最後のメッセージでない場合には(ステップS615でNo)、CPU11はステップS611に処理を戻す。
ステップS616では、CPU11は、メッセージ結合完了フラグをオンに設定する。なお、メッセージ結合完了フラグは、デフォルトにおいてオフである。メッセージ結合完了フラグの設定が完了すると、CPU11は、次のステップS617に処理を進める。
ステップS617では、CPU11は、外部装置6への応答が必要か否かを確認する。例えば、外部装置6に対してデータ送信の時間間隔を指定する場合等において、外部装置6への応答が必要になる。外部装置6への応答が必要である場合(ステップS617でYes)、CPU11は、次のステップS618に処理を進める。一方、外部装置6への応答が必要でない場合(ステップS617でNo)、メッセージ結合処理が完了する。
ステップS618では、CPU11は、外部装置6への応答のための送信データの作成および送信バッファへの追加処理を行う。これにより、メッセージ結合処理が完了する。CPU11は、メッセージ結合処理が完了すると、次のステップS62に処理を進める。
図9に戻って、ステップS62では、CPU11は、送信制御処理を行う。CPU11は、送信バッファにデータが存在する場合に送信処理を行う。なお、送信バッファにデータがない場合には、送信処理は行われない。送信制御処理が完了すると、CPU11は、次のステップS63に処理を進める。
ステップS63では、CPU11は、リプログサービス処理を行う。リプログサービス処理においては、メッセージ結合処理が完了したメッセージがある場合に、メッセージ内容に応じた処理が実行される。図11は、本発明の実施形態に係る制御装置100によって実行されるリプログサービス処理の流れを示すフローチャートである。
ステップS631では、CPU11は、メッセージ結合完了フラグがオンであるか否かを確認する。メッセージ結合完了フラグがオンである場合(ステップS631でYes)、CPU11は、次のステップS632に処理を進める。一方、メッセージ結合完了フラグがオフである場合(ステップS631でNo)、CPU11は、リプログサービス処理を完了する。
ステップS632では、CPU11は、メッセージ内容に応じた処理を実行する。メッセージ内容に応じた処理を完了すると、CPU11は、次のステップS633に処理を進める。
ステップS633では、CPU11は、メッセージ結合完了フラグをオフに設定する。これにより、CPU11は、リプログサービス処理を完了し、次のステップS64に処理を進める。ここで、ステップS64の処理について説明する前に、ステップS632において、メッセージ内容が強制書き換え要求である場合の処理を詳細に説明する。図12は、リプログサービス処理において、メッセージ内容が強制書き換え要求である場合の処理の流れを示すフローチャートである。
ステップS632aでは、CPU11は、先に強制書き換え要求受信履歴があるか否かを確認する。CPU11は、例えば強制書き換え要求受信履歴フラグを利用して、強制書き換え要求受信履歴があったか否かを確認する。強制書き換え受信履歴がある場合(ステップS632aでYes)、CPU11は、メッセージ内容に応じた処理を完了し、図11に示すステップS633に処理を進める。一方、強制書き換え要求受信履歴がない場合(ステップS632aでNo)、CPU11は、次のステップS632bに処理を進める。
ステップS632bでは、CPU11は、メッセージがマスター向けのメッセージであるか否かを確認する。なお、マスター向けのメッセージとは、第1制御装置(マスターECU)1向けのメッセージのことであり、本実施形態では、メッセージ内容を確認することによりマスター向けであるか否かが判断可能になっている。メッセージがマスター向けのメッセージである場合(ステップS632bでYes)、次のステップS632cに処理を進める。一方、メッセージがマスター向けのメッセージでない場合(ステップS632bでNo)、後述のステップS632fに処理を進める。
ステップS632cでは、CPU11は、強制書き換え要求受信履歴を「あり」に設定する。強制書き換え要求受信履歴の設定が完了すると、CPU11は、次のステップS632dに処理を進める。
ステップS632dでは、CPU11は、リプログ状態を「セキュリティ解除待ち」に設定する。リプログ状態の設定が完了すると、CPU11は、次のステップS632eに処理を進める。
ステップS632eでは、CPU11は、応答データを作成して送信バッファに追加する。応答データは、強制書き換え要求に対して正しく処理が行われたことを外部装置6に知らせるために作成される。なお、外部装置6は、当該応答データを受け取ることにより、セキュリティ解除要求を行う。応答データの作成および送信バッファへの追加処理が完了すると、CPU11は、メッセージ内容に応じた処理を完了し、図11に示すステップS633に処理を進める。
ステップS632fでは、CPU11は、マスター向けでないと判断されたメッセージがスレーブ向けのメッセージであるか否かを確認する。なお、スレーブ向けのメッセージとは、第2制御装置(スレーブECU)2向けのメッセージのことであり、本実施形態では、メッセージ内容を確認することによりスレーブ向けであるか否かが判断可能になっている。メッセージがスレーブ向けのメッセージである場合(ステップS632fでYes)、次のステップS632gに処理を進める。一方、メッセージがスレーブ向けのメッセージでない場合(ステップS632fでNo)、CPU11は、メッセージ内容に応じた処理を完了し、図11に示すステップS633に処理を進める。
ステップS632gでは、CPU11は、スレーブ強制書き換え要求待ち時間内であるか否かを確認する。本実施形態では、CPU11は、リプログ初期化処理の完了後からカウンタを用いて経過時間を計測する。この計測時間が10ms以内であれば、CPU11は、スレーブ強制書き換え要求待ち時間内であると判断する。計測時間が10msを過ぎている場合には、CPU11は、スレーブ強制書き換え要求待ち時間内でないと判断する。すなわち、本実施形態では、スレーブ強制書き換え要求待ち時間は10msである。ただし、10msは例示にすぎず、当該時間は適宜変更されてよい。スレーブ強制書き換え要求待ち時間内である場合(ステップS632gでYes)、CPU11は、次のステップS632hに処理を進める。一方、スレーブ強制書き換え要求待ち時間内でない場合(ステップS632gでNo)、CPU11は、後述のステップS632kに処理を進める。
ステップS632hでは、CPU11は、ユーザアプリ144が有効、且つ、リプログ中断情報が「中断なし」と判定される否かを確認する。ユーザアプリ144が有効であるか否かは、例えば、ROMSUMチェック等によるソフトウェアの有効性判定が利用されてよい。リプログ中断情報は、ROM14に保存されるデータである。リプログ中断情報の確認により、「中断なし」か「中断あり」か、を判定することができる。
リプログ中断情報は、ユーザアプリ144の書き換えを実施する直前に消去され、ベリファイの完了後に消去される前と異なる値でROM14に保存される。このために、リプログ中断情報がベリファイ完了後に書き込んだ値と一致すれば、前回の書き換え処理は中断することなく正しく終了したと判定できるために、リプログ中断情報は「中断なし」と判定される。一方、リプログ中断情報がベリファイ完了後に書き込んだ値と一致していなければ、リプログ中断情報は「中断あり」と判定される。
ユーザアプリ144が有効、且つ、リプログ中断情報が「中断なし」と判定される場合(ステップS632hでYes)、CPU11は、次のステップS632iに処理を進める。一方、ユーザアプリ144が無効であると判定される場合と、リプログ中断情報が「中断あり」で判定される場合とのうち少なくとも一方が満たされる場合(ステップS632hでNo)、CPU11は、後述のステップS632jに処理を進める。
ステップS632iでは、CPU11は、ユーザアプリ遷移要求を「あり」に設定する。ユーザアプリ遷移要求の設定が完了すると、CPU11は、メッセージ内容に応じた処理を完了し、図11に示すステップS633に処理を進める。
ステップS632jでは、CPU11は、リプログ状態を「セキュリティ解除待ち」に設定する。リプログ状態の設定が完了すると、CPU11は、メッセージ内容に応じた処理を完了し、図11に示すステップS633に処理を進める。
ステップS632kでは、CPU11は、強制書き換え要求受信履歴を「あり」に設定する。強制書き換え要求受信履歴の設定が完了すると、CPU11は、次のステップS632lに処理を進める。
ステップS632lでは、CPU11は、リプログ状態を「セキュリティ解除待ち」に設定する。リプログ状態の設定が完了すると、CPU11は、次のステップS632mに処理を進める。
ステップS632mでは、CPU11は、応答データを作成して送信バッファに追加する。応答データは、強制書き換え要求に対して正しく処理が行われたことを外部装置6に知らせるために作成される。なお、外部装置6は、当該応答データを受け取ることにより、セキュリティ解除要求を行う。応答データの作成および送信バッファへの追加処理が完了すると、CPU11は、メッセージ内容に応じた処理を完了し、図11に示すステップS633に処理を進める。
図9に戻って、ステップS64では、CPU11は、通信タイムアウト判定処理を行う。通信タイムアウト処理では、カウンタを用いて通信が行われていない時間がカウントされる。例えば、フラッシュ制御ソフト遷移要求フラグが「あり」に設定された後、規定通信時間内に外部装置6から通信がなければタイムアウトと判定される。タイムアウトにより、フラッシュ制御ソフト遷移要求フラグは「なし」になり、リプログ状態は「セキュリティ解除待ち」になる。また、例えば、セッション状態がプログラミングセッションになった後に、規定通信時間内に外部装置6から通信がなければタイムアウトと判定される。タイムアウトにより、セッション状態はデフォルトセッションとされ、リプログ状態は「セキュリティ解除待ち」にされる。
ステップS65では、CPU11は、リプログ状態管理処理を行う。図13は、本発明の実施形態に係る制御装置100によって実行されるリプログ状態管理処理の流れを示すフローチャートである。
ステップS651では、CPU11は、リプログ状態が「強制書き換え要求待ち」に設定されているか否かを確認する。リプログ状態が「強制書き換え要求待ち」に設定されていない場合(ステップS651でNo)、CPU11は、次のステップS652に処理を進める。一方、リプログ状態が「強制書き換え要求待ち」に設定されている場合(ステップS651でYes)、CPU11は、後述のステップS654に処理を進める。
ステップS652では、CPU11は、リプログ状態が異常であるか否かを確認する。リプログ状態が異常とは、各種処理に中で何らかの異常が発生し、リプログ状態が想定される状態にない状態である。リプログ状態が異常であると判断される場合(ステップS652でYes)、CPU11は、次のステップS653に処理を進める。一方、リプログリプログ状態が異常でないと判断される場合(ステップS651でNo)、CPU11は、リプログ状態管理処理を終了する。
ステップS653では、CPU11は、ソフトウェアリセットを行う。異常状態を解消するための処理である。ソフトウェアリセットにより、CPU11は、図7に示すステップS31に処理を戻す。
ステップS654では、CPU11は、強制書き換え要求待ちカウンタをインクリメントする。CPU11は、リプログ初期化処理の完了後から強制書き換え要求待ちカウンタを用いて経過時間を計測する。CPU11は、インクリメントが完了すると、次のステップS655に処理を進める。
ステップS655では、CPU11は、強制書き換え要求待ち時間を超えたか否かを確認する。強制書き換え要求待ち時間は、強制書き換え要求待ちカウンタで計測される時間である。本実施形態では、強制書き換え要求待ち時間は50msである。強制書き換え要求待ちカウンタが50msを超えた場合、強制書き換え要求待ち時間を超えたと判断される。強制書き換え要求待ちカウンタが50ms以下である場合、強制書き換え要求待ち時間内であると判断される。なお、強制書き換え要求待ち時間は50msに限らず、適宜変更されてよい。強制書き換え要求待ち時間を超えた場合(ステップS655でYes)、CPU11は、次のステップS656に処理を進める。一方、強制書き換え要求待ち時間内である場合(ステップS655でNo)、CPU11は、リプログ状態管理処理を終了する。
ステップS656では、CPU11は、ユーザアプリ144が有効、且つ、リプログ中断情報が「中断なし」と判定されるか否かを確認する。ユーザアプリ144が有効、且つ、リプログ中断情報が「中断なし」と判定される場合(ステップS656でYes)、CPU11は、次のステップS657に処理を進める。一方、ユーザアプリ144が無効であると判定される場合と、リプログ中断情報が「中断あり」と判定される場合とのうち少なくとも一方が満たされる場合(ステップS656でNo)、CPU11は、後述のステップS658に処理を進める。
ステップS657では、CPU11は、ユーザアプリ遷移要求を「あり」に設定する。ユーザアプリ遷移要求の設定が完了すると、CPU11は、リプログ状態管理処理を終了する。
ステップS658では、CPU11は、リプログ状態を「セキュリティ解除待ち」に設定する。リプログ状態の設定が完了すると、CPU11は、リプログ状態管理処理を終了する。
本実施形態では、制御装置100は、第1制御装置(マスターECU)1と第2制御装置(スレーブECU)2とのいずれで使用される場合においても、電源3がオンされた場合には、まず、リプログソフト143が起動され、リプログ初期化処理を経て無限ループ(図7のステップS37)が実行される。強制書き換え要求がなければ、図13の流れに従い、ユーザアプリ144に不具合がなければ、ステップS657によりユーザアプリ遷移要求が「あり」となり、無限ループ(ステップS37)を抜け、ステップS41によりソフトリセットされる。この後、リプログソフト143が再起動されるが、パワーオンリセットでなく、更に書き換え要求もないために、ステップS46を経てユーザアプリ144が起動される。
(2-4.書き換えエントリー条件)
制御処理部10は、所定条件を満たす場合に、制御装置100を待機状態に設定する。待機状態とは、外部装置6との通信を利用した所定処理の開始を待つ待機処理を実行する状態である。待機状態において、制御処理部10は、第1処理から第2処理への切り換えを行わない。これにより、所定処理の開始を待つことができる。本実施形態では、所定条件は、書き換えエントリー条件である。所定処理は、第2ソフトウェア144を書き換える書き換え処理である。具体的には、書き換えエントリー条件を満たすと、リプログ処理からユーザアプリ処理への遷移を行わず外部装置6との通信を利用した書き換え処理の開始を待つ待機状態が得られる。本実施形態によれば、第1制御装置1と第2制御装置2とのいずれにも適用できる制御装置100におけるソフトウェアの書き換え処理を適切に行うことができる。
詳細には、書き換えエントリー条件を満たす方法には、強制エントリーを利用する方法と、通常エントリーを利用する方法と、リカバリーエントリーを利用する方法との3つがある。以下、これらについて説明する。
[2-4-1.強制エントリー]
強制エントリーは、通常エントリーおよびリカバリーエントリーを利用して書き換えエントリー条件を満たすことが出来ない場合でも、書き換えエントリー条件を満たす手法として用意されている。本実施形態では、強制エントリーは、ユーザアプリ144の実行は可能であるが、バグ等により、ユーザアプリ144の実行中に通常エントリーを利用することができない場合に利用される。なお、ユーザアプリ144の実行が可能である場合には、リカバリーエントリーを利用することはできない。
強制エントリーを利用する方法では、書き換えエントリー条件は、所定タイミグから第1時間が経過するまでの間に、自装置に対して発せられた所定処理の実行要求を受けた場合に満たされる。すなわち、制御処理部10は、所定タイミグから第1時間が経過するまでの間に、自装置に対して発せられた所定処理の実行要求を受けた場合、所定処理の開始を待つ待機処理を実行する。本実施形態では、強制エントリーにより書き換えエントリー条件を満たす場合には、第1の場合と第2の場合とが含まれる。
なお、制御処理部10は、第1処理の実行中、かつ、所定タイミングから第1時間が経過した場合、第1処理から第2処理への切り換えを行う。
第1の場合は、第1処理の実行中に、所定タイミングから第1時間が経過するまでの間に、第1制御装置1向けの所定処理の要求を受けた場合である。本実施形態では、所定タイミングは、第1ソフトウェア143の起動後、所定の初期化処理を完了したタイミングである。詳細には、所定の初期化処理は、リグログ初期化処理(図7のステップS35)である。リプログ初期化処理から時間計測を行うことにより、時間計測を適切に行うことができる。また、本実施形態では、第1時間は強制書き換え要求待ち時間であり、50msである。
第1の場合は、具体的には、制御装置100において、パワーオンリセットによりリプログソフト143が起動され、リプログ初期化処理(図7のステップS35)から強制書き換え要求待ち時間(50ms)が経過するまでの間に、第1制御装置1向け(マスター向け)の強制書き換え要求を受けた場合である。マスター向けの強制書き換え要求により、図12に示すステップS632dが実行されてリプログ状態が「セキュリティ解除待ち」になる。すなわち、ユーザアプリ144への遷移を行わず外部装置6との通信を利用した書き換え処理の開始を待つ待機状態になる。待機状態においては、第1処理において待機処理が実行される。待機処理とは、図7に示すメインタスクにおけるステップS37の無限ループ内の処理である。待機処理では、外部装置6からのセキュリティ解除要求を待つ。セキュリティ解除要求を正常受信すると、フラッシュ制御ソフト遷移要求が「あり」となり、待機処理から抜けてフラッシュ制御ソフトを用いた書き換え処理が行われることになる。また、待機処理においては、並行して実行される定期タスクにおいて、ユーザアプリ遷移要求が「あり」に設定されることがない。そのため、第1処理から第2処理への切り換えが行われない。
なお、制御装置100が第1制御装置1である場合には、上記の流れでユーザアプリ144の書き換え処理が行われる。ただし、制御装置100が第2制御装置2である場合には、上記とは異なる流れで、強制エントリーを利用して書き換えエントリー条件が満たされる。これは、第2制御装置2は、第1制御装置1のゲートウェイ処理を利用して外部装置6から指示を受ける構成であり、第2制御装置2には、マスター向けのメッセージは届かないためである。
第2の場合は、第1処理の実行中に、所定タイミングから第1時間より短い第2時間が経過し、且つ、第1時間が経過するまでの間に、第2制御装置2向けの所定処理の要求を受けた場合である。本実施形態では、第2時間はスレーブ強制書き換え要求待ち時間であり、10msである。
第2の場合は、具体的には、制御装置100において、パワーオンリセットによりリプログソフト143が起動され、リプログ初期化処理(図7のステップS35)からスレーブ強制書き換え要求待ち時間(10ms)が経過し、且つ、強制書き換え要求待ち時間(50ms)が経過するまでの間に、第2制御装置2向け(スレーブ向け)の強制書き換え要求を受けた場合である。
なお、制御処理部10は、所定タイミングから第1時間より短い第2時間が経過するまでの間に、外部装置6との通信を利用した所定処理の実行要求を受け、当該実行要求が第2制御装置2として動作する制御装置100に対して発せられたものである場合、第1時間の経過を待たずに、第1処理から第2処理への切り換えを行う。
図14は、スレーブ向けの強制書き換え要求があった場合の処理の流れを示す模式図である。制御装置100が第1制御装置1である場合、ゲートウェイ処理は不要であり、通常、スレーブ向けの強制書き換え要求は、リプログ初期化処理からスレーブ強制書き換え要求待ち時間(10ms)が経過する前に受け取られる。すなわち、上述の「第2の場合」とはならない。第1制御装置1は、図12のステップS632gでYesを経て、通常はユーザアプリ遷移要求を「あり」に設定する(ステップS632i)。この結果、図7におけるステップS37の無限ループから抜けて、ユーザアプリ144が起動する。これにより、ゲートウェイ処理が可能になる。本実施形態では、リプログ初期化処理から強制書き換え要求待ち時間(50ms)が経過するまでの間にゲートウェイ処理が可能になるように、スレーブ強制書き換え要求待ち時間(10ms)が設定されている。
一方、制御装置100が第2制御装置2である場合、ゲートウェイ処理の利用が必要となるために、制御装置100は、CAN通信(外部通信)を利用して、スレーブ向けの強制書き換え要求をリプログ初期化処理からスレーブ強制書き換え要求待ち時間(10ms)が経過する前に受け取ることはできない。ただし、制御装置100は、強制書き換え要求待ち時間(50ms)が経過する前であれば、スレーブ向けの強制書き換え要求を受け取ることができる。
このために、制御装置100が第2制御装置2である場合には、例えば、制御装置100のパワーオンリセットの時点からスレーブ向けの強制書き換え要求が実行されることにより、図12のステップS632gでNoを経て、リプログ状態を「セキュリティ解除待ち」にすることができる(ステップS632l)。すなわち、上述の「第2の場合」を得て、ユーザアプリ144への遷移を行わず外部装置6との通信を利用した書き換え処理の開始を待つ待機状態とすることができる。
本実施形態では、制御装置100が第1制御装置1と第2制御装置2とのうちのいずれとして利用される場合でも、第2処理を開始させることなく所定処理を行うことができる。詳細には、制御装置100がマスターECUとスレーブECUとのうちのいずれとして利用される場合でも、ユーザアプリ144を起動させない強制エントリーを利用した書き換え処理を行うことができる。
これについて、図15に示す比較例を参考に更に説明する。図15に示す比較例では、制御装置100が第1制御装置1と第2制御装置2とのいずれとして利用される場合でも、強制エントリー条件が同じとされる。この場合でも、制御装置100において、パワーオンリセットによりリプログソフト143が起動され、リプログ初期化処理から強制書き換え要求待ち時間(例えば10ms)が経過するまでの間に、マスター向けの強制書き換え要求を受けることが可能である。すなわち、制御装置100が第1制御装置1として利用された場合、上述の「第1の場合」を経て強制エントリーすることができる。
しかしながら、制御装置100が第2制御装置2として利用される場合、第1制御装置1のゲートウェイ処理が前提となる。すなわち、第2制御装置2は、第1制御装置1がゲートウェイ処理可能な状態にならないと、CAN通信(外部通信)を利用できない。スレーブ向けの強制書き換え要求を行った場合、第1制御装置1は、図13と同様の処理により、強制書き換え要求待ち時間の経過を経てユーザアプリ144を起動する。この間、第2制御装置2でも、同様に強制書き換え要求待ち時間が経過するために、第1制御装置1がゲートウェイ処理可能となるタイミングでは、第2制御装置2においてもユーザアプリ144が起動した状態になる。すなわち、制御装置100が第2制御装置2として使用される場合には、強制エントリーをすることができない。この点、本実施形態では、マスター向けとスレーブ向けとで強制書き換え要求に対する待ち時間の設定の仕方を変えて処理が行われるために、制御装置100が第1制御装置1と第2制御装置2とのいずれに利用される場合でも強制エントリーを行うことができる。
[2-4-2.通常エントリー]
書き換えエントリー条件には、第2処理(ユーザアプリ処理)が動作した後に満たされるものがある。本実施形態では、このように書き換えエントリー条件を満たす手法を通常エントリーとしている。
通常エントリーを利用する方法では、書き換えエントリー条件は、第2処理の実行中に、自装置100に対して発せられた所定処理の実行要求を受けた場合に満たされる。すなわち、制御処理部10は、第2処理の実行中に、自装置100に対して発せられた所定処理の実行要求を受けた場合、待機処理を実行する。本実施形態では、通常エントリーにより書き換えエントリー条件を満たす場合は、第2処理の実行中に、外部装置6から第1制御装置1向け又は第2制御装置2向けの所定処理の実行要求を受けた第3の場合である。第3の場合は、具体的には、ユーザアプリ144の起動によるユーザアプリ処理の実行中に、外部装置6からマスター向け又はスレーブ向けの書き換え要求を受けた場合である。
図16は、通常エントリーを説明するためのフローチャートである。CPU11は、ユーザアプリ144の起動時において書き換え要求を受けると、ステップS71の処理を行う。ステップS71では、CPU11は、書き換え要求を「あり」に設定する。なお、書き換え要求フラグの状態は、ソフトウェアリセットで消去されない記憶領域に記憶される。書き換え要求を「あり」に設定すると、CPU11は次のステップS72に処理を進める。
ステップS72では、CPU11は、ユーザアプリ終了処理を行う。ユーザアプリ終了処理は、ソフトウェアリセットの前に必要となる処理である。ユーザアプリ終了処理を行うと、CPU11は次のステップS73に処理を進める。
ステップS73では、CPU11はソフトウェアリセットを行う。これにより、図7に示すように、CPU11は、リプログソフト143を起動させる。パワーオンリセットでないリセットであり、書き換え要求が「あり」であるために、ステップS42でYesを経て、リプログ状態が「セキュリティ解除待ち」になる。すなわち、ユーザアプリ144への遷移を行わず外部装置6との通信を利用した書き換え処理の開始を待つ待機状態が得られる。
本実施形態によれば、制御装置100が第1制御装置1と第2制御装置2とのうちのいずれとして利用される場合でも、第2処理を起動させた後に所定処理を開始させることができる。詳細には、制御装置100がマスターECUとスレーブECUとのうちのいずれとして利用される場合でも、ユーザアプリ144を起動させた後に通常エントリーを利用した書き換え処理を行うことができる。
[2-4-3.リカバリーエントリー]
書き換えエントリー条件には、ユーザアプリ144が不完全な状態でROM14に記憶されていると判断されることにより満たされるものがある。リカバリーエントリーは、不完全なソフトウェアを用いて制御装置100を起動させることを避けることを目的として設けられている。
リカバリーエントリーを利用する方法では、書き換えエントリー条件は、第1処理の実行中に、所定タイミングから第1時間が経過するまでの間に所定処理の実行要求を受けず、且つ、第2ソフトウェア144に不具合があると判断された場合に満たされる。すなわち、制御処理部10は、第1処理の実行中に、所定タイミングから第1時間が経過するまでの間に所定処理の実行要求を受けず、且つ、第2ソフトウェア144に不具合があると判断された場合、待機処理を実行する。本実施形態では、リカバリーエントリーにより書き換えエントリー条件を満たす場合は、第1処理の実行中に、所定タイミングから第1時間が経過するまでの間に所定処理の実行要求を受けず、且つ、第2ソフトウェア144に不具合があると判断された第4の場合である。
なお、本実施形態では、制御処理部10は、先に行われた第2ソフトウェア144の書き換え処理が中断したと判断される場合に、第2ソフトウェア144に不具合があると判断する。書き換え処理の中断があったか否かは、上述のリプログ中断情報により判断することができる。また、制御処理部10は、第2ソフトウェア144の有効性判定により第2ソフトウェア144が有効でないと判断された場合に第2ソフトウェア144に不具合があると判断する。第2ソフトウェア144の有効性判定には、例えばROMSUMチェックを利用することができる。本実施形態によれば、第2ソフトウェアに不具合があるか否かを適切に判断することができる。
第4の場合は、具体的には、制御装置100において、パワーオンリセットによりリプログソフト143が起動され、リプログ初期化処理(図7のステップS35)から強制書き換え要求待ち時間(50ms)が経過するまでの間に書き換え要求を受けず、且つ、ユーザアプリ144に不具合があると判断された場合である。リプログ初期化処理から強制書き換え要求待ち時間(50ms)が経過するまでの間に書き換え要求を受けない場合、図13のステップS655でYesとなり、ステップS656でユーザアプリ144に不具合があるか否かが判断される。ユーザアプリ144に不具合があるためにステップS656でNoとなり、ステップS658が実行されてリプログ状態が「セキュリティ解除待ち」になる。すなわち、ユーザアプリ144への遷移を行わず外部装置6との通信を利用した書き換え処理の開始を待つ待機状態が得られる。
本実施形態によれば、制御装置100が第1制御装置1と第2制御装置2とのうちのいずれとして利用される場合でも、ソフトウェアの不具合により第2処理を起動させることができない場合でも、強制エントリーとは別の手法により所定処理を行うことができる。詳細には、制御装置100がマスターECUとスレーブECUとのうちのいずれとして利用される場合でも、ユーザアプリ144に不具合が認められる場合にユーザアプリ144の書き換え処理を行うように導くことができる。すなわち、不具合があるソフトウェアの実行を事前に防ぐことができる。
<4.留意事項>
本明細書における実施形態や変形例の構成は、本発明の例示にすぎない。実施形態や変形例の構成は、本発明の技術的思想を超えない範囲で適宜変更されてもよい。また、複数の実施形態及び変形例は、可能な範囲で組み合わせて実施されてよい。