(57)【要約】【課題】フラッシュメモリの使用効率を向上させる情報車両データ記録装置を提供すること。【解決手段】予め定められた車両状況が検出されると車両データを不揮発性のリングバッファに記憶する情報処理装置１００において、車両状況が検出された前後の車両データを収集する車両データ収集手段３２と、車両データを一次記憶する車両データ一次記憶手段２１と、リングバッファの車両データを消去単位ブロック毎に古い順に消去するデータ消去手段３４と、車両データ一次記憶手段に記憶された車両データをリングバッファの最後尾の車両データに続けて書き込むデータ書き込み手段３５と、を有し、データ消去手段は、車両データのサイズ以上の空き領域がなくなっても前記車両状況が検出されるまで、最も古い車両データが記憶されている消去単位ブロックの車両データを保持する、ことを特徴とする。【選択図】図２
2013073609.tif 000002
【特許請求の範囲】
【請求項１】
予め定められた車両状況が検出されると車両データを不揮発性のリングバッファに記憶する情報処理装置において、
前記車両状況が検出された前後の車両データを収集する車両データ収集手段と、
前記車両データ収集手段が収集した車両データを一次記憶する車両データ一次記憶手段と、
車両データのサイズ以上の空き領域がなくなると、前記リングバッファの車両データを古い順に消去単位ブロックで消去するデータ消去手段と、
前記車両データ一次記憶手段に記憶された車両データを、前記リングバッファの最後尾の車両データに続けて書き込むデータ書き込み手段と、を有し、
前記データ消去手段は、車両データのサイズ以上の空き領域がなくなっても前記車両状況が検出されるまで、最も古い車両データが記憶されている消去単位ブロックの車両データを保持し、前記車両状況が検出されたことを契機に最も古い車両データが記憶されている消去単位ブロックの車両データを消去する、
ことを特徴とする情報処理装置。
【請求項２】
消去単位ブロックと同じサイズの退避メモリと、
前記退避メモリに車両データを書き込む退避領域書き込み手段と、を有し、
前記データ消去手段は、退避領域に書き込まれている車両データと、前記車両状況が検出されたために新たに生じた車両データの合計サイズが消去単位ブロック以上のサイズである場合に、最も古い車両データが記憶されている消去単位ブロックの車両データを消去する、
ことを特徴とする請求項１記載の情報処理装置。
【請求項３】
退避領域に書き込まれている車両データと、前記車両状況が検出されたために新たに生じた車両データの合計サイズが消去単位ブロックより大きい場合、
前記退避領域に書き込まれている車両データ及び前記車両状況が検出されたために新たに生じた車両データのうち１消去単位ブロック分を、前記データ消去手段が消去した消去単位ブロックの空き領域に書き込み、１消去単位ブロックの超過分を前記退避領域に書き込む退避領域操作手段、を有することを特徴とする請求項２記載の情報処理装置。
【請求項４】
消去単位ブロックのサイズは、車両データのサイズの整数倍である、ことを特徴とする請求項１記載の情報処理装置。
【請求項５】
前記不揮発メモリはフラッシュメモリであり、前記車両データ一次記憶手段は揮発性のランダムアクセスメモリである、ことを特徴とする請求項１〜４いずれか1項記載の情報処理装置。
【請求項６】
予め定められた車両状況が検出されると車両データを不揮発性のリングバッファに記憶する情報処理装置のデータ記録方法において、
車両データ収集手段が、前記車両状況が検出された前後の車両データを収集し、車両データ一次記憶手段に一次記憶させるステップと、
データ書き込み手段が、前記車両データ一次記憶手段に記憶された車両データを、前記リングバッファの最後尾の車両データに続いて書き込むステップと、
車両データのサイズ以上の空き領域がなくなった場合、データ消去手段が、前記車両状況が検出されるまで、最も古い車両データが記憶されている消去単位ブロックの車両データを保持し、前記車両状況が検出されたことを契機に最も古い車両データが記憶されている消去単位ブロックの車両データを消去するステップと、
ことを特徴とするデータ記録方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、予め定められた車両状況が検出されると車両データを不揮発性のリングバッファに記憶する情報処理装置に関する。
【背景技術】
【０００２】
走行中の車両データは、メーカ等が故障の原因を特定したり不具合の発生当時の状況を解析するために役立つことが多い。このため、車両に、車両データを記録する車両データ記録装置が搭載されることがある。車両データには車載された各種のセンサの検出値が含まれる。車両データはイベントの発生を契機にして記録されるため、走行している限り不定期に発生しうる。
【０００３】
車両データ記録装置の記録媒体としては、IG‐OFF後も記録を保持するように、不揮発メモリが利用される。不揮発メモリにはフラッシュメモリ、ＨＤＤ、ＥＥＰＲＯＭ等があるが、サイズ、安定性、コスト、及び、書き込み速度などの点からフラッシュメモリが採用されることが少なくない。しかしながら、フラッシュメモリは、ブロック単位（イレーズブロック）でしかデータの消去が行えないという制約を有している（書き込みはバイト又はワード単位で可能）。また、車両データ記録装置が単にデータの書き変えを繰り返すと特定のブロックのデータの書き換え回数が増大する。ところが、フラッシュメモリは書き換え可能な回数に上限があるため、そのブロックだけ早く寿命を迎えてしまい、フラッシュメモリ全体の製品寿命が短くなってしまう。
【０００４】
このため、あるブロックへの書き換えが集中することを回避したり、ブロックの書き換え回数を平均化する技術が知られている（例えば、特許文献１参照。）。特許文献１には、ブロックを順番に並べた論理的なリングバッファを構成し、フラッシュメモリにデータを記録するときには消去済みセクタを有するメモリブロック内の先頭の消去済みセクタから順次データを記録するデータ記録法が開示されている。このデータ記録方は、メモリブロックの最終セクタにデータが記録された後にはリングバッファ上における次のメモリブロックのデータを消去しておき、次回の記録時は、メモリブロックの先頭セクタから順次データの記録を継続する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４‐０７１０３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に記載されたデータ記録法では、ブロックを消去してから次回のイベントで車両データを書き込むまで、ブロックに何もデータが書き込まれていない状態が生じているという問題がある。
【０００７】
図１は従来のデータ記録法の問題を説明する図の一例である。１〜Ｎの四角は消去単位のブロックを表し、各ブロックが論理的に連結されてリングバッファを形成している。
(i)  車両データ記録装置は、イベントが発生する前後の車両データを収集する。
(ii)  車両データ記録装置はフラッシュメモリに車両データを書き込む（図ではN番目のブロック）。
(iii)  ブロックの最後に車両データを書き込むと、車両データ記録装置は、次のブロックを消去する（図では１番目のブロック）。
(iv)  車両データ記録装置は、次のイベントが発生するとイベントの前後の車両データを収集する。
(v)  車両データ記録装置は、すでに消去してあるブロック（図では１番目のブロック）の先頭に車両データを書き込む。
【０００８】
このように(iii)〜(v)の間、フラッシュメモリのブロックには車両データが記録されていない時間が生じてしまい、メモリの使用効率が低下している。
【０００９】
本発明は、上記課題に鑑み、フラッシュメモリの使用効率を向上させる情報車両データ記録装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明は、予め定められた車両状況が検出されると車両データを不揮発性のリングバッファに記憶する情報処理装置において、前記車両状況が検出された前後の車両データを収集する車両データ収集手段と、前記車両データ収集手段が収集した車両データを一次記憶する車両データ一次記憶手段と、車両データのサイズ以上の空き領域がなくなると、前記リングバッファの車両データを消去単位ブロック毎に古い順に消去するデータ消去手段と、前記車両データ一次記憶手段に記憶された車両データを、前記リングバッファの最後尾の車両データに続けて書き込むデータ書き込み手段と、を有し、前記データ消去手段は、車両データのサイズ以上の空き領域がなくなっても前記車両状況が検出されるまで、最も古い車両データが記憶されている消去単位ブロックの車両データを保持し、前記車両状況が検出されたことを契機に最も古い車両データが記憶されている消去単位ブロックの車両データを消去する、ことを特徴とする。
【発明の効果】
【００１１】
フラッシュメモリの使用効率を向上させる情報車両データ記録装置を提供することができる。
【図面の簡単な説明】
【００１２】
【図１】従来のデータ記録法の問題を説明する図の一例である。
【図２】本実施形態の車両データ記録装置による車両データの記録を模式的に説明する図の一例である。
【図３】車両データ記録装置の構成図の一例である。
【図４】車両データ記録装置の機能ブロック図の一例である。
【図５】車両データ記録装置の動作手順を示すフローチャート図の一例である。
【図６】ブロックサイズと車両データのサイズの関係を模式的に説明する図の一例である。
【図７】ブロック間に車両データが跨って記憶されている不揮発メモリを模式的に説明する図の一例である。
【図８】車両データ記録装置による車両データの記録を模式的に説明する図の一例である（実施例２）。
【図９】車両データ記録装置の機能ブロック図の一例である（実施例２）。
【図１０】車両データ記録装置の動作手順を示すフローチャート図の一例である。
【図１１】退避領域の空き容量と車両データのサイズの関係を模式的に説明する図の一例である。
【発明を実施するための形態】
【００１３】
以下、本発明を実施するための形態について図面を参照しながら説明する。
【実施例１】
【００１４】
図２は、本実施形態の車両データ記録装置による車両データの記録を模式的に説明する図の一例である。
(i)  車両データ記録装置は、イベントが発生する前後の車両データを収集する。
(ii)  車両データ記録装置はフラッシュメモリに車両データを書き込む（図ではN番目のブロック）。
(iii)  車両データ記録装置はブロックに車両データを書き込んでも、次のブロックを消去しない。
(iv)  車両データ記録装置は、次のイベントが発生する前後の車両データを収集する。
(v)   ブロックに空き領域がない場合、車両データ記録装置は、リングバッファにおける次のブロックを消去する（図では１番目のブロック）。
(vi)  車両データ記録装置は、消去したブロックの先頭に車両データを書き込む。
【００１５】
車両データ記録装置は、(iii)において次のブロックを消去せず、次のイベントが発生した段階でブロックを消去するので、ブロックに車両データが記録されていない時間がほとんどなくなり、フラッシュメモリの使用効率を向上できる。
【００１６】
〔構成例〕
図３は、本実施形態の車両データ記録装置１００の構成図の一例を示す。車両データ記録装置１００は、１つ以上のＥＣＵ（Electronic  Control  Unit）により構成され、各ＥＣＵは車載ネットワーク１３を介して接続されている。車載ネットワーク１３のプロトコルには、ＣＡＮ（Controller  Area  Network）、ＦｌｅｘＲａｙ、Ｌｉｎ（Local  Interconnect  Network）等があるが、本実施形態ではＣＡＮを例にして説明する。
【００１７】
送信制御ＥＣＵ１２はＣＡＮデータ（車両データ）を受信制御ＥＣＵ１１に送信するＥＣＵである。図では１つの送信制御ＥＣＵ１２しかないが、車両データを生成するＥＣＵは２台以上あってもよい。送信制御ＥＣＵ１２のハード的な構成は受信制御ＥＣＵ１１と同等なので図示は省略した。なお、受信制御ＥＣＵ１１及び送信制御ＥＣＵ１２は機能的な呼称であり、車載装置を制御するＥＣＵが受信制御ＥＣＵ１１及び送信制御ＥＣＵ１２を兼ねることができる。受信制御ＥＣＵ１１としては、例えば、メータＥＣＵ、ボディＥＣＵ、ナビＥＣＵ、通信制御ＥＣＵ等が挙げられる。送信制御ＥＣＵ１２としては、エンジンＥＣＵ、ブレーキＥＣＵ、パワステＥＣＵ、エアバッグＥＣＵ、トランスミッションＥＣＵ等が挙げられる。受信制御ＥＣＵ自身が車両データを生成することもある。
【００１８】
メータＥＣＵは、スイッチ類（例えば、ターンシグナルスイッチ、ハンドブレーキスイッチ等）の操作状態、他のＥＣＵから取得した信号（車速、エンジン回転数、ドアロック状態、シートベルト装着状態、ワイパ作動状態等）を数値や揺動する針の指針位置に変換して表示する。ボディＥＣＵは、カーテシスイッチのオン／オフを検出したり、車内灯を制御したり、乗員の操作に基づきドアロック／アンロック等を行う。ナビＥＣＵは、ＧＮＳＳ（Global  Navigation  Satellite  Systems）などを使用して車両の位置情報を検出し、周辺の道路地図と自車位置アイコンを液晶ディスプレイなどの表示装置に表示する。また、目的地までの経路を算出し右左折や車線変更などの経路案内を行う。ナビＥＣＵにはラジオやテレビの受信機能、ＣＤ，ＤＶＤ，ＢＤプレーヤなどのオーディオビジュアル機能が搭載されることがある。通信制御ＥＣＵは、携帯電話網や無線ＬＡＮ、ＷＩＭＡＸなどの無線通信網に接続して、各種のサーバと通信する。不揮発メモリに記憶された車両データの一部又は全体を外部のサーバに送信することがある。
【００１９】
エンジンＥＣＵは、アクセル開度等を検出してスロットル開度や燃料噴射量を決定し、また、クランク角に基づき点火タイミングを制御する。ブレーキＥＣＵは各車輪の回転速度からスリップを検出し、スリップしている車輪の制動力を低減することで車輪ロックを回避するＡＢＳ（Anti‐lock  Brake  System）制御や、発信時の車輪の空転を検出した場合に車輪に制動力を加えるＴＲＣ（Traction  Control）制御を行う。この他、ヨーレート、ステアリング舵角、車輪速度等に基づき、各輪の制動力を調整するＥＳＣ（Electronic  Stability  Control）制御を行う。パワステＥＣＵは運転者の操舵トルクを検出して、モータを駆動させ運転者の操舵方向にステアリングシャフトを回転させる操舵支援を行う。また、ＬＫＡ（Lane  Keeping  Assist  system）が作動している間は、カメラＥＣＵが認識した走行レーンの略中央を走行するようにステアリングシャフトを回転駆動する。エアバッグＥＣＵは、車両に働いた加減速度や横減速度を解析して対応するエアバッグ（運転席、助手席、サイドエアバッグ、カーテンエアバッグ等）を展開する。トランスミッションＥＣＵは、アクセル開度やブレーキ操作によるエンジン回転数の増減、加速度、及び、車速等に応じてトランスミッションフルードが通過するバルブを開閉してギアを切り換える。
【００２０】
受信制御ＥＣＵ１１は、ＯＳ／ＣＡＮドライバ２５、マイコン２４、ＲＡＭ２１、ＲＯＭ２２、及び、不揮発メモリ２３を有する。ＯＳはマイコン２４の汎用的な機能を抽象化してＣＰＵが実行するプログラムがマイコン２４の機能を利用することを可能にする。また、ＯＳは、マルチタスク環境ではタスク管理したり、タスク毎にデータを保護したり、タスク間通信を行う。
【００２１】
ＣＡＮドライバは、不図示のＣＡNコントローラにＣＡＮデータの送信を要求したり、ＣＡＮコントローラが受信したＣＡＮデータからデータ部分を取り出す。すなわち、ＣＡＮドライバは、プログラムが送信要求したデータを、ＣＡＮプロトコルのフォーマットに格納し、ＣＡＮコントローラのバッファに設定する。また、ＣＡＮコントローラが予め定められたＣＡＮ  ＩＤのＣＡＮデータを受信した場合、ＣＡＮドライバはＣＡＮプロトコルのフォーマットに従いＣＡＮデータから取り出したデータをプログラムに送出する。
【００２２】
マイコン２４は、主にＣＰＵ、不図示のＲＡＭ、ＲＯＭ、ＤＭＡＣ（Direct  Memory  Access）、ＩＮＴＣ（Interrupt  Controller)を有する。また、図では、受信制御ＥＣＵ１１がマイコン２４外に、ＲＡＭ２１、ＲＯＭ２２、及び、不揮発メモリ２３を有するが、これらをマイコン２４内に格納して、１つのマイコン２４として構成することもできる。ＲＡＭ２１はプログラム（車載されたアプリケーション）が使用する揮発性の記憶手段であり、ＲＯＭ２２は車載されたプログラムを記憶する不揮発メモリ２３である。不揮発メモリ２３は、車両データを記憶する本実施形態のフラッシュメモリである。不揮発メモリ２３は、消去単位であるブロック毎に論理的な順番が付与されており、リングバッファを構成している。
【００２３】
図４は、車両データ記録装置１００の機能ブロック図の一例である。図４の各機能はＲＯＭ２２に記憶されたプログラムをマイコン２４のＣＰＵが実行し、不揮発メモリ２３や、ＤＭＡＣ及びＣＡＮコントローラなどのＩＣと協働することで実現される。
【００２４】
受信制御ＥＣＵ１１は、イベント検出部３１、車両データ収集部３２、空き領域判定部３３、ブロック消去部３４、及び、車両データ書き込み部３５を有する。イベント検出部３１は、車両データを記憶する契機となるイベントの発生を検出する。イベントには、例えば、ＩＧ‐ＯＮ、ＩＧ‐ＯＦＦ、車速が発進したこと、停止したこと、走行中に車速が所定値以上になったこと、加速度／減速度／横加速度が所定値以上になったこと、ヨーレートが所定値以上になったころ、ＡＢＳ・ＥＳＣが働いたこと、エアバッグが展開したこと、等がある。イベント検出部３１は、センサが検出した検出信号や送信制御ＥＣＵ１２が送信するＣＡＮデータに基づきイベントを検出する。また、送信制御ＥＣＵ１２からイベント発生の通知そのものを取得してもよい。イベント検出部３１は、イベントを検出すると車両データ収集部３２に車両データの収集を要求する。
【００２５】
車両データ収集部３２は、送信制御ＥＣＵ１２から車両データを収集する。記憶される車両データは、車速、加速度（減速度）、アクセル開度、プレーキペダルの踏み込み量、エンジン回転数、ヨーレート、位置情報などである。さらに、カメラが撮影した車両前方、側方、後方等の画像を記録してもよい。
【００２６】
車両データの内容はイベントの種類に関係なく固定である。しかし、車両データの内容はイベントの種類により変えてもよいし、車両データのサイズを変えることは困難ではない。しかし、イベント毎にデータサイズが変わってしまうと、後の解析の際にどのアドレスでイベントが切り替わったのかを判別しにくい。よって、車両データの内容がイベントの種類により変わったとしても、車両データのサイズは共通であることが好ましい。
【００２７】
また、イベントの種類により車両データのサイズを変える場合、車両データにイベントＩＤを追加することが好適である。イベントＩＤにより、1回の車両データのサイズが定まるので、不揮発メモリ２３の車両データがどのアドレスで次の車両データに切り替わったのかを判別できる。
【００２８】
また、車両データ収集部３２は、イベント発生前の車両データとイベント発生後の車両データとをそれぞれ収集する。イベント発生前の車両データとしては、車速、加速度（減速度）、アクセル開度やブレーキペダルの踏み込み量などが挙げられる。イベント発生後の車両データとしては、エンジン回転数、ヨーレート、位置情報などが挙げられる。イベント発生の前と後で、同じデータを収集することを妨げるものではない。車両データ収集部３２は、イベントの発生が検出される前から、例えば定期的にイベント発生前の車両データをＲＡＭ２１に記憶しておく。そして、イベントの発生が検出されると、イベント発生後の車両データをＲＡＭ２１に記憶する。車両データ書き込み部３５は、ＲＡＭ２１に記憶されているイベント発生前の車両データ、及び、イベント発生後の車両データを不揮発メモリ２３に書き込む。
【００２９】
空き領域判定部３３は、不揮発メモリ２３のブロックに空き領域があるか否かを判定する。１回の車両データのサイズ、最後に車両データが書き込まれたアドレス、及び、ブロックのサイズは既知である。よって、空き領域判定部３３は、ブロック内に１回分の車両データのサイズの空き領域があるか否かに基づき、不揮発メモリ２３のブロックに空き領域があるか否かを判定する。１回分の車両データのサイズの空き領域がない場合、ブロック消去部３４に１ブロックの消去を要求する。１回分の車両データのサイズの空き領域がある場合、車両データ書き込み部３５に車両データの不揮発メモリ２３への書き込みを要求する。
【００３０】
ブロック消去部３４は、ブロック内に１回分の車両データのサイズの空き領域がない場合、最後に車両データが書き込まれたブロックの次のブロックを消去する。これにより、空き領域が確保される。上記のように、フラッシュメモリはブロック単位でしか消去できない。
【００３１】
車両データ書き込み部３５は、ＲＡＭ２１に記憶された車両データを不揮発メモリ２３に書き込む。具体的には、最後に車両データを書き込んだアドレスの次のアドレスから車両データを書き込む。不揮発メモリ２３に記憶された車両データの最後のアドレスを、ポインタとして次回の書き込みのためＲＡＭ２１等に保持しておく。
【００３２】
〔動作手順〕
図５は、本実施例の車両データ記録装置１００の動作手順を示すフローチャート図の一例である。図５の手順は、例えばＩＧ‐ＯＮ後（ハイブリッド車や電気自動車の場合はシステムの起動後）繰り返し実行される。
【００３３】
車両データ収集部３２は、イベント前の車両データを収集する（Ｓ１０）。
【００３４】
車両データ収集部３２は、イベント前の車両データを収集しながら、イベント検出部３１がイベントの発生を検出したか否かを判定する（Ｓ２０）。イベント検出部３１がイベントの発生を検出しない場合（Ｓ２０のＮｏ）、車両データ収集部３２はイベント前の車両データの収集を継続する。
【００３５】
イベント検出部３１がイベントの発生を検出した場合（Ｓ２０のＹｅｓ）、車両データ収集部３２はイベント後の車両データを収集する（Ｓ３０）。これにより、イベント発生時に記憶すべき車両データを収集できた。
【００３６】
空き領域判定部３３は、不揮発メモリ２３に車両データを記憶するために必要な空き領域があるか否かを判定する（Ｓ４０）。空き領域判定部３３は、ポインタにより特定した車両データの書き込み先の先頭アドレスに車両データのサイズを加えた値が、１ブロックの最後のアドレスより大きいか否かを判定する。１ブロックの大きさは固定なので、１ブロックの最後のアドレスは既知である。
【００３７】
ブロックに空き領域がある場合（Ｓ４０のＹｅｓ）、車両データ書き込み部３５は車両データを空き領域に書き込む（Ｓ５０）。
【００３８】
一方、ブロックに空き領域がない場合（Ｓ４０のＮｏ）、ブロック消去部３４はブロック単位でブロックを消去する（Ｓ６０）。
【００３９】
車両データ書き込み部３５は、消去により生成された空き領域に車両データを書き込む（Ｓ５０）。
【００４０】
次に、車両データ書き込み部３５は、書き込まれた車両データのサイズにしたがい、ポインタを更新する（Ｓ７０）。これにより、ポインタは、不揮発メモリ２３における次回の車両データの書き込み先の先頭アドレスを示す。
【００４１】
このように、イベント発生後の車両データを書き込む直前に、１ブロック消去することで、ブロックが消去されている時間を短くでき、不揮発メモリ２３の使用効率を向上できる。
【００４２】
〔変形例〕
これまで説明したように、イベント発生後に１ブロック消去することで、不揮発メモリ２３の使用効率を向上できた。しかし、１ブロックのサイズ（以下、ブロックサイズという）に比べ、車両データのサイズが小さいと、ブロックにデータが記憶されていない時間が長くなり使用効率の向上効果が低下する。
【００４３】
図６は、ブロックサイズと車両データのサイズの関係を模式的に説明する図の一例である。図６（ａ）では、ブロックサイズよりも車両データのサイズの方が小さいため、データが記憶されていない領域が大きくなってしまう。イベントが発生することで、データが記憶されていない領域は、順次、小さくなるが、データが記憶されていない領域はメモリの使用効率を低下させている。
【００４４】
これに対し、図６（ｂ）では車両データのサイズがブロックサイズの半分程度になっている。この場合、ブロックが消去され、１つの車両データが書き込まれた直後から、データが記憶されていない領域をブロックサイズの半分以下に抑制することができる。したがって、ブロックサイズに対し車両データのサイズが大きいほど、メモリの使用効率を向上させやすい。
【００４５】
図６（ｃ）では、車両データのサイズとブロックサイズが同じになっている。この場合、ブロックが消去され、１つの車両データが書き込まれた直後から、データが記憶されていない領域をゼロにすることができる。
【００４６】
また、図６（ｄ）では、車両データのサイズがブロックサイズの整数倍になっている。この場合、２ブロックが消去され、１つの車両データが書き込まれた直後から、データが記憶されていない領域をゼロにすることができる。したがって、図６（ｃ）（ｄ）のように、車両データのサイズがブロックサイズの整数倍の場合に、最もメモリの使用効率を向上させることができる。
【実施例２】
【００４７】
本実施例では、ブロック間に車両データが跨って記憶されている場合について説明する。
図７は、ブロック間に車両データが跨って記憶されている不揮発メモリ２３を模式的に説明する図の一例である。図の斜線の四角が１つの車両データであり、１番目のブロックと２番目のブロックに跨っている。ブロックのサイズが車両データのサイズの整数倍でない場合、１つの車両データがブロック間に跨って記録されることがある。ブロックのサイズが車両データのサイズの整数倍であっても、車両データ以外のデータが記憶されていれば、１つの車両データがブロック間に跨って記録されるおそれがある。
【００４８】
イベントが発生し、１番目のブロックに車両データを書き込む場合、ブロック消去部３４は１番目のブロックを消去するので、１番目のブロックと２番目のブロックに跨っていた車両データは一部のみが消去される。このため、１番目のブロックと２番目のブロックに跨っていた車両データに連続性がなくなり、車両データとしての有用性が低下してしまう（解析に使えなくなる）。連続性がなくなった車両データは解析に使用できないとすれば、実質的に消去された場合と同様に不揮発メモリ２３の使用効率を低下させてしまう。
【００４９】
そこで、本実施例では、不揮発メモリ２３に退避領域を設けておき、退避領域に1ブロック分の車両データが記憶されたら、不揮発メモリ２３のブロックを消去して、退避領域の１ブロック分の車両データを書き込む車両データ記録装置１００について説明する。
【００５０】
図８は、本実施例の車両データ記録装置１００による車両データの記録を模式的に説明する図の一例である。図８では１ブロック分の退避領域が設けられている。退避領域は、不揮発メモリ２３に設けられている。退避領域をＲＡＭ２１に設けてもよい。
(i)  イベントが発生したため、車両データ記録装置１００がイベント発生前後の車両データを収集する。
(ii)  すでに、不揮発メモリ２３の空き領域がなくなっている。このため、車両データ記録装置１００は、退避領域に車両データを書き込む。
(iii)  続いて、イベントが発生したため、車両データ記録装置１００がイベント発生前後の車両データを収集する。
(iv)   車両データ記録装置１００は、退避領域に車両データを書き込むと、１ブロック分以上か否かを判定し、1ブロック分以上の車両データが退避される場合、１番目のブロックを消去する。
(v)  1ブロックの空き容量が生成されたので、退避領域の車両データ及び最も新しい車両データを書き込む。退避領域の車両データは不要になったので消去しておく。
【００５１】
このような手順によれば、従来では(ii)の時点で１ブロック分の車両データが消去されたのに比べ、(iv)で１ブロック分の車両データが消去されるまで、１番目のブロックと２番目のブロックに跨った車両データの連続性がなくなる時間を短くできる。
【００５２】
図９は、本実施例の車両データ記録装置１００の機能ブロック図の一例を示す。図９において図４と同一部には同一の符号を付しその説明は省略する。
【００５３】
本実施例の空き領域判定部３３は、不揮発メモリ２３の各ブロックへの書き込みが一巡するまで、ブロックに空き領域があるか否かを判定する。しかし、本実施例では、最後のNブロックへの書き込みが終了すると、常にブロックには空き領域がなくなるので、各ブロックへの書き込みが一巡した後は、空き領域判定部３３が空き領域の有無を判定する必要がない。ただ、各ブロックへの書き込みが一巡した後も空き領域判定部３３がブロックに空き領域があるか否かを判定しても不都合はない。
【００５４】
同様に、車両データ書き込み部３５は、各ブロックへの書き込みが一巡するまで、車両データをブロックに書き込むが、その後、ブロックに直接、車両データを書き込むことはない。
【００５５】
各ブロックへの書き込みが一巡した後、不揮発メモリ２３には空き領域がないので、本実施例では退避領域書き込み部３６が退避領域に車両データを書き込む。いったん、退避領域に書き込むことで、２つのブロックに跨った車両データの一部が消去され、車両データに連続性がなくなる時間を短くできる。
【００５６】
退避領域操作部３７は、退避領域に１ブロック分以上の車両データが記憶されるか否かを実際に記憶する前に判定する。１ブロック分以上の車両データが記憶される場合、ブロック消去部３４にブロックの消去を要求する。ブロック消去部３４が１ブロックを消去すると、退避領域操作部３７は退避領域の車両データ及び最新の車両データを不揮発メモリ２３のブロックに書き込む。
【００５７】
図１０は、本実施例の車両データ記録装置１００の動作手順を示すフローチャート図の一例である。図１０のＳ３０までの手順は、図５と同様である。すなわち、イベント検出部３１がイベントの発生を検出すると、車両データ収集部３２はイベント後の車両データを収集する（Ｓ３０）。これにより、イベント発生時に記憶すべき車両データを収集できた。
【００５８】
次に、空き領域判定部３３は、不揮発メモリ２３に車両データを記憶するために必要な空き領域があるか否かを判定する（Ｓ４０）。空き領域判定部３３は、ポインタにより特定した車両データの書き込み先の先頭アドレスに車両データのサイズを加えた値が、１ブロックの最後のアドレスより大きいか否かを判定する。本実施例では1ブロックを消去しないので、不揮発メモリ２３への記憶の一巡後、Ｓ４０の判定はＮｏとなる。ブロックに空き領域がある場合（Ｓ４０のＹｅｓ）、車両データ書き込み部３５は車両データを空き領域に書き込む（Ｓ５０）。
【００５９】
ブロックに空き領域がない場合（Ｓ４０のＮｏ）、退避領域操作部３７は、退避領域に１ブロック分以上の車両データを記憶するか否かを判定する（Ｓ１１０）。すなわち、実際に記録する前に、退避領域にすでに書き込まれた車両データのサイズと、これから書き込む車両データのサイズの合計が、１ブロック分か否かを判定する。書き込む前に判定することで、退避領域のサイズを１ブロック以下に抑制できる。
【００６０】
退避領域に１ブロック分以上の車両データが記憶されない場合（Ｓ１１０のＮｏ）、退避領域書き込み部３６は、退避領域の空き領域に車両データを書き込む（Ｓ１２０）。また、不揮発メモリ２３のブロックを消去すべきでないので、処理はＳ１０に戻る。
【００６１】
退避領域に合計で１ブロック分以上の車両データが記憶される場合（Ｓ１１０のＹｅｓ）、ブロック消去部３４はブロック単位で不揮発メモリ２３の１ブロックを消去する（Ｓ１３０）。
【００６２】
次に、退避領域操作部３７は退避領域の車両データを、消去したブロックに複写する（Ｓ１４０）。
【００６３】
そして、ＲＡＭ２１に保持している、最新の車両データを、車両データ書き込み部３５が消去したブロックに書き込む（Ｓ１５０）。
【００６４】
退避領域操作部３７は退避領域の車両データを消去する（Ｓ１６０）。
【００６５】
車両データ書き込み部３５は、車両データを書き込んだサイズにしたがい、ポインタを更新する（Ｓ７０）。これにより、ポインタは、不揮発メモリ２３における次回の車両データの書き込み先の先頭アドレスを示す。
【００６６】
このように、退避領域を設けることで、２つのブロックに車両データが跨って記憶されている場合、跨った車両データの連続性がなくなる時間を最小限にできる。
【００６７】
〔１ブロック超過分の車両データについて〕
例えば、ステップＳ１１０で退避領域に１ブロックより大きい車両データが記憶される場合、超過分の車両データについて説明する。
【００６８】
図１１（ａ）は、退避領域の空き容量と車両データのサイズの関係を模式的に説明する図の一例である。退避領域の空き容量よりも車両データの方が大きい場合、不揮発メモリ２３を１ブロック分消去しても、退避領域と車両データを全て、不揮発メモリ２３の１ブロックには記憶できない。
【００６９】
そこで、このような場合、退避領域操作部３７は退避領域と最新の車両データで合計1ブロック分を不揮発メモリ２３に書き込む。そして、最新の車両データのうち不揮発メモリ２３の１ブロックに記憶可能な１ブロック分だけ記憶しておき、１ブロックの超過分は退避メモリに記憶しておけばよい。こうすることで、退避領域は１ブロックしかなくても、１ブロックを超過した分の車両データに対応できる。
【００７０】
または、図１１（ｂ）のように退避領域を２ブロック設けてもよい。この場合は、退避領域が２ブロックあることを利用して、ＲＡＭ２１に記憶されている最新の車両データをいったん退避領域に記憶することができる。
【００７１】
退避領域に記憶された車両データのサイズが１ブロック以上になった場合、退避領域操作部３７が退避領域の1ブロック分を不揮発メモリ２３に書き込む。そして、１ブロックの超過分は２番目の退避メモリに記憶しておく。
【００７２】
退避領域操作部３７は次回の車両データは２番目の退避メモリに続けて記憶し、２番目の退避領域に空き領域がなくなると１番目の退避領域に記憶する。すなわち、退避領域もリングバッファのように使用される。こうすることで、退避領域は２ブロック必要になるが、車両データの書き込み処理を図１１（ａ）よりも簡易化することができる。
【符号の説明】
【００７３】
１１      受信制御ＥＣＵ
１２      送信制御ＥＣＵ
１３      車載ネットワーク
２１      ＲＡＭ
２２      ＲＯＭ
２３      不揮発メモリ
２４      マイコン
２５      ＯＳ／ＣＡＮドライバ
１００    車両データ記録装置
【図１】
2013073609.tif 000003
【図２】
2013073609.tif 000004
【図３】
2013073609.tif 000005
【図４】
2013073609.tif 000006
【図５】
2013073609.tif 000007
【図６】
2013073609.tif 000008
【図７】
2013073609.tif 000009
【図８】
2013073609.tif 000010
【図９】
2013073609.tif 000011
【図１０】
2013073609.tif 000012
【図１１】
2013073609.tif 000013