JP6165292B1 - プログラム書き換えシステムおよびプログラム書き換え方法 - Google Patents

プログラム書き換えシステムおよびプログラム書き換え方法 Download PDF

Info

Publication number
JP6165292B1
JP6165292B1 JP2016081650A JP2016081650A JP6165292B1 JP 6165292 B1 JP6165292 B1 JP 6165292B1 JP 2016081650 A JP2016081650 A JP 2016081650A JP 2016081650 A JP2016081650 A JP 2016081650A JP 6165292 B1 JP6165292 B1 JP 6165292B1
Authority
JP
Japan
Prior art keywords
program
type node
rewriting
divided
control device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016081650A
Other languages
English (en)
Other versions
JP2017191529A (ja
Inventor
松井 俊憲
俊憲 松井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2016081650A priority Critical patent/JP6165292B1/ja
Application granted granted Critical
Publication of JP6165292B1 publication Critical patent/JP6165292B1/ja
Publication of JP2017191529A publication Critical patent/JP2017191529A/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

【課題】制御装置のプログラムを書き換え、この書き換えたプログラムに問題があった場合に、簡単に書き換え前のプロラムに戻すことができるプログラム書き換えシステムを得る。【解決手段】モータ制御装置101のプログラムを書き換える場合、モータ制御装置101の分割プログラム送信部116により、プログラムを分割して、各分割プログラムを他の制御装置に送信して保存させ、そののちに、テスタ103から送信される書き換えプログラムにより、プログラムを書き換え、この新しいプログラムによる動作の異常を状態検出部115により検出した場合には、他の制御装置から分割プログラムを送信させて、元のプログラムに書き戻すようにした。【選択図】図1

Description

この発明は、ネットワークに接続された制御装置のプログラムを書き換えるプログラム書き換えシステムおよびプログラム書き換え方法に関するものである。
従来、自動車のネットワークに接続された制御装置のプログラム書き換えシステムおよび方法として、例えば特許文献1に記載されたものが知られている。
この特許文献1におけるプログラム書き換えシステムでは、通信用バスラインを介して、プログラムのデータを書き換え対象であるエンジン制御装置と、メモリ書換機が通信バス接続用コネクタによって信号的に接続されている。
エンジン制御装置は、センサからの信号を処理する入力処理回路と、このセンサ信号等からエンジン最適制御量を演算するCPU(Central Processing Unit)と、このCPUでの演算結果を制御信号として受けてエンジンに取付けられた燃料噴射装置や点火装置などのアクチュエータを駆動する出力回路と、外部機器であるメモリ書換機とのデータ通信用の通信回路とを備えている。
CPUには制御プログラムに従い動作するマイクロ・プロセッサ・ユニット(以下、MPU)と、このMPUを動作させるに必要なプログラムおよびデータを格納するROM(Read Only Memory)と、MPUの演算結果を格納するRAM(Random Access Memory)と、入力処理回路および通信回路からの信号を受けるとともに、出力回路に制御信号を出力するI/O(Input/Output)とが備えられている。
また、通信バス接続用コネクタにより接続されたモード判定用制御信号ラインは、リセット直後におけるCPUの実行モードをメモリ書換機側から設定するものである。
この特許文献1のプログラム書き換え方法は、内蔵プログラム起動中に外部から送信される書き換え命令があった場合に、自動車の駆動がなされていないことを様々な条件から判断し、駆動されていないことが判明すると、内蔵プログラムまたは内蔵データの一部または全部を、外部から送信される新たなプログラムまたはデータに書き換えるものである。
特許第3109413号公報(第5〜7頁、第1図)
しかしながら、この特許文献1に記載されたプログラムの書き換えシステムでは、プログラムを書き換えて、メモリ書換機をコネクタから切り離した後に、書き換えたプログラムのバグや、書き換えたプログラムにセキュリティ的な脆弱性が判明したときは、再度メモリ書換機を接続し直し、同じ書き換え手順を実施してプログラムを書き換えるまで、問題の有ったプログラムを使い続けることとなり、自動車の安全性が確保できないという問題があった。
この発明は、上記のような課題を解決するためになされたものであり、制御装置のプログラムを書き換え、この書き換えたプログラムに問題があった場合に、簡単に書き換え前のプロラムに戻すことができるプログラム書き換えシステムおよびプログラム書き換え方法を得ることを目的とする。
この発明に係わるプログラム書き換えシステムにおいては、第1種ノードおよび複数の第2種ノードが通信可能にネットワークに接続され、ネットワークに随時接続される第3種ノードから送信される書き換えプログラムによって第1種ノードのプログラムを書き換えるプログラム書き換えシステムであって、第1種ノードは、プログラムを保存する第1の記録領域と、この第1の記録領域に保存されているプログラムを複数に分割し、各分割プログラムを各別に第2種ノードに送信する分割プログラム送信部と、第3種ノードから受信した書き換えプログラムによって、第1の記録領域のプログラムを書き換えるプログラム書き換え部とを有し、第2種ノードは、第1種ノードから受信した分割プログラムを保存する第2の記録領域と、この第2の記録領域に保存された分割プログラムを第1種ノードに送信する送信部と、第1種ノードの状態を検出する第1種ノード状態検出部とを有し、第3種ノードは、書き換えプログラムを保存する第3の記録領域と、第1種ノードへの書き換えを指示する書き換え指示部と、書き換えプログラムを第1種ノードに送信する書き換えプログラム送信部とを有し、第1種ノードのプログラム書き換え部は、第3種ノードから書き換え指示を受信した場合に、分割プログラムを第2種ノードに送信したのち、第3種ノードから受信した書き換えプログラムによってプログラムを書き換え、第2種ノードは、プログラム書き換え部によってプログラムが書き換えられたのちに、第1種ノード状態検出部によって第1種ノードの異常が検出された場合に、第1種ノードおよび他の第2種ノードに通知するとともに、自ノードが保存する分割プログラムを第1種ノードに送信し、通知を受けた他の第2種ノードは、自ノードが保存する分割プログラムを第1種ノードに送信し、第1種ノードは、各第2種ノードより受信した分割プログラムにより、第1の記録領域のプログラムの該当部分を書き換えるものである。
この発明によれば、第1種ノードおよび複数の第2種ノードが通信可能にネットワークに接続され、ネットワークに随時接続される第3種ノードから送信される書き換えプログラムによって第1種ノードのプログラムを書き換えるプログラム書き換えシステムであって、第1種ノードは、プログラムを保存する第1の記録領域と、この第1の記録領域に保存されているプログラムを複数に分割し、各分割プログラムを各別に第2種ノードに送信する分割プログラム送信部と、第3種ノードから受信した書き換えプログラムによって、第1の記録領域のプログラムを書き換えるプログラム書き換え部とを有し、第2種ノードは、第1種ノードから受信した分割プログラムを保存する第2の記録領域と、この第2の記録領域に保存された分割プログラムを第1種ノードに送信する送信部と、第1種ノードの状態を検出する第1種ノード状態検出部とを有し、第3種ノードは、書き換えプログラムを保存する第3の記録領域と、第1種ノードへの書き換えを指示する書き換え指示部と、書き換えプログラムを第1種ノードに送信する書き換えプログラム送信部とを有し、第1種ノードのプログラム書き換え部は、第3種ノードから書き換え指示を受信した場合に、分割プログラムを第2種ノードに送信したのち、第3種ノードから受信した書き換えプログラムによってプログラムを書き換え、第2種ノードは、プログラム書き換え部によってプログラムが書き換えられたのちに、第1種ノード状態検出部によって第1種ノードの異常が検出された場合に、第1種ノードおよび他の第2種ノードに通知するとともに、自ノードが保存する分割プログラムを第1種ノードに送信し、通知を受けた他の第2種ノードは、自ノードが保存する分割プログラムを第1種ノードに送信し、第1種ノードは、各第2種ノードより受信した分割プログラムにより、第1の記録領域のプログラムの該当部分を書き換えるので、書き換えたのちのプログラムに問題があった場合に、第2種ノードから簡単に書き換え前のプロラムに戻すことができる。
この発明の実施の形態1によるプログラム書き換えシステムが適用される車両制御システムの構成を示すブロック図である。 この発明の実施の形態1によるプログラム書き換えシステムにおける第1〜第3種ノードの記録装置の領域構成を示すメモリマップ図である。 この発明の実施の形態1によるプログラム書き換えシステムの第1種ノードにおけるプログラム書き換え時の処理の流れを示すフローチャートである。 この発明の実施の形態1によるプログラム書き換えシステムの第1種ノードにおけるプログラム書き戻し時の処理の流れを示すフローチャートである。 この発明の実施の形態1によるプログラム書き換えシステムの第2種ノードにおける処理の流れを示すフローチャートである。 この発明の実施の形態1によるプログラム書き換えシステムの第3種ノードにおける処理の流れを示すフローチャートである。 この発明の実施の形態2によるプログラム書き換えシステムが適用される車両制御システムの構成を示すブロック図である。 この発明の実施の形態2によるプログラム書き換えシステムにおける第1〜第3種ノードの記録装置の領域構成を示すメモリマップ図である。 この発明の実施の形態2によるプログラム書き換えシステムの第1種ノードにおけるプログラム書き換え時の処理の流れを示すフローチャートである。 この発明の実施の形態2によるプログラム書き換えシステムの第1種ノードにおけるプログラム書き戻し時の処理の流れを示すフローチャートである。 この発明の実施の形態2によるプログラム書き換えシステムの第2種ノードにおける処理の流れを示すフローチャートである。 この発明の実施の形態2によるプログラム書き換えシステムの第3種ノードにおける処理の流れを示すフローチャートである。
実施の形態1.
以下に、実施の形態1によるプログラム書き換えシステムについて、図に基づいて説明する。
図1は、この発明の実施の形態1によるプログラム書き換えシステムが適用される車両制御システムの構成を示すブロック図である。
図1において、実施の形態1のプログラム書き換えシステムは、第1種ノードであるモータ制御装置101と、第2種ノードであるEPS(Electric Power Steering=電動パワーステアリング)制御装置102aおよびバッテリ制御装置102bと、第3種ノードであるテスタ103とを有する。
これらのノードは、車両のCAN(Controller Area Network)ネットワーク106を介して、互いに通信可能に接続されている。
なお、第2種ノードとして、EPS制御装置102aとバッテリ制御装置102bとを示したが、これに限らずに、さらに別のノードを含み得ることは言うまでもない。
第1種ノードとしてのモータ制御装置101は、駆動用モータ110を制御し、同様にEPS制御装置102aは、EPS120aを、バッテリ制御装置102bは、バッテリ120bを、それぞれ制御するように接続されている。
なお、図1に示すテスタ103以外の制御装置は、常時、CANネットワーク106に接続されているが、テスタ103は、CANネットワーク106に常時接続されているものではなく、プログラムの書き換えや各ノードの故障診断時等、必要に応じて、随時、接続される。
各制御装置およびテスタの構成については後述する。
なお、各制御装置およびテスタは、図1に示す以外の構成物も備えているが、実施の形態1に直接関係しないものについては図示を省略している。
図2は、この発明の実施の形態1によるプログラム書き換えシステムにおける第1種ノード〜第3種ノードの記録装置の領域構成を示すメモリマップ図である。
図2(a)は、モータ制御装置101の記録装置113の領域構成を示し、図2(b)はEPS制御装置102aの記録装置123aの領域構成を示し、図2(c)はバッテリ制御装置102bの記録装置123bの領域構成を示し、図2(d)はテスタ103の記録装置133の領域構成を示している。
図2(a)において、記録装置113は、モータ制御プログラムを全体的もしくは部分的に書き換えるためのプログラム書き換え用プログラムを保存するプログラム書き換え用プログラム記録領域221と、モータ制御プログラムを保存する第1の記録領域であるモータ制御プログラム記録領域222と、駆動用モータ110の制御に関わるデータ等を保存するモータ制御プログラム用記録領域(データ用)223を備えている。
図2(b)において、記録装置123aは、EPS120aの制御内容を決定するEPS制御プログラムを保存するEPS制御プログラム記録領域231aと、EPS120aの制御に関わるデータ等を保存するEPS制御プログラム用記録領域(データ用)232aと、後述する分割プログラムを一時的に保存する第2の記録領域である分割モータ制御プログラム記録領域233aとを備えている。
なお、分割モータ制御プログラム記録領域233aには、記録装置123aの空き領域等を割り当てることができる。
図2(c)において、記録装置123bは、バッテリ120bの制御内容を決定するバッテリ制御プログラムを保存するバッテリ制御プログラム記録領域231bと、バッテリ120bの制御に関わるデータ等が記録されるバッテリ制御プログラム用記録領域(データ用)232bと、後述する分割プログラムを一時的に保存する第2の記録領域である分割モータ制御プログラム記録領域233bを備えている。
なお、分割モータ制御プログラム記録領域233bには、記録装置123bの空き領域等を割り当てることができる。
図2(d)において、記録装置133は、書き換えプログラムを保存する第3の記録領域であるモータ制御プログラム記録領域241を備えている。
次に、図1の各制御装置およびテスタの構成と機能について説明する。
まず、モータ制御装置101の構成と機能について説明する。
マイコン111は、駆動用モータ110の制御に関わる制御量や各種処理値を演算する。CANネットワーク用データ送受信部であるデータ送受信部112は、CANネットワーク106を介して、接続された他の制御装置(EPS制御装置102a、バッテリ制御装置102b、テスタ103を含む)とデータを送受信する。
記録装置113は、書き換え対象であるモータ制御プログラムを保存する第1の記録領域であるモータ制御プログラム記録領域222を有している。このモータ制御プログラムは、モータ制御装置101の動作(制御内容)を決定し、演算を行うものである。
モータ制御装置101のプログラム書き換え部114は、記録装置113のモータ制御プログラム記録領域222に保存されたモータ制御プログラムを全体的もしくは部分的に書き換える。その際には、記録装置113のプログラム書き換え用プログラム記録領域221に記録されたプログラム書き換え用プログラムを用いる。
状態検出部115は、第1種ノード自身がモータ制御プログラムを書き換え可能な状態であるか否か、或いはモータ制御プログラムが全て書き換えられているか否か、自身に異常がないか否か等の状態を検出し、他の制御装置に通知する。
状態検出部115により自身に異常があり、かつ、書き換え可能であることが検出された場合は、CANネットワーク106を介して、EPS制御装置102aおよびバッテリ制御装置102bに通知し、この通知を受けたEPS制御装置102aおよびバッテリ制御装置102bは、自身が保存する分割モータ制御プログラム(以下、分割プログラムと略す。)を、CANネットワーク106を介してモータ制御装置101に送信する。
そして、モータ制御装置101は、EPS制御装置102aまたはバッテリ制御装置102bから分割プログラムを受信する度に、モータ制御プログラム記録領域222に保存されたモータ制御プログラムの該当部分をプログラム書き換え部114により書き換える。
ここで、自身の異常とは、意図しない制御や処理を実施したり、セキュリティ上の脆弱性が検出されたりすることが挙げられるが、これに限るものではない。
モータ制御装置101の分割プログラム送信部116は、テスタ103から書き換え指示を通知された後、モータ制御プログラム記録領域222に保存されている(現状時点の)モータ制御プログラムを分割して、分割プログラムを作成し、EPS制御装置102aと、バッテリ制御装置102bへそれぞれ送信する。
次に、第2種ノードとしてのEPS制御装置102aの構成と機能について説明する。
マイコン121aは、EPS120aの制御量や各種処理値を演算する。データ送受信部122aは、CANネットワーク106を介して、接続された他の制御装置(モータ制御装置101、バッテリ制御装置102b、テスタ103を含む)とデータの送受信を行う。記録装置123aは、モータ制御プログラムの一部分である分割モータ制御プログラムを保存する第2の記録領域である分割モータ制御プログラム記録領域233aを有している。
分割プログラム送信部124a(送信部)は、モータ制御装置101への分割プログラムの送信可否を判断する。分割プログラム送信部124aにより、モータ制御装置101への分割プログラムの送信が可能であると判断された場合には、自ノードが第2の記録領域に保存する分割プログラムを、CANネットワーク106を介してモータ制御装置101に送信する。
次に、第2種ノードとしてのバッテリ制御装置102bの構成と機能について簡単に説明する。
マイコン121bは、バッテリ120bの制御量や各種処理値を演算する。データ送受信部122bは、CANネットワーク106を介して、接続された他の制御装置(モータ制御装置101、EPS制御装置102a、テスタ103を含む)とデータを送受信する。
記録装置123bは、モータ制御プログラムを分割した一部分である分割プログラムを保存する第2の記録領域である分割モータ制御プログラム記録領域233bを有している。
分割プログラム送信部124b(送信部)は、モータ制御装置101への分割プログラムの送信可否を判断する。分割プログラム送信部124bにより、モータ制御装置101への分割プログラムの送信が可能であると判断された場合には、自ノードが第2の記録領域に保存する分割プログラムを、CANネットワーク106を介してモータ制御装置101に送信する。
次に、第3種ノードとしてのテスタ103の構成と機能について簡単に説明する。
このテスタ103は、モータ制御プログラムの書き換え対象とするプログラム(以下、書き換えプログラムと略す。)を送信するものである。
マイコン131は、テスタ103の動作に関わる各種処理を実施する。データ送受信部132は、CANネットワーク106を介して、接続された他の制御装置(モータ制御装置101、EPS制御装置102a、バッテリ制御装置102bを含む)とデータを送受信する。
記録装置133は、図2(d)に示すように、書き換えプログラムを保存する第3の記録領域であるモータ制御プログラム記録領域241を備えている。
書き換え指示部134は、モータ制御装置101に対して、プログラムの書き換えを指示する。書き換えプログラム送信部135は、モータ制御装置101から書き換え可能の通知を受けたのちに、モータ制御プログラム記録領域241に記録している書き換えプログラムをモータ制御装置101に送信する。
テスタ103は、常時、CANネットワーク106に接続されるものではなく、制御装置へのプログラムの書き換えや、診断を実施するときに接続するものである。
次に、動作について説明する。
ここでは、実施の形態1によるプログラム書き換えシステムの各ノードにおける処理の流れについて、図3〜図6のフローチャートを用いて説明する。
第1種ノードであるモータ制御装置101では、駆動用モータ110の制御に関わる通常の処理と、モータ制御プログラムの書き換えに関する処理が実施される。プログラム書き換えに関する処理の流れを図3に示し、テスタ103から書き換え実施の通知(書き換え指示)があった場合に実施される。
第1種ノードであるモータ制御装置101の書き換え前のプロラムに書戻す処理の流れは、図4に示している。
まず、図3により、第1種ノードのプログラム書き換え時の処理について説明する。
ステップS301において、状態検出部115は、テスタ103から書き換え指示が通知されているか否かを判断する。通知されている場合(YES)は、ステップS302へ進み、通知されていない場合(NO)は、通知されるまで待機する。
続いて、ステップS302において、状態検出部115は、通常の処理が実施されているか否かを判断し、通常の処理が実施されていなければ、書き換え可能(YES)であるため、ステップS303へ進み、通常の処理が実施されている場合には、終了まで待機する。
ステップS303(第2のステップ)において、分割プログラム送信部116は、記録装置113に保存されたモータ制御プログラム記録領域222にあるモータ制御プログラムを分割して、分割プログラムを作成する。そして、データ送受信部112により、分割プログラムを第2種ノードであるバッテリ制御装置102bとEPS制御装置102aへ送信する。
ここで、実施の形態1では、第2種ノードを2つ備えているため、書き換えプログラムを2つに分割して、分割プログラムAと分割プログラムBを作成し、分割プログラムAをEPS制御装置102aに、分割プログラムBをバッテリ制御装置102bに送信するものとする。
すなわち、書き換えプログラムは、分割プログラムAと分割プログラムの2つに分割される。
ステップS304において、モータ制御プログラムすべてを送信したかどうかを判断する。すべてを送信している場合(YES)は、ステップS305へ進み、送信していない場合は(NO)は、ステップS303に進み、再度、送信処理を実施する。
ステップS305において、状態検出部115は、モータ制御プログラムのすべてを送信したため、テスタ103に対して、書き換え可能を通知する。
ステップS306において、テスタ103からの書き換えプログラムの受信を待つ。書き換えプログラムを受信した場合(YES)は、ステップS307に進む。
ステップS307(第4のステップ)において、プログラム書き換え部114は、プログラム書き換え用プログラムを用いて、受信した書き換えプログラムに該当するモータ制御プログラムの部分を書き換え、ステップS308へ進む。
ステップS308において、状態検出部115は、すべての書き換えプログラムを受信し、該当するモータ制御プログラムの部分を書き換えたか否かを判断する。すべての書き換えプログラムを受信していない場合は(NO)、ステップS306へ進み、受信している場合は(YES)処理を終了する。
次に、図4を用いて、書き換え後の動作として、書き換えプログラムに書き換えたのち、書き換え前のプログラムに書戻す処理について説明する。
このとき、テスタ103は、CANネットワーク106から取り外されているものとする。
ステップS311において、状態検出部115は、自身の処理に異常がないか否かを判断する。異常を検出した場合は(YES)、ステップS312へ進む。
ステップS312において、状態検出部115は、通常の処理が実施されているか否かを判断し、通常の処理が実施されていなければ、書き換え可能(YES)であるため、ステップS313へ進み、通常の処理が実施されている場合には、終了するまで待機する。
ステップS313において、状態検出部115は、第2種ノードであるバッテリ制御装置102bとEPS制御装置102aに対して、記録している分割プログラムの送信指示を通知する。
ステップS314において、バッテリ制御装置102bとEPS制御装置102aからの分割プログラムの受信を待つ。分割プログラムを受信した場合(YES)は、ステップS315に進む。
ステップS315(第7のステップ)において、プログラム書き換え部114は、プログラム書き換え用プログラムを用いて、受信した分割プログラムに該当するモータ制御プログラムの部分を書き換え、ステップS316へ進む。
ステップS316において、すべての分割プログラムを受信し、該当するモータ制御プログラムの部分を書き換えたか否かを判断する。すべての分割プログラムを受信していない場合は(NO)、ステップS314へ進み、受信している場合は(YES)処理を終了する。
次に、第2種ノードであるEPS制御装置102aおよびバッテリ制御装置102bにおけるプログラム書き換えに関する処理の流れについて、図5を用いて説明する。
EPS制御装置102a(またはバッテリ制御装置102b)では、EPS120a(またはバッテリ120b)の制御に関わる通常の処理と、モータ制御装置101のプログラム書き換えに関する処理が実施される。
なお、EPS制御装置102aとバッテリ制御装置102bにおけるプログラム書き換えに関する処理は、同じであるので、ここではEPS制御装置102aを例に挙げて説明する。
EPS制御装置102aは、テスタ103から書き換え実施指示が通知された後、ステップS401において、モータ制御装置101からの分割プログラムの受信を待つ。データ送受信部122aにより分割プログラムを受信した場合(YES)は、ステップS402へ進み、受信した分割プログラムを記録装置123aの分割モータ制御プログラム記録領域233aに保存し、ステップS403へ進む。
ステップS403において、EPS制御装置102aは、モータ制御装置101からの分割プログラムの送信指示の通知を待つ。送信指示が通知された場合(YES)は、ステップS405へ進み、送信指示が通知されていない場合(NO)は、ステップS404へ進む。
ステップS404において、分割プログラムの受信を確認する。データ送受信部122aにより分割プログラムを受信した場合(YES)は、ステップS402へ進む。受信していない場合(NO)は、ステップS403へ進み、分割プログラムの送信指示を待つ。
ステップS405(第6のステップ)において、分割モータ制御プログラム記録領域233aに保存した分割プログラムをモータ制御装置101へ送信し、ステップS406へ進む。
ステップS406において、保存した分割プログラムをすべて送信したかどうかを確認する。すべて送信している場合(YES)は処理を完了し、送信していない場合(NO)は、ステップS405へ進み、送信処理を実施する。
次に、第3種ノードであるテスタ103におけるプログラム書き換えに関する処理の流れについて、図6を用いて説明する。
テスタ103では、関連ノードへのプログラム書き換え実施の通知と、書き換えプログラムの送信処理を実施する。
まず、ステップS411(第1のステップ)において、書き換え指示部134は、モータ制御装置101、EPS制御装置102a、バッテリ制御装置102bに対して、モータ制御装置101の書き換えを実施することを通知する。
次に、ステップS412において、書き換え指示部134は、モータ制御装置101から書き換え可能が通知されたかどうかを判断する。通知されている場合(YES)は、書き換え可能と判断し、ステップS413へ進む。通知されていない場合(NO)は、通知されるまで待機する。
次いで、ステップS413(第3のステップ)において、記録装置133のモータ制御プログラム記録領域241にあらかじめ記録されている書き換えプログラムをモータ制御装置101へ送信し、処理を終了する。
なお、本実施の形態1において、モータ制御装置101に分割プログラムを暗号化する暗号化部と復号化する復号化部を備え、暗号化部により暗号化した分割プログラムをEPS制御装置102aとバッテリ制御装置102bに送信し、EPS制御装置102aとバッテリ制御装置102bでは、暗号化された分割プログラムを保存し、モータ制御装置101で、EPS制御装置102aまたはバッテリ制御装置102bから暗号化された分割プログラムを受信した際に、復号化部により分割プログラムを復号化するようにしても良い。
上記のような暗号化部と復号化部を備えることにより、CANネットワーク106で第三者に解読される危険性、またはEPS制御装置102aおよびバッテリ制御装置102bに保存時に、第三者に解読される危険性を低減させることができ、プログラム書き換えを安全に実施することが可能となる。
以上説明したように、実施の形態1によるプログラム書き換えシステムでは、テスタ103からモータ制御装置101へプログラム書き換え実施を通知したときに、モータ制御装置101では、まず、これまでの制御に用いていたモータ制御プログラムから分割プログラムを作成し、EPS制御装置102aおよびバッテリ制御装置102bそれぞれに送信する。
送信完了後に、モータ制御装置101は、テスタ103から受信する書き換えプログラムでモータ制御プログラムを書き換える。
その後、テスタ103がCANネットワーク106から分離され、モータ制御装置101は、書き換えたモータ制御プログラムで制御する。
そして、モータ制御装置101は、制御中に動作異常やセキュリティ上の脆弱性が検出された場合には、EPS制御装置102aとバッテリ制御装置102bに通知し、通知を受けたEPS制御装置102aとバッテリ制御装置102bは、自身が保存する分割プログラムをそれぞれモータ制御装置101に送信し、モータ制御装置101は、分割プログラムを受信する度に、受信した分割プログラムで該当するモータ制御プログラムを書き換える。
実施の形態1によれば、モータ制御装置101のモータ制御プログラムを書き換えて、テスタ103をCANネットワーク106から分離したのちに、モータ制御装置101の動作に異常が有ったり、セキュリティ上の脆弱性が検出されたりした場合には、従来のようにテスタ103をCANネットワーク106につなぎ直して再度、書き換えプログラムを送信することなく、効率の良く書き換え前の制御プログラムに戻すことができ、問題のある制御プログラムを使い続けず、自動車の安全性を確保することができる。
また、モータ制御プログラムから分割プログラムを作成し、複数の第2種ノード(実施の形態1ではEPS制御装置102aおよびバッテリ制御装置102bの2つ)に保存するため、1つの第2種ノードに全ての書き換えプログラムを保存できるほどの大きな記録容量を設ける必要がなく、1つのノードがコスト高になることを防ぐことができ、全体としてのコストが抑えられる。
実施の形態2.
図7は、この発明の実施の形態2によるプログラム書き換えシステムが適用される車両制御システムの構成を示すブロック図である。
図7において、実施の形態2によるプログラム書き換えシステムは、第1種ノードであるモータ制御装置101と、第2種ノードであるEPS制御装置102aおよびバッテリ制御装置102bと、第3種ノードであるテスタ103とを有する。
これらのノードは、車両のCANネットワーク106を介して、互いに通信可能に接続されている。
なお、第2種ノードとしては、EPS制御装置102aとバッテリ制御装置102bとが示されているが、これに限らずに、さらに別のノードを含み得ることは言うまでもない。
第1種ノードとしてのモータ制御装置101は駆動用モータ110を制御し、同様にEPS制御装置102aはEPS120aを、バッテリ制御装置102bはバッテリ120bを、それぞれ制御するように接続されている。
なお、図7に示すテスタ103以外の制御装置は、常時、CANネットワーク106に接続されているが、テスタ103は、CANネットワーク106に常時、接続されるのではなく、プログラムの書き換え、各ノードの故障診断時など、必要に応じて随時、接続される。
各制御装置およびテスタの構成については後述する。
なお、図7において、各制御装置およびテスタは、図7に示す以外の構成物も備えているが、本実施の形態2に直接関係しないものについては図示を省略している。
図8は、この発明の実施の形態2によるプログラム書き換えシステムにおける第1〜第3種ノードの記録装置の領域構成を示すメモリマップ図である。
図8(a)は、モータ制御装置101の記録装置113の領域構成を示し、図8(b)は、EPS制御装置102aの記録装置123aの領域構成を示し、図8(c)は、バッテリ制御装置102bの記録装置123bの領域構成を示し、図8(d)は、テスタ103の記録装置133の領域構成を示している。
図8(a)において、記録装置113は、モータ制御プログラムを全体的もしくは部分的に書き換えるためのプログラム書き換え用プログラムを保存するプログラム書き換え用プログラム記録領域221と、モータ制御プログラムを保存する第1の記録領域であるモータ制御プログラム記録領域222と、駆動用モータ110の制御に関わるデータ等を保存するモータ制御プログラム用記録領域(データ用)223と、モータ制御プログラムを部分的に検証するためのプログラム検証用プログラムを保存するプログラム検証用プログラム記録領域634とを備えている。
図8(b)において、記録装置123aは、EPS120aの制御内容を決定するEPS制御プログラムを保存するEPS制御プログラム記録領域231aと、EPS120aの制御に関わるデータ等を保存するEPS制御プログラム用記録領域(データ用)232aと、後述する分割プログラムを一時的に保存する第2の記録領域およびチェックコードを一時的に保存する第4の記録領域である分割モータ制御プログラム記録領域533aとを備えている。
なお、分割モータ制御プログラム記録領域533aには、記録装置123aの空き領域等を割り当てることができる。
図8(c)において、記録装置123bは、バッテリ120bの制御内容を決定するバッテリ制御プログラムを保存するバッテリ制御プログラム記録領域231bと、バッテリ120bの制御に関わるデータ等が記録されるバッテリ制御プログラム用記録領域(データ用)232bと、後述する分割プログラムを一時的に保存する第2の記録領域およびチェックコードを一時的に保存する第4の記録領域である分割モータ制御プログラム記録領域533bを備えている。
なお、分割モータ制御プログラム記録領域533bには、記録装置123bの空き領域等を割り当てることができる。
図8(d)において、記録装置133は、書き換えプログラムを保存する第3の記録領域であるモータ制御プログラム記録領域241を備えている。
次に、図7の各制御装置およびテスタの構成と機能について説明する。
まず、モータ制御装置101の構成と機能について簡単に説明する。
マイコン111は、駆動用モータ110の制御に関わる制御量や各種処理値を演算する。CANネットワーク用データ送受信部であるデータ送受信部112は、CANネットワーク106を介して、接続された他の制御装置(EPS制御装置102a、バッテリ制御装置102b、テスタ103を含む)とデータを送受信する。
記録装置113は、書き換え対象であるモータ制御プログラムを保存する第1の記録領域を有している。このモータ制御プログラムは、モータ制御装置101の動作(制御内容)を決定し、演算を行うものである。
モータ制御装置101のプログラム書き換え部114は、記録装置113のモータ制御プログラム記録領域222に保存されたモータ制御プログラムを全体的もしくは部分的に書き換える。その際には、記録装置113のプログラム書き換え用プログラム記録領域221に記録されたプログラム書き換え用プログラムを用いる。
分割プログラムおよびチェックコード送信部512(チェックコード生成部を含む)は、記録装置113に保存されたモータ制御プログラム記録領域222にあるモータ制御プログラムを分割して、分割プログラムおよび分割したプログラムが変更されていないことを証明するチェックコードを作成する。
第2の状態検出部513は、第1種ノード自身が通常の処理が実施されているか否かにより、自身がモータ制御プログラムを書き換え可能な状態であるか否か、或いはモータ制御プログラムが全て書き換えられているか否かの状態を検出し、他の制御装置に通知する。
第2の状態検出部513により、書き換え可能であることが検出された場合は、CANネットワーク106を介してEPS制御装置102aおよびバッテリ制御装置102bに通知する。
そして、この通知を受けたEPS制御装置102aおよびバッテリ制御装置102bは、自身が保存する分割プログラムおよび保存する分割プログラムが変更されていないことを証明するチェックコードを、CANネットワーク106を介して、モータ制御装置101に送信する。
モータ制御装置101のプログラム検証部511は、記録装置113のプログラム検証用プログラム記録領域634に記録されたプログラム検証用プログラムを用いて、CANネットワーク106上または他のノードで保存中に分割プログラムが壊れていないか否か(例えば、ノイズによるビット反転等)を、受信したチェックコードを用いて検証する。
モータ制御装置101は、EPS制御装置102aまたはバッテリ制御装置102bから分割プログラムを受信する度に、モータ制御プログラム記録領域222に保存されたモータ制御プログラムの該当する分割プログラムを、プログラム書き換え部114により書き換える。
また、チェックコードを受信する度に、プログラム検証部511により、対応する分割プログラムによって書き換えられた内容を検証する。
次に、第2種ノードとしてのEPS制御装置102aの構成と機能について簡単に説明する。
マイコン121aは、EPS120aの制御量や各種処理値を演算する。データ送受信部122aは、CANネットワーク106を介して、接続された他の制御装置(モータ制御装置101、バッテリ制御装置102b、テスタ103を含む)とデータの送受信を行う。
記録装置123aは、モータ制御プログラムの書き換えプログラムの一部分である分割プログラム、および他の第2種ノードが保存する分割プログラムが変更されていないことを証明するチェックコードを保存する第2の記録領域・第4の記録領域として、分割モータ制御プログラム記録領域533aを有している。
分割プログラムおよびチェックコード送信部521aは、モータ制御装置101への分割プログラムおよびチェックコードの送信可否を判断する。
分割プログラム送信部124aにより、モータ制御装置101への分割プログラムおよびチェックコードの送信が可能であると判断された場合には、自身が保存する分割プログラムおよびチェックコードを、CANネットワーク106を介してモータ制御装置101に送信する。
第1種ノード状態検出部522aは、モータ制御装置101に異常がないか否かの状態を検出する。異常を検出した場合は、CANネットワーク106を介してモータ制御装置101とバッテリ制御装置102bに書き戻し指示を通知する。
第1種ノード状態検出部522aにより異常を検出している、または、他の第2種ノードから書き戻し指示が通知されている場合、かつ、モータ制御装置101の第2の状態検出部513より、書き換え可能であることが通知された場合は、自身が保存する分割プログラムおよびチェックコードを、CANネットワーク106を介して、モータ制御装置101に送信する。
ここで、モータ制御装置101の異常には、意図しない制御または処理が実施されたり、セキュリティ上の脆弱性があったりすることが挙げられるが、これに限るものではない。
次に、第2種ノードとしてのバッテリ制御装置102bの構成と機能について、簡単に説明する。
マイコン121bは、バッテリ120bの制御量や各種処理値を演算する。データ送受信部122bは、CANネットワーク106を介して、接続された他の制御装置(モータ制御装置101、EPS制御装置102a、テスタ103を含む)とデータを送受信する。
記録装置123bは、モータ制御プログラムを分割した一部分である分割プログラムおよび他の制御装置が保存する分割プログラムが変更されていないことを証明するチェックコードを保存する第2の記録領域・第4の記録領域として、分割モータ制御プログラム記録領域533bを有している。
分割プログラムおよびチェックコード送信部521bは、モータ制御装置101への分割プログラムおよびチェックコードの送信可否を判断する。
分割プログラムおよびチェックコード送信部521bにより、モータ制御装置101への分割プログラムおよびチェックコードの送信が可能であると判断された場合には、自ノードが保存する分割プログラムおよびチェックコードを、CANネットワーク106を介してモータ制御装置101に送信する。
第1種ノード状態検出部522bは、モータ制御装置101に異常がないか否かの状態を検出する。異常を検出した場合は、CANネットワーク106を介して、モータ制御装置101とEPS制御装置102aに書き戻し指示を通知する。
第1種ノード状態検出部522bにより異常を検出している、または、他の第2種ノードから書き戻し指示が通知されている場合、かつ、モータ制御装置101の第2の状態検出部513より書き換え可能であることが通知された場合は、自身が保存する分割プログラムおよびチェックコードを、CANネットワーク106を介してモータ制御装置101に送信する。
ここで、モータ制御装置101の異常とは、意図しない制御または処理が実施されたり、セキュリティ上の脆弱性があったりすることが挙げられるが、これに限るものではない。
次に、第3種ノードとしてのテスタ103の構成と機能について簡単に説明する。このテスタ103は、書き換えプログラムを送信するものである。
マイコン131は、テスタ103の動作に関わる各種処理を実施する。データ送受信部132は、CANネットワーク106を介して、接続された他の制御装置(モータ制御装置101、EPS制御装置102a、バッテリ制御装置102bを含む)とデータを送受信する。
記録装置133は、図8(d)に示すように、書き換えプログラムを保存する第3の記録領域であるモータ制御プログラム記録領域241を備えている。
書き換え指示部134は、モータ制御装置101に対して、プログラムの書き換えを指示する。書き換えプログラム送信部135は、モータ制御装置101から書き換え可能の通知を受けたのちに、モータ制御プログラム記録領域241に記録している書き換えプログラムをモータ制御装置101に送信する。
テスタ103は、常時、CANネットワーク106に接続されるものではなく、制御装置へのプログラムの書き換えや、診断を実施するときに接続されるものである。
次に、動作について説明する。
ここでは、実施の形態2によるプログラム書き換えシステムの各ノードにおける処理の流れについて、図9〜図12のフローチャートを用いて説明する。
第1種ノードであるモータ制御装置101では、駆動用モータ110の制御に関わる通常の処理と、モータ制御プログラムの書き換えに関する処理が実施される。プログラム書き換えに関する処理は、図9に示し、テスタ103から書き換え実施の通知(書き換え指示)があった場合に実施される。
第1種ノードであるモータ制御装置101における書き換え前のプロラムに書戻す処理は、図10に示している。
まず、図9により、第1種ノードのプログラム書き換え時の処理について説明する。
ステップS701において、第2の状態検出部513は、テスタ103から書き換え指示が通知されているか否かを判断する。通知されている場合(YES)は、ステップS702へ進み、通知されていない場合(NO)は、通知されるまで待機する。
続いて、ステップS702において、第2の状態検出部513は、通常の処理が実施されているか否かを判断し、通常の処理が実施されていなければ、書き換え可能(YES)であるため、ステップS703へ進み、通常の処理が実施されている場合には、終了まで待機する。
ステップS703において、分割プログラムおよびチェックコード送信部512は、記録装置113に保存されたモータ制御プログラム記録領域222にあるモータ制御プログラムを分割して、分割プログラムおよび分割したプログラムが変更されていないことを証明するチェックコードを作成する。
そして、データ送受信部112により、分割プログラムおよびチェックコードを第2種ノードであるバッテリ制御装置102bとEPS制御装置102aへ送信する。
ここで、実施の形態2では、第2種ノードを2つ備えているため、書き換えプログラムを2つに分割し、分割プログラムAと分割プログラムBを作成するとともに、分割プログラムAと分割プログラムBのそれぞれに対応するチェックコードAとチェックコードBを作成し、分割プログラムAとチェックコードBをEPS制御装置102aに、分割プログラムBとチェックコードAをバッテリ制御装置102bへといったように、分割プログラムとチェックコードを異なる制御装置に送信するものとする。
ステップS704において、モータ制御プログラムから作成した分割プログラムおよびチェックコードのすべてを送信したかどうかを判断する。すべてを送信している場合(YES)は、ステップS705へ進み、送信していない場合は(NO)は、ステップS703に進み、再度、送信処理を実施する。
ステップS705において、第2の状態検出部513は、モータ制御プログラムすべてを送信したため、テスタ103に対して書き換え可能を通知する。
ステップS706において、テスタ103からの書き換えプログラムの受信を待つ。書き換えプログラムを受信した場合(YES)は、ステップS707に進む。
ステップS707において、プログラム書き換え部114は、プログラム書き換え用プログラムを用いて、受信した書き換えプログラムに該当するモータ制御プログラムの部分を書き換え、ステップS708へ進む。
ステップS708において、第2の状態検出部513は、すべての書き換えプログラムを受信し、該当するモータ制御プログラムの部分を書き換えたか否かを判断する。受信してない場合は(NO)、ステップS706へ進み、受信している場合は(YES)処理を終了する。
次に、図10を用いて、モータ制御装置101において、書き換えプログラムに書き換えたのち、書き換え前のプロラムに書戻す処理について説明する。
この時、テスタ103は、CANネットワーク106から取り外されているものとする。
ステップS711において、第2の状態検出部513は、第2種ノード(ここでは、EPS制御装置102aまたはバッテリ制御装置102b)から書き戻し指示を通知されているか否かを判断する。通知されている場合(YES)は、ステップS712へ進み、通知されていない場合(NO)は、受信するまで待機する。
ステップS712において、第2の状態検出部513は、通常の処理が実施されているか否かを判断し、通常の処理が実施されていなければ、書き換え可能(YES)であるため、ステップS713へ進み、通常の処理が実施されている場合は、終了まで待機する。
ステップS713において、第2の状態検出部513は、第2種ノードであるバッテリ制御装置102bとEPS制御装置102aに対して、記録している分割プログラムおよびチェックコードの送信指示を通知する。
ステップS714において、バッテリ制御装置102bとEPS制御装置102aからの分割プログラムおよびチェックコードの受信を待つ。分割プログラムまたはチェックコードを受信した場合(YES)は、ステップS715に進む。
ステップS715において、受信した内容を確認する。分割プログラムであれば、ステップS716へ進み、チェックコードであれば、ステップS717へ進む。
ステップS716において、プログラム書き換え部114は、プログラム書き換え用プログラムを用いて、受信した分割プログラムに該当するモータ制御プログラムの部分を書き換え、ステップS719へ進む。
ステップS717において、プログラム検証部511は、プログラム検証用プログラムを用い、受信したチェックコードに該当するモータ制御プログラムの部分を検証する。
ステップS718において、検証結果に対する問題の有無を判断し、問題がない場合(YES)は、ステップS719へ進み、問題がある場合(NO)は、書き戻し処理を終了する。
ステップS719において、すべての分割プログラムを受信し、該当するモータ制御プログラムの部分を書き換えたか否かを判断する。すべてを受信していない場合は(NO)、ステップS714へ進み、受信している場合は(YES)、処理を終了する。
次に、第2種ノードであるEPS制御装置102aおよびバッテリ制御装置102bにおけるプログラム書き換えに関する処理の流れについて、図11を用いて説明する。
EPS制御装置102a(またはバッテリ制御装置102b)では、EPS120a(またはバッテリ120b)の制御に関わる通常の処理と、モータ制御装置101のプログラム書き換えに関する処理が実施される。
なお、EPS制御装置102aとバッテリ制御装置102bにおけるプログラム書き換えに関する処理は、同じであるので、ここでは、EPS制御装置102aを例に挙げて説明する。
EPS制御装置102aは、テスタ103から書き換え実施指示が通知された後、ステップS801において、分割プログラムまたはチェックコードの受信を待つ。データ送受信部122aにより、分割プログラムまたはチェックコードを受信した場合(YES)は、ステップS802へ進み、受信した分割プログラムまたはチェックコードを記録装置123aの分割モータ制御プログラム記録領域533aに保存し、ステップS803へ進む。
ステップS803(第5のステップ)において、EPS制御装置102aの第1種ノード状態検出部522aは、モータ制御装置101に異常がないか否かを判断する。モータ制御装置101の異常を検出した場合(YES)は、ステップS806へ進み、異常を検出していない場合(NO)は、ステップS804へ進む。
ステップS804において、EPS制御装置102aは、他の第2種ノード(ここでは、バッテリ制御装置102b)からモータ制御装置101へ書き戻し指示が通知されているか否かを判断する。通知されている場合(YES)は、ステップS807へ進み、通知されていない場合(NO)は、ステップS805へ進む。
ステップS805において、データ送受信部122aにより、分割プログラムまたはチェックコードを受信しているかどうかを確認する。受信している場合(YES)は、ステップS802へ進み、受信していない場合(NO)は、ステップS803へ進む。
ステップS806において、EPS制御装置102aは、他の第2種ノード(ここでは、バッテリ制御装置102b)とモータ制御装置101へ書き戻し指示を通知し、ステップS807へ進む。
ステップS807において、EPS制御装置102aは、モータ制御装置101からの分割プログラムおよびチェックコードの送信指示を待つ。送信指示が通知されている場合(YES)は、ステップS808へ進み、送信指示が通知されていない場合(NO)は、通知されるまで待機する。
ステップS808において、分割モータ制御プログラム記録領域533aに保存された分割プログラムおよびチェックコードをモータ制御装置101へ送信し、ステップS809へ進む。
ステップS809において、保存した分割プログラムおよびチェックコードをすべて送信したかどうかを確認する。
すべて送信している場合(YES)は、処理を完了し、送信していない場合(NO)は、ステップS808へ進み、送信処理を実施する。
次に、第3種ノードであるテスタ103におけるプログラム書き換えに関する処理の流れについて、図12を用いて説明する。
テスタ103では、関連ノードへのプログラム書き換え実施の通知と、書き換えプログラムの送信処理を実施する。
まず、ステップS811において、書き換え指示部134は、モータ制御装置101、EPS制御装置102a、バッテリ制御装置102bに対して、モータ制御装置101の書き換えを実施することを通知する。
次に、ステップS812において、書き換え指示部134は、モータ制御装置101から書き換え可能が通知されたかどうかを判断する。通知されている場合(YES)は、書き換え可能と判断し、ステップS813へ進む。通知されていない場合(NO)は、通知されるまで待機する。
ステップS813においては、記録装置133のモータ制御プログラム記録領域241にあらかじめ記録されている書き換えプログラムをモータ制御装置101へ送信し、処理を終了する。
なお、本実施の形態2において、モータ制御装置101に、分割プログラムおよびチェックコードを暗号化する暗号化部と復号化する復号化部を備え、暗号化部により暗号化した分割プログラムおよびチェックコードをEPS制御装置102aとバッテリ制御装置102bに送信し、EPS制御装置102aとバッテリ制御装置102bでは、暗号化された分割プログラムおよびチェックコードを保存し、モータ制御装置101で、EPS制御装置102aまたはバッテリ制御装置102bから暗号化された分割プログラムおよびチェックコードを受信した際に、復号化部により分割プログラムを復号化するようにしても良い。
上記のような暗号化部と復号化部を備えることにより、CANネットワーク106で第三者に解読される危険性、またはEPS制御装置102aおよびバッテリ制御装置102bでの保存時に第三者に解読される危険性を低減させることができ、プログラム書き換えを安全に実施することが可能となる。
以上のような処理の流れを持つ、実施の形態2によるプログラム書き換えシステムでは、テスタ103からモータ制御装置101へプログラム書き換え実施を通知したときに、モータ制御装置101では、まず、これまでの制御に用いていたモータ制御プログラムから、分割プログラムを作成するとともに、分割したプログラムが変更されていないことを証明するチェックコードを作成し、EPS制御装置102aおよびバッテリ制御装置102bにそれぞれ送信する。
送信完了後に、モータ制御装置101は、テスタ103から送信される書き換えプログラムで、モータ制御プログラムを書き換える。
その後、テスタ103がCANネットワーク106から分離され、モータ制御装置101は、書き換えたモータ制御プログラムで制御する。
そして、EPS制御装置102aまたはバッテリ制御装置102bが、書き換えたモータ制御プログラムによるモータ制御装置101の動作異常やセキュリティ上の脆弱性が検出された場合には、他の第2種ノードとモータ制御装置101に通知する。
これにより、EPS制御装置102aとバッテリ制御装置102bは、自身が保存する分割プログラムおよびチェックコードをそれぞれモータ制御装置101に送信し、モータ制御装置101は、分割プログラムを受信する度に、受信した分割プログラムに該当するモータ制御プログラムの部分を書き換え、チェックコードを受信する度に、該当するモータ制御プログラムの部分を検証するものである。
実施の形態2のプログラム書き換えシステムによれば、モータ制御装置101のモータ制御プログラムを書き換えて、テスタ103をCANネットワーク106から分離したのちに、モータ制御装置101の動作に異常が有ったり、セキュリティ上の脆弱性が検出されたりした場合にも、テスタ103をCANネットワーク106につなぎ直して再度、書き換えプログラムを送信する必要がなく、効率の良く書き換え前の制御プログラムに戻し、かつ検証することができ、モータ制御装置101は、問題のある制御プログラムを使い続けず、自動車の安全性を確保することができる。
また、モータ制御プログラムから分割プログラムを作成し、複数の第2種ノード(本実施の形態2では、EPS制御装置102aおよびバッテリ制御装置102bの2つ)に保存するため、1つの第2種ノードに全ての書き換えプログラムを保存できるほどの大きな記録容量を設ける必要がなく、1つのノードがコスト高になることを防ぐことができ、全体としてのコストが抑えられる。
なお、上述の実施の形態1と実施の形態2では、2つの第2種ノードを備えた車両制御システムを例に挙げて説明したが、第2種ノードの数はこれに限定されるものではない。
第2種ノードの数を増やすことにより、各分割プログラムの容量を低減することができ、各第2種ノードに必要となる記録容量を抑えることができる。
また、各ノードが接続されるネットワークとしてCANネットワーク106を例に挙げて説明したが、ネットワークの種類はこれに限るものではない。
また、テスタは、CANネットワーク106を介さずに、直接、モータ制御装置101に接続する場合でも同様の効果が得られる。
また、上述の実施の形態1と実施の形態2では、第1種ノードのプログラム書き換えが成功することを前提として説明したが、検証結果により問題があり、書き換えが失敗した場合や、何らかの理由で書き換えが失敗した場合に備えて、第1種ノードにタイムアウト時間等を設定しておき、所定時間が経過しても書き換えプログラムまたは、分割プログラムを受信できない場合や、書き換えが終了しない場合には、書き換え処理を強制的に終了させるようにしても良い。
ただし、書き換え処理を途中で終了させる場合には、関連ノードに故障状況を示す一意のコードを記録しておく等の対応策を併せて用意しておく必要がある。
また、上述の実施の形態2では、分割プログラムに対応するチェックコードが届くことを前提として説明したが、チェックコードか届かない時は、CANネットワーク106もしくは、該当する第2種ノードに異常があると判断することができ、早期に書き換えを中止することができる。
また、上述の実施の形態2では、チェックコードにより、分割したプログラムが変更されていないことを証明できることを前提に説明したが、チェックコードとして、変更時に訂正できるチェックコード(例えば、Error−Correcting Code)を用いれば、問題発生時に分割プログラムを修復させることもできる。
なお、この発明は、その発明の範囲内において、各実施の形態を自由に組み合わせたり、各実施の形態を適宜、変形、省略することが可能である。
この発明は、ネットワークに接続された複数の制御装置を含むシステム(例えば車両制御システム)におけるプログラムの書き換えに利用することができる。
101 モータ制御装置(第1種ノード)、102a EPS制御装置(第2種ノード)、
102b バッテリ制御装置(第2種ノード)、103 テスタ(第3種ノード)、
106 CANネットワーク、110 駆動用モータ、
111、121a、121b、131 マイコン、
112、122a、122b、132 データ送受信部、
113、123a、123b、133 記録装置、
114 プログラム書き換え部、115 状態検出部、116 分割プログラム送信部、
120a EPS、120b バッテリ、
124a、124b 分割プログラム送信部、134 書き換え指示部、
135 書き換えプログラム送信部、511 プログラム検証部、
512 分割プログラムおよびチェックコード送信部、513 第2の状態検出部、
521a、521b 分割プログラムおよびチェックコード送信部、
522a、522b 第1種ノード状態検出部

Claims (4)

  1. 第1種ノードおよび複数の第2種ノードが通信可能にネットワークに接続され、上記ネットワークに随時接続される第3種ノードから送信される書き換えプログラムによって上記第1種ノードのプログラムを書き換えるプログラム書き換えシステムであって、
    上記第1種ノードは、
    上記プログラムを保存する第1の記録領域と、
    この第1の記録領域に保存されているプログラムを複数に分割し、各分割プログラムを各別に上記第2種ノードに送信する分割プログラム送信部と、
    上記第3種ノードから受信した上記書き換えプログラムによって、上記第1の記録領域の上記プログラムを書き換えるプログラム書き換え部とを有し、
    上記第2種ノードは、
    上記第1種ノードから受信した上記分割プログラムを保存する第2の記録領域と、
    この第2の記録領域に保存された上記分割プログラムを上記第1種ノードに送信する送信部と
    上記第1種ノードの状態を検出する第1種ノード状態検出部とを有し、
    上記第3種ノードは、
    上記書き換えプログラムを保存する第3の記録領域と、
    上記第1種ノードへの書き換えを指示する書き換え指示部と、
    上記書き換えプログラムを上記第1種ノードに送信する書き換えプログラム送信部とを有し、
    上記第1種ノードのプログラム書き換え部は、上記第3種ノードから書き換え指示を受信した場合に、上記分割プログラムを上記第2種ノードに送信したのち、上記第3種ノードから受信した上記書き換えプログラムによって上記プログラムを書き換え
    上記第2種ノードは、
    上記プログラム書き換え部によって上記プログラムが書き換えられたのちに、上記第1種ノード状態検出部によって上記第1種ノードの異常が検出された場合に、上記第1種ノードおよび他の第2種ノードに通知するとともに、自ノードが保存する分割プログラムを上記第1種ノードに送信し、
    上記通知を受けた他の第2種ノードは、自ノードが保存する分割プログラムを上記第1種ノードに送信し、
    上記第1種ノードは、各第2種ノードより受信した上記分割プログラムにより、上記第1の記録領域のプログラムの該当部分を書き換えることを特徴とするプログラム書き換えシステム。
  2. 上記第1種ノードは、上記分割プログラムを暗号化する暗号化部と、
    上記第2種ノードから受信した上記分割プログラムを復号化する復号化部とを有し、
    上記分割プログラムを暗号化してから上記第2種ノードに送信し、第2種ノードから受信した上記分割プログラムを号化してから、上記第1の記録領域の上記プログラムの該当部分を書き換えることを特徴とする請求項に記載のプログラム書き換えシステム。
  3. 上記第1種ノードは、上記分割プログラムの生成時に上記分割プログラムを検証するためのチェックコードを生成するチェックコード生成部を有し、
    このチェックコード生成部により生成されたチェックコードを上記第2種ノードに送信し、
    上記第2種ノードは、上記第1種ノードから受信したチェックコードを保存する第4の記録領域を有し、
    上記分割プログラムの第1種ノードへの送信時に、上記第4の記録領域に保存されているチェックコードを第1種ノードに送信し、
    上記第1種ノードは、上記第2種ノードから受信した上記分割プログラムおよび上記チェックコードから、上記分割プログラムが変更されていないことを検証した後、この分割プログラムにより、上記第1の記録領域の上記プログラムの該当部分を書き換えることを特徴とする請求項1または請求項2に記載のプログラム書き換えシステム。
  4. 第3種ノードが、ネットワークを介して第1種ノードに、上記第1種ノードのプログラムの書き換え指示を送信する第1のステップ、
    上記書き換え指示の受信に応じて、上記第1種ノードが上記プログラムを分割し、各分割プログラムを各別に複数の第2種ノードに上記ネットワークを介して送信する第2のステップ、
    上記第3種ノードが、上記プログラムを書き換えるための書き換えプログラムを上記第1種ノードに送信する第3のステップ、
    記第1種ノードが、上記プログラムを、上記第3のステップで送信された書き換えプログラムによって書き換える第4のステップ
    上記第4のステップで上記プログラムを書き換えたのちに、上記第2種ノードが、上記第1種ノードの動作の異常を検出する第5のステップ、
    この第5のステップにより異常が検出された場合に、上記各第2種ノードがそれぞれ保存している上記分割プログラムを上記第1種ノードに送信する第6のステップ、
    および上記第1種ノードが、上記第6のステップにより送信された分割プログラムにより、上記第4のステップで書き換えたプログラムの該当部分を、書き換える第7のステップを含むことを特徴とするプログラム書き換え方法。
JP2016081650A 2016-04-15 2016-04-15 プログラム書き換えシステムおよびプログラム書き換え方法 Active JP6165292B1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016081650A JP6165292B1 (ja) 2016-04-15 2016-04-15 プログラム書き換えシステムおよびプログラム書き換え方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016081650A JP6165292B1 (ja) 2016-04-15 2016-04-15 プログラム書き換えシステムおよびプログラム書き換え方法

Publications (2)

Publication Number Publication Date
JP6165292B1 true JP6165292B1 (ja) 2017-07-19
JP2017191529A JP2017191529A (ja) 2017-10-19

Family

ID=59351367

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016081650A Active JP6165292B1 (ja) 2016-04-15 2016-04-15 プログラム書き換えシステムおよびプログラム書き換え方法

Country Status (1)

Country Link
JP (1) JP6165292B1 (ja)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005339049A (ja) * 2004-05-25 2005-12-08 Toshiba Corp 紙葉類処理システム
JP2013246718A (ja) * 2012-05-28 2013-12-09 Auto Network Gijutsu Kenkyusho:Kk 制御システム及びプログラム更新方法

Also Published As

Publication number Publication date
JP2017191529A (ja) 2017-10-19

Similar Documents

Publication Publication Date Title
JP6773617B2 (ja) 更新制御装置、ソフトウェア更新システムおよび更新制御方法
JP6675271B2 (ja) ゲートウェイ装置、車載ネットワークシステム及びファームウェア更新方法
CN108363347B (zh) 用于电子控制单元的硬件安全
JP6741559B2 (ja) 評価装置、評価システム及び評価方法
US11803366B2 (en) Firmware updating system and method
CN111786820B (zh) 固件更新方法、装置及网络设备
CN104426669B (zh) 用于受保护地传送数据的方法
JP2012186635A (ja) 車両ネットワークシステム
US20230409491A1 (en) Memory device with cryptographic kill switch
CN210310316U (zh) 用于交通工具自主驾驶系统的自主驾驶控制器
US20180310173A1 (en) Information processing apparatus, information processing system, and information processing method
CN111095200A (zh) 嵌入式程序的安全升级方法、装置、设备及存储介质
CN105279441A (zh) 用于对数据进行加密和解密的方法和架构
JP6165292B1 (ja) プログラム書き換えシステムおよびプログラム書き換え方法
CN104732138A (zh) 一种诊断设备的升级方法及设备
CN112242903B (zh) 混合设备以及针对混合设备执行安全引导过程的方法
CN113542265A (zh) 局部网络安全管理、装置、计算机设备及存储介质
CN113204365A (zh) 充电桩的升级方法与智能充电桩
US10949527B2 (en) Semiconductor device, authentication system, and authentication method
JP6103565B1 (ja) プログラム書き換えシステム及びプログラム書き換え方法
CN115406053A (zh) 空调器内外机通信方法、装置、空调器及存储介质
US10359753B2 (en) Program rewriting system and program rewriting method
KR102001420B1 (ko) 전자제어유닛, 차량 통신 보안시스템 및 보안방법
KR102649908B1 (ko) 차량 통신 시스템, 통신 방법 및 통신 프로그램을 기록한 기록 매체
JP7423959B2 (ja) 車両リプログラミングシステム

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170523

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170620

R151 Written notification of patent or utility model registration

Ref document number: 6165292

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250