(58)【調査した分野】(Int.Cl.,DB名)
前記書換部は、前記制御プログラムの更新版を前記第2記憶部に対して書き込む過程において、前記第1記憶部を初期化する前に、前記イグニッションスイッチのON/OFF状態によらず前記車両が備えるバッテリを前記車両制御装置に接続する
ことを特徴とする請求項1記載の車両制御装置。
前記演算部は、前記書換部が前記制御プログラムの更新版を前記記憶装置に対して格納した後、前記イグニッションスイッチがONされたとき、前記制御プログラムの更新版を実行する
ことを特徴とする請求項1記載の車両制御装置。
前記第1記憶部を初期化している間に前記イグニッションスイッチがONされた場合、前記書換部は前記第1記憶部を初期化する処理を中断し、前記演算部は前記制御プログラムの更新版を実行する
ことを特徴とする請求項3記載の車両制御装置。
【発明を実施するための形態】
【0011】
<実施の形態1>
図1は、本発明の実施形態1に係る車両制御装置1の構成図である。車両制御装置1は車両の動作を制御する制御プログラムを実行する装置である。車両制御装置1は、車両が備えるイグニッション3がONされると、電源回路4を介して電源が供給される。車両制御装置1は、車載ネットワーク5を介してリプログラミング装置2と接続される。
【0012】
リプログラミング装置2は、車両制御装置1が実行する制御プログラムを更新版に書き換える装置である。例えばメンテナンス作業時にオペレータがリプログラミング装置2を車両に接続し、オペレータはリプログラミング装置2を操作して車両制御装置1に対して制御プログラムの更新命令(リプログラミング命令)および更新版を送信する。
【0013】
車両制御装置1は、演算部11と記憶装置12を備える。演算部11は、記憶装置12が格納している制御プログラムを実行する、例えばマイクロコンピュータなどの演算装置である。以下では記載の便宜上、各プログラムを動作主体として説明する場合があるが、実際にこれらプログラムを実行するのは演算部11である。
【0014】
記憶装置12は、例えばフラッシュROMなどの不揮発性記憶装置であり、起動プログラム121、書換プログラム122、管理データ123を格納している。記憶装置12はさらに、第1エリア124と第2エリア125を有する。
【0015】
起動プログラム121は、車両制御装置1が通常モードで起動したとき演算部11が初めに実行するプログラムである。書換プログラム122は、リプログラミング装置2からの指示にしたがって、第1エリア124または第2エリア125が格納している制御プログラムを更新版に書き換える。管理データ123については後述する。第1エリア124と第2エリア125は、制御プログラムを格納する記憶領域である。
図1に示す状態においては、第1エリア124が制御プログラムの現行バージョンを格納し、第2エリア125は空であるものとする。
【0016】
図2は、管理データ123の構成を示す図である。管理データ123は、未使用エリア番号1231、未使用エリア先頭アドレス1232、未使用エリアサイズ1233、未使用エリア消去状態1234を保持する。
【0017】
未使用エリア番号1231は、第1エリア124と第2エリア125のいずれが制御プログラムの現行バージョンを格納しているかを示す情報を保持する。未使用エリア先頭アドレス1232と未使用エリアサイズ1233は、第1エリア124と第2エリア125のうち制御プログラムの現行バージョンを格納していない側の先頭アドレスと領域サイズをそれぞれ保持する。未使用エリア消去状態1234は、第1エリア124と第2エリア125のうち制御プログラムの現行バージョンを格納していない側が完全に初期化されているか否かを示す情報を保持する。初期化が中断する理由については後述する。
【0018】
図3は、従来のリプログラミングシーケンスを示す図である。本発明と比較するために記載した。以下
図3にしたがって、従来のリプログラミングシーケンスにおける課題を説明する。
【0019】
オペレータは、車両制御装置1の電源をON(例えばイグニッション3をON)にした上で、リプログラミング装置2を車両に接続しリプログラミング(制御プログラムを更新する処理)を開始する。リプログラミング装置2は、車両制御装置1に対して制御プログラミングを更新するよう指示する命令を発行する。演算部11はその命令を受け取ると、リプログラミングモードに遷移する。
【0020】
リプログラミング装置2は、車両制御装置1に対して、制御プログラムを格納しているROM領域が格納している古いデータを消去するよう指示する。演算部11はその指示にしたがってROM領域を消去し、完了するとその旨を応答する。リプログラミング装置2は、車両制御装置1に対して制御プログラムの更新版を送信し、演算部11はその更新版を消去したROM領域に書き込む。演算部11が書込完了を応答すると、リプログラミング装置2と車両制御装置1との間で書き込んだデータの正当性をチェックする。書き込んだ制御プログラムの正当性が確認されると、演算部11はリプログラミングモードを終了し、通常モードへ遷移する。
【0021】
上記リプログラミングシーケンスにおいては、制御プログラムの更新版をROMへ書き込む前にその書込先領域が格納している古いデータをあらかじめ消去している。ROMは固定的なデータを格納するので、記憶領域全体を一括して更新するのが一般的だからである。特にフラッシュROMなどのように、単に記憶領域を更新するのみならず、古いデータを格納している記憶領域を更新する前にその記憶領域を初期化する必要があるデバイスを用いる場合、この初期化処理は比較的長い時間を要する。したがってこの初期化処理によりリプログラミング作業の効率が低下する。
【0022】
図4は、本実施形態1に係る車両制御装置1がリプログラミングを実施するシーケンスを示す図である。以下
図4にしたがって、本実施形態1におけるリプログラミングシーケンスについて説明する。
【0023】
オペレータは、従来と同様にリプログラミングを開始する。リプログラミング装置2は車両制御装置1に対して、記憶装置12の未使用エリア(制御プログラムの現行バージョンを格納していないエリアであり、加えて記憶領域の初期化が完了している)を問い合わせる。演算部11は、管理データ123を参照して、第1エリア124と第2エリア125のいずれが未使用であるかについて、未使用エリア先頭アドレス1232と未使用エリアサイズ1233と併せて回答する。
【0024】
リプログラミング装置2は、車両制御装置1に対して、未使用エリアに制御プログラムの更新版を書き込むよう指示する。書換プログラム122は、リプログラミング装置2からの指示にしたがって制御プログラムの更新版を書き込む(
図1においては第2エリア125へ書き込む)。以後通常モードに遷移するまでは、
図3で説明した従来シーケンスと同様である。
【0025】
以上のシーケンスにおいて、書換プログラム122は未使用エリア(ここでは、初期化済みの第2エリア125)に対して制御プログラムの更新版を書き込んでいるので、書き込み前にそのエリアを初期化する必要はない。したがってリプログラミングシーケンスを短時間で完了することができる。
【0026】
次回のリプログラミングシーケンスにおいても、記憶領域を初期化するための時間を節約するためには、次回のリプログラミングシーケンスを実行開始する前までに書き込み先の記憶領域を初期化しておく必要がある。そこで書換プログラム122は、例えば車両のイグニッション3がOFFされてから車両制御装置1がシャットダウンされるまでの間に、未使用エリア(ここでは第1エリア124)を初期化する。イグニッション3がOFFされた後に電源を維持する手段については後述する。
【0027】
図5は、書換プログラム122がリプログラミングシーケンスを実施する手順を説明するフローチャートである。以下
図5の各ステップについて説明する。
【0028】
(
図5:ステップS500〜S501)
演算部11、リプログラミング装置2からリプログラミング命令を受け取ると、本フローチャートを開始して書換プログラム122を起動する(S500)。演算部11は、リプログラミングモードに遷移する(S501)。
【0029】
(
図5:ステップS502)
書換プログラム122は、電源保持信号をONにする。この信号は、車両のイグニッション3がOFFになっても車両のバッテリを車両制御装置1に接続し、電源を供給し続けるためのものである。詳細は後述する。
【0030】
(
図5:ステップS503〜S505)
書換プログラム122は、
図4で説明した手順にしたがって、制御プログラムの更新版をリプログラミング装置2から受け取り、これを未使用エリア(
図1においては第2エリア125)へ書き込み、その正当性をチェックする。
【0031】
(
図5:ステップS506〜S507)
書換プログラム122は、更新する前の制御プログラムを保持していた記憶領域(
図1においては第1エリア124)の番号、先頭アドレス、およびサイズを管理データ123に書き込む(S506)。以上の処理によりリプログラミングシーケンスが完了し、演算部11は通常モードへ遷移する(S507)。
【0032】
図6は、イグニッション3がOFFされたときの書換プログラム122の動作フローである。以下
図6の各ステップについて説明する。
【0033】
(
図6:ステップS600)
演算部11は、例えば割込信号などによってイグニッション3がOFFされた旨を検知すると、本フローチャートを開始して書換プログラム122を起動する。
【0034】
(
図6:ステップS601)
書換プログラム122は、管理データ123の未使用エリア消去状態1234をチェックする。未使用エリア消去状態1234が消去済である旨を示している場合はステップS606へスキップし、未消去である旨を示している場合はステップS602へ進む。
【0035】
(
図6:ステップS601:補足)
書換プログラム122は後述するステップS603またはS604において記憶装置12の記憶領域を初期化する。すなわちイグニッション3がOFFされたとき記憶領域を初期化する。したがってその初期化途中においてイグニッション3がONされると、書換プログラム122は初期化処理を中断し、演算部11は起動プログラム121を実行する。このように初期化処理は中断される可能性があるので、書換プログラム122は本ステップにおいて未使用エリア消去状態1234を参照し、初期化を開始する前に初期化完了済であるか否かをチェックすることとした。
【0036】
(
図6:ステップS602〜S604)
書換プログラム122は、未使用エリア番号1231を参照し、初期化すべき記憶領域を特定する(S602)。書換プログラム122は、未使用エリア番号1231の記述にしたがって、古い制御プログラムを格納している記憶領域を初期化する(S603〜S604)。
【0037】
(
図6:ステップS602〜S604:補足)
書換プログラム122は、前回の初期化処理が途中で中断された場合は、未使用エリアを改めて先頭アドレスから初期化する。前回の初期化処理が中断された個所から初期化処理を再開したい場合は、管理データ123上で初期化開始アドレスと初期化済アドレスなどを管理しておき、これを参照して前回の中段箇所から再開することが考えられる。
【0038】
(
図6:ステップS605〜S606)
書換プログラム122は、未使用エリア消去状態1234に対して消去済である旨の情報を書き込む(S605)。書換プログラム122は、電源保持信号をOFFにする(S606)。
【0039】
図7は、イグニッション3がONされたときの起動プログラム121の動作フローである。以下
図7の各ステップについて説明する。
【0040】
(
図7:ステップS700)
演算部11は、例えば割込信号などによってイグニッション3がONされた旨を検知すると、本フローチャートを開始して起動プログラム121を起動する。
【0041】
(
図7:ステップS701〜S703)
起動プログラム121は、管理データ123の未使用エリア番号1231を参照し、制御プログラムの現行バージョンが格納されている記憶領域を特定する(S701)。第1エリア124が未使用である場合は第2エリア125が格納している制御プログラムを実行し、第2エリア125が未使用である場合は第1エリア124が格納している制御プログラムを実行する。
【0042】
図8は、車両制御装置1の周辺回路を示す図である。記載の便宜上、車両制御装置1については演算部11のみを図示した。その他の回路構成は、車両制御装置1を搭載する車両が備えているものである。
【0043】
図8において、イグニッション3がONされるとバッテリVbatが車両制御装置1に接続され、車両制御装置1はこれを電源として動作する。リレー回路はイグニッション3または車両制御装置1が出力する電源保持信号(ステップS502で説明)の少なくともいずれかがONである場合にONとなり、バッテリVbatを車両制御装置1に接続する。すなわち車両制御装置1は、イグニッション3または電源保持信号の少なくともいずれかがONであれば、電源の供給を受けて動作することができる。
【0044】
書換プログラム122はイグニッションがOFFされたときの時間を利用して記憶領域を初期化するので、ステップS502において電源保持信号をONにし、記憶領域を初期化する間においても電源が供給され続けるようにした。初期化処理が終了した後はステップS606において電源保持信号をOFFにし、バッテリVbatを遮断する。
【0045】
<実施の形態1:まとめ>
以上のように、本実施形態1に係る車両制御装置1は、第2エリア125に対して制御プログラムの更新版を格納した後、次のリプログラミングシーケンスを実行開始するまでの間において、第1エリア124を初期化する。これにより、第2エリア125に対して制御プログラムの更新版を格納する処理のみならず、次回のリプログラミングシーケンスを短時間で完了することができる。
【0046】
また、本実施形態1に係る車両制御装置1は、制御プログラムの更新版を書き込んだ後、イグニッション3がOFFされてから車両制御装置1がシャットダウンするまでの間を利用して、未使用エリアを初期化する。これにより、車両制御装置1の空き時間を効果的に利用してリプログラミングシーケンスを短時間で完了することができる。
【0047】
<実施の形態2>
図9は、本発明の実施形態2に係るリプログラミングシステム100の構成図である。リプログラミングシステム100は、車両が搭載する複数の車両制御装置それぞれが実行する制御プログラムを更新するシステムである。リプログラミングシステム100は、複数の車両制御装置1、中継装置6、リプログラミング装置2を有する。
【0048】
各車両制御装置1は実施形態1と同様の構成を備えるため、アルファベット添字によって区別することとした。ただし少なくともいずれかの車両制御装置1が実行する制御プログラムは他の車両制御装置1が実行する制御プログラムとは異なるものである。
【0049】
中継装置6は、リプログラミング装置2と各車両制御装置1との間に配置され、車載ネットワーク5を介してリプログラミング装置2と各車両制御装置1との間の通信を中継する。中継装置6は、例えばリプログラミング装置2を車両に接続するための端子と車載ネットワーク5との間に配置することができるが、これに限られるものではない。
【0050】
車載ネットワーク5はバス型ネットワークであり、中継装置6はいずれか1の車両制御装置1と通信している間は他の車両制御装置1と通信することはできない。
【0051】
リプログラミング装置2は、各車両制御装置1に対するリプログラミング命令および各車両制御装置1に対して送信する制御プログラムの更新版を、いったん中継装置6に対して送信する。
【0052】
中継装置6は、まずいずれかの車両制御装置1(例えば車両制御装置1a)に対してリプログラミング命令と制御プログラムの更新版を送信する。これを受け取った車両制御装置1は、実施形態1で説明したリプログラミングシーケンスを開始する。書換プログラム122が制御プログラムの更新版を記憶領域に対して書き込んでいる間は、車載ネットワーク5の通信スロットが空く。そこで中継装置6は、その時間帯を利用して他の車両制御装置1に対してリプログラミング命令と制御プログラムの更新版を送信する。これによりバス型の車載ネットワーク5においても、リプログラミング命令と制御プログラムを各車両制御装置1に対して並列的に送信することができ、リプログラミング作業の短時間化に資する。
【0053】
<本発明の変形例について>
本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。上記実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。
【0054】
実施形態1〜2においては、記憶装置12の例としてフラッシュROMを挙げたが、その他の不揮発性記憶装置を用いる場合であっても本発明を適用することができる。制御プログラムを書き込む記憶領域は一括して更新することが通常であるため、更新前に記憶領域が格納している古いデータをいったん消去するからである。すなわち、フラッシュROMのように新しいデータを上書きする前に記憶領域を初期化する必要がない記憶装置を用いる場合であっても、本発明は一定の効果を発揮することができる。
【0055】
実施形態1〜2においては、記憶装置12が第1エリア124と第2エリア125に分かれている構成例を説明したが、同様の構成を2つの記憶装置によって実現することもできる。記憶領域(または記憶装置)を2以上設け、実施形態1〜2と同様の構成を実現することもできる。この場合は例えば各記憶領域(または記憶装置)に対して順番に制御プログラムを格納することになる。
【0056】
リプログラミングシーケンスにおいては、制御プログラムの最新版を書き込むのが通常であるが、諸事情によってはダウンバージョンした制御プログラムをリプログラミングする可能性もある。この場合、制御プログラムの更新版とはそのダウンバージョンした制御プログラムである。すなわち制御プログラムの更新版とは、直前のリプログラミングシーケンスによって書き込まれた制御プログラムのことを指す。
【0057】
上記各構成、機能、処理部、処理手段等は、それらの一部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、SSD(Solid State Drive)等の記録装置、ICカード、SDカード、DVD等の記録媒体に格納することができる。