JP2023119314A - 電子制御装置 - Google Patents

電子制御装置 Download PDF

Info

Publication number
JP2023119314A
JP2023119314A JP2022022145A JP2022022145A JP2023119314A JP 2023119314 A JP2023119314 A JP 2023119314A JP 2022022145 A JP2022022145 A JP 2022022145A JP 2022022145 A JP2022022145 A JP 2022022145A JP 2023119314 A JP2023119314 A JP 2023119314A
Authority
JP
Japan
Prior art keywords
program
control program
specific
unit
connection node
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.)
Pending
Application number
JP2022022145A
Other languages
English (en)
Inventor
譲二 成田
Joji Narita
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.)
Denso Corp
Original Assignee
Denso 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 Denso Corp filed Critical Denso Corp
Priority to JP2022022145A priority Critical patent/JP2023119314A/ja
Publication of JP2023119314A publication Critical patent/JP2023119314A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

【課題】バージョン管理の煩雑さを抑制する技術を提供する。【解決手段】書き換え可能な記憶装置34を含む電子制御装置10、20は、実行部と、プログラム受信部と、プログラム更新部と、差分更新部と、を備える。プログラム更新部は、プログラム受信部によって新たな制御プログラムが受信される毎に、新たな制御プログラムによって、実行部が実行する制御プログラムを更新するように構成される。差分更新部は、プログラム更新部によって実行部が実行する制御プログラムが更新される毎に、更新された制御プログラムと、当該電子制御装置が使用可能な制御プログラムであって記憶装置に含まれる制御プログラム領域とは異なる特定プログラム領域に記憶される特定プログラムとの差分を示す差分データを生成し、生成された差分データを新たな差分データとして記憶装置に記憶するように構成される。【選択図】図1

Description

