IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ トヨタ自動車株式会社の特許一覧

特許7593157電子制御ユニット、方法およびプログラム
<>
  • 特許-電子制御ユニット、方法およびプログラム 図1
  • 特許-電子制御ユニット、方法およびプログラム 図2
  • 特許-電子制御ユニット、方法およびプログラム 図3
  • 特許-電子制御ユニット、方法およびプログラム 図4
  • 特許-電子制御ユニット、方法およびプログラム 図5
  • 特許-電子制御ユニット、方法およびプログラム 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-25
(45)【発行日】2024-12-03
(54)【発明の名称】電子制御ユニット、方法およびプログラム
(51)【国際特許分類】
   G06F 9/445 20180101AFI20241126BHJP
   G06F 12/00 20060101ALI20241126BHJP
   G06F 8/65 20180101ALI20241126BHJP
   B60R 16/02 20060101ALI20241126BHJP
【FI】
G06F9/445
G06F12/00 560
G06F8/65
B60R16/02 660U
【請求項の数】 5
(21)【出願番号】P 2021018342
(22)【出願日】2021-02-08
(65)【公開番号】P2022121156
(43)【公開日】2022-08-19
【審査請求日】2023-08-22
(73)【特許権者】
【識別番号】000003207
【氏名又は名称】トヨタ自動車株式会社
(74)【代理人】
【識別番号】110001276
【氏名又は名称】弁理士法人小笠原特許事務所
(72)【発明者】
【氏名】水谷 太貴
【審査官】児玉 崇晶
(56)【参考文献】
【文献】特開2020-024579(JP,A)
【文献】特開2005-321843(JP,A)
【文献】特開2005-251045(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/445
G06F 12/00
G06F 8/65
B60R 16/02
(57)【特許請求の範囲】
【請求項1】
車両に搭載された電子制御ユニットであって、
揮発性メモリと、
ータが書き込まれたデータ部分とデータが書き込まれていない未使用部分とを設けたエリアを複数有し、各前記エリアの前記データ部分を示す情報である有効部分情報を記憶する不揮発性メモリと、
前記不揮発性メモリに書き込まれたデータを前記揮発性メモリに展開する制御部と、を備え
記制御部は、前記有効部分情報に基づいて、前記不揮発性メモリの各前記エリアにおける前記データ部分の全てのデータを、空きなく詰めた状態で前記揮発性メモリの記憶エリアに展開する、電子制御ユニット。
【請求項2】
前記制御部は、
前記揮発性メモリの前記記憶エリアにおいてデータが展開済であるエリアを示す展開エリア情報を前記揮発性メモリに記憶させ、
前記展開エリア情報にさらに基づいて、前記不揮発性メモリの各前記エリアにおける前記データ部分の全てのデータを、空きなく詰めた状態で前記揮発性メモリの前記記憶エリアに展開する、請求項に記載の電子制御ユニット。
【請求項3】
前記制御部と前記揮発性メモリとは、同一の半導体チップ上に形成されている、請求項1又は2に記載の電子制御ユニット。
【請求項4】
車両に搭載された、プロセッサと揮発性メモリと不揮発性メモリとを備えるコンピュータが実行する方法であって、
ータが書き込まれたデータ部分とデータが書き込まれていない未使用部分とを設けたエリアを複数含む記憶エリアを有する前記不揮発性メモリに書き込まれたデータを前記揮発性メモリに展開する展開ステップを備え、
前記展開ステップにおいて、前記不揮発性メモリに記憶されている、各前記エリアの前記データ部分を示す情報である有効部分情報に基づいて、前記不揮発性メモリの各前記エリアにおける前記データ部分の全てのデータを、空きなく詰めた状態で前記揮発性メモリの記憶エリアに展開する、方法。
【請求項5】
車両に搭載された、プロセッサと揮発性メモリと不揮発性メモリとを備えるコンピュータが実行するプログラムであって、
前記コンピュータに、ータが書き込まれたデータ部分とデータが書き込まれていない未使用部分とを設けたエリアを複数含む記憶エリアを有する前記不揮発性メモリに書き込まれたデータを前記揮発性メモリに展開する展開ステップを実行させ、
前記展開ステップにおいて、前記不揮発性メモリに記憶されている、各前記エリアの前記データ部分を示す情報である有効部分情報に基づいて、前記不揮発性メモリの各前記エリアにおける前記データ部分の全てのデータを、空きなく詰めた状態で前記揮発性メモリの記憶エリアに展開させる、プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、車両に搭載されるECU(電子制御ユニット)、方法およびプログラム等に関する。
【背景技術】
【0002】
車両には、車両の動作を制御するための複数のECU(電子制御ユニット)が搭載されている。ECUは、プロセッサと、RAM等の揮発性の記憶部(揮発性メモリ)と、フラッシュROM等の不揮発性の記憶部(不揮発性メモリ)とを備え、プロセッサが不揮発性メモリに記憶されるソフトウェアを揮発性メモリに展開して実行することによりECUの制御機能を実現する。各ECUの不揮発性メモリに記憶されるソフトウェアは無線通信等により書き換え可能であり、より新しいバージョンのソフトウェアに更新することにより、各ECUの機能を改善したり、新たな車両制御機能を追加したりすることができる。
【0003】
ECUの不揮発性メモリに記憶されるソフトウェアを構成する各データを、不揮発性メモリの記憶エリアにおいて詰めて書き込んで配置していると、ソフトウェアの一部の内容を変更する更新であっても、内容変更しないデータの配置変更が多く発生して多量のデータ書き換えが必要となる場合がある。これを解決するために、不揮発性メモリの記憶エリアにおいて、ソフトウェアを構成する複数のアプリケーション毎に未使用領域(マージン部分)を設けることによって、ソフトウェアの更新時において、内容変更しないデータの配置変更をアプリケーション単位にとどめて、多量のデータ書き換えを回避する技術が提案されている(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2020-24579号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
上記のように、不揮発性メモリの記憶エリアにおいて、ソフトウェアを構成する複数のアプリケーション毎に未使用領域(マージン部分)を設けた場合には、多量のデータ書き換えを回避できる一方で、不揮発性メモリのソフトウェアを揮発性メモリに展開して実行する際にこの未使用領域までも展開して、揮発性メモリの記憶容量が効率的に使用されない可能性があった。
【0006】
それ故に、本開示は、揮発性メモリの記憶容量を効率的に使用できるECU(電子制御ユニット)、方法およびプログラム等を提供することを目的とする。
【課題を解決するための手段】
【0007】
本開示に係る電子制御ユニットは、車両に搭載された電子制御ユニットであって、揮発性メモリと、揮発性メモリに展開されるデータが書き込まれたデータ部分と当該データに対応する未使用部分であるマージン部分とを含む記憶エリアを有する不揮発性メモリと、不揮発性メモリのデータを揮発性メモリに展開する制御部とを備え、不揮発性メモリは、データ部分を示す情報である有効部分情報を記憶し、制御部は、有効部分情報に基づいて、不揮発性メモリのデータを揮発性メモリの記憶エリアに展開する。
【0008】
本開示に係る方法は、車両に搭載された、プロセッサと揮発性メモリと不揮発性メモリとを備えるコンピュータが実行する方法であって、揮発性メモリに展開されるデータが書き込まれたデータ部分と当該データに対応する未使用部分であるマージン部分とを含む記憶エリアを有する不揮発性メモリのデータを揮発性メモリに展開する展開ステップを備え、展開ステップにおいて、不揮発性メモリに記憶されている、データ部分を示す情報である有効部分情報に基づいて、不揮発性メモリのデータを揮発性メモリの記憶エリアに展開する。
【0009】
本開示に係るプログラムは、車両に搭載された、プロセッサと揮発性メモリと不揮発性メモリとを備えるコンピュータが実行するプログラムであって、コンピュータに、揮発性メモリに展開されるデータが書き込まれたデータ部分と当該データに対応する未使用部分であるマージン部分とを含む記憶エリアを有する不揮発性メモリのデータを揮発性メモリに展開する展開ステップを実行させ、展開ステップにおいて、不揮発性メモリに記憶されている、データ部分を示す情報である有効部分情報に基づいて、不揮発性メモリのデータを揮発性メモリの記憶エリアに展開させる。
【発明の効果】
【0010】
本開示によれば、揮発性メモリの記憶容量を効率的に使用できるECU(電子制御ユニット)、方法およびプログラム等を提供できる。
【図面の簡単な説明】
【0011】
図1】一実施形態に係るネットワークシステムの全体構成の一例を示すブロック図
図2図1に示したECUの概略構成の一例を示すブロック図
図3】一実施形態に係るECUが実行する制御処理の一例を示すフローチャート
図4図3に示した制御処理により不揮発性メモリのデータが更新される状態を説明するための模式図
図5】一実施形態に係るECUが実行する制御処理の一例を示すフローチャート
図6図5に示した制御処理により不揮発性メモリのデータが揮発性メモリに展開される状態を説明するための模式図
【発明を実施するための形態】
【0012】
(一実施形態)
図1は、第1の実施形態に係るネットワークシステムの全体構成の一例を示すブロック図である。図2は、図1に示したECUの概略構成の一例を示すブロック図である。
【0013】
図1に示すネットワークシステムは、車両に搭載されたECU(Electronic Control Unit;電子制御ユニット)13a~13dのソフトウェアを更新するためのシステムであり、OTAセンタ1と、車両に搭載される車載ネットワーク2とを備える。
【0014】
OTAセンタ1は、インターネット等の通信ネットワーク5を介して車両に搭載されたOTAマスタ11と無線等で通信可能であり、例えばCPUとRAMと記憶装置と通信装置とを備え(図示なし)、車両に搭載されたECU13a~13dのソフトウェア更新を管理する。
【0015】
図1に示すように、車載ネットワーク2は、OTAマスタ11と、通信モジュール12と、複数のECU13a~13dと、HMI(Human Machine Interface;例えば、入力操作が可能なカーナビゲーションシステムの表示装置)14とを備える。OTAマスタ11は、バス15aを介して通信モジュール12と接続され、バス15bを介してECU13a及び13bと接続され、バス15cを介してECU13c及び13dと接続され、バス15dを介してHMI14と接続されている。OTAマスタ11は、通信モジュール12を介してOTAセンタ1と無線での通信が可能である。OTAマスタ11は、OTAセンタ1から取得した更新データに基づいて、ECU13a~13dのうちの更新対象のECU(「ターゲットECU」という場合がある)のソフトウェア更新を制御する。通信モジュール12は、車載ネットワーク2とOTAセンタ1とを接続する通信機器である。ECU13a~13dは、車両の各部の動作を制御する。HMI14は、ECU13a~13dのソフトウェアの更新処理の際に、更新データがあることの表示や、ユーザや管理者にソフトウェア更新に対する承諾を求めるための承諾要求画面の表示、更新結果の表示等の各種表示を行うために用いられる。なお、図1では、4つのECU13a~13dを例示したが、ECUの数は限定されない。
【0016】
図2に示すように、ECU13は、CPU21(Central Processing Unit;制御部)と、揮発性メモリ22と、不揮発性メモリ23と、通信装置24とを備える。揮発性メモリ22は例えばRAM(Random Access Memory)であり、不揮発性メモリ23は例えばフラッシュROM(Flash Read Only Memory)である。CPU21は、不揮発性メモリ23から読み出したソフトウェア(プログラム等)を揮発性メモリ22に展開して、揮発性メモリ22を作業領域として用いて処理を実行し、又、通信装置45を用いて必要に応じてバスを介して他の機器と通信することにより、ECU13の機能を実現する。
【0017】
CPU21と揮発性メモリ22とは、SoC(System on a chip)として形成されており、1つの半導体チップ上に形成されている。これにより、演算処理の高速化等のメリットがある。その一方で、不揮発性メモリ23は、上記の半導体チップ上には形成されておらず、この半導体チップに組み付けられる等して接続されている。
【0018】
OTAマスタ11は、例えば、CPUとRAMとROMと記憶装置とを備えるマイクロコンピュータと、バスを介して通信モジュール12やECU13a~13dやHMI14と通信を行う通信装置とを備える(図示なし)。
【0019】
ここで、ソフトウェアの更新処理は、OTAセンタ1から更新データをダウンロードするフェーズと、ダウンロードした更新データを更新対象であるターゲットECUに転送し、ターゲットECUの記憶領域に更新データをインストールするフェーズと、ターゲットECUにおいてインストールした更新版のソフトウェアを有効化するアクティベートのフェーズとからなる。
【0020】
ダウンロードは、OTAセンタ1から送信された、ECUのソフトウェアを更新するための更新データを受信して、OTAマスタ11の記憶装置に記憶する処理である。ダウンロードのフェーズは、更新データの受信だけでなく、ダウンロードの実行可否判断、更新データの検証等、ダウンロードに関する一連の処理の制御を含む。インストールは、ダウンロードした更新データに基づいて、更新対象であるターゲットECUの不揮発性メモリに更新版のプログラム(更新ソフトウェア)を書き込む処理である。インストールのフェーズは、インストールの実行だけでなく、インストールの実行可否判断、更新データの転送および更新版のプログラムの検証等、インストールに関する一連の処理の制御を含む。アクティベートは、インストールした更新版のプログラムをアクティベート(有効化)する処理である。アクティベートのフェーズは、アクティベートの実行だけでなく、アクティベートの実行可否判断、実行結果の検証等、アクティベートに関する一連の制御を含む。
【0021】
OTAセンタ1からOTAマスタ11に送信される更新データは、ECUの更新ソフトウェア、更新ソフトウェアを圧縮した圧縮データ、更新ソフトウェアまたは圧縮データを分割した分割データのいずれを含んでいても良い。また、更新データは、更新対象であるターゲットECUを識別する識別子(ECU ID)と、更新前のソフトウェアを識別する識別子(ECU ソフトウェア ID)を含んでいても良い。更新データは、配信パッケージとしてダウンロードされるが、配信パッケージには、単一または複数のECUの更新データが含まれる。
【0022】
更新データが更新ソフトウェアそのものを含む場合は、インストールのフェーズにおいて、OTAマスタ11が更新データ(つまり、更新ソフトウェア)をターゲットECUに転送する。また、更新データが更新ソフトウェアの圧縮データ、差分データあるいは分割データを含む場合、OTAマスタ11がターゲットECUに更新データを転送し、ターゲットECUが更新データから更新ソフトウェアを生成しても良いし、OTAマスタ11が更新データから更新ソフトウェアを生成してから、更新ソフトウェアをターゲットECUに転送しても良い。ここで、更新ソフトウェアの生成は、圧縮データの解凍、差分データまたは分割データの組み付けにより行うことができる。
【0023】
更新ソフトウェアのインストールは、OTAマスタ11からのインストール要求(プログラム更新要求)に基づき、ターゲットECUが行うことができる。または、更新データを受信したターゲットECUが、OTAマスタ11からの明示の指示を受けることなく、自律的にインストールを行っても良い。
【0024】
本実施形態では、一例として、OTAマスタ11がターゲットECUに更新ソフトウェアの差分データである更新データを転送し、ターゲットECUが更新データ(差分データ)から更新ソフトウェアを生成するものとする。また、一例として、OTAマスタ11からのインストール要求(プログラム更新要求)に応じて、ターゲットECUが更新ソフトウェアのインストールを行うものとする。
【0025】
更新ソフトウェアのアクティベートは、OTAマスタ11からのアクティベート要求に基づき、ターゲットECUが行うことができる。または、更新データを受信したターゲットECUが、OTAマスタ11からの明示の指示を受けることなく、自律的にアクティベートを行っても良い。
【0026】
図3は、本実施形態に係るECU13が不揮発性メモリ23に更新データをインストールする(ソフトウェアの更新を行う)処理の一例を示すフローチャートである。図4は、図3に示した処理により不揮発性メモリ23のデータが更新される状態を説明するための模式図である。
【0027】
図4に示すように、不揮発性メモリ23の記憶エリアには、エリア0~nが含まれる。なお、エリア0~nは、構造的な区画ではなく記憶エリアのアドレスによる区画である。エリア1~nの各エリアには、揮発性メモリ22にデータ展開するときに使用される情報である展開時使用情報31(31-1~31-n)と、ECU13の機能を実現するためのプログラムデータ32(32-1~32-n)とが記憶され、又、未使用領域(マージン部分)33(33-1~33-n)が設けられる。プログラムデータ32は、例えばECU13の機能を実現するアプリケーションのデータであるが、これには限定されない。展開時使用情報31には、デジタル署名やMAC(Message Authentication Code)等のセキュリティチェックに用いられるセキュリティ情報と、プログラムデータ32の配置位置(アドレス)を示す有効部分情報とが含まれる。エリア0には、展開時使用情報31-0とプログラムデータ32-0とが記憶されるが、未使用領域(マージン部分)は設けられない。また、エリア0の展開時使用情報31-0には、セキュリティ情報が含まれるが、有効部分情報は含まれない。
【0028】
以下、図3および図4を参照して、ECU13が不揮発性メモリ23に更新データをインストールする(ソフトウェアの更新を行う)制御処理について説明する。図3の処理は、ECU13のCPU21が、OTAマスタ11からプログラム更新要求を受信することで開始される。
【0029】
ステップS1において、CPU21は、不揮発性メモリ23の更新エリアを決定する。例えば、CPU21は、図4のエリア1(更新処理を実行していないエリア1)を更新対象のエリアとして決定する。その後、処理はステップS2に移る。
【0030】
ステップS2において、CPU21は、ステップS1で決定した更新エリアのプログラムデータを更新する。具体的には、CPU21は、更新エリアのプログラムデータ32に対して、変更や追加の有った部分(差分データ)を変更する書き換えを実行し、又、変更したことによって配置がずれ込む部分について配置変更を行う書き換えを実行する。例えば、図4のエリア1に示すように、CPU21は、変更や追加の有った部分(差分データ)40を変更する書き換えを実行し、又、変更したことによって配置がずれ込む部分41について配置変更を行う書き換えを実行する。このようにプログラムデータ32を更新した際にデータの変更に伴う配置変更によるデータ書き換えが発生するが、図4に示すように未使用領域(マージン部分)33が設けられたことによって、このデータ書き換え量を抑制することができる。その後、処理はステップS3に移る。
【0031】
ステップS3において、CPU21は、ステップS1で決定した更新エリアのセキュリティ情報を更新する。具体的には、CPU21は、ステップS2で実行したプログラム更新に応じて、更新エリアのセキュリティ情報(デジタル署名やMAC等)のデータを更新する。例えば、図4のエリア1が更新エリアの場合、CPU21は、エリア1のプログラムデータ32-1の更新に伴って、プログラムデータ32-1についてのセキュリティ情報を更新する。その後、処理はステップS4に移る。
【0032】
ステップS4において、CPU21は、ステップS1で決定した更新エリアの有効部分情報を更新する。具体的には、CPU21は、ステップS2で実行したプログラム更新に応じて、更新エリアのプログラムデータ32の配置位置(アドレス)を示す有効部分情報を更新する。例えば、図4のエリア1が更新エリアの場合、CPU21は、エリア1のプログラムデータ32-1の更新に応じて、プログラムデータ32-1の配置位置(アドレス)を示す有効部分情報を更新する。その後、処理はステップS5に移る。
【0033】
ステップS3およびS4の処理によって、ステップS1で決定した更新エリアについて、セキュリティ情報と有効部分情報が更新されるので、展開時使用情報31が更新されることとなる。
【0034】
ステップS5において、CPU21は、全ての更新エリアについて処理を実行したか否かを判定し、この判定がNOの場合には処理をステップS1に戻し、この判定がYESの場合には図3の処理を終了する。このようにすることで、全ての更新エリアについて処理が実行されることとなる。
【0035】
なお、図4を用いて説明したように、エリア0には、未使用領域(マージン部分)33が設けられず、又、有効部分情報が記憶されていない。これは、エリア0のプログラムデータ32-0は、不揮発性メモリ23のデータを揮発性メモリ22に展開するために使用されるプログラムデータであり、ソフトウェア更新によってデータ量の変化が無いので、未使用部分33が必要なく、又、そのため有効部分情報も必要ないからである。このように、エリア0には、未使用領域(マージン部分)33と有効部分情報がないので、エリア0が更新エリアである場合には、図3のステップS4の処理は省略されることとなる。なお、ソフトウェア更新によってエリア0のプログラムデータ32-0のデータ量が変化する場合には、エリア0にも、エリア1~nと同様に、未使用領域33を設け有効部分情報を記憶し、図3のステップS4の処理を実行すればよい。
【0036】
図5は、本実施形態に係るECU13が不揮発性メモリ23に記憶されているソフトウェア(プログラム等)を揮発性メモリ22に展開する処理の一例を示すフローチャートである。図6は、図5に示した処理により不揮発性メモリ23に記憶されたソフトウェア(プログラム等)が揮発性メモリ22に展開される状態を説明するための模式図である。図6(1)は不揮発性メモリ23の記憶エリアを示し、図6(2)は不揮発性メモリ23に記憶されたデータ(ソフトウェア)が揮発性メモリ22の記憶エリアに展開された状態を示している。なお、図6(1)に示す不揮発性メモリ23の記憶エリアについては、図4を用いて説明したので、説明を省略する。
【0037】
以下、図5および図6を参照して、ECU13が不揮発性メモリ23に記憶されているソフトウェア(プログラム等)を揮発性メモリ22に展開する処理について説明する。図5の処理は、不揮発性メモリ23のソフトウェアを揮発性メモリ22に展開する所定のタイミング(ECU13の電源投入時やリセット時等)で開始される。
【0038】
ステップS11において、CPU21は、不揮発性メモリ23のエリア0のプログラムデータ32-0のセキュリティチェックを実施し、プログラムデータ32-0を揮発性メモリ22に展開する。具体的には、図6に示すように、CPU21は、エリア0の展開時使用情報31-0に含まれるセキュリティ情報を用いてエリア0のプログラムデータ32-0のセキュリティチェックを実施し、プログラムデータ32-0を揮発性メモリ22に展開する。プログラムデータ32-0は、不揮発性メモリ23のデータを揮発性メモリ22に展開する処理を実行するためのプログラムのデータでる。その後、処理はステップS12に移る。
【0039】
ステップS12において、CPU21は、揮発性メモリ22に展開エリア情報のデータを作成する。具体的には、CPU21は、ステップS11で揮発性メモリ22に展開したプログラムデータ32-0を実行して、図6(2)に示すように展開エリア情報34を作成して揮発性メモリ22に記憶させる。展開エリア情報34は、揮発性メモリ22の記憶エリアにおいて不揮発性メモリ23のデータが展開済みであるエリア(アドレス)を示す情報である。その後、処理はステップS13に移る。
【0040】
ステップS13において、CPU21は、不揮発性メモリ23の展開元エリアを決定する。具体的には、CPU21は、不揮発性メモリ23のエリア1~nのうち展開処理を実行していないエリアを展開元エリアとして決定する。例えば、CPU21は、図6(1)のエリア1を展開元エリアとして決定する。その後、処理はステップS14に移る。
【0041】
ステップS14において、CPU21は、有効部分情報に基づいて、ステップS13で決定した展開元エリアの有効部分を特定する。具体的には、CPU21は、ステップS13で決定した展開元エリアの展開時使用情報に含まれる有効部分情報が示す有効部分(展開元エリアのプログラムデータ32の配置位置(アドレス))を特定する。例えば、CPU21は、図6(1)のエリア1が展開元エリアの場合、展開時使用情報31-1に含まれる有効部分情報によって、プログラムデータ32-1の配置位置(アドレス)を有効部分として特定する。その後、処理はステップS15に移る。
【0042】
ステップS15において、CPU21は、ステップS14で特定した有効部分のセキュリティチェックを実施する。例えば、CPU21は、図6(1)のエリア1のプログラムデータ32-1の配置位置を有効部分として特定した場合、エリア1の展開時使用情報31-1に含まれるセキュリティ情報を用いてプログラムデータ32-1のセキュリティチェックを実施する。その後、処理はステップS16に移る。
【0043】
ステップS16において、CPU21は、有効部分情報と展開エリア情報に基づいて、ステップS14で特定した有効部分の展開先アドレスを決定する。以下、図6(1)のエリア2のプログラムデータ32-2の配置位置を有効部分として特定した場合を例に挙げて、具体的に説明する。CPU21は、エリア1の展開時使用情報31-2に含まれる有効部分情報が示すプログラムデータ32-2の配置位置(アドレス)に基づいて、揮発性メモリ22の記憶エリアにおいてプログラムデータ32-2の展開先アドレスを決定する。その際に、CPU21は、図6(2)に示すように、展開エリア情報34(不揮発性メモリ23のデータが展開済みのエリアを示す情報)に基づいて、揮発性メモリ22の記憶エリアにおいて空きが無いように詰めて、プログラムデータ32-2の展開先アドレスを決定する。その後、処理はステップS17に移る。
【0044】
ステップS17において、CPU21は、ステップS14で特定した有効部分のデータを、ステップS16で決定した揮発性メモリ22の展開先アドレスに展開する。その後、処理はステップS18に移る。
【0045】
ステップS18において、CPU21は、揮発性メモリ22の展開エリア情報34を更新する。例えば図6(2)においてプログラムデータ32-1と32-2が揮発性メモリ22の記憶エリアに展開済みである場合、CPU21は、これらの展開済みのエリアを示すように展開エリア情報34を更新する。その後、処理はステップS19に移る。
【0046】
ステップS19において、CPU21は、全ての展開元エリアについて処理を実行したか否かを判定し、この判定がNOの場合には処理をステップS13に戻し、この判定がYESの場合には図5の処理を終了する。このようにすることで、全ての更新元エリアについて処理が実行されて、図6に示すように、不揮発性メモリ23のデータ(ソフトウェア)が揮発性メモリ22に展開されることとなる。
【0047】
以上に説明したように、本実施形態によれば、不揮発性メモリ23の記憶エリアにおいてプログラムデータ32毎に(エリア毎に)未使用領域(マージン部分)33を設けることによって(図3図4参照)ソフトウェア更新時において内容変更しないデータの配置変更をプログラムデータ単位にとどめて多量のデータ書き換えを回避することができる。
【0048】
また、本実施形態によれば、不揮発性メモリ23のデータを揮発性メモリ22に展開する際に、プログラムデータ32の配置位置(アドレス)を示す有効部分情報を用いて、未使用領域(マージン部分)33を除いたプログラムデータ32の部分を揮発性メモリ22に展開することができるので(図5図6参照)、揮発性メモリ22のメモリ容量を有効に使用できる。
【0049】
また、本実施形態によれば、揮発性メモリ22においてデータが展開済みのエリア(アドレス)を示す展開エリア情報に基づいて、プログラムデータ32を空きなく詰めて書き込むことができるので、揮発性メモリ22のメモリ容量を有効に使用できる。
【0050】
ここで、本実施形態では、CPU21と揮発性メモリ22とがSoC(System on a chip)として1つの半導体チップ上に形成されていることから、演算処理を高速化できる一方で揮発性メモリ22の容量が比較的少なく、又、容量を拡張することも困難である。本実施形態によれば、上記したように揮発性メモリ22のメモリ容量を有効に使用できるので、CPU21と揮発性メモリ22とがSoCとして1つの半導体チップ上に形成された構成による上記のデメリットを克服できる。
【0051】
(変形例)
なお、上記した本実施形態では、不揮発性メモリ23のプログラムデータ32をエリア1から順に揮発性メモリ22に詰めて展開する例を挙げて説明した(図6参照)。しかし、揮発性メモリ22に詰めて展開するのであれば、プログラムデータ32をエリア1から順に展開する必要はない。
【0052】
また、上記した本実施形態では、不揮発性メモリ23のプログラムデータ32をエリア1から順に揮発性メモリ22に詰めて展開する例を挙げて説明した(図6参照)。しかし、不揮発性メモリ23のエリア1~エリアnの全てのプログラムデータ32の展開先アドレスを詰めた配置位置となるように決定し、その後、エリア1~エリアnの全てのプログラムデータ32を揮発性メモリ22に詰めて展開しても良い。この場合、展開エリア情報は、揮発性メモリ22の記憶エリアにおいて不揮発性メモリ23のデータを展開する予定のエリア(アドレス)を示す情報となる。
【0053】
また、上記した本実施形態では、不揮発性メモリ23の記憶エリアにおいてアプリケーション単位でエリア0~nに区画する例を挙げて説明したが、これには限定されない。
【0054】
また、上記した本実施形態ではECUを例に挙げて説明したが、これには限定されない。
【0055】
また、上記の実施形態で例示したECUの機能は、プロセッサ(CPU)とメモリとを備えるコンピュータが実行する方法、あるいは、当該コンピュータに実行させるプログラム、プログラムを記憶したコンピュータ読み取り可能な非一時的記憶媒体として実現することも可能である。
【産業上の利用可能性】
【0056】
本開示技術は、ECU(電子制御ユニット)等に利用できる。
【符号の説明】
【0057】
1 OTAセンタ
2 車載ネットワーク
5 通信ネットワーク
11 OTAマスタ
12 通信モジュール
13a~13d ECU
14 HMI
15a~15d バス
21 CPU
22 揮発性メモリ
23 不揮発性メモリ
24 通信装置
31 展開時使用情報
32 プログラムデータ
33 未使用領域(マージン部分)
34 展開エリア情報
図1
図2
図3
図4
図5
図6