[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JP7280319B2 - 情報更新装置 - Google Patents

情報更新装置 Download PDF

Info

Publication number
JP7280319B2
JP7280319B2 JP2021143419A JP2021143419A JP7280319B2 JP 7280319 B2 JP7280319 B2 JP 7280319B2 JP 2021143419 A JP2021143419 A JP 2021143419A JP 2021143419 A JP2021143419 A JP 2021143419A JP 7280319 B2 JP7280319 B2 JP 7280319B2
Authority
JP
Japan
Prior art keywords
update
information
script
ecu
procedure
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
JP2021143419A
Other languages
English (en)
Other versions
JP2021192280A (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.)
Hitachi Astemo Ltd
Original Assignee
Hitachi Astemo Ltd
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 Hitachi Astemo Ltd filed Critical Hitachi Astemo Ltd
Priority to JP2021143419A priority Critical patent/JP7280319B2/ja
Publication of JP2021192280A publication Critical patent/JP2021192280A/ja
Application granted granted Critical
Publication of JP7280319B2 publication Critical patent/JP7280319B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60RVEHICLES, VEHICLE FITTINGS, OR VEHICLE PARTS, NOT OTHERWISE PROVIDED FOR
    • B60R16/00Electric or fluid circuits specially adapted for vehicles and not otherwise provided for; Arrangement of elements of electric or fluid circuits specially adapted for vehicles and not otherwise provided for
    • B60R16/02Electric or fluid circuits specially adapted for vehicles and not otherwise provided for; Arrangement of elements of electric or fluid circuits specially adapted for vehicles and not otherwise provided for electric constitutive elements
    • B60R16/03Electric or fluid circuits specially adapted for vehicles and not otherwise provided for; Arrangement of elements of electric or fluid circuits specially adapted for vehicles and not otherwise provided for electric constitutive elements for supply of electrical power to vehicle subsystems or for

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mechanical Engineering (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)

Description

本発明は、情報更新装置関する。
近年、運転支援機能や自動運転技術の進展により、自動車用の電子制御装置(ECU:Electric Control Unit)に搭載されるソフトウェアの規模が拡大している。またソフトウェアの規模拡大に伴ってソフトウェアの不具合に起因するリコールの回数だけでなく、1回あたりに対応が必要な台数も増加している。そのため、ECUに搭載されるソフトウェアを遠隔で更新する技術へのニーズが高まっている。遠隔でソフトウェアを更新する場合は、更新処理の自動化が求められる。
特許文献1には、サーバおよび複数の制御装置と接続しデータの送受信を行うソフト更新装置であって、前記複数の制御装置毎に、更新データと、前記更新データを制御装置に適用するための適用方法を識別するための識別情報と、を含む更新制御情報を前記サーバから受信する第1の通信部と、前記複数の制御装置毎に、適用される前記更新データを送信する第2の通信部と、前記識別情報に基づいて前記更新データを適用するように、前記第2の通信部を介して、前記複数の制御装置を制御する更新制御部と、を備えることを特徴とするソフト更新装置が開示されている。
特開2016-170740号公報
特許文献1に記載されている発明では、更新処理の柔軟性が不十分である。
本発明の第1の態様による情報更新装置は、車両用制御装置に格納される第1情報を第2情報に更新する情報更新装置であって、新本体、前記更新本体を用いて前記第1情報を前記第2情報に更新するために必要な手順が含まれる手順情報、および前記第1情報の前記第2情報への更新を開始する条件である起動条件を含む更新パッケージを受信するダウンロード制御部と、前記車両用制御装置および情報更新装置が搭載される車両の状態を取得し、前記車両の状態が前記起動条件に合致すると更新実行部に前記手順情報に基づく前記更新を実行させるイベント管理部と、前記手順情報に基づき前記更新を実行する前記更新実行部と、を備え、前記更新本体は、前記第1情報と前記第2情報との差分、または前記第2情報そのもの、のいずれかであり、前記更新パッケージには、前記更新本体、前記手順情報、および前記起動条件が複数組含まれ、前記更新パッケージにはさらに、前記複数の手順情報と前記複数の起動条件との対応関係を示す情報が含まれ、前記更新パッケージにはさらに、一つの前記車両用制御装置に用いられる複数の前記手順情報、および、複数の前記車両用制御装置に用いられる一つの前記手順情報の少なくとも一方が含まれ、前記更新実行部は、所定の場合に前記更新を中断し、前記更新パッケージには前記更新を中断する条件である中断条件が含まれ、前記イベント管理部は、前記車両の状態が前記中断条件に一致すると前記更新実行部に更新中断指令を出力し、前記更新実行部は、前記イベント管理部から前記更新中断指令を受けた場合に前記更新を中断する。
本発明の第2の態様による情報更新装置は、車両用制御装置に格納される第1情報を第2情報に更新する情報更新装置であって、更新本体、前記更新本体を用いて前記第1情報を前記第2情報に更新するために必要な手順が含まれる手順情報、および前記第1情報の前記第2情報への更新を開始する条件である起動条件を含む更新パッケージを受信するダウンロード制御部と、前記車両用制御装置および情報更新装置が搭載される車両の状態を取得し、前記車両の状態が前記起動条件に合致すると更新実行部に前記手順情報に基づく前記更新を実行させるイベント管理部と、前記手順情報に基づき前記更新を実行する前記更新実行部と、を備え、前記更新本体は、前記第1情報と前記第2情報との差分、または前記第2情報そのもの、のいずれかであり、前記更新パッケージには、前記更新本体、前記手順情報、および前記起動条件が複数組含まれ、前記更新パッケージにはさらに、前記複数の手順情報と前記複数の起動条件との対応関係を示す情報が含まれ、前記更新パッケージにはさらに、一つの前記車両用制御装置に用いられる複数の前記手順情報、および、複数の前記車両用制御装置に用いられる一つの前記手順情報の少なくとも一方が含まれ、前記更新実行部は、所定の場合に前記更新を中断し、前記手順情報には前記更新を中断する処理が含まれ、前記更新実行部は、前記手順情報に基づき前記更新を中断する。
本発明の第3の態様による情報更新装置は、車両用制御装置に格納される第1情報を第2情報に更新する情報更新装置であって、更新本体、前記更新本体を用いて前記第1情報を前記第2情報に更新するために必要な手順が含まれる手順情報、および前記第1情報の前記第2情報への更新を開始する条件である起動条件を含む更新パッケージを受信するダウンロード制御部と、前記車両用制御装置および情報更新装置が搭載される車両の状態を取得し、前記車両の状態が前記起動条件に合致すると更新実行部に前記手順情報に基づく前記更新を実行させるイベント管理部と、前記手順情報に基づき前記更新を実行する前記更新実行部と、を備え、前記更新本体は、前記第1情報と前記第2情報との差分、または前記第2情報そのもの、のいずれかであり、前記更新パッケージには、前記更新本体、前記手順情報、および前記起動条件が複数組含まれ、前記更新パッケージにはさらに、前記複数の手順情報と前記複数の起動条件との対応関係を示す情報が含まれ、前記更新パッケージにはさらに、一つの前記車両用制御装置に用いられる複数の前記手順情報、および、複数の前記車両用制御装置に用いられる一つの前記手順情報の少なくとも一方が含まれ、前記更新パッケージには、更新対象となる前記車両用制御装置の一覧である対象一覧、および前記対象一覧の検証に用いる検証情報が含まれ、前記検証情報を用いて前記対象一覧を検証し、前記手順情報に基づき更新される前記車両用制御装置が検証された前記対象一覧に含まれない場合は前記更新実行部による前記更新を停止させるセキュリティフィルタをさらに備える。
本発明によれば、柔軟な更新処理が可能である。
第1の実施の形態にかかるソフトウェア更新システムSの構成を示す図 ゲートウェイ10のハードウェア構成を示すブロック図 ゲートウェイプログラム100の構成を示すブロック図 更新制御部10001の構成を示すブロック図 更新状態D1の一例を示す図 第1の実施の形態における更新パッケージ5の構成を示す図 スクリプト起動制御情報502の構成例 ゲートウェイプログラム100の各構成要素の動作を示すシーケンス図 更新パッケージ5の具体例 全制御情報502Zの具体例 対象ECU一覧504の具体例 スクリプト対応表505の具体例 動作例において車両1に備えられる装置の動作概要を示すシーケンス図 自動運転ECU更新スクリプト5111の具体例を示す図 自動運転ECU更新スクリプト5111の実行に伴うゲートウェイプログラム100の動作を表すシーケンス図 確認用スクリプト5113の具体例を示す図 確認用スクリプト5113の実行に伴うゲートウェイプログラム100の動作を表すシーケンス図 第2の実施の形態における更新制御部10001Aの構成を示すブロック図 スクリプト起動制御情報502Aの構成を示す図 スクリプト起動処理を示すシーケンス図 第2の実施の形態における更新パッケージ5の具体例 第2の実施の形態における全制御情報502Zの具体例 第2の実施の形態におけるソフトウェア更新処理の流れを示すシーケンス図 第2の実施の形態における確認用スクリプト5113Aの具体例 確認用スクリプト5113Aの実行に伴うゲートウェイプログラム100の動作を表すシーケンス図 第2の実施の形態における診断通信サービス呼び出し処理の流れを示すシーケンス図
―第1の実施の形態―
以下、図1~図17を参照して、第1の実施の形態に係るソフトウェア更新システムを説明する。なお本実施の形態ではソフトウェアの更新について説明するが、更新対象はソフトウェアに限定されずパラメータやデータなどに適用可能である。なお本実施の形態では、更新後のソフトウェアを「新プログラム」とも呼び、更新前のソフトウェアを「旧プログラム」とも呼ぶ。
(システム構成)
図1は、第1の実施の形態にかかるソフトウェア更新システムSの構成を示す図である。ソフトウェア更新システムSは車両1、およびサーバ2を備える。車両1とサーバ2は、アクセスネットワークや拠点を接続するインターネット3、および通信サービスプロバイダが提供するアクセスネットワーク4を介して接続される。
車両1は、ゲートウェイ10、通信モジュール11、Human Machine Interface(HMI)12、エンジン制御ECU13、ブレーキ制御ECU14、自動運転ECU15、先進運転支援システム(ADAS) ECU16、エアバッグECU17、Heating Ventilation Air Conditioning(HVAC) ECU18、および車両管理ECU19等の車両1が走行等の機能を実現するために必要とするECU群と、これらECU群をつなぐ車内ネットワーク10a、10bとを備える。本実施の形態では、エンジン制御ECU13および自動運転ECU15の制御プログラムを更新する例を説明する。
車内ネットワークはControl Area Network(CAN)(登録商標)、Local Interconnect Network(LIN)、FlexRay、Ethernet(登録商標)などで構成される。本実施の形態では、車内ネットワーク10bはCANで、車内ネットワーク10aはEthernetで構成される。また、図1では図示しないが、各種ECUなどの車両内の各構成要素は電力線で蓄電池に接続され、電力供給を受けている。ただしここで示す車内ネットワークの構成は一例であり、ネットワークの種類や数はこれに限定されない。
ゲートウェイ10は、各種ECU間通信データの中継を行うとともに、ソフトウェア更新装置として、自機器および車内ネットワークを介して接続されたECUに搭載されるソフトウェアの更新を行う。すなわち本実施の形態ではこのゲートウェイ10の動作を詳しく説明する。ゲートウェイ10は起動のたびに、すなわち車両1のイグニッションがオンになるたびにサーバ2にソフトウェア更新に必要な更新パッケージ5を要求する。サーバ2は更新すべき情報がある場合はゲートウェイ10に更新パッケージ5を送信する。更新パッケージ5の構成は後述する。
通信モジュール11は、ゲートウェイ10やHMI12、各種ECUとサーバ2との通信を中継する。HMI12は、車両1の乗員であるユーザへの情報提示やユーザからの入力を受け付けるための装置であり、画面表示を行う表示装置および各種スイッチ等の入力装置、またはこれらを組み合わせたタッチパネル等により構成される。エンジン制御ECU13は、エンジンの制御を行う。ブレーキ制御ECU14は、ブレーキの制御を行う。自動運転ECU15は、自動運転時に環境の認識や車両1の起動指示等を行う。ADAS ECU16は、自動ブレーキなどの運転支援制御を行う。エアバッグECU17は、エアバッグの制御を行う。HVAC ECU18は、車内の空調制御を行う。車両管理ECU19は、車両状態の管理を行う。
サーバ2は不図示のCPU,ROM,およびRAMを備え、ソフトウェア更新に必要な更新パッケージ5をゲートウェイ10に送信する。ゲートウェイ10は、更新パッケージ5に含まれるデータに基づいて各ECUのソフトウェアを更新する。
(ゲートウェイの構成)
図2は、ゲートウェイ10のハードウェア構成を示すブロック図である。ゲートウェイ10は、マイコン101、FROM(FlashROM)102、CAN用の通信I/F104、およびEthernet用の通信I/F105を備える。マイコン101は、CPU1011、SRAM1012、FROM1013、CAN通信コントローラ1014、およびEthernet通信コントローラ1015を備える。マイコン101のCPU1011は、FROM1013に格納されるプログラムを実行し、ゲートウェイ10内の他の構成要素を制御するとともに、車内ネットワークにより接続された他の機器とデータ送受信指示を行うなどしてゲートウェイ10を機能させる。
FROM102は、不揮発メモリであり、受信した更新パッケージ5が格納される。通信I/F104は、CAN通信用のインタフェースであり、マイコン101の指示に基づき車内ネットワーク10bを介して、車内ネットワーク10bに接続されたECUとの間でデータの送受信を行う。通信I/F105は、Ethernet通信用のインタフェースであり、マイコン101の指示に基づき車内ネットワーク10aを介して、車内ネットワーク10aに接続された機器との間でデータの送受信を行う。
図3は、ゲートウェイ10上で動作するゲートウェイプログラム100の構成を示すブロック図である。ゲートウェイ10の機能を実現するゲートウェイプログラム100は、マイコン101のFROM1013に格納されCPU1011により実行される。図3では、機能的なまとまりをブロックとして表現しており、各ブロックが複数に分割されてもよいし、いくつかのブロックが統合されてもよい。また制御プログラムは、1つのソフトウェアにより実現されてもよいし、2以上のソフトウェアの組合せにより実現されてもよい。
ゲートウェイプログラム100は、更新制御部10001、更新データ管理部10002、更新状態管理部10003、車両状態管理部10006、および通信制御部10007を含む。
更新制御部10001は、通信制御部10007を介して車内ネットワーク10aに接続された機器と通信を行い、更新パッケージ5の取得や車両の状態やソフトウェア更新処理の状況の送信を行う。更新制御部10001が取得した更新パッケージ5は、FROM102に格納される。更新パッケージ5の構成は後述する。更新制御部10001は、通信制御部10007を介して車内ネットワーク10bに接続されたECUと通信を行い、そのECUを制御してそのECUに搭載されるソフトウェアを更新する。詳しくは後述するが、ソフトウェアの更新は、更新データ管理部10002を介して取得した更新パッケージ5と車両状態管理部10006を介して取得した車両システム状態に基づいて実施される。
更新データ管理部10002は、FROM102から更新パッケージ5を取得し、更新制御部10001に提供する。更新状態管理部10003は、更新制御部10001から更新状態を取得し、FROM1013に更新状態D1として格納する。また、格納した更新状態D1を更新制御部10001に提供する。車両状態管理部10006は、通信制御部10007を介して車内ネットワーク10aおよび10bに接続された機器と通信を行い車両システムの状態を取得し、車両状態を更新制御部10001に提供する。車両状態とはたとえば、イグニッションのオンやオフ、走行の開始などである。
通信制御部10007は、更新制御部10001等の指示に従って、CAN通信コントローラ1014およびEthernet通信コントローラ1015を制御し、車内ネットワーク10aおよび10bに接続された機器と通信を行う。車内ネットワーク10aに接続された機器と通信する際には、通信制御部10007は、TCP/IPやUDP/IPなどのパケットを解析・生成する。また車内ネットワーク10aに接続された機器と通信する際には、通信制御部10007は、CANフレームを解析・生成する。
図4は、ゲートウェイ10がプログラムを実行することにより実現される機能の1つである更新制御部10001の構成を示すブロック図である。更新制御部10001は、イベント管理部100011、制御部100012、スクリプト実行部100013、サービス提供部100014、およびダウンロード制御部100015を含む。ただし本実施の形態においてスクリプトとは、ゲートウェイ10への動作指令であり、スクリプトには条件式、制御文、およびコマンドの実行命令を含む。本実施の形態におけるスクリプトとは、シェルスクリプト、PerlやPythonなどのインタプリタにより解釈されるテキストファイルである。
イベント管理部100011は、車両1の状態変化やダウンロード完了などのイベントを検出し、制御部100012にイベントの発生を伝達する。制御部100012は、イベント管理部100011から伝達されたイベントの発生に従って、スクリプト実行部100013へのスクリプトの実行指示やダウンロード制御部100015へのダウンロード開始指示を行う。スクリプト実行部100013は、制御部100012から指示されたスクリプトを解析して実行する。またスクリプト実行部100013は、制御部100012から中断指令を受けるとスクリプトの実行を中断する。
サービス提供部100014は、スクリプト実行部100013に対して車両状態取得や更新状態の記録・読み出し、診断通信機能などのサービスを提供する。診断通信サービスでは、Universal Diagnostic Service(UDS)等の診断通信プロトコルに準拠したコマンドの生成・解析を行う。また、通信制御部10007を介して生成したコマンドの送信および応答の受信を行う。ダウンロード制御部100015は、通信制御部10007を介して車内ネットワーク10aに接続された通信モジュール11と通信を行い、サーバ2から更新パッケージ5を取得する。
このように、イベント管理部100011が車両状態や更新状態の変化をイベントとして検出し、スクリプト起動の判定をすることで、任意のタイミングで必要な処理を実行開始することができる。また、サービス提供部100014を介して更新制御部10001の外で管理されている更新状態を取得・記録することで、スクリプトからは直接アクセスしにくい不揮発メモリなどへの書き込み・読み出しが適切に行える。
(更新状態D1)
図5は、ゲートウェイ10の更新状態管理部10003が管理する更新状態D1の一例を示す図である。図5には、更新状態D1をテーブルとして管理し、ECU毎の更新状態を記録する場合の例が示されている。更新状態D1は、ECU ID D101、更新開始状態D102、完了ブロックD103のフィールドを備える。ECU ID D101は、ECUを識別するための情報が格納されるフィールドである。更新状態D102は、当該ECUの更新処理が開始済みか否かを示す識別情報が格納されるフィールドであり、たとえば「開始未」、「開始済み」または「更新完」が格納される。完了ブロックD103は、処理が成功したブロックの識別情報、たとえばブロック番号が格納されるフィールドである。
符号D11で示す1つ目のレコードは、自動運転ECU15の更新状態を示すレコードである。このレコードのECU ID D101のフィールドには「自動運転ECU」が格納され、更新開始状態D102のフィールドには更新処理中であることを示す「開始済み」が格納され、完了ブロックD103のフィールドには最後に処理完了したブロックがブロックnであることを示す「Block n」が格納されている。
符号D12で示す2つ目のレコードは、エンジン制御ECU13の更新状態を示すレコードである。このレコードのECU ID D101のフィールドには「エンジン制御ECU」が格納され、更新開始状態D102のフィールドには更新処理を開始していないことを示す「開始未」が格納されている。ここでは、エンジン制御ECU13の更新は開始されていないため、完了ブロックD103のフィールドには値が設定されていない。
ここでは2つのレコードを説明したが、これらのレコードは次の場合に作成される。すなわち、ゲートウェイ10が受信した更新パッケージ5において、更新対象のECUとして記載されていた場合に作成される。またこの更新状態D1は後述するように逐次記録される。このように、更新状態D1を逐次記録することにより、更新中断後に正常に復帰して起動した際に更新が完了せずに中断していることや、更新が中断された箇所を認識して適切な処理を開始することができる。
(更新パッケージ5)
図6は、ゲートウェイ10がサーバ2から取得する更新パッケージ5の構成を示す図である。更新パッケージ5は、1または複数の更新用スクリプト501と、1または複数のスクリプト起動制御情報502と、1または複数のECU更新データ503と、対象ECU一覧504と、スクリプト対応表505とから構成される。更新パッケージ5に含まれる全ての更新用スクリプト501をまとめて、全スクリプト501Zと呼ぶ。更新パッケージ5に含まれる全てのスクリプト起動制御情報502をまとめて、全制御情報502Zと呼ぶ。更新パッケージ5に含まれる全てのECU更新データ503をまとめて、全更新データ503Zと呼ぶ。
更新用スクリプト501は、更新パッケージ5の中に1つ以上存在する。更新用スクリプト501にはソフトウェアの更新に必要な手続きが記述されている。更新パッケージ5に含まれる更新用スクリプト501の数は、更新対象のECUの数と同等以上である。更新用スクリプト501はスクリプト実行部100013で実行可能な形で記述されている。スクリプトとして記述される処理、すなわち更新に必要な手続きはたとえば、更新対象のECUへ送信する制御指令の種類およびその順番、車両状態の確認、ユーザへの許諾取得、ECUごとのリカバリ処理、および更新したソフトウェアの有効化処理などである。
スクリプト起動制御情報502は、更新パッケージ5の中に1つ以上存在する。スクリプト起動制御情報502は更新用スクリプト501と同じ数だけ更新パッケージ5に含まれ、それぞれの更新用スクリプト501に対応する。スクリプト起動制御情報502には、更新用スクリプト501の制御、すなわち起動および中断に必要な情報が記述されている。スクリプト起動制御情報502の詳細については後述する。
ECU更新データ503は、更新パッケージの中に1つ以上存在する。ECU更新データ503にはソフトウェアの更新に必要なデータが格納されている。ECU更新データ503は具体的には、書き込み先のアドレス情報などを示すメタデータや、ソフトウェアそのもの、圧縮されたソフトウェア、または新旧ソフトウェアの差分データである。ECU更新データ503は、いわば更新本体であり、更新パッケージ5に含まれる他の情報は更新本体であるECU更新データ503を使ったソフトウェア更新のサポートのために存在する。更新パッケージ5に含まれるECU更新データ503の数は、更新対象のECUの数と同一である。
対象ECU一覧504は、更新パッケージ5の中に1つ存在する。対象ECU一覧504には、更新パッケージ5が更新対象とするECUの一覧を示す情報が格納される。スクリプト対応表505は、更新パッケージ5の中に1つ存在する。スクリプト対応表505には、更新用スクリプト501とECU更新データ503と更新対象となるECUとの対応を示す情報が格納される。
このように、更新パッケージ5にスクリプト起動制御情報502を含めることで、必要な処理を必要なタイミングで起動するように制御することが可能となる。
図7は、スクリプト起動制御情報502の構成例である。スクリプト起動制御情報502は、対象スクリプト5021、起動条件5022、および中断条件5023から構成される。起動条件5022は、起動イベント50221、順序50222、および更新状態50223から構成される。中断条件5023は中断イベント50231から構成される。ただし起動条件5022および中断条件5023は他の構成要素を含んでもよい。
対象スクリプト5021は、そのスクリプト起動制御情報502が起動対象とする更新用スクリプト501を示す。起動イベント50221は、対象スクリプト5021で指定された更新用スクリプト501を起動するトリガとするイベントを示す。ここでいうイベントとはイグニッションのオンやオフ、車両1の走行の開始などの車両状態の変化やダウンロードの完了などである。中断イベント50231は、対象スクリプト5021で指定された更新用スクリプト501の実行を中断するトリガとするイベントを示す。順序50222は、1つのイベントに対して複数のスクリプトを起動する場合の起動順序を示す。更新状態50223は、当該イベント発生時にスクリプト起動可否を判断するための更新状態を示す。
このように、スクリプト起動制御情報502に車両状態および更新状態の変化に対応する起動イベント50221を含めることで、必要な処理を必要なタイミングで起動するように定義することが可能となる。また、スクリプト起動制御情報502に中断イベント50231を含めることで、車両状態等の変化に応じて必要なタイミングで実行したスクリプトを中断するように定義することが可能となる。また、スクリプト起動制御情報502に起動条件5022に順序50222を含むことで、ひとつのイベントで複数のスクリプトを起動したい場合に、適切な制御を行うことができる。また、起動条件5022に更新状態50223を含むことで、更新の進捗に応じて適切なスクリプトを起動することができる。
(シーケンス図)
図8は、ソフトウェアの更新におけるゲートウェイプログラム100の各構成要素の動作を示すシーケンス図である。更新用スクリプト501の動作を表すシーケンス図は後に改めて説明する。
イベント管理部100011は、車両1の状態を監視するために、車両状態管理部10006および更新状態管理部10003からそれぞれ車両状態、更新状態を取得する(S101、S102)。イベント管理部100011は、状態取得の結果、状態変化を検出した場合(S103のYES)、更新データ管理部10002を介して更新パッケージ5に含まれるスクリプト起動制御情報502を読み出す(S104)。状態変化とはたとえば、イグニッションがOFFからONになる、イグニッションがONからOFFになる、更新パッケージ5のダウンロードが完了する、などである。
次にイベント管理部100011は、読み出したスクリプト起動制御情報502の中に、検出したイベントに対応して起動すべきスクリプトがあるか否かを検索する(S105)。起動すべき更新用スクリプト501がある場合(S105のYES)は、イベント管理部100011は起動条件5022の順序50222および更新状態50223を確認する。そしてイベント管理部100011は、指定された順序で、更新状態に合致する更新用スクリプト501を実行するように制御部100012を介してスクリプト実行部100013に起動要求を行う(S106)。スクリプト実行部100013は、指定された更新用スクリプト501を実行し(S107)、制御部100012を介してイベント管理部100011に応答を返す(S108)。
イベント管理部100011は、実行結果および取得したスクリプト起動制御情報に基づいて次に起動すべき更新用スクリプト501が存在するか否かを確認(S109)し、起動するスクリプトがある場合は次の更新用スクリプト501を起動する(S109のYES)。また、次の起動対象がない場合(S109のNO)は、処理を終える。イベント管理部100011は、スクリプト実行部100013が更新用スクリプト501を実行している際にも車両状態および更新状態を監視し、起動制御情報に含まれる中断イベントの発生を検出する(S110)。中断イベント50231の発生を検出すると、制御部100012を介してスクリプト実行部100013に中断指令を出力する(S111)。
このように、イベント管理部100011で車両状態や更新状態の変化イベントを検出し、更新用スクリプト501を起動することで、任意のタイミングで必要な処理を実行開始することができる。また、イベント管理部100011が車両状態や更新状態の変化イベントを検出し、更新用スクリプト501の実行を中断する旨の判定をすることで、任意のタイミングで必要な処理を中断することができる。また、更新用スクリプト501とともにサーバ2から取得するスクリプト起動制御情報502に起動イベント50221や中断イベント50231を含むことで、更新内容ごとに更新を開始する契機となるイベントを変更することができる。
また、起動条件5022に順序50222を含み、それに基づいて更新用スクリプト501を起動することで、ひとつのイベントを契機として複数の更新用スクリプト501を適切な順番で起動することができる。ここでは、状態を継続的に読み出す例を示したが、あらかじめイベント管理部100011が車両状態管理部10006および更新状態管理部10003に通知対象の状態変化を登録してもよい。この場合は車両状態管理部10006および更新状態管理部10003は、登録された情報に基づいてイベント管理部100011にイベントの発生を通知する。
(動作例)
以下、図9~図17を用いて、自動運転ECU15とエンジン制御ECU13を更新する場合の動作例を説明する。ここでは、自動運転ECU15は2面ROMで構成され、車両1が走行している状態でも書き込みが可能である。一方、エンジン制御ECU13は、エンジン制御中すなわち車両1の走行中は書き込みができず、イグニッションオフ後のみ書き込みが可能である。
自動運転ECU15はゲートウェイ10が更新パッケージ5を受信すると、ゲートウェイ10の動作指令に基づき、即座に新たなソフトウェアの書き込みを行い、ゲートウェイ10から有効化命令を受信すると新たなソフトウェアを有効にする。エンジン制御ECU13は、ゲートウェイ10が更新パッケージ5を受信してもすぐには更新を実行しない。車両1のイグニッションがオフにされると、ゲートウェイ10がエンジン制御ECU13にソフトウェアの更新を開始させる。
(動作例|更新パッケージ5)
図9は、動作例における更新パッケージ5の具体例である。更新パッケージ5は前述のとおり1または複数の更新用スクリプト501と、1または複数のスクリプト起動制御情報502と、1または複数のECU更新データ503と、対象ECU一覧504と、スクリプト対応表505とから構成される。図9に示す例では、自動運転ECU更新スクリプト5111、エンジン制御ECU更新スクリプト5112、確認用スクリプト5113、および新プログラム有効化用スクリプト5114のそれぞれが更新用スクリプト501である。また自動運転ECU更新スクリプト起動制御情報5121、エンジン制御ECU更新スクリプト起動制御情報5122、確認用スクリプト起動制御情報5123、および新プログラム有効化用スクリプト起動制御情報5124のそれぞれがスクリプト起動制御情報502である。また自動運転ECU更新データ5131およびエンジン制御ECU更新データ5132のそれぞれがECU更新データ503である。
自動運転ECU更新スクリプト5111は、自動運転ECU更新データ5131を用いて自動運転ECU15に新プログラムを書き込むための手順が記述されたスクリプトである。具体的には、ゲートウェイ10から自動運転ECU15に診断通信を用いて新プログラムを転送し、自動運転ECU15に新プログラムを書き込む手順が記述されている。エンジン制御ECU更新スクリプト5112は、エンジン制御ECU更新データ5132を用いてエンジン制御ECU13に新プログラムを書き込むための手順が記述されたスクリプトである。具体的には、ゲートウェイ10からエンジン制御ECU13に診断通信を用いて新プログラムを転送し、エンジン制御ECU13に新プログラムを書き込む手順が記述されている。
確認用スクリプト5113は、エンジン制御ECU13への書き込みや、新プログラムの有効化の実行が可能な状態か否かを確認するための手順が記述されたスクリプトである。具体的には、車両1が停車中か、すなわち車速がゼロか否か、および新プログラムの有効化をユーザは許諾しているか否かを確認する手順が記述されている。新プログラム有効化用スクリプト5114は、自動運転ECU15およびエンジン制御ECU13に新プログラムを書き込んだ後に、次回起動時に新プログラムを動作させるために必要な手順が記述されたスクリプトである。具体的には、自動運転ECU15およびエンジン制御ECU13に新プログラム有効化命令を発行するステップが記述されている。
自動運転ECU更新データ5131は、自動運転ECU15のソフトウェアの更新に必要となるデータであり、書き込み先アドレス等が記述されたメタデータと、自動運転ECU15に書き込まれたプログラムと、新しいプログラムから生成された差分データから構成される。エンジン制御ECU更新データ5132は、エンジン制御ECU13のソフトウェアの更新に必要となるデータであり、書き込み先アドレス等が記述されたメタデータと、エンジン制御ECU13に書き込まれたプログラムと、新しいプログラムから生成された差分データから構成される。
スクリプト起動制御情報502を構成する自動運転ECU更新スクリプト起動制御情報5121、エンジン制御ECU更新スクリプト起動制御情報5122、確認用スクリプト起動制御情報5123、および新プログラム有効化用スクリプト起動制御情報5124は、それぞれ自動運転ECU更新スクリプト5111、エンジン制御ECU更新スクリプト5112、確認用スクリプト5113、および新プログラム有効化用スクリプト5114の起動および中断に必要な情報が記述されている。図を参照して詳しく説明する。
(動作例|スクリプト起動制御情報502)
図10は、更新対象が自動運転ECU15とエンジン制御ECU13である場合の全制御情報502Z、すなわち更新パッケージ5に含まれる全てのスクリプト起動制御情報502の一例を示す図である。ここでは一覧性の確保のために、全制御情報502Zを1つのテーブルとして表現している。すなわち図10には複数のレコードが記載されているが、これらは上から順に自動運転ECU更新スクリプト起動制御情報5121、エンジン制御ECU更新スクリプト起動制御情報5122、確認用スクリプト起動制御情報5123、および新プログラム有効化用スクリプト起動制御情報5124に対応する。
図10に示すそれぞれのスクリプト起動制御情報502の構成は、図7に示した構成と同様である。すなわちそれぞれのスクリプト起動制御情報502は、対象スクリプト5021、起動条件5022、および中断条件5023から構成される。起動条件5022は、起動イベント50221、順序50222、および更新状態50223から構成される。そして中断条件5023は中断イベント50231から構成される。ただし自動運転ECU更新スクリプト起動制御情報5121のみ2つの条件が設定されているので図10において2行にわたって記載されている。
図10の最初のレコード、すなわち自動運転ECU更新スクリプト起動制御情報5121に格納される1つめの情報は以下のとおりである。対象スクリプト5021のフィールドには「自動運転ECU更新用スクリプト」が格納される。起動イベント50221のフィールドには更新パッケージのダウンロード完了を示す「DL完」が格納される。順序50222のフィールドには当該イベント発生時に1番目に起動することを示す「1」が格納される。更新状態50223のフィールドには更新状態を問わずに起動することを示す「-」が格納される。中断イベント50231のフィールドにはイグニッション信号がOFFされたタイミングを示す「IGN-OFF」が格納される。
図10の2番目のレコード、すなわち自動運転ECU更新スクリプト起動制御情報5121に格納される2つめの情報は、以下のとおりである。対象スクリプト5021のフィールドには「自動運転ECU更新用スクリプト」が格納される。起動イベント50221のフィールドにはイグニッションがONになったタイミングを示す「IGN-ON」が格納される。順序50222のフィールドには当該イベント発生時に1番目に起動することを示す「1」が格納される。更新状態50223のフィールドには自動運転ECU更新用スクリプトによる自動運転ECU16へのデータ転送が未完了であることを示す「自動運転ECU更新未完」が格納される。中断イベント50231のフィールドには「IGN-OFF」が格納される。
図10の3番目のレコード、すなわちエンジン制御ECU更新スクリプト起動制御情報5122に格納される情報は、以下のとおりである。対象スクリプト5021のフィールドには「エンジン制御ECU更新用スクリプト」が格納される。起動イベント50221のフィールドには「IGN-OFF」が格納される。順序50222のフィールドには当該イベント発生時に2番目に起動することを示す「2」が格納される。更新状態50223のフィールドには更新状態を問わずに起動することを示す「-」が格納される。中断イベント50231のフィールドには「IGN-ON」が格納される。
図10の4番目のレコード、すなわち確認用スクリプト起動制御情報5123に格納される情報は、以下のとおりである。対象スクリプト5021のフィールドには「確認用スクリプト」が格納される。起動イベント50221のフィールドには「IGN-OFF」が格納される。順序50222のフィールドには当該イベント発生時に1番目に起動することを示す「1」が格納される。更新状態50223のフィールドには自動運転ECUの更新が完了している場合のみ当該スクリプトを起動することを示す「自動運転ECU更新完」が格納される。ここでいう更新とは、自動運転ECU更新スクリプトによる自動運転ECU15への新プログラムの書き込みが完了した状態をいう。中断イベント50231のフィールドには「IGN-ON」が格納される。
図10の5番目のレコード、すなわち新プログラム有効化用スクリプト起動制御情報5124に格納される情報は、以下のとおりである。対象スクリプト5021のフィールドには「新プログラム有効化用スクリプト」が格納される。起動イベント50221のフィールドにはイグニッション信号がOFFされたタイミングを示す「IGN-OFF」が格納される。順序50222のフィールドには当該イベント発生時に3番目に起動することを示す「3」が格納される。更新状態50223のフィールドには更新状態を問わずに起動することを示す「-」が格納される。中断イベント50231のフィールドには「IGN-ON」が格納される。
(動作例|対象ECU一覧504)
図11は、動作例における対象ECU一覧504の具体例である。図11に示す例では、本動作例が自動運転ECU15およびエンジン制御ECU13を更新対象としているので、更新対象ECUとして自動運転ECU15およびエンジン制御ECU13が列挙されている。
(動作例|スクリプト対応表505)
図12は、動作例におけるスクリプト対応表505の具体例である。図12に示す例では、自動運転ECU更新スクリプト5111と自動運転ECU更新データ5131と自動運転ECU15とが対応すること、およびエンジンECU更新スクリプト5112とエンジン制御ECU更新データ5132とエンジン制御ECU13とが対応することが示されている。
(動作例|シーケンス図)
図13は、自動運転ECU15とエンジン制御ECU13を更新する場合の車両1に備えられる装置の動作概要を示すシーケンス図である。すなわち先に示した図8では、ゲートウェイ10に含まれるゲートウェイプログラム100の各構成要素の動作を示したが、これから説明する図13では図8よりもマクロな視点で説明する。また図13に示す動作は図10に示す全制御情報502Zに対応している。
ゲートウェイ10は、イグニッションがONにされると(S301)、通信モジュール11を介してサーバ2に更新パッケージ5の取得要求を行う(S302)。次に、要求に基づきサーバ2から送信された更新パッケージ5を取得してゲートウェイ10のFROM102に保持するとともに(S303)、更新状態D1をダウンロード完了にする。
イベント管理部100011は、更新パッケージ5のダウンロードが完了したことを検出すると、更新データ管理部10002を介して更新パッケージ内のスクリプト起動制御情報502を読み出し、起動イベント50221が「DL完」となっている自動運転ECU更新スクリプト5111を起動する。この起動は、制御部100012を介してスクリプト実行部100013に指示することで実行される。スクリプト実行部100013は自動運転ECU更新スクリプト5111を実行して自動運転ECU15の更新を行う(S304)。S304の詳細は後に説明する。自動運転ECU15の更新が完了し、更新状態D1の自動運転ECU15の更新状態D102が「完了」に書き換えられる。
次にイベント管理部100011は、イグニッションがOFFになったことを検出(S305)すると、スクリプト起動制御情報502を読み出す。そしてイベント管理部100011は、起動イベント50221が「IGN-OFF」であるスクリプトが3つ存在することを把握し、その中で順序50222が「1」である確認用スクリプト起動制御情報5123に注目する。この確認用スクリプト起動制御情報5123では更新状態D1が「自動運転ECU更新完」であるため、更新状態管理部10003を介して自動運転ECU15の更新状態D1が「完了」であることを確認する。ここでは自動運転ECU15の更新状態D1が「完了」なので、イベント管理部100011は確認用スクリプト5113の起動を、制御部100012を介してスクリプト実行部100013に指示する。スクリプト実行部100013は確認用スクリプトを実行して更新状態D1とユーザ許諾の確認を行う(S306)。S306の詳細は後述する。
確認用スクリプト5113の実行が完了すると、イベント管理部100011は、起動イベントが「IGN-OFF」、順序が「2」であるエンジンECU更新スクリプト5112の起動を制御部100012を介してスクリプト実行部100013に指示する。スクリプト実行部100013は当該スクリプトを実行してエンジン制御ECU13の更新を行う(S307)。
エンジン制御ECU更新スクリプト5112の実行が完了すると、イベント管理部100011は、起動イベントが「IGN-OFF」、順序が「3」である新プログラム有効化用スクリプト5114を起動する。この起動は制御部100012を介してスクリプト実行部100013に指示することにより行われる。スクリプト実行部100013は当該スクリプトを実行して自動運転ECU15とエンジン制御ECU13の新プログラムの有効化を行う(S308)。
(動作例|スクリプトと動作の対応)
図14~図17を参照してスクリプトの具体例と動作の対応を説明する。図14は、自動運転ECU更新スクリプト5111の具体例を示す図である。図15は、自動運転ECU更新スクリプト5111の実行に伴うゲートウェイプログラム100の動作を表すシーケンス図である。すなわち図15は図13のS304の詳細を示す。図16は、確認用スクリプト5113の具体例を示す図である。図17は、確認用スクリプト5113の実行に伴うゲートウェイプログラム100の動作を表すシーケンス図である。すなわち図17は図13のS306の詳細を示す。なお図14および図16の左端に記載の数字の連番はスクリプトの行番号であり、説明のために記載している。
図14を参照して自動運転ECU更新スクリプト5111の記載を説明する。図14の1行目にはバージョン情報を要求することが記載されており、2行目にはバージョンが「1.00」でない場合には23行目以下のエラー処理に進むことが記載されている。なお5行目や12行目などにも例外処理による終了が記載されているが説明を省略する。4行目にはセッションを「走行中書込モード」に変更するセッション変更要求を送信することが記載され、7行目には更新状態D1を「START OTA」に変更する要求を送信することが記載されている。9行目には変数に初期値「1」を設定することが記載されている。
10~15行目には、全てのブロックを対象に順番に新プログラムを自動運転ECU15に送信することが記載されている。17行目にはセッションを「通常モード」に変更するセッション変更要求を送信することが記載され、19行目には更新状態D1を「Complete Transfer」に変更する要求を送信することが記載されている。21行目には正常終了を示す返り値を自動運転ECU更新スクリプト5111の実行を指示した制御部100012に返すことが記載されており、23行目以下はエラーによる終了をスクリプトの呼び出し元に返すことが記載されている。
スクリプト実行部100013が自動運転ECU更新スクリプト5111を実行する場合のゲートウェイプログラム100の動作を図15を参照して説明する。ここでは、自動運転ECU15を更新する例を示すが、本動作は基本的に他のECUでも同様である。また、ここでの更新は自動運転ECU15へのデータ転送と書き込みであり、新プログラムの有効化は含まない。
ゲートウェイ10の制御部100012は、スクリプト実行部100013に自動運転ECU更新用スクリプト5111の起動を要求する(S30401)。スクリプト実行部100013は自動運転ECU更新スクリプト5111に記述された手順に従って以下の処理を実施する。
スクリプト実行部100013は、サービス提供部100014の診断通信サービスを呼び出し、通信制御部10007を介して自動運転ECU15にバージョン取得要求を送信する(S30402)。この要求に基づきサービス提供部100014(S30403)および通信制御部10007(S30404)が動作する。S30402はスクリプト実行部100013が図14の1行目の記載を解釈して実行したものである。自動運転ECU15は、要求に応じてバージョン情報をゲートウェイ10に送信する(S30405)。ゲートウェイ10のサービス提供部100014は通信制御部10007を介してバージョンを取得し(S30406)、スクリプト実行部100013に応答する(S30407)。
次にスクリプト実行部100013は、図14の2行目の記載を解釈して、受信したバージョン情報をスクリプトに記載のバージョン情報と比較(S30408)し、一致しない場合は処理を終了する(S30408のNO)。なお比較対象とするバージョン情報をスクリプト内に書き込む代わりに、更新データ5内にメタデータとして保持してもよい。バージョン情報が想定と一致する場合は(S30408のYES)、スクリプト実行部100013は、図14の4行目の記載を解釈して実行する。すなわちスクリプト実行部100013は、サービス提供部100014の診断通信サービスを呼び出し(S30409)、通信制御部10007を介して(S30410)、自動運転ECU15にセッション変更要求を送信する(S30411)。
このセッション変更要求は、ソフトウェア書換えを行うための走行中書込モードの識別情報を含む。自動運転ECU15は、要求を受諾可能な場合はセッション変更要求にて指定されたモードに内部状態を遷移させたのち、ゲートウェイ10に受諾応答を送信する(S30412)。ゲートウェイ10のサービス提供部100014は通信制御部10007を介して応答を取得し(S30413)、スクリプト実行部100013に応答する(S30414)。スクリプト実行部100013は応答が受諾応答であれば、図14の7行目の記載を解釈して、更新処理開始済であることを記録するため、サービス提供部100014の更新状態保存サービスを呼び出す(S30415)。サービス提供部100014は、更新状態管理部10003に更新状態の保存を要求し(S30416)、保存結果をスクリプト実行部100013に応答する(S30417)。
次にスクリプト実行部100013は、図14の10行目~15行目の記載を解釈して、以下のようにループ制御を伴うブロック転送処理S30460を行う。すなわち図15において破線で囲むブロック転送処理S30460は、図14におけるループ内の処理、具体的には11行目から14行目の処理に相当する。ブロック転送処理S30460の詳細は以下のとおりである。
スクリプト実行部100013は、自動運転ECU更新データ5131に含まれる新プログラムまたは圧縮された新プログラムまたは差分データの1ブロック分を送信するために、サービス提供部100014の診断通信サービスを呼び出す(S30421)。サービス提供部100014は、データ転送の診断通信サービス実行要求を受け取ると最初に、通信制御部10007を介して自動運転ECU15に転送開始要求を送信する(S30422、S30423)。自動運転ECU15は、要求を受諾可能な場合は、ゲートウェイ10に受諾応答を送信する(S30424)。
サービス提供部100014は通信制御部10007を介して応答を取得すると(S30425)、通信制御部10007を介して自動運転ECU15に新プログラムまたは圧縮された新プログラムまたは差分データの1ブロックの一部を転送する(S30426、S30427)。自動運転ECU15は、データを受信すると、ゲートウェイ10に受信応答を送信する(S30428)。サービス提供部100014は、通信制御部10007を介して応答を受信する(S30429)。サービス提供部100014は、直前の転送開始要求で要求したデータサイズ分の送信が終わるまで、データ転送処理(S30460)を繰り返す。データ転送が完了すると、サービス提供部100014は通信制御部10007を介して(S30430)、自動運転ECU15に転送完了通知を送信する(S30431)。
自動運転ECUは、ゲートウェイ10に受諾応答を送信する(S30432)。サービス提供部100014は、通信制御部10007を介して応答を受信し(S30433)、転送結果をスクリプト実行部100013に応答する(S30434)。スクリプト実行部100013は、応答が成功であれば、図14の14行目の記載を解釈して、当該ブロックは転送済であることを記録するために、サービス提供部100014の更新状態保存サービスを呼び出す(S30435)。サービス提供部100014は、更新状態管理部10003に更新状態(完了ブロック)の保存を要求し(S30436)、保存結果をスクリプト実行部100013に応答する(S30437)。以上がブロック転送処理S30460の詳細である。スクリプト実行部100013は、更新データに含まれる全ブロックを転送するまで、ブロック転送処理S30460を繰り返す。
全ブロックの転送が完了すると、スクリプト実行部100013は、図14の17行目の記載を解釈して、サービス提供部100014の診断通信サービスを呼び出し(S30438)、通信制御部10007を介して(S30439)、自動運転ECU15にセッション変更要求を送信する(S30440)。このセッション変更要求は、通常モードの識別情報を含む。自動運転ECU15は、要求を受諾可能な場合はセッション変更要求にて指定されたモードに内部状態を遷移させたのち、ゲートウェイ10に受諾応答を送信する(S30441)。ゲートウェイ10のサービス提供部100014は通信制御部10007を介して応答を取得し(S30442)、スクリプト実行部100013に応答する(S30443)。
スクリプト実行部100013は応答が受諾応答であれば、図14の19行目の記載を解釈して、更新完了済であることを記録するために、サービス提供部100014の更新状態保存サービスを呼び出す(S30444)。サービス提供部100014は、更新状態管理部10003に更新状態の保存を要求し(S30445)、保存結果をスクリプト実行部100013に応答する(S30446)。以上が図14に示す確認用スクリプト5113の実行に伴うゲートウェイプログラム100の動作の説明である。
このように、サービス提供部100014においてデータ転送ループを管理することでスクリプトに記述する内容を削減し、メモリの削減や処理不可の軽減が図れる。なおここではブロック転送の繰り返しをスクリプトに記述する例を示したが、ブロック転送の繰り返しをサービス提供部100014で実施してもよい。また、ここでは診断通信サービスを同期処理として提供する例を示したが、非同期処理としてもよい。
図16を参照して確認用スクリプト5113の記載を説明する。図16の1行目には車両1の速度の情報を取得することが記載されており、2行目には車速がゼロでない場合は9行目以下のエラー処理に進むことが記載されている。4行目にはHMI12を利用してユーザから更新の同意を取得することが記載されている。5行目にはHMI12の故障などで4行目の処理が正常に実行できなかった場合(ERROR)やユーザが更新を拒否した場合(NG)は、9行目以下のエラー処理に進むことが記載されている。7行目には正常終了を示す返り値を確認用スクリプト5113の実行を指示した制御部100012に返すことが記載されており、10行目には異常終了を示す返り値を制御部100012に返すことが記載されている。
スクリプト実行部100013が確認用スクリプト5113を実行する場合のゲートウェイプログラム100の動作を図17を参照して説明する。スクリプト実行部100013によるスクリプトの実行とは非同期に、車両状態管理部10006は、車両内のネットワークを流れる情報を受信し、自身が管理する車両状態を更新する。本例では、車両管理ECU19から送信された車両状態を示すデータを通信制御部10007が受信(S30602)し、車両状態管理部10006は当該データを取得(S30603)し、自身が管理する車両状態を更新する(S30604)。ここでは、車載ネットワークを流れる情報に基づく状態更新の例を示したが、イグニッション状態などについては、電気信号の監視などによる状態の更新も行われる。
制御部100012は、イベント管理部100011の指示によりスクリプト実行部100013に確認用スクリプト5113の起動を要求する(S30601)。スクリプト実行部100013は、まず確認用スクリプト5113の1行目の記載を解釈して、サービス提供部100014の車両状態取得サービスを呼び出す(S30605)。サービス提供部100014は、車両状態管理部10006から車速を取得し(S30606)、スクリプト実行部100013にこれを渡す(S30607)。スクリプト実行部100013は、確認用スクリプト5113の2行目の記載を解釈して、車速がゼロでない場合(S306071のNG)は処理を終了し、車速がゼロの場合(S306071のOK)は処理を継続し、次の処理に進む。
スクリプト実行部100013は次に、確認用スクリプト5113の4行目の記載を解釈して、HMI12を介してユーザに問い合わせを行うためにサービス提供部の診断通信サービスを呼び出す。この問い合わせは、更新を実行開始してしばらく車両1が使えなくてもよいか、新プログラムを有効にしてよいか、の許諾を得るものである。サービス提供部100014はHMI12に送信する許諾取得のためのコマンドを生成(S30609)し、通信制御部10007を介してHMI12に当該コマンドを送信する(S30610、S30611)。HMI12は、受信したコマンドに基づいて許諾取得画面を表示してユーザ操作による許諾結果を取得(S30612)し、応答をゲートウェイ10に送信する(S30613)。
サービス提供部100014は通信制御部10007を介して応答を取得し(S30614)、内容を解析し(S30615)、解析の結果をスクリプト実行部100013に渡す(S30616)。スクリプト実行部100013は受信した解析の結果に基づき、状態確認およびユーザ許諾確認結果を制御部100012に返す(S30617)。以上が図17に示す自動運転ECU更新スクリプト5111の実行に伴うゲートウェイプログラム100の動作の説明である。
診断通信サービスは、対象となるECUからの応答までが同期処理となる構成を示したが、非同期化してもよい。非同期化する場合の例は、第2の実施の形態にて説明する。同期処理としてサービスを提供する場合は、イベント管理部100011は応答を待つ期間を利用して車両状態を確認し、車両状態が変化した場合はサービス提供部100014にその変化を伝達する。
上述した第1の実施の形態によれば、次の作用効果が得られる。
(1)情報更新装置であるゲートウェイ10は、ECUに格納されるソフトウェアを更新する。新旧ソフトウェアの差分データ、または新ソフトウェアであるECU更新データ503、ECU更新データ503を用いてソフトウェアを更新する手順が含まれる更新用スクリプト501、およびソフトウェアの更新を開始する条件である起動条件5022が含まれるスクリプト起動制御情報502を含む更新パッケージ5を受信するダウンロード制御部100015と、更新用スクリプト501に基づきソフトウェアの更新を実行するスクリプト実行部100013と、ゲートウェイ10およびECUが搭載される車両1の状態を取得し、車両1の状態が起動条件5022に合致するとスクリプト実行部100013に更新用スクリプト501に基づくソフトウェアの更新を実行させるイベント管理部100011とを備える。
ゲートウェイ10は更新パッケージ5に含まれる更新用スクリプト501を実行することでECUのソフトウェアを更新するので、事前に更新手順が定められていなくても更新用スクリプト501に沿って柔軟にソフトウェアの更新ができる。また更新の開始時期、すなわち更新用スクリプト501を実行するタイミングはスクリプト起動制御情報502の起動条件5022として更新パッケージ5に含まれるので、適切なタイミングで更新を開始することができる。
(2)更新パッケージ5には、ECU更新データ503、更新用スクリプト501、およびスクリプト起動制御情報502が複数組含まれる。更新パッケージ5にはさらに、複数の更新用スクリプト501と複数のスクリプト起動制御情報502との対応関係を示すスクリプト対応表505が含まれる。そのためゲートウェイ10は、1つの更新パッケージ5を受信するだけで複数のECUのソフトウェアを更新することができる。
(3)起動条件5022は、実行を開始する契機となる事象である起動イベント50221および順序50222の組み合わせである。イベント管理部100011は、複数の起動条件5022に含まれる起動イベント50221が同一の場合は、順序50222に基づいてスクリプト実行部100013に実行させる更新用スクリプト501の順番を決定する。そのためあるイベントをトリガーとして、複数のECUのソフトウェアを所望の順番で更新することができる。
(4)スクリプト実行部100013は、所定の場合に更新を中断する。
(5)更新パッケージ5にはソフトウェアの更新を中断する条件である中断条件5023が含まれる。イベント管理部100011は、車両1の状態が中断条件5023に一致するとスクリプト実行部100013に更新中断指令を出力する。スクリプト実行部100013は、イベント管理部100011から更新中断指令を受けた場合に更新を中断する。そのためゲートウェイ10は、車両1の状態に合わせて更新処理を中断することができる。
(6)起動イベント50221には、車両1におけるイグニッションのオンまたはイグニッションのオフが含まれる。車両1の走行中にはソフトウェアの更新が困難なECUも存在するので、イグニッションのオフを検出して更新用スクリプト501を実行することが有用である。またソフトウェアの更新を複数のステップに分割し、その一部のステップ、特に最終のステップをイグニッションのオンとともに開始し、更新が完了すると車両1の走行を開始する構成も想定されるので、イグニッションのオンを検出して更新用スクリプト501を実行することが有用である。また、中断した処理を再開する必要があるため、イグニッションのオンを検出して更新用スクリプト501を実行することが有用である。
(7)起動イベント50221には、更新パッケージ5の受信完了が含まれる。即時のソフトウェアの更新のためには、更新パッケージ5の受信完了を検出して更新用スクリプト501を実行することが有用である。
(変形例1)
ECU更新データ503に更新対象となるECUを特定する情報が含まれてもよい。その場合は、更新パッケージ5に対象ECU一覧504が含まれなくてもよく、さらにスクリプト対応表505において更新対象となるECUを示す情報が含まれなくてもよい。
(変形例2)
ゲートウェイ10は、ゲートウェイ10に内蔵されるソフトウェアを更新してもよい。またゲートウェイ10が更新パッケージ5を受信して更新する対象はソフトウェアに限定されず、データやパラメータでもよい。さらにゲートウェイ10は、1つの更新パッケージ5に基づき、ソフトウェアとデータとパラメータとを更新してもよい。
(変形例3)
スクリプト起動制御情報502には中断条件5023が含まれなくてもよい。更新パッケージ5に含まれるECU更新データ503が1つのみの場合は、対象ECU一覧504およびスクリプト対応表505が更新パッケージ5に含まれなくてもよい。対応関係が明らかだからである。
(変形例4)
更新パッケージ5には、更新用スクリプト501の代わりに更新用プログラムが格納されてもよい。この場合は、スクリプト実行部100013はインタプリタの機能を有さなくてもよく、更新パッケージ5に含まれる実行可能ファイルである更新用プログラムを実行することでソフトウェアを更新する。
(変形例5)
図3および図4に示したゲートウェイプログラム100の構成は一例であり、説明した機能を有していれば異なる構成でもよい。たとえば更新制御部10001と通信制御部10007とが一体に構成されてもよいし、制御部100012がスクリプト実行部100013およびサービス提供部100014の機能の一部を有してもよい。
―第2の実施の形態―
以下、図18~図26を参照して、第2の実施の形態に係るソフトウェア更新システムを説明する。以下の説明では、第1の実施の形態と同じ構成要素には同じ符号を付して相違点を主に説明する。特に説明しない点については、第1の実施の形態と同じである。本実施の形態では、主に、更新制御部が複数のスクリプト実行部を備える点で、第1の実施の形態と異なる。
(更新制御部の構成)
図18は、更新制御部10001Aの構成図である。第2の実施の形態におけるゲートウェイ10は、第1の実施の形態における更新制御部10001の代わりに更新制御部10001Aを備える。更新制御部10001Aは、イベント管理部100011、制御部100012、第1スクリプト実行部1000131、第2スクリプト実行部1000132、ダウンロード制御部100015、およびサービス提供部100016を備える。イベント管理部100011、制御部100012、およびダウンロード制御部100015は、第1の実施例と同様なので説明を省略する。第1スクリプト実行部1000131および第2スクリプト実行部1000132は、それぞれが第1の実施の形態におけるスクリプト実行部100013に相当する。
更新制御部10001Aは第1スクリプト実行部1000131および第2スクリプト実行部1000132を備えるので、2つのスクリプトを並列に実行できる。ただしここでいう「並列に実行」とは共有するハードウエア資源、すなわちCPU1011を時分割で交互に使用することで、あるスクリプトの実行完了を待つことなく他のスクリプトの実行を開始できることである。なおゲートウェイ10が複数のCPUを備えてそれぞれのCPUにおいて異なるスクリプトを実行してもよい。サービス提供部100016はセキュリティフィルタ100017を備える。サービス提供部100016にセキュリティフィルタ機能が含まれることで、スクリプトから実行される診断通信サービスを安全に保つことできる。
(セキュリティフィルタ100017)
本実施の形態においてサーバ2が送信する更新パッケージ5には、それぞれのECU更新データ503および対象ECU一覧504に対応する検証情報を含む。検証情報はたとえば、デジタル署名やメッセージ認証コード(以下、MAC)である。以下では、検証情報がデジタル署名の場合とMACの場合とでサーバ2およびゲートウェイ10があらかじめ備えるべき鍵情報、およびゲートウェイ10のセキュリティフィルタ100017の動作を説明する。ただし以下の説明では冗長な記載を避けるためにECU更新データ503に関する検証についてのみ説明し、対象ECU一覧504についての記載は省略する。
検証情報がデジタル署名の場合は、サーバ2が秘密鍵をゲートウェイ10がその秘密鍵に対応する公開鍵をあらかじめ備える。サーバ2は、秘密鍵を用いてECU更新データ503に署名してその署名を検証情報としてECU更新データ503とともにゲートウェイ10に送信する。セキュリティフィルタ100017は、公開鍵を用いて署名である検証情報を検証することで、署名を行った者、すなわち送信者がサーバ2であることを確認する。
検証情報がMACの場合は、サーバ2およびゲートウェイ10は共通秘密鍵をそれぞれあらかじめ備える。サーバ2は、共通秘密鍵を用いてECU更新データ503のMACを生成し、そのMACを検証情報としてECU更新データ503とともにゲートウェイ10に送信する。セキュリティフィルタ100017は、共通秘密鍵を用いて受信したECU更新データ503のMACを生成し、生成したMACと受信した検証情報とが一致することを確認することで、MACを生成した者、すなわち送信者がサーバ2であることを確認する。
図19は、スクリプト起動制御情報502Aの構成を示す図である。本実施の形態では、更新パッケージ5にはスクリプト起動制御情報502の代わりにスクリプト起動制御情報502Aが含まれる。すなわち本実施の形態における更新パッケージ5は、更新用スクリプト501と、スクリプト起動制御情報502Aと、ECU更新データ503と、対象ECU一覧504と、スクリプト対応表505とから構成される。
図19に示すように、スクリプト起動制御情報502Aは、第1の実施の形態におけるスクリプト起動制御情報502から中断条件が削除されている。またスクリプト起動制御情報502Aは、起動条件5022に割当50224を含む。割当50224は、対象スクリプト5021で指定されたスクリプトを起動するスクリプト実行部を示す。このように、起動条件に割当を含むことで、ひとつのイベントで複数のスクリプトを並列で起動したい場合に、適切なスクリプト実行部で対象スクリプトを実行させることができる。
図20は、本実施例におけるスクリプト起動処理を示すシーケンス図である。イベント管理部100011は、あらかじめ全制御情報502Zを取得しており、全制御情報502Zに基づき更新状態管理部10003および車両状態管理部10006に発生の通知が必要なイベントを登録する(S201,S202)。更新状態管理部10003および車両状態管理部10006は、車両1の状態変化を検出し(S203)、登録されたイベント、たとえばダウンロードの完了通知をイベント管理部100011に通知する(S204)。イベント管理部100011は第1スクリプト実行部1000131が起動対象とするスクリプトの有無を判断する(S205)。第1スクリプト実行部1000131が起動対象とするスクリプトがある場合は制御部100012を介して第1スクリプト実行部1000131にそのスクリプトを実行させる(S206、S207)。
同様にイベント管理部100011は第2スクリプト実行部1000132が起動対象とするスクリプトの有無を判断する(S208)。第2スクリプト実行部1000132が起動対象とするスクリプトがある場合は制御部100012を介して第2スクリプト実行部1000132にそのスクリプトを実行させる(S209、S210)。第1スクリプト実行部1000131および第2スクリプト実行部1000132は、スクリプトの実行が完了するとその結果をイベント管理部100011に応答する(S211,S213)。イベント管理部100011はその応答を受けると、第1スクリプト実行部1000131および第2スクリプト実行部1000132において次に実行すべきスクリプトの有無を判断し(S212,S214)、必要に応じてスクリプトを実行させる。
図21は、更新対象が自動運転ECU15とADAS ECU16である場合の更新パッケージ5の例である。ただし図21では検証情報の記載を省略している。第1の実施の形態における図9との相違点は、更新対象のECUが異なることに起因する以下の点である。すなわちエンジンECU更新スクリプト5112の代わりにADAS ECU更新スクリプト5115を備え、エンジン制御ECU更新スクリプト5112の代わりにADAS ECU更新スクリプト起動制御情報5125を備え、エンジン制御ECU更新データ5132の代わりにADAS ECU更新データ5135を備える。
確認用スクリプト5113A、新プログラム有効化用スクリプト5114、対象ECU一覧504、およびスクリプト対応表505は、更新対象の変更にあわせて第1の実施の形態から内容が書き換えられている。
ADAS ECU更新スクリプト5115は、ADAS ECU更新データ5135を用いてADAS ECU16に新プログラムを書き込むための手順が記述されたスクリプトである。具体的には、ゲートウェイ10からADAS ECU16に診断通信を用いて差分データを転送する手順が記述されている。ADAS ECU更新データ5135は、ADAS ECU16の更新に必要となるデータであり、書き込み先アドレス等が記述されたメタデータと、ADAS ECU16に書き込まれたプログラムと、新しいプログラムから生成された差分データから構成される。
図22は、更新対象が自動運転ECU15とADAS ECU16である場合の全制御情報502Zの一例を示す図である。図19を参照して説明したようにスクリプト起動制御情報502Aは中断条件を持たず、代わりに割当50224を有する。図22に示すように、自動運転ECU更新スクリプト5111、確認用スクリプト5113A、および新プログラム有効化用スクリプト5114は第1スクリプト実行部1000131に割り当てられ、ADAS ECU更新スクリプト5115のみが第2スクリプト実行部1000132に割り当てられている。またADAS ECU更新スクリプト起動制御情報5125の記載から、ADAS ECU更新スクリプト5115はダウンロードの完了、またはイグニッションのONにより実行されることがわかる。ただしイグニッションがONの場合は、更新状態50223に関する条件が付されている。また確認用スクリプト起動制御情報5123の起動条件5023における更新状態50223は、自動運転ECU15の更新が完了しているおり、かつADAS ECU16の更新が完了していることである。
図23は、自動運転ECU15とADAS ECU16を更新する場合のソフトウェア更新処理の流れを示すシーケンス図である。更新パッケージ5のダウンロードが完了するまでの処理は、図13における処理と同様である。
イベント管理部100011は、ダウンロードが完了したことを検出すると、更新データ管理部10002を介して更新パッケージ5内のスクリプト起動制御情報502Aを読み出す。そしてイベント管理部100011は、起動イベント50221が「DL完」であるスクリプトが2つあり、いずれも順序50222が「1」であり、割当50224が両者で異なることを認識する。そのためイベント管理部100011は、第1スクリプト実行部1000131に自動運転ECU更新スクリプト5111の起動を指示し、第2スクリプト実行部1000132にADAS ECU更新スクリプト5115の起動を指示する。これらの更新処理は、2つの実行部によって並列に行われる(S304、S305)。
次に、イベント管理部100011は、イグニッションがOFFになったことを検出(S310)すると、更新データ管理部10002を介して更新パッケージ5内のスクリプト起動制御情報502Aを読み出す。そしてイベント管理部100011は、起動イベント50221が「IGN-OFF」、順序50222が「1」である確認用スクリプト起動制御情報5123の更新状態50223が「自動運転ECU更新完」かつ「ADAS ECU更新完」であるため、更新状態管理部10003を介して自動運転ECU15およびADAS ECU16の更新状態が「完了」であることを確認する。ここでは両者の更新状態が「完了」なので、確認用スクリプト5113Aの起動を、制御部100012を介して第1スクリプト実行部1000131に指示する。第1スクリプト実行部1000131は確認用スクリプト5113Aを実行して車両状態とユーザ許諾の確認を行う(S311)。
確認用スクリプト5113Aの実行が完了すると、イベント管理部100011は、起動イベント50221が「IGN-OFF」、順序が「2」となっている新プログラム有効化用スクリプト5114の起動を、制御部100012を介して第1スクリプト実行部1000131に指示する。第1スクリプト実行部1000131は当該スクリプトを実行して自動運転ECU15とADAS ECU16の新プログラムの有効化を行う(S312)。
図24は本実施の形態における確認用スクリプト5113Aの具体例を示す図である。なお本実施の形態では、サービス提供部100014は診断通信サービスを非同期処理として提供している。そのため以下に説明するように同一の命令文であっても第1の実施の形態とは挙動が異なる。
図24の1行目には車両1の速度の情報を取得することが記載されており、2行目には車速がゼロでない場合は16行目以下のエラー処理に進むことが記載されている。4行目にはHMI12を利用してユーザから更新の同意を取得することが記載されている。ただし本実施の形態では非同期処理なので、4行目の処理ではユーザに問い合わせを行う、たとえば画面に問い合わせのダイアログを表示するだけであり、ユーザの応答を得る処理は含まれない。5行目には、ユーザへの問い合わせが正常に行えなかった場合、たとえばHMI12が動作しない場合は、16行目以下のエラー処理に進むことが記載されている。
図24の7~14行目は永続的なループ処理を示している。8行目にはイグニッションの状態を取得することが記載されており、9行目にはイグニッションがONの場合には正常終了を示す返り値を制御部100012に返すことが記載されている。11行目には、4行目においてユーザへ問い合わせた回答を取得することが記載されている。ただしユーザがまだ回答を選択していない場合は未回答である旨の値、たとえば「NULL」が回答として取得される。12行目には、11行目で取得した回答が更新の承諾である「OK」であった場合は正常終了を示す返り値を制御部100012に返すことが記載され、更新の拒否を示す「NG」であった場合は16行目以下のエラー処理に進むことが記載されている。
すなわち図24の7~14行目の記載は、イグニッションがONまたは更新の同意が得られた場合は正常終了し、更新が拒否された場合はエラー処理に進むことを示す。換言すると、イグニッションがOFFのままでユーザが問い合わせに回答しなければループ処理が永続する。また、ユーザの選択により更新処理を中断することも記載されている。
図25は、確認用スクリプト5113Aの実行に伴うゲートウェイプログラム100の動作を表すシーケンス図である。ただし第1の実施の形態における図17と同一の処理は同一のステップ番号を付して説明を省略する。前述のとおり、サービス提供部100014は診断通信サービスを非同期処理として提供している。HMI12に許諾取得のコマンドを送信するまでの処理、すなわち図17における上から4分の3ほどの処理は前述の図17における処理と同様である。すなわちS30608は図24の1行目の記載に対応する。
サービス提供部100014はHMI12に送信する許諾取得のためのコマンドを生成(S30609)し、通信制御部10007を介してHMI12に当該コマンドを送信する(S30610、S30611)。HMI12は、受信したコマンドに基づいて許諾取得画面を表示し、ユーザ操作による許諾操作を待つ。一方、通信制御部10007は、送信処理の結果、すなわち正常にHMI12を用いた許諾取得画面の表示が行われたか否かをサービス提供部100014に応答する(S30618)。サービス提供部100014は診断通信サービスの呼び出し結果として、送信結果を第1スクリプト実行部1000131に応答する(S30619)。第1スクリプト実行部1000131は、図24の2行目の記載を解釈して、ユーザの許諾の成否ではなく処理が正常に行われたか否かだけを判断し、異常がなければ、すなわち応答が「NG」でなければ次の処理に進む。
次に、第1スクリプト実行部1000131は、図24の8行目の記載を解釈して、再度イグニッションがONされていないかを確認するため、車両状態取得サービスを呼び出す(S30620)。サービス提供部100014は、車両状態管理部10006からイグニッションの状態を取得(S30621)し、結果を第1スクリプト実行部1000131に応答する(S30622)。第1スクリプト実行部1000131は、図24の9行目の記載を解釈して、イグニッションがONであれば処理を終了して制御部100012に結果を応答する(S30623のON)。第1スクリプト実行部1000131が、イグニッションの状態を確認している間に、ユーザがHMI12を操作し(S30624)、その結果をゲートウェイに送信する(S30625)。サービス提供部100014は通信制御部10007を介して診断通信パケットを取得し(S30626)、これを解析して結果を保持する(S30627)。
第1スクリプト実行部1000131は、イグニッション状態がOFF(S30623のOFF)であれば、図24の11行目の記載を解釈して、診断通信結果取得サービスを呼び出して(S30628)、S30608で呼び出した診断通信サービスの結果を取得する(S30629)。読み出した結果が応答結果であるか否かを判定(S30630)し、応答が未着であれば、車両状態取得サービス呼び出しS30620以降の処理を繰り返す(S30630の結果未着)。応答を受信済み(S30630の結果到着済)であれば、第1スクリプト実行部1000131は応答結果に基づき、状態確認及びユーザ許諾確認結果を制御部100012に返す(S30631)。
このように、診断通信サービスを非同期化してスクリプト内で状態確認をすることで、車両等の状態変化やユーザの指示にあわせて実行中のスクリプトを中断することができる。
図26は、第2の実施の形態における診断通信サービス呼び出し処理の流れを示すシーケンス図である。サービス提供部100016は、第1スクリプト実行部1000131により診断通信サービスが呼び出される(S401)と、当該要求がECUへのデータ書き込み要求か否かを判断する(S402)。ここでいうデータ書き込み要求とは、たとえばUDS(Unified Diagnosis Services)であればRequestDownloadやWriteDataByIdentifireなどの要求が該当する。書き込み要求である場合は(S402のYES)、セキュリティフィルタ100017により送信者がサーバ2であることが確認された対象ECU一覧504を読み出す(S403)。なおセキュリティフィルタ100017による検証が失敗し、対象ECU一覧504の送信者がサーバ2ではない、または要求されたECUが対象ECU一覧504に含まれないと判断すると、S403の読み出しが失敗して更新は行われない。
次に、読み出した対象ECU一覧504に書き込み要求を指示されたECUが含まれるか否かを判定(S404)し、含まれない場合(S404のNO)は当該診断通信サービスを実行せずに応答を返す(S407)。検証済みの対象ECU一覧504に対象ECUが含まれる場合(S404のYES)は、診断通信パケットを生成し(S405)、通信制御部10007に当該パケットの送信を要求する(S406)。このように、診断通信サービスの実行前に対象ECUの確認を行うことで、不正な書き込み要求の送信を防止し、安全なスクリプトを実行することができる。
上述した第2の実施の形態によれば、第1の実施の形態において説明した作用効果に加えて、次の作用効果が得られる。
(8)更新用スクリプト501には更新を中断する処理が含まれる。スクリプト実行部100013は、更新用スクリプト501に基づき更新を中断する。そのためゲートウェイ10は、ソフトウェアの更新中断も含めた柔軟なソフトウェアの更新処理が可能である。
(9)スクリプト実行部100013は、第1スクリプト実行部1000131および第2スクリプト実行部1000132から構成される。第1スクリプト実行部1000131および第2スクリプト実行部1000132は、それぞれが異なる更新用スクリプト501を読み込み、それぞれが異なるECUのソフトウェアを更新する。そのためゲートウェイ10は、複数のECUの同時の更新を含む柔軟なソフトウェアの更新処理が可能である。
(10)更新パッケージ5には、ECU更新データ503の検証に用いる検証情報が含まれる。ゲートウェイ10は、検証情報を用いて受信したECU更新データ503を検証するセキュリティフィルタ100017を備える。そのためゲートウェイ10は、受信したECU更新データ503の安全性を確認することができる。
(第2の実施の形態の変形例1)
ゲートウェイ10は、セキュリティフィルタ100017を備えなくてもよい。その場合は、更新パッケージ5に検証情報が含まれなくてもよい。
(第2の実施の形態の変形例2)
ゲートウェイ10は、3以上のスクリプト実行部を備え、3以上のECUのソフトウェアを同時に更新してもよい。
(第2の実施の形態の変形例3)
サーバ2は、更新パッケージ5に検証情報を含める代わりに、共通秘密鍵または秘密鍵を用いて更新データ503を暗号化して送信してもよい。この場合はゲートウェイ10は、共通秘密鍵または公開鍵を用いて受信した更新データ503を復号化してECUのソフトウエアを更新する。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。たとえば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることや各処理における処理の順番を入れ替えることも可能である。たとえば、本実施の形態ではソフトウェア更新装置はゲートウェイ10であるとしたが、通信モジュール11やHMI12がソフトウェア更新装置であってもよい。
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、たとえば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するソフトウェアを解釈し、実行することによりソフトウェアで実現してもよい。また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
上記では、種々の実施の形態および変形例を説明したが、本発明はこれらの内容に限定されるものではない。本発明の技術的思想の範囲内で考えられるその他の態様も本発明の範囲内に含まれる。
1…車両
5…更新パッケージ
10…ゲートウェイ
100…ゲートウェイプログラム
501…更新用スクリプト
501Z…全スクリプト
502…スクリプト起動制御情報
502Z…全制御情報
503…更新データ
503Z…全更新データ
504…対象一覧
505…スクリプト対応表
100011…イベント管理部
100012…制御部
100013…スクリプト実行部
100014…サービス提供部
100015…ダウンロード制御部
100016…サービス提供部
100017…セキュリティフィルタ

Claims (3)

  1. 車両用制御装置に格納される第1情報を第2情報に更新する情報更新装置であって、
    新本体、前記更新本体を用いて前記第1情報を前記第2情報に更新するために必要な手順が含まれる手順情報、および前記第1情報の前記第2情報への更新を開始する条件である起動条件を含む更新パッケージを受信するダウンロード制御部と、
    前記車両用制御装置および情報更新装置が搭載される車両の状態を取得し、前記車両の状態が前記起動条件に合致すると更新実行部に前記手順情報に基づく前記更新を実行させるイベント管理部と、
    前記手順情報に基づき前記更新を実行する前記更新実行部と、を備え、
    前記更新本体は、前記第1情報と前記第2情報との差分、または前記第2情報そのもの、のいずれかであり、
    前記更新パッケージには、前記更新本体、前記手順情報、および前記起動条件が複数組含まれ、
    前記更新パッケージにはさらに、前記複数の手順情報と前記複数の起動条件との対応関係を示す情報が含まれ、
    前記更新パッケージにはさらに、一つの前記車両用制御装置に用いられる複数の前記手順情報、および、複数の前記車両用制御装置に用いられる一つの前記手順情報の少なくとも一方が含まれ
    前記更新実行部は、所定の場合に前記更新を中断し、
    前記更新パッケージには前記更新を中断する条件である中断条件が含まれ、
    前記イベント管理部は、前記車両の状態が前記中断条件に一致すると前記更新実行部に更新中断指令を出力し、
    前記更新実行部は、前記イベント管理部から前記更新中断指令を受けた場合に前記更新を中断する情報更新装置。
  2. 車両用制御装置に格納される第1情報を第2情報に更新する情報更新装置であって、
    更新本体、前記更新本体を用いて前記第1情報を前記第2情報に更新するために必要な手順が含まれる手順情報、および前記第1情報の前記第2情報への更新を開始する条件である起動条件を含む更新パッケージを受信するダウンロード制御部と、
    前記車両用制御装置および情報更新装置が搭載される車両の状態を取得し、前記車両の状態が前記起動条件に合致すると更新実行部に前記手順情報に基づく前記更新を実行させるイベント管理部と、
    前記手順情報に基づき前記更新を実行する前記更新実行部と、を備え、
    前記更新本体は、前記第1情報と前記第2情報との差分、または前記第2情報そのもの、のいずれかであり、
    前記更新パッケージには、前記更新本体、前記手順情報、および前記起動条件が複数組含まれ、
    前記更新パッケージにはさらに、前記複数の手順情報と前記複数の起動条件との対応関係を示す情報が含まれ、
    前記更新パッケージにはさらに、一つの前記車両用制御装置に用いられる複数の前記手順情報、および、複数の前記車両用制御装置に用いられる一つの前記手順情報の少なくとも一方が含まれ
    前記更新実行部は、所定の場合に前記更新を中断し、
    前記手順情報には前記更新を中断する処理が含まれ、
    前記更新実行部は、前記手順情報に基づき前記更新を中断する情報更新装置。
  3. 車両用制御装置に格納される第1情報を第2情報に更新する情報更新装置であって、
    更新本体、前記更新本体を用いて前記第1情報を前記第2情報に更新するために必要な手順が含まれる手順情報、および前記第1情報の前記第2情報への更新を開始する条件である起動条件を含む更新パッケージを受信するダウンロード制御部と、
    前記車両用制御装置および情報更新装置が搭載される車両の状態を取得し、前記車両の状態が前記起動条件に合致すると更新実行部に前記手順情報に基づく前記更新を実行させるイベント管理部と、
    前記手順情報に基づき前記更新を実行する前記更新実行部と、を備え、
    前記更新本体は、前記第1情報と前記第2情報との差分、または前記第2情報そのもの、のいずれかであり、
    前記更新パッケージには、前記更新本体、前記手順情報、および前記起動条件が複数組含まれ、
    前記更新パッケージにはさらに、前記複数の手順情報と前記複数の起動条件との対応関係を示す情報が含まれ、
    前記更新パッケージにはさらに、一つの前記車両用制御装置に用いられる複数の前記手順情報、および、複数の前記車両用制御装置に用いられる一つの前記手順情報の少なくとも一方が含まれ
    前記更新パッケージには、更新対象となる前記車両用制御装置の一覧である対象一覧、および前記対象一覧の検証に用いる検証情報が含まれ、
    前記検証情報を用いて前記対象一覧を検証し、前記手順情報に基づき更新される前記車両用制御装置が検証された前記対象一覧に含まれない場合は前記更新実行部による前記更新を停止させるセキュリティフィルタをさらに備える情報更新装置。
JP2021143419A 2017-10-12 2021-09-02 情報更新装置 Active JP7280319B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2021143419A JP7280319B2 (ja) 2017-10-12 2021-09-02 情報更新装置

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2017198622A JP6940365B2 (ja) 2017-10-12 2017-10-12 情報更新装置
JP2021143419A JP7280319B2 (ja) 2017-10-12 2021-09-02 情報更新装置

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2017198622A Division JP6940365B2 (ja) 2017-10-12 2017-10-12 情報更新装置

Publications (2)

Publication Number Publication Date
JP2021192280A JP2021192280A (ja) 2021-12-16
JP7280319B2 true JP7280319B2 (ja) 2023-05-23

Family

ID=66100906

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2017198622A Active JP6940365B2 (ja) 2017-10-12 2017-10-12 情報更新装置
JP2021143419A Active JP7280319B2 (ja) 2017-10-12 2021-09-02 情報更新装置

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2017198622A Active JP6940365B2 (ja) 2017-10-12 2017-10-12 情報更新装置

Country Status (5)

Country Link
US (1) US11360762B2 (ja)
EP (1) EP3696663B1 (ja)
JP (2) JP6940365B2 (ja)
CN (1) CN111201510B (ja)
WO (1) WO2019073932A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7466061B2 (ja) 2021-06-17 2024-04-11 東芝キヤリア株式会社 冷凍サイクルの遮断弁制御装置及び空気調和装置

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IT201800005466A1 (it) * 2018-05-17 2019-11-17 Metodo e dispositivo per scrivere oggetti software in una unita' elettronica di controllo di un motore a combustione interna
JP7354631B2 (ja) * 2018-08-10 2023-10-03 株式会社デンソー 電子制御装置、車両用電子制御システム、差分データの整合性判定方法及び差分データの整合性判定プログラム
JP7031643B2 (ja) * 2018-08-10 2022-03-08 株式会社デンソー 車両情報通信システム
CN113382943B (zh) * 2019-03-28 2023-12-19 因温特奥股份公司 用于启用通信网关的方法和系统
JP7008661B2 (ja) * 2019-05-31 2022-01-25 本田技研工業株式会社 認証システム
WO2021039795A1 (ja) * 2019-08-28 2021-03-04 株式会社デンソー 車両用電子制御システム、車両用マスタ装置、コンフィグ情報の書戻しによる書換え指示方法及びコンフィグ情報の書戻しによる書換え指示プログラム
WO2021064765A1 (ja) * 2019-09-30 2021-04-08 三菱電機株式会社 ソフトウェア更新装置、サーバ、ソフトウェア更新システム、及びソフトウェア更新方法
CN112817617B (zh) * 2019-11-18 2024-11-01 华为技术有限公司 软件升级方法、装置和系统
JP7283412B2 (ja) * 2020-02-14 2023-05-30 株式会社デンソー 通信システム
JP7314867B2 (ja) * 2020-06-18 2023-07-26 トヨタ自動車株式会社 マスタ、ネットワークシステム、方法、プログラム、センタ、および車両
JP7396216B2 (ja) 2020-06-26 2023-12-12 トヨタ自動車株式会社 サーバ、更新管理方法、更新管理プログラム及びソフトウェア更新装置
WO2022059206A1 (ja) * 2020-09-18 2022-03-24 日本電信電話株式会社 ネットワーク構成推定装置、ネットワーク構成推定方法、及びプログラム
CN113259249B (zh) * 2021-04-22 2023-04-07 东风柳州汽车有限公司 一种网关程序初始化方法、装置及存储介质
CN113504771A (zh) * 2021-07-16 2021-10-15 东风小康汽车有限公司重庆分公司 一种控制器升级方法和系统
JP2023019099A (ja) * 2021-07-28 2023-02-09 トヨタ自動車株式会社 車両用のシステム、センタ、方法、及びプログラム
JP2023057798A (ja) * 2021-10-12 2023-04-24 株式会社オートネットワーク技術研究所 車載装置、プログラム及び、プログラムの更新方法
JP7082386B1 (ja) 2021-11-30 2022-06-08 株式会社オーイーシー ソフトウェアの更新方法及びその更新システム
CN116541138B (zh) * 2022-01-26 2024-10-11 比亚迪股份有限公司 Ota升级中断方法、电子设备、车辆以及存储介质

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003196186A (ja) 2001-12-28 2003-07-11 Minolta Co Ltd 画像処理装置、ファームウェアの送信方法、及び画像処理装置の管理システム
JP2005349878A (ja) 2004-06-08 2005-12-22 Fujitsu Ten Ltd ソフトウェア管理装置
JP2006323776A (ja) 2005-05-20 2006-11-30 Denso Corp 情報処理装置
JP2007052518A (ja) 2005-08-16 2007-03-01 Sony Corp 情報処理装置および方法、並びにプログラム
WO2010071020A1 (ja) 2008-12-18 2010-06-24 富士通テン株式会社 情報処理装置、プログラム更新方法および情報処理システム
WO2011007413A1 (ja) 2009-07-13 2011-01-20 株式会社Pfu 配信システム、サーバ装置、端末装置、および、配信方法
WO2012056773A1 (ja) 2010-10-29 2012-05-03 本田技研工業株式会社 車両用プログラム書換えシステム
JP2012088767A (ja) 2010-10-15 2012-05-10 Hitachi Solutions Ltd 組込プログラム更新方法、組込プログラム更新プログラム、電子機器、ネットワークシステム
JP2016170740A (ja) 2015-03-16 2016-09-23 日立オートモティブシステムズ株式会社 ソフト更新装置、ソフト更新方法
JP2016218932A (ja) 2015-05-26 2016-12-22 京セラ株式会社 ソフトウェア更新装置およびソフトウェア更新システム
JP2017001567A (ja) 2015-06-12 2017-01-05 三菱電機株式会社 更新マネジャおよびこれを用いた車載ソフトウェア更新システム
JP2017097620A (ja) 2015-11-24 2017-06-01 トヨタ自動車株式会社 ソフトウェア更新装置
JP2017157004A (ja) 2016-03-02 2017-09-07 住友電気工業株式会社 プログラム更新システム、プログラム更新方法及びコンピュータプログラム

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AUPQ181699A0 (en) * 1999-07-23 1999-08-19 Cmte Development Limited A system for relative vehicle navigation
US8458689B2 (en) * 2001-03-30 2013-06-04 Roderick A. Barman Method and apparatus for reprogramming engine controllers
US7366589B2 (en) * 2004-05-13 2008-04-29 General Motors Corporation Method and system for remote reflash
JP4242405B2 (ja) * 2006-09-15 2009-03-25 三菱電機株式会社 車載電子制御装置
JP2009092494A (ja) * 2007-10-09 2009-04-30 Aisin Aw Co Ltd 施設データ更新システム及びプログラム
CN102598079B (zh) * 2009-11-06 2015-01-28 丰田自动车株式会社 车辆用网关装置
KR20110092007A (ko) * 2010-02-08 2011-08-17 주식회사 만도 차량의 소프트웨어 다운로드 시스템 및 방법
US9459607B2 (en) * 2011-10-05 2016-10-04 Opteon Corporation Methods, apparatus, and systems for monitoring and/or controlling dynamic environments
JP5337861B2 (ja) * 2011-12-01 2013-11-06 日立オートモティブシステムズ株式会社 車載ゲートウェイ装置
JP5741496B2 (ja) * 2012-03-14 2015-07-01 株式会社オートネットワーク技術研究所 車載通信システム
CN102724308A (zh) * 2012-06-13 2012-10-10 腾讯科技(深圳)有限公司 软件更新方法及软件更新系统
US8813061B2 (en) * 2012-10-17 2014-08-19 Movimento Group Module updating device
US20140222487A1 (en) * 2013-02-04 2014-08-07 The Boeing Company Total-Ordering In Process Planning
WO2014164893A2 (en) * 2013-03-13 2014-10-09 Arynga Inc. Remote transfer of electronic images to a vehicle
EP2992418B1 (en) * 2013-06-08 2022-02-16 Apple Inc. Device, method, and graphical user interface for synchronizing two or more displays
JP6261264B2 (ja) * 2013-10-01 2018-01-17 クラリオン株式会社 情報処理連携システム、情報処理端末及びプログラム
JP5962690B2 (ja) * 2014-02-21 2016-08-03 コニカミノルタ株式会社 管理サーバー、接続支援方法および接続支援プログラム
US20160294614A1 (en) * 2014-07-07 2016-10-06 Symphony Teleca Corporation Remote Embedded Device Update Platform Apparatuses, Methods and Systems
JP6551790B2 (ja) * 2015-04-21 2019-07-31 パナソニックIpマネジメント株式会社 運転支援方法およびそれを利用した運転支援装置、自動運転制御装置、車両、プログラム
US9946533B2 (en) * 2015-09-30 2018-04-17 Apple Inc. Software updating
JP2017198622A (ja) 2016-04-28 2017-11-02 国立大学法人京都大学 中性子による長寿命核分裂生成物の処理方法
JP6380461B2 (ja) * 2016-06-02 2018-08-29 住友電気工業株式会社 中継装置、プログラム更新システム、およびプログラム更新方法
JP6697357B2 (ja) * 2016-09-15 2020-05-20 株式会社日立製作所 ソフトウェア更新システム
JP6756225B2 (ja) * 2016-10-04 2020-09-16 株式会社オートネットワーク技術研究所 車載更新システム、車載更新装置及び更新方法
JP6760813B2 (ja) 2016-10-14 2020-09-23 日立オートモティブシステムズ株式会社 ソフトウェア更新装置、ソフトウェア更新方法、ソフトウェア更新システム
US10983783B2 (en) * 2017-08-30 2021-04-20 Huawei Technologies Co., Ltd. Firmware update method and related apparatus
US11102330B2 (en) * 2019-08-30 2021-08-24 Microstrategy Incorporated Providing updates for server environments

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003196186A (ja) 2001-12-28 2003-07-11 Minolta Co Ltd 画像処理装置、ファームウェアの送信方法、及び画像処理装置の管理システム
JP2005349878A (ja) 2004-06-08 2005-12-22 Fujitsu Ten Ltd ソフトウェア管理装置
JP2006323776A (ja) 2005-05-20 2006-11-30 Denso Corp 情報処理装置
JP2007052518A (ja) 2005-08-16 2007-03-01 Sony Corp 情報処理装置および方法、並びにプログラム
WO2010071020A1 (ja) 2008-12-18 2010-06-24 富士通テン株式会社 情報処理装置、プログラム更新方法および情報処理システム
WO2011007413A1 (ja) 2009-07-13 2011-01-20 株式会社Pfu 配信システム、サーバ装置、端末装置、および、配信方法
JP2012088767A (ja) 2010-10-15 2012-05-10 Hitachi Solutions Ltd 組込プログラム更新方法、組込プログラム更新プログラム、電子機器、ネットワークシステム
WO2012056773A1 (ja) 2010-10-29 2012-05-03 本田技研工業株式会社 車両用プログラム書換えシステム
JP2016170740A (ja) 2015-03-16 2016-09-23 日立オートモティブシステムズ株式会社 ソフト更新装置、ソフト更新方法
JP2016218932A (ja) 2015-05-26 2016-12-22 京セラ株式会社 ソフトウェア更新装置およびソフトウェア更新システム
JP2017001567A (ja) 2015-06-12 2017-01-05 三菱電機株式会社 更新マネジャおよびこれを用いた車載ソフトウェア更新システム
JP2017097620A (ja) 2015-11-24 2017-06-01 トヨタ自動車株式会社 ソフトウェア更新装置
JP2017157004A (ja) 2016-03-02 2017-09-07 住友電気工業株式会社 プログラム更新システム、プログラム更新方法及びコンピュータプログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7466061B2 (ja) 2021-06-17 2024-04-11 東芝キヤリア株式会社 冷凍サイクルの遮断弁制御装置及び空気調和装置

Also Published As

Publication number Publication date
CN111201510A (zh) 2020-05-26
WO2019073932A1 (ja) 2019-04-18
EP3696663B1 (en) 2024-06-12
EP3696663A1 (en) 2020-08-19
EP3696663A4 (en) 2021-06-16
CN111201510B (zh) 2024-01-12
JP2019074800A (ja) 2019-05-16
US20200249937A1 (en) 2020-08-06
JP6940365B2 (ja) 2021-09-29
JP2021192280A (ja) 2021-12-16
US11360762B2 (en) 2022-06-14

Similar Documents

Publication Publication Date Title
JP7280319B2 (ja) 情報更新装置
CN109804355B (zh) 软件更新装置、软件更新方法、软件更新系统
US10735260B2 (en) Gateway device, firmware update method, and recording medium
JP2020107355A (ja) 仮想マシンモニタ、ソフトウェア及びファームウェア更新方法
JP2023166016A (ja) 制御装置、方法、プログラム、及び車両
CN106161086A (zh) 主控板重启的控制方法及装置
US20220317994A1 (en) Ota master, update control method, and non-transitory storage medium
US20220391192A1 (en) Ota master, center, system, method, non-transitory storage medium, and vehicle
JP2022187646A (ja) Otaマスタ、システム、方法、プログラム、及び車両
JP2023002272A (ja) Otaマスタ、システム、方法、プログラム、及び車両
WO2024146276A1 (zh) 车辆里程信息的备份方法、装置、车辆及存储介质
CN114115929A (zh) 软件更新装置、更新控制方法以及非临时存储介质
CN115686556A (zh) 中心、方法、以及非暂时性存储介质
KR102693194B1 (ko) 센터, ota 마스터, 시스템, 배신 방법, 비일시적인 기억 매체 및 차량
JP2023001993A (ja) Otaマスタ、システム、方法、プログラム、及び車両
JP2022538080A (ja) 車両の車載バス上のコンピュータと対話する方法
JP2023002193A (ja) センタ、otaマスタ、システム、方法、プログラム、及び車両
JP7540401B2 (ja) センタ、otaマスタ、方法、プログラム、及び車両
JP2023012131A (ja) ソフトウェアの更新を行うシステム
JP2022126194A (ja) Otaマスタ、センタ、システム、方法、プログラム、及び車両
CN115686557A (zh) 系统、方法以及非暂时性存储介质
JP2024067404A (ja) サーバ、それを備えたソフトウェア管理システム、ソフトウェア管理方法、およびコンピュータプログラム
JP2022187162A (ja) Otaマスタ、システム、方法、プログラム、及び車両
JP2021135514A (ja) 情報処理装置、プログラム更新システム、及びプログラム更新方法
JP2019034579A (ja) 車両用の電子制御装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210902

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211022

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220929

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221011

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221212

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: 20230411

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230511

R150 Certificate of patent or registration of utility model

Ref document number: 7280319

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150