本開示は、車両に搭載され、プログラムを書き換え可能な電子制御装置に関する。
車両に搭載される電子制御装置(以下、ECU)では、制御プログラム等を記憶するメモリとして、プログラムのバージョンアップ等に対応して記憶内容の書き換えが可能なフラッシュメモリ等が使用されている。ECUのプログラムの書き換えは、例えば車両に備えられたコネクタに書き込みツールを接続し、この書き込みツールがECUと通信を行うことによって実行される。
例えば、下記特許文献1には、PC(例えば、ディーラのPC等)によって差分プログラムを生成し、書き込みツールによって差分プログラムを書き換え対象となるECUに書き込む、といった差分更新に関する技術が提案されている。
特許6838714号公報
差分更新における上述の差分プログラムとは、バージョンアップされた新プログラムと、書き換え対象となるECUに既に記憶されているプログラムと、の差を示すプログラムであり得る。しかしながら、プログラムがバージョンアップされていたりされていなかったりといった状況は、例えばプログラム更新に対応するか否かといった車両の所有者の意識等によって、車両毎に異なると考えられる。
つまり、新プログラムの書き換え時に、ECUに既に記憶されているプログラムのバージョンは、車両毎に異なると考えられる。このため、差分更新では、複数種類の差分プログラムを生成しておく必要があり、車両の所有者やディーラにとって、ECUのプログラムの書き換えにおけるバージョン管理が煩雑になるという問題があった。
本開示の1つの局面は、バージョン管理の煩雑さを抑制する技術を提供することにある。
本開示の一態様は、書き換え可能な記憶装置(34)を含む電子制御装置(10、20)であって、実行部(S130)と、プログラム受信部(S20)と、プログラム更新部(S30)と、差分更新部(S70、S80)と、を備える。実行部は、制御対象を制御するためのプログラムを制御プログラムとして、記憶装置に含まれる制御プログラム領域に記憶される制御プログラムを実行し制御対象を制御するように構成される。
プログラム受信部は、外部の書き換え装置との間で通信を行うことによって新たな制御プログラムを受信するように構成される。プログラム更新部は、プログラム受信部によって新たな制御プログラムが受信される毎に、新たな制御プログラムによって、実行部が実行する制御プログラムを更新するように構成される。
差分更新部は、プログラム更新部によって実行部が実行する制御プログラムが更新される毎に、更新された制御プログラムと、特定プログラムとの差分を示す差分データを生成し、生成された差分データを新たな差分データとして記憶装置に記憶するように構成される。特定プログラムは、当該電子制御装置が使用可能な制御プログラムであって記憶装置に含まれる領域SAとは異なる領域SBに記憶される。
このような構成によれば、外部の書き換え装置は、制御プログラムを書き換える際、差分プログラムではなく新たな制御プログラムそのものを電子制御装置に送信するため、差分更新の様に複数種類の差分プログラムを予め生成しておく必要が無い。結果として、本開示の電子制御装置を用いることによって、電子制御装置の制御プログラムを書き換える際、書き換え装置における制御プログラムのバージョン管理の煩雑さを抑制することができる。また、差分データと特定プログラムとを備えるので、これらを用いることで、仮に実行部が実行する制御プログラムに異常が生じたとしても、差分データが生成されたときの制御プログラムを復元することができる。
車載システムの構成を示すブロック図。 フラッシュメモリの構成及び更新処理による作動を説明する説明図。 接続ノードの機能を示すブロック図。 更新処理のフローチャート。 起動処理のフローチャート。 修復処理のフローチャート。 特定プログラムの更新を説明する説明図。 修復処理による作動を説明する説明図。 バージョンを経たプログラムであるほどオリジナルのプログラムとの差分が大きくなる様子を説明する説明図。
以下、図面を参照しながら、本開示の実施形態を説明する。
[1.第1実施形態]
[1-1.構成]
図1に示す車載電子制御システム(以下、車載システム1)は、車両に搭載されており、接続ノード10、接続ノード20、及び中継装置50を備える。接続ノード10、接続ノード20、及び中継装置50は、CANやイーサネットの通信線で接続されて、車両ネットワークを構成している。なお、CAN及びイーサネットは登録商標である。
接続ノード10は、車載の電子制御装置(以下、ECU)であり、例えばエンジンやブレーキなどの車両に搭載された制御対象の制御を行う。ECUは、Electronic Control Unitの略である。
接続ノード10は、CPU31と、RAM32、ROM33、フラッシュメモリ34等といったメモリ35と、データ送受信部36とを備えたマイクロコンピュータ(以下、マイコン38)を主体として構成されている。CPU31は、演算装置であり、RAM32は、CPU31の演算結果等を一時記憶するための揮発性メモリである。ROM33は、書き換え不可能な記憶領域を有するメモリであり、フラッシュメモリ34は書き換え可能な記憶領域を有する不揮発性メモリである。フラッシュメモリ34は、例えば、EEPROMであってもよい。フラッシュメモリ34には、CPU31により実行される各種プログラムが記憶される。
データ送受信部36は、車両ネットワークを構成する各装置との間で、通信線を介してデータの送受信を行う。なお、フラッシュメモリ34の構成の詳細については後述する。
接続ノード20は、 接続ノード10と同様に、車両に搭載された制御対象の制御を行うECUである。図1では省略しているが、車両には多くの制御対象が搭載されており、各制御対象を制御する多くのECUが接続ノードとして車両ネットワークを構成している。
中継装置50は、コネクタ60と、各接続ノードとに接続されている。中継装置50は、外部の書き換えツール70とコネクタ60を介して有線接続され、書き換えツール70と接続ノードと間のデータの送受信を中継する。中継装置50は、図示しないが、書き換えツール70と有線通信を行うための通信部を備える。
なお、書き換えツール70は、プログラムの書き換えを行うための装置である。例えば、書き換えツール70は、プログラムの書き換えの対象となる接続ノードに、この接続ノードの制御対象に関するプログラム(以下、制御プログラム)であって新たな制御プログラムを送信する。制御プログラムは、接続ノード10が制御対象を制御するためのプログラムである。書き換えツール70は、書き換えの対象となる接続ノードの、制御プログラムを書き換えるための装置であるともいえる。
制御プログラムは、所謂バージョンが管理されているプログラムである。バージョンは、プログラムにおいて更新が行われてきた状況や、更新が行われてきた回数等を示す。本実施形態では、一例として、バージョンが、1、2、3…といった数値で示される例を説明する。但し、バージョンの表記はこれに限定されるものではない。更新が行われる毎に、バージョンを示す数値が増加するものとする。
なお、ここでいうプログラムは、図9に示すように、バージョンを経るほど(すなわち、バージョンを示す数値が大きくなるほど)、更新によってオリジナルのプログラムとの差分が大きくなるプログラムをいう。図9では、例として、オリジナルのプログラムをバージョン0のプログラム(すなわち、v0)として示している。そして、図9は、バージョン1(すなわち、v1)→バージョン2(すなわち、v2)→バージョン3(すなわち、v3)…と、オリジナルのプログラム(すなわち、v0)からバージョンを経るにつれて差分が増加する様子をイメージとして示している。
例えば、書き換えツール70から送信される新たな制御プログラムには、プログラムを示すデータと共に、バージョン情報が含まれていてもよい。バージョン情報とは、制御プログラムのバージョンを示す情報をいう。
次に、フラッシュメモリ34の構成について、図2を参照して説明する。
フラッシュメモリ34は、Signature(以下、シグネチャ情報)が書き込まれるシグネチャ領域SGと、プログラムに関するデータが書込まれる複数の領域SA、SB、SC、SD、SEを有する。
領域SAには、現行プログラムPAが記憶されている。現行プログラムPAとは、書き換えツール70から受信され、現在のフラッシュメモリ34に既に書き込まれている制御プログラムであって、現在の接続ノード10が制御対象を制御するために実行する制御プログラムをいう。
シグネチャ情報は、現行プログラムPAとして領域SAに記憶されている制御プログラムが改ざんされていないことを確認(すなわち、検証)するための情報(すなわち、検証期待値)である。シグネチャ情報は、書き換えツール70から、例えば制御プログラムと共に、送信され得る。
領域SBには、特定プログラムPBが記憶されている。特定プログラムPBとは、現行プログラムPA以前に書き換えツール70から受信された制御プログラムをいう。つまり、現行プログラムPAと特定プログラムPBとは、接続ノード10が車両に搭載された同じ制御対象を制御するための制御プログラムである。特定プログラムPBは、現行プログラムPAとして記憶された制御プログラム以前のバージョンの制御プログラムである。
換言すれば、特定プログラムPBは、現行プログラムPAとして記憶された制御プログラムと同じ、又は、それよりも前のバージョンの制御プログラムである。領域SBに記憶されている特定プログラムPBは、通常時は現行プログラムPAが実行されるため制御対象の制御に用いられないが、制御対象を制御するために使用可能な制御プログラムである。
領域SCには差分データΔが記憶されている。差分データΔとは、現在接続ノード10が実行する現行プログラムPAと、フラッシュメモリ34に記憶されているプログラムであって接続ノード10が使用可能な特定プログラムPBとの差分を示すデータをいう。
領域SDには、リプロプログラムが記憶されており、領域SEには、ブートプログラムが記憶されている。リプロプログラムは、フラッシュメモリ34に記憶されている現行プログラムPA及び特定プログラムPBを新たな制御プログラムに書き換えるためのプログラムである。例えば、CPU31がリプロプログラムを実行する処理により、図3に示す、書き換え制御部41、差分生成部42、記憶部43、の機能が実現される。
ブートプログラムは、接続ノード10の電源がオフからオンに切り替わった際に、CPU31により実行される、接続ノード10を起動させるためのプログラムである。例えば、CPU31がブートプログラムを実行する処理により、図3に示す、起動部44、検証部45、及び差分復元部46、の機能が実現される。
[1-2.処理]
[2.1 更新処理]
次に、接続ノード10がリプロプログラムを実行する手順について、図4のフローチャートを用いて説明する。本処理手順は、書き換えツール70から接続ノード10に更新要求が出力された際に実行される。なお、本処理を更新処理ともいう。また、S10-S80の一連の処理を処理サイクルともいう。
まず、ステップ(以下、S)10では、接続ノード10は、接続線を介して、外部の書き換えツール70から更新要求を受信する。更新要求は、制御プログラムの更新対象となる接続ノード(すなわち、本実施形態では接続ノード10)に対して、フラッシュメモリ34の領域SAに既に書き込まれている制御プログラムである現行プログラムPAを消去させる命令を含む。接続ノード10は、更新要求に従って、領域SAを消去する(すなわち、領域SAに記憶されている現行プログラムPAを消去する)。そして、接続ノード10は、消去完了の応答を書き換えツール70へ送信する。
続くS20では、接続ノード10は、書き換えツール70との間で通信を行うことによって、新たな制御プログラムを受信する。なお、本ステップにて、接続ノード10は、新たな制御プログラムを受信したか否かを判定し、新たな制御プログラムを受信していない場合は新たな制御プログラムを受信する迄待機する。
続くS30では、接続ノード10は、S20にて受信された新たな制御プログラムによって、現行プログラムPAを更新する。具体的には、接続ノード10は、S10にて消去した領域SAに、書き換えツール70から受信した新たな制御プログラムを書き込む。
接続ノード10は、新たな制御プログラムによって現行プログラムPAを更新すると、書き込み完了の応答を書き換えツール70へ送信する。
なお、接続ノード10は、上述のS10では、更新要求を受信した際に、領域SAと領域SGとを消去してもよい。また、接続ノード10は、上述のS20では、新たな制御プログラムと新たな制御プログラムに関するシグネチャ情報とを書き換えツール70から受信してもよい。そして、接続ノード10は、上述のS30では、現行プログラムPAの更新と、シグネチャ情報の更新(すなわち、S10にて消去された領域SGに書き換えツール70から受信した新たなシグネチャ情報を書き込むこと)とを行ってもよい。接続ノード10は、その後に、書き込み完了の応答を送信してもよい。
次にS40では、接続ノード10は、特定プログラムPBの更新が必要であるか否かを判定する。接続ノード10は、予め定められた特定更新条件が満たされるか否かを判定し、特定更新条件が満たされると判定される場合に、特定プログラムPBの更新が必要であると判定する。特定更新条件は、特定プログラムPBを更新するための予め定められた条件である。
例えば、特定更新条件は、現行プログラムPAとして記憶されている制御プログラムと特定プログラムPBとして記憶されている制御プログラムとの間に、所定回数以上のプログラムの更新が行われていること、であってもよい。このような特定更新条件が満たされる場合は、特定プログラムPBが領域SBに書き込まれた後に現行プログラムPAの更新が行われた回数が相対的に大きい場合である。
ところで、フラッシュメモリ34には、後述するS80において差分データΔが生成される際に、差分容量情報がフラッシュメモリ34における所定の領域に書き込まれる。差分容量情報は、生成された差分データΔのデータ容量を示している。特定更新条件が満たされる場合(すなわち、特定プログラムPBが領域SBに書き込まれた後に現行プログラムPAの更新が行われた回数が相対的に大きい場合)は、差分容量情報によって示されるデータ容量が相対的に大きくなる。
そこで、本実施形態では、差分容量情報が示すデータ容量の大きさに基づいて、特定更新条件が満たされるか否かを判定する。なお、本ステップにて取得する差分容量情報は、前回の処理サイクルにおける差分データΔが生成された際のデータ容量を示していることになる。
具体的には、本実施形態では、フラッシュメモリ34から差分容量情報を取得し、差分容量情報が示すデータ量(すなわち、前回処理サイクルにて生成された差分データΔのデータ容量)が予め定められた容量閾値以上であること、を特定更新条件とする。容量閾値は、例えばバイト等の単位で示される、データ容量を示す数値であり得る。つまり、接続ノード10は、本ステップにて差分容量データを取得し、差分容量データΔ示すデータ量(すなわち、前回処理サイクルの差分データΔのデータ容量)が容量閾値以上である場合に、特定プログラムPBの更新が必要であると判定する。
差分容量データ示すデータ量(すなわち、前回処理サイクルの差分データΔのデータ容量)が容量閾値以上である場合は、特定プログラムPBが書き込まれた後に更新が行われてきた回数が相対的に大きいこと、を示す。
ここで、接続ノード10は、S40にて肯定判定される(すなわち、特定更新条件が満たされると判定される)場合に処理をS50へ移行し、以降の処理にて、受信された新たな制御プログラムによって特定プログラムPBを更新する。更新とは、上書きして(すなわち、記憶領域を消去して新たに書き込みを行うことによって)記憶することをいう。
具体的には、S50では、接続ノード10は、フラッシュメモリ34の領域SBを消去する。これにより、領域SBに記憶されていた特定プログラムPBが消去される。
続くS60では、接続ノード10は、領域SBに、S20にて受信された新たな制御プログラムを新たな特定プログラムPBとして記憶する。そして、接続ノード10は処理をS70へ移行する。
一方、接続ノード10は、S40にて否定判定される(すなわち、特定更新条件が満たされていないと判定される)場合に、特定プログラムPBを更新すること無く、処理をS70へ移行する。
S70では、接続ノード10は、差分データΔを生成する。つまり、接続ノード10は、今回の処理サイクルにおいて領域SAに記憶されている現行プログラムPAと領域SBに記憶されている特定プログラムPBとの差分データΔを生成する。また同時に、接続ノード10は、生成した差分データΔのデータ容量を示す差分容量情報を生成し、生成した差分容量情報によってフラッシュメモリ34の所定の領域(以下、差分容量領域ともいう)を更新する。
これにより、今回の処理サイクルにおいて領域SAに記憶されている現行プログラムPAと領域SBに記憶されている特定プログラムPBとの差分データΔのデータ容量を示す差分容量情報が上書きにより差分容量領域に記憶される。
続くS80では、接続ノード10は、S70にて生成した差分データΔによって、領域SCに既に記憶されている差分データΔを更新する。これにより、今回の処理サイクルにおいて領域SAに記憶されている現行プログラムPAと領域SCに記憶されている特定プログラムPBとの差分データΔが上書きにより領域SCに記憶される。そして、接続ノード10は、以上で本更新処理を終了する。
なお、書き換え制御部41としての処理がS10-S30に相当し、差分生成部としての処理がS70に相当し、記憶部43としての処理がS80に相当する。
[2.2 起動処理]
次に、接続ノード10がブートプログラムを実行することによって行う起動処理について、図5のフローチャートを用いて説明する。本処理手順は、接続ノード10の電源がオフからオンに切り替わった際に実行される。該電源のオフからオンへの切り替えは、例えば、イグニションスイッチがオンされることや、スタートスイッチがオンされること等といった、所謂車両の起動をきっかけとして行われ得る。
まずS110では、接続ノード10は、フラッシュメモリ34の領域SAの検証を実行する。つまり、接続ノード10は、現行プログラムPAが記憶される領域SAに異常(例えば、改ざん等)が生じているか否かを検証する。検証方式は、例えば、署名検証であってもよい。
接続ノード10は、上述のように、リプロプログラムの実行時(すなわち、更新処理時)に、書き換えツール70から新たな制御プログラムと共に受信したシグネチャ情報を領域SGに記憶していてもよい。シグネチャ情報は、上述のように、書き換えツール70から受信した検証期待値である。
接続ノード10は、本ステップでは、領域SAについて検証期待値を生成し、生成した検証期待値が更新処理時に領域SGに記憶されたシグネチャ情報と一致する場合に、検証が成功したと判定してもよい。なお、検証方式としては、任意の検証方式が用いられ得る。例えば、署名検証に代えてMAC認証が用いられてもよい。MACは、Message Authentication Codeの略である。
続くS120では、接続ノード10は、検証が成功したと判定された場合に処理をS130へ移行させ、検証が失敗したと判定された場合に処理をS140へ移行させる。
ここで、検証が成功したと判定された場合に移行するS130では、接続ノード10は、領域SAに記憶されている制御プログラム(すなわち、現行プログラムPA)を実行し、以上で本起動処理を終了する。
一方、検証が失敗したと判定された場合に移行するS140では、接続ノード10は、修復処理を実行し、続くS150では復元された制御プログラムを実行し、以上で本起動処理を終了する。なお以下では、復元を修復と記載することがある。
続いて、接続ノード10が上述の起動処理のS140にて実行する修復処理について、図6に示すフローチャートを用いて説明する。
まずS210では、接続ノード10は、領域SAを消去する。つまり、領域SAに記憶されている現行プログラムPAを消去する。
続くS220では、接続ノード10は、差分復元及び書き込みを実行する。具体的には、接続ノード10は、特定プログラムPBと差分データΔとを用いて、これらの足し合わせで、差分データΔが生成されたときの現行プログラムPAとしての制御プログラムを復元する。そして、接続ノード10は、復元した制御プログラムを現行プログラムPAとして領域SAに書き込む。そして、接続ノード10は、以上で修復処理を終了する。
なお、接続ノード10は、復元した制御プログラムを現行プログラムPAとして領域SAに書き込む際に、検証期待値を生成してもよい。そして、接続ノード10は、生成した検証期待値と領域SGに記憶されているシグネチャ情報とが一致する場合に、書き込みが成功したと判定して、以上で修復処理を終了してもよい。接続ノード10は、書き込みが失敗したと判定した場合(すなわち、生成した検証期待値と領域SGに記憶されているシグネチャ情報とが一致しない場合)、再度書き込みを実行してもよい。
なお、起動部44としての処理(すなわち、ブートプログラムの実行により行われる処理)がS110-S15に相当し、そのうち、検証部45としての処理がS110に相当し、差分復元部46(プログラム復元部)としての処理がS140に相当する。
[2.3 作動]
<更新処理による作動>
更新処理による作動について図2及び図7を用いて説明する。例えば図2に示すように、更新前のフラッシュメモリ34には、領域SAにバージョン1の制御プログラムV1が現行プログラムPAとして記憶されており、領域SBにバージョン1の制御プログラムV1が特定プログラムPBとして記憶されている。
なお、以下では、特定プログラムPBを単にPBと記載することがある。また、例えばバージョン1の制御プログラムV1を単にv1の様に記載することがある。また、例えばバージョン1の制御プログラムV1が現行プログラムPAとして用いられている場合、現行プログラムPAをPA(v1)の様に記載することがある。
領域SCに記憶される差分データΔは、この時点での現行プログラムPAと特定プログラムPBとの差分であり(すなわち、PA(v1)-PB)、PB=v1であることから、この時点では、そのデータ容量はほぼ0である。
ここで、接続ノード10は、書き換えツール70からバージョン2の新たな制御プログラムv2を受信すると、受信した新たな制御プログラムによって現行プログラムPAを更新する。つまり、接続ノード10は、バージョン2の新たな制御プログラムv2を新たな現行プログラムPAとして領域SAに書き込む(すなわち、現行プログラムPAはPA(v2))。
続いて、接続ノード10は、更新された現行プログラムPA(すなわち、受信した新たな制御プログラム)と特定プログラムPBとの差分データΔ(すなわち、PA(v2)-PB)を生成し、領域SCに生成した差分データΔを新たな差分データΔとして書き込む。接続ノード10は、書き換えツール70から新たな制御プログラムを受信する毎に、同様の作動を繰り返す。
このようにして、新たな(すなわち、バージョンが新しい)制御プログラムが受信される毎に、領域SAには最新の制御プログラムが記憶され、領域SCには、最新の制御プログラムと特定プログラムPBとの差分データΔが上書きされ記憶される。
これにより、後述するように、例えば、特定プログラムPBと差分データΔとに基づいて、仮に現行プログラムPAに異常が生じた場合にも、最新の制御プログラムを復元することが可能となる。
なお、図7に、図2に引き続き領域SAに記憶される制御プログラムがバージョン1、2、…5の様に順次更新された後、更にバージョン6の新たな制御プログラムv6の受信によって領域SAと領域SCとが更新される例を示す。ここで、特定プログラムPBはバージョン1の制御プログラムv1のままであるため(すなわち、PB=v1)、差分データΔのデータ容量は、図示されていないが、領域SAに記憶される制御プログラムが順次更新される毎に、増加している。
例えば、領域SAに現行プログラムPAとしてのバージョン6の新たな制御プログラムv6(すなわち、PA(v6))が書き込まれた時点(すなわち、更新後)で、差分データΔ(すなわち、(PA(v5)-PB)のデータ容量が容量閾値以上であったとする。この場合、接続ノード10は、特定更新条件が満たされると判定し、最新のバージョン6の新たな制御プログラムv6によって特定プログラムPBを更新する(すなわち、PB=v6)。更に、接続ノード10は、領域SCに、最新の制御プログラムv6である現行プログラムPA(すなわち、PA(v6))と特定プログラムPBとの差分データΔ(すなわち、PA(v6)-PB)を上書きし記憶する。
領域SCに記憶される差分データΔは、この時点での現行プログラムPAと特定プログラムPBとの差分であり、PB=v6であることから、この時点では、そのデータ容量はほぼ0である。
接続ノード10では、このようにして特定プログラムPBが更新されることによって、差分データΔのデータ容量が抑制される。
<修復処理による作動>
修復処理による作動について図8を用いて説明する。例えば、フラッシュメモリ34には、図2の「差分生成後」に示されているように、領域SG及び領域SA-領域SBのそれぞれに各プログラム及び各データが書き込まれているものとする。フラッシュメモリ34がこの状態のとき、接続ノード10の電源がオフからオンとなり、接続ノード10がブートプログラム(すなわち、起動処理)を実行して領域SAの検証が失敗すると、接続ノード10は修復処理を実行する。
具体的には、接続ノード10は、まず領域SG及び領域SAを消去する(すなわち、図8の「復元前」)。続いて、接続ノード10は、この時点で領域SCに記憶されている差分データΔ(すなわち、PA(v2)-PB)と、特定プログラムPBとに基づいて、これらの足し合わせで、現行プログラムPAとして作動していたバージョン2の制御プログラムv2を復元する。そして、復元した制御プログラムv2を現行プログラムPAとして領域SAに書き込む(すなわち、領域SAにPA(v2)を書き込む)。また、接続ノード10は、復元された現行プログラムPA(すなわち、バージョン2の制御プログラムv2)に含まれるシグネチャ情報を領域SGに書き込む。
このようにして、接続ノード10では、特定プログラムPBと差分データΔとに基づいて、その時点での最新の制御プログラム(例えば、図8の場合であれば、バージョン2の制御プログラムv2)が復元される。
[1-3.効果]
以上詳述した第1実施形態によれば、以下の効果を奏する。
(1a)接続ノード10は、S30では、S20にて新たな制御プログラムが受信される毎に、新たな制御プログラムによって現行プログラムPAを更新する。接続ノード10は、S70、S80では、S30にて現行プログラムPAが更新される毎に、更新された現行プログラムPAと特定プログラムPBとの差分を示す差分データΔを生成する。接続ノード10は、生成された差分データΔによってフラッシュメモリ34に既に記憶されている差分データΔを更新する。
つまり、接続ノード10は、新たな制御プログラムを受信する毎に、接続ノード10自らが差分データΔを生成する。これによると、外部の書き換えツール70は、制御プログラムを書き換える際、差分プログラムではなく新たな制御プログラムそのものを接続ノード10に送信すればよい。このため、差分更新によるプログラム書き換えの様に、複数種類の差分プログラムを予め生成しておく必要が無い。例えば、ディーラのPC等によって、予め差分プログラムを生成しておく必要が無い。また、車両の所有者は制御プログラムの差分を意識する必要が無い。
結果として、本実施形態の接続ノード10を用いることによって、接続ノード10の制御プログラムを書き換える際、書き換えツール70における制御プログラムのバージョン管理の煩雑さを抑制することができる。ひいては、車両の所有者やディーラによる、制御プログラムのバージョン管理の煩雑さを抑制することができる。
また、接続ノード10では、差分データΔと特定プログラムPBとが記憶されている。このため、差分データΔと特定プログラムPBとに基づいて、仮に接続ノード10が実行する現行プログラムPAに異常が生じたとしても、差分データΔが生成されたときの制御プログラムを復元することができる。
また、接続ノード10は、現行プログラムPAが更新される毎に、更新された現行プログラムPAと特定プログラムPBとの差分を示す差分データΔを更新する。つまり、差分データΔが生成されたときに現行プログラムPAとして用いられた制御プログラムは、現行プログラムPAが更新されたときの制御プログラムであり、接続ノード10にて受信した最新の制御プログラムである。このため、差分データΔと特定プログラムPBとを用いた復元の際、接続ノード10にて受信した最新の制御プログラムを復元することができる。
(1b)特定プログラムPBは、接続ノード10が使用可能な制御プログラムであって、S30によって更新された制御プログラム以前の制御プログラムである。ここでいう以前とは、以前のバージョンをいう。これにより、仮に現行プログラムPAに異常が生じた際、差分データΔと特定プログラムPBとに基づいて差分データΔが生成されたときの制御プログラムを復元できなかったとしても、接続ノード10は特定プログラムPBを用いて制御対象を制御することができる。
(1c)接続ノード10は、S140では、特定プログラムPBと差分データΔとに基づいて、差分データΔが生成されたときの制御プログラムを復元する。これにより、差分データΔが生成されたときの制御プログラムであり、接続ノード10にて受信した最新の制御プログラムを復元することができる。
(1d)接続ノード10は、S140では、接続ノード10が起動される際に領域SAに異常が生じていると診断された場合に、制御プログラムを復元する。これにより、接続ノード10が起動される際に現行プログラムPAに異常が生じている場合であっても、復元後の制御プログラムを新たな現行プログラムPAとして、該現行プログラムPAを用いて制御対象の制御を行うことができる。つまり、最新且つ書込み状態が正常であると保証された制御プログラムを、確実に実行することができる。
(1e)接続ノード10は、S40では、新たな制御プログラムが受信されたときに、特定更新条件が満たされるか否かを判定する。接続ノード10は、S60では、S40にて特定更新条件が満たされると判定された場合に、受信された新たな制御プログラムによって特定プログラムPBを更新する。これにより、差分データΔのデータ容量を抑制することができる。
(1f)特定更新条件は、差分データΔのデータ容量が予め定められた容量を示す容量閾値以上であること、である。これにより、特定プログラムPBが領域SBに書き込まれた後に現行プログラムPAの更新が行われた回数が相対的に大きい場合に、特定プログラムPBを更新し、差分データΔのデータ容量を抑制することができる。
なお、上述の実施形態では、接続ノード10が電子制御装置、実行部、プログラム受信部、プログラム更新部、差分更新部、プログラム復元部、特定プログラム部、条件判定部に相当する。フラッシュメモリ34が記憶装置に相当し、書き換えツール70が書き換えツールに相当する。領域SAが制御プログラム領域に相当し、領域SBが特定プログラム領域に相当する。S20がプログラム受信部としての処理に相当し、S30がプログラム更新部としての処理に相当し、S40が条件判定部としての処理相当し、S60が特定プログラム部としての処理に相当する。S70、S80が差分更新部としての処理相当し、S130が実行部としての処理に相当し、S140がプログラム復元部としての処理に相当する。現行プログラムPAが、実行部が実行する制御プログラムに相当する。
[2.第2実施形態]
[2-1.第1実施形態との相違点]
第2実施形態は、基本的な構成は第1実施形態と同様であるため、相違点について以下に説明する。なお、第1実施形態と同じ符号は、同一の構成を示すものであって、先行する説明を参照する。
上述した第1実施形態では、差分データΔのデータ容量が容量閾値以上であること、を特定更新条件とした。第2実施形態では、S130にて実行する制御プログラム(すなわち、現行プログラムPA)のバージョンを示す数値と、特定プログラムPBのバージョンを示す数値とが、バージョン閾値以上離れていること、を特定更新条件とする点で、第1実施形態と相違する。バージョン閾値は、予め定められた数値を示す。
[2-2.処理]
第2実施形態の接続ノード10は、起動処理については、第1実施形態と同様の処理(すなわち、図5-図6)を実行するため、説明を省略する。接続ノード10は、図4に示す更新処理において、S40にて上述の特定更新条件を用いる点で、第1実施形態とは異なる。
具体的には、接続ノード10は、S40では、現行プログラムPAとしての制御プログラムのバージョンを示す数値と、特定プログラムPBとしての制御プログラムのバージョンを示す数値と、を取得する。以下では、現行プログラムPAとしての制御プログラムのバージョンを、単に、現行プログラムPAのバージョンともいう。また、特定プログラムPBとしての制御プログラムのバージョンを、単に、特定プログラムPBのバージョンともいう。
ここで、接続ノード10は、書き換えツール70から新たな制御プログラムを受信して現行プログラムPAを更新するとき(例えば、S30)に、新たな制御プログラムのバージョンを示す数値を、フラッシュメモリ34の所定の領域に記憶してもよい。
一方、接続ノード10は、特定プログラムPBを更新するとき(例えば、S60)に、更新に用いられる新たな制御プログラムのバージョンを示す数値を、特定プログラムPBのバージョンを示す数値として、フラッシュメモリ34の所定の領域に記憶していてもよい。
接続ノード10は、現行プログラムPAのバージョンを示す数値と、特定プログラムPBのバージョンを示す数値とが、バージョン閾値(例えば、5)以上離れている場合に、特定更新条件が満たされており、特定プログラムPBの更新が必要であると判定する。なお、バージョン閾値は、バージョンが離れていることを示すための任意の数値であり得る。バージョン閾値は、フラッシュメモリ34の所定の領域に記憶されていてもよい。
[2-3.効果]
以上詳述した第2実施形態によれば、上述した第1実施形態の効果(1a)-(1e)を奏し、さらに、以下の効果を奏する。
(2a)特定更新条件は、現行プログラムPAのバージョンを示す数値と特定プログラムPBのバージョンを示す数値とが予め定められた数値を示すバージョン閾値以上離れていること、である。これにより、現行プログラムPAとしての制御プログラムのバージョンと特定プログラムPBとしての制御プログラムのバージョンとが離れている場合に、特定プログラムPBを更新し、差分データΔのデータ容量を抑制することができる。
[3.他の実施形態]
以上、本開示の実施形態について説明したが、本開示は上述の実施形態に限定されることなく、種々変形して実施することができる。
(3a)上述の実施形態では、接続ノード10が、更新処理を実行することにより制御プログラムの更新を行い、修復処理を実行することにより制御プログラムの復元を実行したが、本開示はこれに限定されるものではない。接続ノード20が接続ノード10と同様に構成され、接続ノード20が接続ノード10と同様に更新処理及び修復処理を実行して制御プログラムの更新及び復元を実行してもよい。車載システム1に含まれる他の接続ノードについても接続ノード20と同様である。
(3b)上述の実施形態において、バージョンは、例えばバージョン1.1、バージョン1.2…といったように、メインバージョン(例えば、上述の例では1)とサブバージョン(例えば、上述の例では1、2)との組み合わせで示されてもよい。なお、バージョンを示す情報はこのような数値に限定されるものではなく、数値、アルファベット、各種名称、及びこれらの組み合わせ等で示されてもよい。
(3c)上述の実施形態の接続ノード10において、現行プログラムPAと特定プログラムPBとの間に、所定回数以上の制御プログラムの更新が行われていること、特定更新条件としてもよい。
具体的には、例えば、特定プログラムPBのデータ容量に対する差分データΔのデータ容量の割合が、所定割合(例えば、50%)以上になっていること、を特定更新条件として用いてもよい。所定割合は、50%に限定されるものではなく、任意の割合に設定され得る。特定プログラムPBのデータ容量は、特定プログラムPBが更新されるとき(例えば、S60)に、フラッシュメモリ34の所定の領域に記憶されてもよい。また、特定プログラムPBのデータ容量に対する差分データΔのデータ容量の割合は、差分データΔが更新されるとき(例えば、S80)に、フラッシュメモリ34の所定の領域に記憶されてもよい。
また例えば、バージョンがメインバージョンとサブバージョンとの組み合わせによって示される場合、メインバージョンが異なっていること、を特定更新条件として用いてもよい。
(3d)特定更新条件は、上述の各種の特定更新条件のうちの1つであってもよく、上述の各種の特定更新条件のうち複数の条件の組み合わせであってもよい。
(3e)上述の実施形態の接続ノード10において、S10-S30では、新たな制御プログラムのデータ量が多く書き換えツール70から複数回に分けて新たな制御プログラムが送信される場合、上述のS10-S30の処理が複数回繰り返される。また、S10-S30では、ISO14229に従ったプロトコルで現行プログラムPAの書き換えが実行されてもよい。但し、本開示はこれに限定されるものではなく、ISO14229以外のプロトコルに従って書き換えが行われてもよい。
(3f)上述の実施形態において、中継装置50は、外部の書き換えツール70とコネクタ60を介して有線接続されていたが、中継装置50は、無線通信を行う通信部を備え、書き換えツール70と無線接続されてもよい。又は、書き換えツール70は、図示しないコネクタを介して接続ノード10に直接有線接続されてもよい。
(3g)本開示に記載の接続ノード10及びその手法は、コンピュータプログラムにより具体化された一つ乃至は複数の機能を実行するようにプログラムされたプロセッサ及びメモリを構成することによって提供された専用コンピュータにより、実現されてもよい。あるいは、本開示に記載の接続ノード10及びその手法は、一つ以上の専用ハードウェア論理回路によってプロセッサを構成することによって提供された専用コンピュータにより、実現されてもよい。もしくは、本開示に記載の接続ノード10及びその手法は、一つ乃至は複数の機能を実行するようにプログラムされたプロセッサ及びメモリと一つ以上のハードウェア論理回路によって構成されたプロセッサとの組み合わせにより構成された一つ以上の専用コンピュータにより、実現されてもよい。また、コンピュータプログラムは、コンピュータにより実行されるインストラクションとして、コンピュータ読み取り可能な非遷移有形記録媒体に記憶されてもよい。接続ノード10に含まれる各部の機能を実現する手法には、必ずしもソフトウェアが含まれている必要はなく、その全部の機能が、一つあるいは複数のハードウェアを用いて実現されてもよい。
(3h)上記実施形態における1つの構成要素が有する複数の機能を、複数の構成要素によって実現したり、1つの構成要素が有する1つの機能を、複数の構成要素によって実現したりしてもよい。また、複数の構成要素が有する複数の機能を、1つの構成要素によって実現したり、複数の構成要素によって実現される1つの機能を、1つの構成要素によって実現したりしてもよい。また、上記実施形態の構成の一部を省略してもよい。また、上記実施形態の構成の少なくとも一部を、他の上記実施形態の構成に対して付加又は置換してもよい。
(3i)上述した接続ノード10の他、当該接続ノード10を構成要素とする車載システム1、書き換えツール70と当該接続ノード10を含む車載システム1とを構成要素とする書き換えシステム、当該接続ノード10を機能させるためのプログラム、このプログラムを記録した半導体メモリ等の非遷移的実体的記録媒体、プログラムの書き換え方法など、種々の形態で本開示を実現することもできる。
10…接続ノード、20…接続ノード、7…書き換えツール、34…フラッシュメモリ。

Claims (7)

  1. 書き換え可能な記憶装置(34)を含む電子制御装置(10、20)であって、
    制御対象を制御するためのプログラムを制御プログラムとして、前記記憶装置に含まれる制御プログラム領域に記憶される前記制御プログラムを実行し前記制御対象を制御するように構成された実行部(S130)と、
    外部の書き換え装置との間で通信を行うことによって新たな前記制御プログラムを受信するように構成されたプログラム受信部(S20)と、
    前記プログラム受信部によって新たな前記制御プログラムが受信される毎に、新たな前記制御プログラムによって、前記実行部が実行する前記制御プログラムを更新するように構成されたプログラム更新部(S30)と、
    前記プログラム更新部によって前記実行部が実行する前記制御プログラムが更新される毎に、更新された前記制御プログラムと、当該電子制御装置が使用可能な前記制御プログラムであって前記記憶装置に含まれる前記制御プログラム領域とは異なる特定プログラム領域に記憶される特定プログラムとの差分を示す差分データを生成し、生成された前記差分データを新たな前記差分データとして前記記憶装置に記憶するように構成された差分更新部(S70、S80)と、
    を備える電子制御装置。
  2. 請求項1に記載の電子制御装置であって、
    前記特定プログラムは、当該電子制御装置が使用可能な前記制御プログラムであって、前記プログラム更新部によって更新された前記制御プログラム以前の前記制御プログラムである
    電子制御装置。
  3. 請求項1又は請求項2に記載の電子制御装置であって、
    前記特定プログラムと前記差分データとに基づいて、前記差分データが生成されたときの前記制御プログラムを復元するように構成されたプログラム復元部(S140)
    を更に備える電子制御装置。
  4. 請求項3に記載の電子制御装置であって、
    前記プログラム復元部は、当該電子制御装置が起動される際に前記制御プログラム領域に異常が生じていると診断された場合に、前記制御プログラムを復元する
    電子制御装置。
  5. 請求項1から請求項4のいずれか一項に記載の電子制御装置であって、
    新たな前記制御プログラムが受信されたときに、前記特定プログラムを更新するための予め定められた特定更新条件が満たされるか否かを判定するように構成された条件判定部(S40)と、
    前記条件判定部によって前記特定更新条件が満たされると判定された場合に、受信された新たな前記制御プログラムによって前記特定プログラムを更新するように構成された特定プログラム部(S60)と、を更に備える
    電子制御装置。
  6. 請求項5に記載の電子制御装置であって
    前記特定更新条件は、前記差分データのデータ容量が予め定められた容量を示す容量閾値以上であることを少なくとも含む
    電子制御装置。
  7. 請求項5又は請求項6に記載の電子制御装置であって
    前記特定更新条件は、前記実行部が実行する前記制御プログラムのバージョンを示す数値と前記特定プログラムのバージョンを示す数値とが予め定められた数値を示すバージョン閾値以上離れていることを少なくとも含む
    電子制御装置。
JP2022022145A 2022-02-16 2022-02-16 電子制御装置 Pending JP2023119314A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2022022145A JP2023119314A (ja) 2022-02-16 2022-02-16 電子制御装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2022022145A JP2023119314A (ja) 2022-02-16 2022-02-16 電子制御装置

Publications (1)

Publication Number Publication Date
JP2023119314A true JP2023119314A (ja) 2023-08-28

Family

ID=87763280

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022022145A Pending JP2023119314A (ja) 2022-02-16 2022-02-16 電子制御装置

Country Status (1)

Country Link
JP (1) JP2023119314A (ja)

Similar Documents

Publication Publication Date Title
CN109478155B (zh) 车载更新装置、车载更新系统及通信装置的更新方法
JP6760813B2 (ja) ソフトウェア更新装置、ソフトウェア更新方法、ソフトウェア更新システム
US20170139778A1 (en) Relay apparatus, relay method, and computer program product
JP2017097851A (ja) 中継装置、中継方法およびプログラム
JP2020062936A (ja) 車載更新装置、更新処理プログラム及び、プログラムの更新方法
JPWO2005078264A1 (ja) 車両用データのバックアップ方法
JP2020075580A (ja) プログラム更新システム及び更新処理プログラム
US11914871B2 (en) Electronic control device and program-update method
WO2019123747A1 (ja) 自動車用電子制御装置及びその制御方法
US20220063646A1 (en) Onboard device, information generating method, non-transitory storage medium, and vehicle
JP4753929B2 (ja) 車載用制御ユニットの不揮発性メモリの書き換えシステム
JP2018160207A (ja) 車載制御装置、及び、プログラム更新ソフトウェア
JP2020201986A (ja) ソフトウェア更新装置、ソフトウェア更新方法
JP2023119314A (ja) 電子制御装置
US20220391194A1 (en) Ota master, system, method, non-transitory storage medium, and vehicle
JP6935694B2 (ja) 電子制御装置
WO2020195034A1 (ja) 車載更新装置、更新処理システム、更新処理方法及び処理プログラム
JP2022187189A (ja) Otaマスタ、センタ、システム、方法、プログラム、及び車両
JP2021197079A (ja) ソフトウェア更新装置、マスタ、otaマスタ、ネットワークシステム、方法、プログラム、センタ、および車両
US20230333838A1 (en) Method and device for updating software of an onboard computer in a vehicle, comprising a runtime memory, a backup memory and a control memory
US20240160414A1 (en) Vehicle Electronic Control Device and Program Rewriting Method
US20220405083A1 (en) Ota master, system, method, non-transitory storage medium, and vehicle
JP6528700B2 (ja) 車載制御装置、及び車載制御装置を含む車載ネットワーク
US20220342653A1 (en) Ota master, center, system, update method, non-transitory storage medium, and vehicle
WO2024062898A1 (ja) 制動制御装置及びソフトウェア更新方法