(57)【要約】【課題】不揮発性メモリからのデータの読み出しに要する時間を短縮する。【解決手段】データを記憶する領域の状態が書き込み済み状態かそれ以外の状態かのいずれかにある不揮発性メモリ（１２７）と、不揮発性メモリにデータを書き込む書込制御部（１２２３）と、不揮発性メモリからデータを読み出す読出制御部（１２２４）と、前記車両において発生した事象が検知されると事象データを取得するデータ取得部（１２２２）と、を備え、書込制御部（１２２３）は、前記事象データから冗長データを生成して、前記事象データと前記冗長データとを、不揮発性メモリ（１２７）に書き込み、読出制御部（１２２４）は、不揮発性メモリ（１２７）の前記冗長データを記憶する領域に対してのみ、前記書き込み済み状態か否かを判別し、前記判別結果によって事象データの書き込み完了状態を判断する、制御装置（５０ａ）。【選択図】図５
2020030589.tif 000002
【特許請求の範囲】
【請求項１】
車両に搭載された制御装置（５０ａ）であって、
データを記憶する領域を有し、前記領域の状態が書き込み済み状態かそれ以外の状態かのいずれかにある不揮発性メモリ（１２７）と、
前記不揮発性メモリ（１２７）にデータを書き込む書込制御部（１２２３）と、
前記不揮発性メモリ（１２７）からデータを読み出す読出制御部（１２２４）と、
前記車両において発生した事象が検知されると事象データを取得するデータ取得部（１２２２）と、を備え、
前記書込制御部（１２２３）は、前記事象データから冗長データを生成して、前記事象データと前記冗長データとを、前記不揮発性メモリ（１２７）に書き込み、
前記読出制御部（１２２４）は、前記不揮発性メモリ（１２７）の前記冗長データを記憶する領域に対してのみ、前記書き込み済み状態か否かを判別し、前記判別結果によって前記事象データの書き込み完了状態を判断する、
制御装置（５０ａ）。
【請求項２】
前記読出制御部（１２２４）は、前記冗長データを記憶する領域が前記書き込み済み状態である場合、前記冗長データとともに前記事象データを前記事象データに対して前記書き込み済み状態か否かの判別を行わずに前記不揮発性メモリ（１２７）から読み出し、読み出した前記冗長データを用いて読み出した前記事象データの整合性を検証することにより、前記事象データが正しく書き込まれたか否かを判断する、
請求項１に記載の制御装置（５０ａ）。
【請求項３】
前記書込制御部（１２２３）は、前記冗長データを書き込んだ後、前記事象データを書き込み、
前記読出制御部（１２２４）は、前記冗長データを記憶する領域が前記書き込み済み状態でない場合、前記事象データの書き込みが未完了と判断する、
請求項１又は２に記載の制御装置（５０ａ）。
【請求項４】
前記書込制御部（１２２３）は、前記事象データを書き込んだ後、前記冗長データを書き込み、
前記読出制御部（１２２４）は、前記冗長データを記憶する領域が前記書き込み済み状態である場合、前記事象データの書き込みが完了と判断する、
請求項１又は２に記載の制御装置（５０ａ）。
【請求項５】
前記読出制御部（１２２４）は、前記事象データの書き込みが完了か未完了かが不明と判断した場合、前記不揮発性メモリ（１２７）の前記事象データを記憶する領域に対して前記書き込み済み状態か否かの判別を行い、前記判別結果によって前記事象データのうち、書き込みが完了したデータ部分を判断する、
請求項１〜４のいずれか一項に記載の制御装置（５０ａ）。
【請求項６】
前記読出制御部（１２２４）は、書き込みが完了と判断した前記事象データを読み出して他のメモリにコピーし、前記他のメモリの前記事象データを記憶する領域のうち、書き込みが未完了と判断したデータ部分の領域に、初期値のデータを書き込む、
請求項１〜５のいずれか一項に記載の制御装置（５０ａ）。
【請求項７】
前記書込制御部（１２２３）は、前記事象データをセクタ単位で分割し、前記各セクタの冗長データを生成して、前記不揮発性メモリ（１２７）に、前記各セクタの冗長データと事象データをセクタ単位で書き込み、さらに、前記事象データの冗長データを生成し、生成した前記事象データの冗長データを前記各セクタの冗長データと事象データの前か後に書き込み、
前記読出制御部（１２２４）は、前記事象データの冗長データを記憶する領域に対して前記書き込み済み状態か否かの判別を実施し、前記冗長データが前記書き込み済み状態でない場合、前記各セクタの冗長データを記憶する領域に対して前記書き込み済み状態か否かの判別を実施し、前記各セクタの事象データの書き込み完了状態の判断を行う、
請求項１〜６のいずれか一項に記載の制御装置（５０ａ）。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置に関する。
【背景技術】
【０００２】
車両に搭載された電子制御装置（ＥＣＵ：Electronic Control Unit）は、衝突、故障等の事象の発生を検出すると、事後解析のためにＥＣＵ内部の不揮発性メモリに事象データを書き込む。例えば、エアバッグのＥＣＵは、主な衝突記録装置として、イベント発生の前後に取得された、加速度センサやアクセル開度センサ等のセンサの検出値、エンジン回転数、車速等のデータを事象データとして不揮発性メモリに書き込む（例えば、特許文献１参照。）。
【０００３】
不揮発性メモリのなかでもフラッシュメモリでは、複数ビット単位で構成されたページと呼ばれる単位でデータの書き込み及び読み出しが行われる。また、複数のページで構成されたブロックと呼ばれる単位でデータの消去が行われる（例えば、特許文献２参照。）。各ページは、消去状態か書き込み済み状態のいずれかの状態にある。消去状態にあるページは、書き込み操作が行われると書き込み済み状態に切り替わる。書き込み済み状態にあるページは消去操作が行われると消去状態に切り替わる。通常、不揮発性メモリのブロックに対して消去操作が行われると、当該ブロック内のすべてのページにおけるデータが０又は１の一定値に初期化される。この場合、消去状態のページから読み出されるデータは、常に、上述の初期化処理により初期化された値、つまり０か１のいずれかである。
【０００４】
一方、消去操作によって、消去状態のページのデータが不定値になることがある。消去状態のページからは、０が読み出される場合もあれば、１が読み出される場合もあり、読み出されるデータが毎回異なる可能性がある。そのため、データを読み出す操作の前にブランクチェックと呼ばれる操作を行って、各ページが消去状態か否かを判断することにより、消去状態のページからの不定値の読み出しを回避することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−２４７１７９号公報
【特許文献２】特開２００７−２５７２８３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
一般的に、エアバッグＥＣＵは、バッテリ電源に加えて、バックアップ電源にも接続され、衝突の事象発生によりバッテリ電源からの電源供給が遮断された後もバックアップ電源を用いて、エアバッグによる乗員保護機能を一定時間提供することができる。しかし、バックアップ電源の供給には限りがあり、かつエアバッグの作動によりエネルギーを消費するため、すべての事象データの書き込みが完了しない場合がある。
【０００７】
例えば、エアバッグＥＣＵが複数のページ分の事象データを書き込んでいる途中でエネルギーが尽きると、事象データが書き込まれるべき複数ページのなかに消去状態のページが含まれる。上述のように、消去状態のページから不定値の読み出しを避けるためには、その複数ページのすべてに対してブランクチェックを実施しなければならず、ブランクチェックの時間だけ、データの読み出し時間を要する。例えば、エアバッグＥＣＵの起動時にデータの読み出しを行う場合、ブランクチェックに時間を要し、本来の目的である乗員保護機能を提供するまでに時間を要してしまう。
【０００８】
本発明は、不揮発性メモリからのデータの読み出しに要する時間を短縮することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の一側面によれば、車両に搭載された制御装置（５０ａ）であって、データを記憶する領域を有し、前記領域の状態が書き込み済み状態かそれ以外の状態かのいずれかにある不揮発性メモリ（１２７）と、前記不揮発性メモリにデータを書き込む書込制御部（１２２３）と、前記不揮発性メモリからデータを読み出す読出制御部（１２２４）と、前記車両において発生した事象が検知されると事象データを取得するデータ取得部（１２２２）と、を備え、前記書込制御部（１２２３）は、前記事象データから冗長データを生成して、前記事象データと前記冗長データとを、前記不揮発性メモリ（１２７）に書き込み、前記読出制御部（１２２４）は、前記不揮発性メモリ（１２７）の前記冗長データを記憶する領域に対してのみ、前記書き込み済み状態か否かを判別し、前記判別結果によって前記事象データの書き込み完了状態を判断する、制御装置（５０ａ）が提供される。
【発明の効果】
【００１０】
本発明によれば、不揮発性メモリからのデータの読み出しに要する時間を短縮することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の第１〜第３実施形態に共通の制御装置の構成を示すブロック図である。
【図２】図１のＣＰＵの構成の一部を機能ごとに示すブロック図である。
【図３】第１実施形態のエアバッグＥＣＵが、不揮発性メモリに事象データを書き込むときの処理手順を示すフローチャートである。
【図４】第１実施形態のエアバッグＥＣＵ内の不揮発性メモリが記憶する事象データの一例を示す図である。
【図５】第１実施形態のエアバッグＥＣＵが、不揮発性メモリから事象データを読み出すときの処理手順を示すフローチャートである。
【図６】第２実施形態のエアバッグＥＣＵが、不揮発性メモリに事象データを書き込むときの処理手順を示すフローチャートである。
【図７】第２実施形態のエアバッグＥＣＵ内の不揮発性メモリが記憶する事象データの一例を示す図である。
【図８】第２実施形態のエアバッグＥＣＵが、不揮発性メモリから事象データを読み出すときの処理手順を示すフローチャートである。
【図９】第３実施形態のエアバッグＥＣＵが、不揮発性メモリに事象データを書き込むときの処理手順を示すフローチャートである。
【図１０】第３実施形態のエアバッグＥＣＵによりセクタ単位で分割された事象データの例を示す図である。
【図１１】第３実施形態のエアバッグＥＣＵが、不揮発性メモリから事象データを読み出すときの処理手順を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、本発明の制御装置の実施形態について、図面を参照して説明する。以下、３つの実施形態を説明するが、各実施形態は本発明の一例であって、これらに限定されない。各実施形態の制御装置は処理手順が異なるのみで構成は同じであるので、最初に共通の構成について説明した後、各実施形態での処理手順を説明する。
【００１３】
図１は、本発明の制御装置の一実施形態であるエアバッグＥＣＵ５０ａの構成を示している。エアバッグＥＣＵ５０ａは、図１に示すように、エアバッグ制御システム１０００に含まれる。エアバッグ制御システム１０００は、車両の状態をモニタして、車両の衝突を検出すると、運転席、助手席等の各部位のエアバッグを展開して、衝突時の搭乗者の安全性を向上させる。
【００１４】
エアバッグ制御システム１０００は、エアバッグＥＣＵ５０ａ、助手席乗員検知用ＥＣＵ５０ｉ、メーターＥＣＵ５０ｄ、バッテリ電源４００及びイグニッションスイッチ４１０を備える。エアバッグ制御システム１０００は、ＣＡＮ（Controller Area Network）通信線１５Ｈ及び１５Ｌを介して、図示しない他の制御装置、例えば空調装置、パワーウィンドウ、ワイパー装置、ドアロック、パワーシート等を制御するボディＥＣＵ、ライトの点灯を制御するライトＥＣＵ等と相互に通信可能に接続されている。
【００１５】
エアバッグ制御システム１０００は、運転席側エアバッグ用スクイブ５００、助手席側エアバッグ用スクイブ５１０、右サイドエアバッグ用スクイブ５２０、左サイドエアバッグ用スクイブ５３０、右カーテンエアバッグ用スクイブ５４０及び左カーテンエアバッグ用スクイブ５５０を備える。
【００１６】
また、エアバッグ制御システム１０００は、フロント右加速度センサ６００、フロント左加速度センサ６１０、右サイド加速度センサ６２０及び左サイド加速度センサ６３０を備える。
【００１７】
バッテリ電源４００は、車両に搭載された蓄電池である。バッテリ電源４００としては、鉛蓄電池等の各種蓄電池を使用できる。バッテリ電源４００は、電源ライン４０５を介してメーターＥＣＵ５０ｄへ電源を直接供給する。また、バッテリ電源４００は、電源ライン４０５を介して、車両の図示しない他の制御装置、例えばトランスミッションＥＣＵ等へも電源を直接供給する。
【００１８】
イグニッションスイッチ４１０は、車両のエンジンの始動と停止を切り替えるスイッチである。運転者が、イグニッションスイッチ４１０を、ＯＦＦ状態からＯＮ状態に切り替えるとエンジンは始動し、ＯＮ状態からＯＦＦ状態に切り替えるとエンジンは停止する。
【００１９】
イグニッションスイッチ４１０がＯＮ状態に切り替わると、バッテリ電源４００からメーターＥＣＵ５０ｄ、助手席乗員検知用ＥＣＵ５０ｉ及びエアバッグＥＣＵ５０ａへ、イグニッションライン４０７を介して、電源が供給される。
【００２０】
メーターＥＣＵ５０ｄは、エアバッグ警告灯２０１又は図示しないインストルメントパネルに対して、点灯信号、表示ＯＮ又はＯＦＦの要求信号等を送信する。メーターＥＣＵ５０ｄは、例えばエアバッグＥＣＵ５０ａから送信されたエアバッグ警告灯のＯＮ又はＯＦＦの要求信号に基づき、メーターパネル内のエアバッグ警告灯２０１の点灯又は消灯の制御を行う。また、メーターＥＣＵ５０ｄは、図示しないライトＥＣＵからＣＡＮ通信線１５Ｈ及び１５Ｌを介して送信された前照灯点灯中又は非点灯中の要求信号に基づき、メーターパネル自体の照明点灯又は消灯の制御を行う。また、メーターＥＣＵ５０ｄは、例えば図示しない車速センサの信号に基づいて車速を検出して記録し、ＣＡＮ通信線１５Ｈ及び１５Ｌを介して、記録した車速をエアバッグＥＣＵ５０ａへ送信する。同様に、図示しない車両安定制御用ＥＣＵは、図示しないブレーキスイッチの信号に基づいて運転者のブレーキ操作状態を検出して記録し、ＣＡＮ通信線１５Ｈ及び１５Ｌを介して、記録したブレーキ操作状態をエアバッグＥＣＵ５０ａへ送信する。
【００２１】
したがって、エアバッグＥＣＵ５０ａは、ＣＡＮ通信線１５Ｈ及び１５Ｌを介して車両がどのような状態で運転されているか、例えば車両の走行状態、ブレーキ状態等を検出することができる。この他、エアバッグＥＣＵ５０ａは、図示しないボディＥＣＵ、図示しないライトＥＣＵ及びメーターＥＣＵ５０ｄ等を介して、車両の種々の状態を示す情報を取得する。
【００２２】
助手席乗員検知用ＥＣＵ５０ｉは、車両の助手席のシート上の重量を、例えば荷重センサからのセンサ信号に基づいて検出し、助手席の乗員状態を判定する。例えば、助手席乗員検知用ＥＣＵ５０ｉは、検出した重量から、大人の男性、小柄な女性、子供、空席等の乗員状態を判定する。
【００２３】
助手席乗員検知用ＥＣＵ５０ｉは、ＬＩＮ（Local Interconnect Network）通信線１７を介して、判定された助手席の乗員状態をエアバッグＥＣＵ５０ａへ送信する。エアバッグＥＣＵ５０ａは、助手席の乗員状態をモニタすることによって、例えば助手席の乗員が子供の場合に、車両のフロントでの衝突時において意図しない助手席側エアバッグ用スクイブ５１０の通電を抑制し、助手席側に設けられたエアバッグの展開を抑制することができる。
【００２４】
（エアバッグＥＣＵ）
エアバッグＥＣＵ５０ａは、電圧検出器１０１、１０３、昇圧回路１０２、キャパシタ１０４、電圧検出Ｉ／Ｆ（InterFace）１０５及び１０７、ＤＣ−ＤＣコンバータ１０６及び通信部１０８を備える。
【００２５】
また、エアバッグＥＣＵ５０ａは、ＭＣＵ（Micro  Controller  Unit）１２０、ＡＳＩＣ（Application  Specific  Integrated  Circuit）１４０、加速度センサ１５０及び記憶部１６０を備える。
【００２６】
電圧検出器１０１は、イグニッションライン４０７を介して、バッテリ電源４００からエアバッグＥＣＵ５０ａへ供給された電源電圧値を検出する。電圧検出Ｉ／Ｆ１０５は、電圧検出器１０１によって検出された電圧信号をＭＣＵ１２０へ出力するためのインターフェースである。電圧検出器１０１によって検出された電圧信号は、電圧検出Ｉ／Ｆ１０５を介してＭＣＵ１２０へ出力される。
【００２７】
昇圧回路１０２は、バッテリ電源４００からイグニッションライン４０７を介してエアバッグＥＣＵ５０ａへ供給された電源電圧を昇圧する回路である。昇圧回路１０２は、例えばバッテリ電源４００から供給された９〜１６Ｖの電源電圧を３３Ｖ程度まで昇圧する。昇圧回路１０２は、昇圧した電圧をキャパシタ１０４及びＤＣ−ＤＣコンバータ１０６へ供給する。
【００２８】
電圧検出器１０３は、昇圧回路１０２から出力された電源電圧値を検出する。電圧検出Ｉ／Ｆ１０７は、電圧検出器１０３によって検出された電圧信号をＭＣＵ１２０へ出力するためのインターフェースである。電圧検出器１０３によって検出された電圧信号は電圧検出Ｉ／Ｆ１０７を介してＭＣＵ１２０へ出力される。
【００２９】
キャパシタ１０４は、昇圧回路１０２から供給された電圧の充放電を行う蓄電器である。キャパシタ１０４は、バッテリ電源４００のバックアップ電源として機能する。ＤＣ−ＤＣコンバータ１０６は、昇圧回路１０２から供給された電圧を、ＭＣＵ１２０で使用される電圧（例えば５Ｖ）へ変換（降圧）する変換器である。ＤＣ−ＤＣコンバータ１０６は、降圧した電圧をＭＣＵ１２０へ供給する。
【００３０】
通信部１０８は、ＣＡＮ通信線１５Ｈ及び１５Ｌ、ＬＩＮ通信線１７を介して接続された外部装置と通信を行う。通信部１０８は、ＣＡＮ通信トランシーバ１０９及びＬＩＮ通信トランシーバ１１０を備える。
ＣＡＮ通信トランシーバ１０９は、ＣＡＮ規格に基づいて、ＣＡＮ通信線１５Ｈ及び１５Ｌを介して、メーターＥＣＵ５０ｄ、図示しないボディＥＣＵ及びライトＥＣＵとの間でメッセージを送受信するインターフェースである。ＣＡＮ通信トランシーバ１０９によって受信されたデータは、ＭＣＵ１２０へ送信される。
【００３１】
ＬＩＮ通信トランシーバ１１０は、ＬＩＮ通信線１７を介して、助手席乗員検知用ＥＣＵ５０ｉとの間でデータの送受信を行うインターフェースである。ＬＩＮ通信トランシーバ１１０は、通信信号の電圧レベルを変換する。ＬＩＮ通信トランシーバ１１０は、例えばＭＣＵ１２０が取り扱える５Ｖ系の信号レベルを、ＬＩＮの電圧レベル（１２Ｖ）に変換する。
【００３２】
ＭＣＵ１２０は、Ａ／Ｄ（Analog  to  Digital  Converter）１２１、ＣＰＵ１２２、ＲＯＭ１２４、ＲＡＭ１２６、不揮発性メモリ（ＮｖＭ：Non-Volatile Memory）１２７及び不揮発性メモリコントローラ１２８を備える。また、ＭＣＵ１２０は、ＣＡＮ通信コントローラ１３１、ＬＩＮ通信コントローラ１３２及びＳＰＩ（Serial  Peripheral  Interface）１３４、１３６、１３８を備える。
【００３３】
Ａ／Ｄ１２１、ＣＰＵ１２２、ＲＯＭ１２４、ＲＡＭ１２６、不揮発性メモリコントローラ１２８、ＣＡＮ通信コントローラ１３１、ＬＩＮ通信コントローラ１３２、ＳＰＩ１３４、１３６及び１３８は、ＭＣＵ１２０の内部バス１７０を介して相互に接続されている。
【００３４】
Ａ／Ｄ１２１は、電圧検出Ｉ／Ｆ１０５及び１０７を介して入力されたアナログ電圧信号をデジタル電圧信号へ変換する。ＣＰＵ１２２は、ＲＯＭ１２４又はＲＡＭ１２６に格納された各種プログラムを実行する演算処理部である。ＣＰＵ１２２は、ＲＯＭ１２４又はＲＡＭ１２６に格納された各種プログラムを実行することにより、エアバッグＥＣＵ５０ａの各種機能を実行する。
【００３５】
ＲＯＭ１２４は、エアバッグＥＣＵ５０ａの各種機能を実行するためのデータ及び各種プログラムを格納するメモリである。ＲＡＭ１２６は、ＲＯＭ１２４に格納された各種プログラムのうち、ＣＰＵ１２２で実行されるプログラムの演算結果等を格納する、比較的小容量で高速アクセスが可能なメモリである。
【００３６】
不揮発性メモリ１２７は、書き込まれたデータを電力供給がない間も保持するメモリである。不揮発性メモリ１２７としては、例えばフラッシュメモリ、ＥＥＰＲＯＭ（Electrically  Erasable  Programmable  Read  Only  Memory）等を使用できる。
不揮発性メモリコントローラ１２８は、ＣＰＵ１２２の制御にしたがって、不揮発性メモリ１２７へのデータの書き込み操作、不揮発性メモリ１２７からのデータの読み出し操作又はブランクチェック操作を行う。
【００３７】
不揮発性メモリ１２７の種類によっては、データの書き込み操作と消去操作が一定の領域単位で行われることがある。
例えば、不揮発性メモリ１２７がＥＥＰＲＯＭである場合、その書き込み操作における領域は、複数ビット単位で構成されたセルと呼ばれる単位でデータの書き込み及び読み出しが行われる。それらのセルの単位は１バイトであり、複数のセルが同じ単位でまとまって１つのページを構成する。また、消去操作における領域は、書き込み操作における領域と同じである。消去操作においては、それぞれのセルに対してセル自身の値を上書きすることに実現される。例えば、セルに対して消去操作を行うことにより、セルは消去状態を示すために、そのセルを構成するすべてのビットが１になる。したがって、あるデータを記憶する領域を読み出す際には、データを読み出す前に、そのデータを記憶する領域を構成するすべてのセルを構成するすべてのビットが１であるかを判別する処理（これを、ブランクチェックと呼ぶ）を実施することにより、そのデータを記憶する領域が書き込み済み状態か否かを判別できる。また、あるデータを記憶する領域に加えて、そのデータが書き込み済み状態であるか消去状態であるかを示す複数セルで構成される領域を用いることにより、消去操作を行う際は、その状態を示す領域のみを消去状態を示す値に書き換え、読み出し時には、その状態を示す領域の示す値が消去状態か否かを判別する処理をブランクチェックとして用いても構わない。
【００３８】
例えば、不揮発性メモリ１２７がフラッシュメモリである場合、その書き込み操作における領域は、複数ビット単位で構成されたページと呼ばれる単位でデータの書き込み及び読み出しが行われる。また、消去操作における領域は、複数のページで構成されたブロックと呼ばれる単位でデータの消去が行われる。フラッシュメモリを構成するページは、ページごとに消去状態か書き込み済み状態のいずれか一方の状態にある。あるデータを記憶する領域について、その領域を構成する消去状態の複数ページに対してデータの書き込み操作が行われると、その領域を構成するページの状態はそれぞれデータを保持する書き込み済み状態に変わる。また、あるデータを記憶する領域を構成する書き込み済み状態の複数ページを含むブロックに対して消去操作が行われると、その領域を構成するページの状態はそれぞれデータの書き込みが可能になる消去状態に変わる。このとき、不揮発性メモリ１２７に保持されていたデータを構成するビットは、消去操作によって、０又は１の一定値ではなく、０と１の間の不定値となることがある。不定値となった消去状態のページを含む領域から読み出されるデータは、０である場合もあれば、１である場合もあり、読み出すごとに異なる可能性がある。そのため、データを読み出す前に、ブランクチェックと呼ばれる消去状態か否かを判断する操作を実施することにより、消去状態のページを含む領域から不定値の読み出しを避けることができる。このブランクチェックにより、データを記憶する領域を構成するすべてのページが消去状態でなければ、そのデータを記憶する領域が書き込み済み状態であると判断できる。
【００３９】
ＣＡＮ通信コントローラ１３１は、ＣＡＮ通信トランシーバ１０９を介して、ＣＡＮ通信線１５Ｈ及び１５Ｌ上のメーターＥＣＵ５０ｄ、図示しない車両の他の部品等との通信を制御する。ＬＩＮ通信コントローラ１３２は、非同期シリアル通信を制御する。エアバッグＥＣＵ５０ａは、ＬＩＮ通信トランシーバ１１０を介して助手席乗員検知用ＥＣＵ５０ｉと通信する。
【００４０】
ＳＰＩ１３４、１３６及び１３８は、クロック同期式シリアル通信のインターフェースである。ＳＰＩ１３４は、ＡＳＩＣ１４０とＭＣＵ１２０内の各デバイスとのインターフェースである。ＳＰＩ１３６は、加速度センサ１５０とＭＣＵ１２０内の各デバイスとのインターフェースである。ＳＰＩ１３８は、記憶部１６０とＭＣＵ１２０内の各デバイスとのインターフェースである。
【００４１】
加速度センサ１５０は、エアバッグＥＣＵ５０ａが配置された場所における加速度を検出する。加速度センサ１５０は、ＳＰＩ１３６を介して、検出した加速度をＭＣＵ１２０へ出力する。エアバッグＥＣＵ５０ａは、通常、車両のフロントからリアへの方向の中心軸上に設置され、より具体的には、車体のフロアトンネル上の剛性の高い部位に、ボルトとナット、ボルトとタップ穴等の機械的な締結手段により固定される。車体のフロント又はサイドに衝撃を受ける衝突が発生した時に、エアバッグＥＣＵ５０ａに搭載された加速度センサ１５０は加速度を検出する。
【００４２】
記憶部１６０は、例えばＳＰＩ１３８を介してＭＣＵ１２０から出力されたデータを記憶する。また、記憶部１６０は、記憶したデータをＭＣＵ１２０に提供する。記憶部１６０としては、例えばフラッシュメモリ、ＥＥＰＲＯＭ等の電力供給がない場合においてもデータを保持する不揮発性メモリを使用できる。
【００４３】
ＡＳＩＣ１４０は、複数機能の回路を１つにまとめた集積回路である。ＡＳＩＣ１４０は、スクイブＩ／Ｆ１４２とセンサＩ／Ｆ１４４とを備える。スクイブＩ／Ｆ１４２は、運転席側エアバッグ用スクイブ５００、助手席側エアバッグ用スクイブ５１０、右サイドエアバッグ用スクイブ５２０、左サイドエアバッグ用スクイブ５３０、右カーテンエアバッグ用スクイブ５４０及び左カーテンエアバッグ用スクイブ５５０へエアバッグの展開信号を送信するインターフェースである。
【００４４】
センサＩ／Ｆ１４４は、フロント右加速度センサ６００、フロント左加速度センサ６１０、右サイド加速度センサ６２０及び左サイド加速度センサ６３０から送信される加速度信号を受信するインターフェースである。フロント右加速度センサ６００及びフロント左加速度センサ６１０は、それぞれ車体のフロントにおける剛性の高い金属部に機械的な締結手段により固定され、衝突発生時の車体のフロントでの加速度を検出する。右サイド加速度センサ６２０及び左サイド加速度センサ６３０は、車体のサイドの車室内側、例えば車体のサイドに設けられたＢピラーの付け根付近等に固定され、衝突発生時の車体のサイドでの加速度を検出する。フロント右加速度センサ６００、フロント左加速度センサ６１０、右サイド加速度センサ６２０及び左サイド加速度センサ６３０と、エアバッグＥＣＵ５０ａとは、ワイヤーハーネスを介してコネクタ等の電気的着脱手段により接続される。
【００４５】
運転席側エアバッグ用スクイブ５００は、ＭＣＵ１２０からスクイブＩ／Ｆ１４２を介して送信された展開信号に基づいて、ガス発生剤を点火することで高圧ガスを発生させ、瞬時に運転席側の図示しないエアバッグを膨らませる。
【００４６】
助手席側エアバッグ用スクイブ５１０、右サイドエアバッグ用スクイブ５２０、左サイドエアバッグ用スクイブ５３０、右カーテンエアバッグ用スクイブ５４０及び左カーテンエアバッグ用スクイブ５５０も同様に、ＭＣＵ１２０から送信された展開信号に基づいて車両の左右のサイド及び左右のカーテン付近にそれぞれ配置された図示しないエアバッグを膨らませる。
【００４７】
フロント右加速度センサ６００は、車両のフロントの右側に配置された加速度センサである。フロント右加速度センサ６００は、検出した加速度をセンサＩ／Ｆ１４４に出力する。センサＩ／Ｆ１４４は、ＳＰＩ１３４を介してＭＣＵ１２０へ加速度を送信する。フロント左加速度センサ６１０、右サイド加速度センサ６２０及び左サイド加速度センサ６３０も同様に、車両の各場所に配置され、車両の各場所における加速度を検出する。検出された加速度は、上述のようにセンサＩ／Ｆ１４４によりＳＰＩ１３４を介してＭＣＵ１２０へ送信される。
【００４８】
図２は、ＣＰＵ１２２の構成の一部を機能ごとに示す機能ブロック図である。
図２に示すように、ＣＰＵ１２２は、事象検知部１２２１、データ取得部１２２２、書込制御部１２２３及び読出制御部１２２４を備える。
【００４９】
事象検知部１２２１は、車両に発生した事象を検知する。事象とは、現在の状態から異なる状態に遷移することをいう。例えば、エアバッグ制御システム１０００の場合、事象としては、衝突、故障等が挙げられる。事象検知部１２２１は、衝突判定処理、診断処理等の実行により事象を検知することができる。また、事象検知部１２２１は、ＣＡＮ通信線１５Ｈ及び１５Ｌを介して送信される車両の状態や事象発生の通知等から、事象を検知することもできる。
【００５０】
データ取得部１２２２は、事象検知部１２２１によって事象が検知されると、事象データを取得する。事象データは、事象の発生が検知された車両の状態を示すデータである。データ取得部１２２２は、常時、車両の状態を示すデータを取得し、事象が検知された時点以降の車両の状態だけでなく、事象が検知された時点より前の車両の状態を示すデータも、事象データとして取得してもよい。
【００５１】
例えば、衝突の事象の場合、データ取得部１２２２は、衝突の事象データとして、衝突発生が検知された際の車両の状態を示すデータを取得する。衝突の事象データとしては、例えばブレーキペダルの操作量、アクセル開度、舵角、エンジン回転数、車速等のＣＡＮ通信線１５Ｈ及び１５Ｌを介して受信したデータの他、エアバッグＥＣＵ５０ａの状態（スリープ状態か否か）等のデータが挙げられる。
【００５２】
また、エアバッグＥＣＵ５０ａが異常を検知し、その異常が一定期間以上継続した場合、エアバッグＥＣＵ５０ａは当該異常を故障として確定する。故障確定の事象が発生した場合は、データ取得部１２２２は、故障確定の事象データとして、故障が発生した際のデータを取得する。故障確定の事象データとしては、故障が確定した部位に該当する故障コード（ＤＴＣ：Diagnostic Trouble Code）に加え、事象発生時のエアバッグＥＣＵ５０ａを駆動させる電源電圧、エアバッグＥＣＵ５０ａが始動を開始してからの通電時間等が挙げられる。
【００５３】
なお、事象検知部１２２１により検知する事象及びデータ取得部１２２２により取得する事象データは、上記例に限らず、他の目的に応用することもできる。また、データ取得部１２２２は、その目的に応じて、事象データにその他のデータを追加することもできる。
【００５４】
書込制御部１２２３は、不揮発性メモリコントローラ１２８を制御して、不揮発性メモリ１２７にデータを書き込む。例えば、事象が発生したとき、書込制御部１２２３は、データ取得部１２２２により取得した事象データを不揮発性メモリ１２７に書き込む。
【００５５】
読出制御部１２２４は、不揮発性メモリコントローラ１２８を制御して、不揮発性メモリ１２７からデータを読み出す。例えば、事象の発生後にエンジンを再起動する際に当該事象データを読み出す設定の場合、読出制御部１２２４は、イグニッションスイッチ４１０がＯＮ状態に切り替わると、不揮発性メモリ１２７からデータを読み出す。
【００５６】
［第１実施形態］
第１実施形態のエアバッグＥＣＵ５０ａは、事象検知部１２２１により事象を検知し、データ取得部１２２２により事象データを取得すると、不揮発性メモリ１２７に取得したデータを書き込む。本実施形態では、不揮発性メモリ１２７をフラッシュメモリとした場合の例を示す。
図３は、第１実施形態のエアバッグＥＣＵ５０ａが、書込制御部１２２３により事象データを不揮発性メモリ１２７に書き込むときの処理手順を示している。
【００５７】
図３に示すように、エアバッグＥＣＵ５０ａの書込制御部１２２３は、書き込み対象の事象データから、整合性検証のための冗長データを生成する（ステップＳ１１）。冗長データを生成する方式としては、冗長データを用いて事象データの整合性の検証が可能であれば特に限定されない。例えば、冗長データの生成方式としては、ハッシュ関数の１つであるＣＲＣ（Cyclic Redundancy Check）が挙げられる。他のハッシュ関数のアルゴリズム、例えばＳＨＡ（Secure Hash Algorithm）−０、ＳＨＡ−１、ＳＨＡ−２、ＳＨＡ−３、ＭＤ２（Message Digest Algorithm）、ＭＤ３、ＭＤ４、ＭＤ５等も挙げられる。また、パリティチェック、ハミング符号等も挙げられる。なかでも、ＣＲＣの１種であるＣＲＣ−３２が、演算が容易で整合性の検証を高速に行うことができるため、好ましい。
【００５８】
書込制御部１２２３は、不揮発性メモリ１２７の消去状態にある１又は複数のページに対して、冗長データを書き込む（ステップＳ１２）。冗長データの書き込みが終了すると、書込制御部１２２３は、不揮発性メモリ１２７の消去状態にある１又は複数のページに対して、事象データを書き込む（ステップＳ１３）。
【００５９】
上記事象の発生時、車両に加わった衝撃、車両の部品の破断、破壊、欠損、故障、異常状態、車両の周辺環境による故障、妨害等に起因して、バッテリ電源４００からエアバッグＥＣＵ５０ａへの電源供給が遮断されることがある。この場合、キャパシタ１０４がバックアップ電源として電源供給を行うため、書込制御部１２２３は事象データ及び冗長データの書き込みを続行することができる。しかし、バックアップ電源のエネルギーはエアバッグの展開等にも使用されるため、書き込みの途中でエネルギーが尽きてエアバッグＥＣＵ５０ａが動作するためのエネルギーが失われると、事象データ又は冗長データの書き込みが未完了になることがある。
【００６０】
図４は、不揮発性メモリ１２７が記憶する事象データの一例を模式的に示している。図４中の矢印はデータの書き込み順を表す。
電源供給が遮断された際、図３に示した書込制御部１２２３による書き込みが未完了になるケースとして、ケース１：冗長データの書き込みが未完了、ケース２：冗長データの書き込みは完了したが、事象データの書き込みが未完了、の２つのケースがあり得る。図４はケース２を示し、書き込みが完了した冗長データＣｄを記憶するページＣ１〜Ｃ４は、すべて書き込み済み状態にある。事象データＩｄが書き込まれる領域は、書き込みが途中まで完了したページＩ１〜Ｉｎと、書き込みが未完了のために消去状態のままのページＩｎ＋１〜Ｉｍとが混在している。上述のように、不揮発性メモリ１２７の消去状態のページから読み出したデータは不定値である。各ページが書き込み済み状態か消去状態かは、ブランクチェックにより判断できる。
【００６１】
図５は、第１実施形態のエアバッグＥＣＵ５０ａが、不揮発性メモリ１２７から事象データを読み出すときの処理手順を示している。
図５に示すように、エアバッグＥＣＵ５０ａの読出制御部１２２４は、不揮発性メモリ１２７の冗長データを記憶するページに対してのみブランクチェックを実施する（ステップＳ２１）。
【００６２】
読出制御部１２２４は、冗長データを記憶するページのなかに、消去状態のページが少なくとも１ページある場合、冗長データの書き込みが未完了と判断する（ステップＳ２２：ＮＯ）。冗長データの書き込みが未完了である場合、その後に書き込まれた事象データの書き込みも未完了であるため、読出制御部１２２４は事象データの書き込みが未完了と判断する。読出制御部１２２４は、事象データに対応付けて、事象データの書き込み完了状態を示す付加情報を生成し、当該付加情報に書き込み未完了の状態を示すフラグをセットして（ステップＳ３７）、読み出しを終了する。
【００６３】
読出制御部１２２４は、冗長データを記憶するページのなかに消去状態のページがなく、すべて書き込み済み状態のページである場合、冗長データの書き込みが完了と判断する（ステップＳ２２：ＹＥＳ）。読出制御部１２２４は、書き込みが完了と判断した冗長データを記憶するページ、例えば図４に示すページＣ１〜Ｃ４から冗長データを読み出す（ステップＳ２３）。次いで、読出制御部１２２４は、不揮発性メモリ１２７の事象データのページ、例えば図４に示すページＩ１〜Ｉｍから、ブランクチェックを実施することなく、事象データを読み出す（ステップＳ２４）。
【００６４】
読出制御部１２２４は、読み出した事象データから冗長データを生成する（ステップＳ２５）。冗長データの生成方式は、図３に示すステップＳ１１で冗長データを生成したときと同じ方式が好ましいが、読み出した事象データから生成した冗長データを用いて整合性の検証ができるのであれば、他の方式であってもよい。例えば、非対称暗号(公開鍵暗号)方式の一例であるＲＳＡ暗号を冗長データの生成方式として用いた場合は、書き込み時は公開鍵を用いて事象データを暗号化しそれを冗長データとし、読み出し時は秘密鍵を用いて冗長データを復号し、事象データと整合性を検証することができる。
【００６５】
読出制御部１２２４は、ステップＳ２３で読み出した冗長データと、読み出した事象データからステップＳ２５で生成した冗長データとを照合し、事象データの整合性を検証する。例えば、図３中のステップＳ１１と図５中のステップＳ２５においてＣＲＣ−３２を用いて冗長データを生成した場合、読出制御部１２２４は、ステップＳ２６で整合性の検証として各冗長データの一致を確認する。また、他の例として、図３中のステップＳ１１においてＣＲＣ−３２を用いて冗長データを生成し、その生成された冗長データに対してビット反転させたデータを、図３中のステップＳ１２において書き込みした場合、読出制御部１２２４は、ステップＳ２６では整合性の検証として、ステップＳ２３で読み出した冗長データをビット反転させた値とステップＳ２５で生成した冗長データの一致を確認する。
【００６６】
読出制御部１２２４は、各冗長データが一致し、事象データの整合性が確認された場合（ステップＳ２６：ＹＥＳ）、事象データが正しく書き込まれ、かつ書き込みが完了していると判断する。読出制御部１２２４は、事象データのすべてを他のメモリ、例えばＲＡＭ１２６にコピーする（ステップＳ２７）。また、読出制御部１２２４は、ステップＳ２７でコピーした事象データに対応付けて、事象データの書き込み完了状態を示す付加情報を生成し、当該付加情報に書き込み完了の状態を示すフラグをセットする（ステップＳ２８）。読出制御部１２２４は、付加情報を、例えばステップＳ２７でコピーした事象データとともにＲＡＭ１２６に保存する。また、読出制御部１２２４は、ステップＳ２７で事象データをコピーしたときに、単に付加情報をコピー先へ通知してもよい。
【００６７】
読出制御部１２２４は、各冗長データが不一致であり、事象データと冗長データとの整合性が確認できなかった場合（ステップＳ２６：ＮＯ）、事象データのすべての書き込みが未完了と判断する。事象データの書き込み完了又は未完了については、この時点で判別が完了する。書き込みが未完了の場合は事象データの読み出しを終了してもよいが、書き込みが未完了であっても部分的に読み出したい場合もある。部分的に読み出さない場合(ステップＳ２９:ＮＯ)、読出制御部１２２４は、事象データの書き込みが未完了と判断し、事象データの書き込みが未完了の状態を示すフラグを付加情報にセットする（ステップＳ３７）。以下は、部分的に読み出す場合(ステップＳ２９:ＹＥＳ)の手順である。
【００６８】
読出制御部１２２４は、事象データを記憶するページ、例えば図４に示すページＩ１〜Ｉｍに対して１ページごとにブランクチェックを実施する（ステップＳ３０）。読出制御部１２２４は、ブランクチェックの結果、消去状態ではない場合は、当該ページの事象データの書き込みは完了していると判断する（ステップＳ３１：ＹＥＳ）。読出制御部１２２４は、書き込みが完了と判断したページから事象データを読み出して、ステップＳ２７と同様にＲＡＭ１２６にコピーする（ステップＳ３２）。
【００６９】
読出制御部１２２４は、ブランクチェックの結果、消去状態の場合は、当該ページは事象データの書き込みが未完了と判断する（ステップＳ３１：ＮＯ）。読出制御部１２２４は、ステップＳ３２と同じコピー先に対し、書き込みが未完了と判断したページに対応する領域に初期値を書き込む（ステップＳ３３）。例えば、読出制御部１２２４は、当該ページを構成する複数ビットに対してすべて０又は１のいずれかの一方の一定値を初期値として書き込む。この処理により、コピー先の事象データのうち、書き込みが未完了のデータ部分はすべて一定値になるため、書き込み未完了のデータ部分を容易に把握することができる。
【００７０】
読出制御部１２２４は、すべてのページのブランクチェックが完了するまで（ステップＳ３４：ＮＯ）、ステップＳ３０〜Ｓ３３の処理を繰り返す。すべてのページのブランクチェックが完了すると(ステップＳ３４：ＹＥＳ）、読出制御部１２２４は、ステップＳ２８と同様に付加情報を生成する。読出制御部１２２４は、書き込みが完了と判断した事象データのページが少なくとも１ページある場合(ステップＳ３５：ＹＥＳ)、事象データの書き込みが部分的に完了した状態を示すフラグを付加情報にセットする（ステップＳ３６）。一方、書き込みが完了と判断したページがない場合（ステップＳ３５：ＮＯ）、読出制御部１２２４は、事象データの書き込みが未完了の状態を示すフラグを付加情報にセットする（ステップＳ３７）。
【００７１】
以上のように、第１実施形態のエアバッグＥＣＵ５０ａは、事象データを冗長データとともに不揮発性メモリ１２７に書き込み、冗長データを記憶するページに対してのみブランクチェックを実施し、冗長データの書き込みが完了又は未完了を判断する。エアバッグＥＣＵ５０ａは、冗長データを事象データより先に書き込むことにより、冗長データの書き込みが未完了と判断した場合は、冗長データの後に書き込まれた事象データの書き込みも未完了であることをすぐに判断できる。
【００７２】
エアバッグＥＣＵ５０ａは、冗長データの書き込みが完了と判断した場合、その冗長データを用いて事象データの整合性の検証を行うことにより、事象データの書き込みが完了したか否かを判断する。エアバッグＥＣＵ５０ａは、事象データの書き込みが完了したと判断した場合は、ブランクチェックを行うことなく、事象データを読み出せる。また、エアバッグＥＣＵ５０ａは、事象データの書き込みが未完了と判断した場合は、必要に応じて、事象データを記憶するページのブランクチェックをページ単位で行い、書き込みが完了した事象データをページ単位で読み出す。
【００７３】
このように、第１実施形態のエアバッグＥＣＵ５０ａによれば、まず冗長データを記憶するページのブランクチェックにより冗長データの後に書き込まれた事象データの書き込みの完了又は未完了を判断することができる。これにより、事象データを記憶するすべてのページに対して、常にブランクチェックを実施するのではなく、冗長データの書き込みが完了しているが、事象データの書き込みが未完了である場合のみ実施するように、限定することができる。事象データに比べて、冗長データはデータ量が少ないため、冗長データのブランクチェックの時間は短い。整合性の検証も、ブランクチェックに比べて簡易な処理であり、処理時間が短い。したがって、事象データのうち、書き込みが完了したデータ部分を判断する処理時間を短縮することができる。これにより、事象データの読み出しに要する時間を短縮することができる。
【００７４】
［第２実施形態］
図６は、第２実施形態のエアバッグＥＣＵ５０ａが、事象データを不揮発性メモリ１２７に書き込むときの処理手順を示している。本実施形態では、不揮発性メモリ１２７をフラッシュメモリとした場合の例を示す。図６に示す処理手順は、事象データの後に冗長データを書き込むこと以外は、図３に示す第１実施形態の処理手順と同じ処理内容である。
【００７５】
すなわち、図６に示すように、エアバッグＥＣＵ５０ａの書込制御部１２２３が、事象データから整合性検証のための冗長データを生成する（ステップＳ５１）。書込制御部１２２３は、不揮発性メモリ１２７の消去状態にあるページに、事象データを書き込む（ステップＳ５２）。事象データの書き込みが終了すると、書込制御部１２２３は、事象データに続いて不揮発性メモリ１２７の消去状態のページに冗長データを書き込む（ステップＳ５３）。
【００７６】
図７は、不揮発性メモリ１２７が記憶する事象データの一例を模式的に示している。図７中の矢印は、データの書き込み順を表す。
電源供給が遮断された際、図６に示した書込制御部１２２３による書き込みが未完了になるケースとして、ケース１：事象データの書き込みが未完了であり、冗長データの書き込みも未完了、ケース２：事象データの書き込みが完了したが、冗長データの書き込みが未完了、の２つのケースがあり得る。図７は、ケース２を示し、書き込みが完了した事象データＩｄを記憶するページＩ１〜Ｉｍは、すべて書き込み済み状態にある。冗長データＣｄが書き込まれる領域には、書き込みが途中まで完了して書き込み済み状態にあるページＣ１と、書き込みが未完了のために消去状態のままのページＣ２及びＣ３、Ｃ４とが混在している。上述のように、消去状態のページから読み出したデータは不定値である。各ページが書き込み済み状態か消去状態かは、ブランクチェックにより判断できる。
【００７７】
図８は、第２実施形態のエアバッグＥＣＵ５０ａが、事象データを不揮発性メモリ１２７から読み出すときの処理手順を示している。
図８に示すように、エアバッグＥＣＵ５０ａの読出制御部１２２４は、冗長データを記憶するページに対してのみブランクチェックを実施する（ステップＳ６１）。
【００７８】
読出制御部１２２４は、冗長データを記憶するページのなかに消去状態のページが少なくとも１ページある場合、冗長データの書き込みが未完了と判断する（ステップＳ６２：ＮＯ）。冗長データの書き込みが未完了の場合、読出制御部１２２４は、冗長データより前に書き込まれた事象データの書き込みの完了又は未完了は不明と判断する。事象データの書き込みが未完了又は不明である場合は、事象データの読み出しを終了してもよいが、書き込みが未完了であっても部分的に読み出したい場合もある。部分的に読み出さない場合(ステップＳ６３:ＮＯ)、読出制御部１２２４は、事象データの書き込みが未完了と判断する。読出制御部１２２４は、事象データに対応付けて事象データの書き込み完了状態を示す付加情報を生成し、事象データの書き込みが未完了の状態を示すフラグを付加情報にセットする（ステップＳ７１）。以下は、部分的に読み出す場合(ステップＳ６３: ＹＥＳ)の手順である。
【００７９】
部分的に読み出す場合（ステップＳ６３:ＹＥＳ）、読出制御部１２２４は、事象データを記憶するページ、例えば図７に示すページＩ１〜Ｉｍに対し、１ページごとにブランクチェックを実施する（ステップＳ６４）。
読出制御部１２２４は、ブランクチェックの結果、消去状態ではない場合は、当該ページの事象データの書き込みは完了していると判断する（ステップＳ６５：ＹＥＳ）。読出制御部１２２４は、書き込みが完了と判断したページから事象データを読み出して、他のメモリ、例えばＲＡＭ１２６にコピーする（ステップＳ６６）。読出制御部１２２４は、ブランクチェックの結果、消去状態であった場合は、当該ページの事象データの書き込みが未完了と判断する（ステップＳ６５：ＮＯ）。読出制御部１２２４は、ステップＳ６６と同じコピー先に対し、書き込みが未完了と判断したページに対応する領域に初期値を書き込む（ステップＳ６７）。初期値は、第１実施形態と同様に、当該ページを構成する複数ビットに対してすべて０又は１のいずれか一方の一定値である。
【００８０】
読出制御部１２２４は、すべてのページのブランクチェックが完了するまで（ステップＳ６８：ＮＯ）、ステップＳ６４〜Ｓ６７の処理を繰り返す。すべてのページのブランクチェックが完了すると(ステップＳ６８：ＹＥＳ）、読出制御部１２２４は、ステップＳ６６でコピーした事象データに対応付けて付加情報を生成する。読出制御部１２２４は、書き込みが完了と判断した事象データのページが少なくとも１ページある場合(ステップＳ６９：ＹＥＳ)、部分的に完了の状態を示すフラグを付加情報にセットする（ステップＳ７０）。一方、読出制御部１２２４は、書き込みが完了と判断したページがない場合（ステップＳ６９：ＮＯ）、事象データの書き込みが未完了の状態を示すフラグを付加情報にセットする（ステップＳ７１）。
【００８１】
一方、読出制御部１２２４は、冗長データを記憶するページのなかに消去状態のページがなく、すべて書き込み済み状態のページである場合、冗長データの書き込みが完了と判断する（ステップＳ６２：ＹＥＳ）。読出制御部１２２４は、冗長データの書き込みが完了していれば、冗長データより前に書き込まれた事象データの書き込みは完了と判断する。読出制御部１２２４は、書き込みが完了と判断した冗長データを記憶するページ、例えば図７に示すページＣ１〜Ｃ４から冗長データを読み出す（ステップＳ７３）。次いで、読出制御部１２２４は、事象データを記憶するページから、ブランクチェックを実施することなく、事象データを読み出す（ステップＳ７４）。
【００８２】
読出制御部１２２４は、読み出した事象データから冗長データを生成する（ステップＳ７５）。冗長データの生成方式は、図６に示すステップＳ５１で冗長データを生成したときと同じ方式が好ましいが、読み出した事象データから生成した冗長データを用いて整合性の検証ができるのであれば、他の方式であってもよい点は、第１実施形態の場合と同様である。
【００８３】
読出制御部１２２４は、ステップＳ７３で読み出した冗長データと、ステップＳ７５で生成した冗長データとを照合し、事象データの整合性を検証する。整合性の検証については第１実施形態と同様に行うことができる。例えば、ＣＲＣ−３２を用いて冗長データを生成した場合、読出制御部１２２４は整合性の検証として冗長データの一致を確認する。各冗長データが一致し、事象データの整合性が確認された場合（ステップＳ７６：ＹＥＳ）、読出制御部１２２４は、事象データが正しく書き込まれ、かつ書き込みが完了していると判断する。読出制御部１２２４は、事象データのすべてを、例えばＲＡＭ１２６にコピーする（ステップＳ７７）。また、読出制御部１２２４は、ステップＳ７０と同様に付加情報を生成し、付加情報にすべての事象データの書き込み完了の状態を示すフラグをセットする（ステップＳ７８）。
【００８４】
読出制御部１２２４は、各冗長データが不一致であり、事象データと冗長データの整合性が確認できなかった場合（ステップＳ７６：ＮＯ）、書き込みは完了したが、書き込み途中に異常、又は読み出し途中に異常等が発生したと考えられる。そのため、当該事象データすべてを、ステップＳ６７と同様に初期値にして、ステップＳ７７と同様にＲＡＭ１２６に書き込む（ステップＳ７９）。また、読出制御部１２２４は、ステップＳ７０と同様に付加情報を生成し、付加情報に事象データの書き込み完了だが整合性不一致の状態を示すフラグをセットする（ステップＳ８０）。
【００８５】
以上のように、第２実施形態のエアバッグＥＣＵ５０ａは、事象データを冗長データとともに不揮発性メモリ１２７に書き込み、冗長データを記憶するページに対してのみブランクチェックを実施し、冗長データの書き込みが完了したか否かを判断する。エアバッグＥＣＵ５０ａは、事象データを冗長データより前に書き込むことにより、冗長データの書き込みが完了している場合は、冗長データより前に書き込まれた事象データの書き込みも完了していることをすぐに判断できる。
【００８６】
エアバッグＥＣＵ５０ａは、冗長データの書き込みが完了と判断した場合、その冗長データを用いて事象データの整合性を検証する。エアバッグＥＣＵ５０ａは、事象データの整合性が確認された場合は、ブランクチェックを行うことなく、事象データを読み出せる。また、エアバッグＥＣＵ５０ａは、冗長データの書き込みが未完了と判断した場合は、必要に応じて、事象データのブランクチェックをページ単位で行い、書き込みが完了した事象データをページ単位で読み出す。
【００８７】
このように、第２実施形態のエアバッグＥＣＵ５０ａによれば、第１実施形態と同様に、事象データを記憶するすべてのページに対して、常にブランクチェックを実施するのではなく、冗長データの書き込みが未完了であり、事象データの書き込みが完了したかどうかが不明の場合のみ実施するように、実施する場合を限定することができる。冗長データのブランクチェックの時間は短く、整合性の検証の処理時間も短い。したがって、事象データのうち、書き込みが完了したデータ部分を判断する処理時間を短縮することができる。これにより、事象データの読み出しに要する時間も短縮することができる。また、第1実施形態に加えて、整合性検証の結果を利用することにより、書き込みを行った事象データが正しく書き込めたかを検証することができる。
【００８８】
［第３実施形態］
第３実施形態のエアバッグＥＣＵ５０ａの書込制御部１２２３は、事象データをセクタ単位で分割し、各セクタの事象データから冗長データを生成して、各セクタの冗長データと事象データをセクタ単位で書き込む。第３実施形態のエアバッグＥＣＵ５０ａの読出制御部１２２４は、セクタ単位で事象データの読み出しを行う。具体的には、冗長データが事象データの前に書き込まれた場合、読出制御部１２２４は、セクタ単位で、図５に示す第１実施形態の処理手順を実行する。一方、冗長データが事象データの後に書き込まれた場合、読出制御部１２２４は、セクタ単位で、図８に示す第２実施形態の処理手順を実行する。
【００８９】
また、第３実施形態のエアバッグＥＣＵ５０ａの書込制御部１２２３は、事象データの冗長データをさらに生成し、生成した事象データの冗長データを、上記セクタ単位で書き込まれる各セクタの冗長データ及び事象データの前か後に、不揮発性メモリ１２７に書き込むこともできる。この場合、読出制御部１２２４は、各セクタ単位の事象データの読み出しを行う前に、事象データの冗長データを記憶する領域に対してブランクチェックを実施し、ブランクチェックの結果によって、前又は後に書き込まれた各セクタの冗長データ及び事象データの書き込みの完了状態の判断を行う。
【００９０】
以下、各セクタの冗長データ及び事象データを、冗長データ、事象データの順にセクタ単位で書き込み、各セクタの冗長データ及び事象データの後に、全セクタの事象データの冗長データを書き込む場合を一例として、第３実施形態のエアバッグＥＣＵ５０ａによる事象データの書き込みと読み出しの処理内容を説明する。また、本実施形態では、不揮発性メモリ１２７をフラッシュメモリとした場合の例を示す。
【００９１】
図９は、第３実施形態のエアバッグＥＣＵ５０ａが、不揮発性メモリ１２７に事象データを書き込むときの処理手順の一例を示す。
図９に示すように、エアバッグＥＣＵ５０ａの書込制御部１２２３は、第１実施形態と同様に事象データから冗長データを生成する（ステップＳ１０１）。書込制御部１２２３は、事象データをセクタ単位で分割し（ステップＳ１０２）、各セクタの事象データからセクタごとに冗長データを生成する（ステップＳ１０３）。セクタのデータサイズは、事象データよりも小さいサイズであれば、任意のサイズに決定できる。
【００９２】
書込制御部１２２３は、各セクタのうち、並び順が１番目のセクタに対応する冗長データを不揮発性メモリ１２７に書き込む（ステップＳ１０４）。次いで、書込制御部１２２３は、１番目のセクタに対応する事象データを書き込む（ステップＳ１０５）。書込制御部１２２３は、すべてのセクタの書き込みが完了していない場合（ステップＳ１０６：ＮＯ）、ステップＳ１０４に戻り、各セクタの冗長データ及び事象データの書き込みを各セクタの並び順に繰り返す。すべてのセクタの書き込みが完了すると（ステップＳ１０６：ＹＥＳ）、書込制御部１２２３は、ステップＳ１０１で生成した事象データに対応する冗長データを不揮発性メモリ１２７に書き込む（ステップＳ１０７）。
【００９３】
図１０は、セクタ単位で分割された事象データの一例を示している。
図９に示す処理手順によれば、図１０に示すように、事象データＩｄから冗長データＣｄが生成される。事象データＩｄは、４つのセクタに対応する事象データＩｄ１〜Ｉｄ４に分割される。各セクタの事象データＩｄ１〜Ｉｄ４からは冗長データＣｄ１〜Ｃｄ４が生成される。不揮発性メモリ１２７には、１番目のセクタの冗長データＣｄ１及び事象データＩｄ１、２番目のセクタの冗長データＣｄ２及び事象データＩｄ２、３番目のセクタの冗長データＣｄ３及び事象データＩｄ３、４番目のセクタの冗長データＣｄ４及び事象データＩｄ４が、この順に書き込まれる。その後、事象データＩｄの冗長データＣｄが書き込まれる。
【００９４】
図１１は、第３実施形態のエアバッグＥＣＵ５０ａが、図１０に示すように書き込まれた事象データを不揮発性メモリ１２７から読み出すときの処理手順の一例を示す。
図１１に示すように、エアバッグＥＣＵ５０ａの読出制御部１２２４は、不揮発性メモリ１２７の事象データの冗長データＣｄを記憶するページに対してのみブランクチェックを実施する（ステップＳ１２１）。
【００９５】
読出制御部１２２４は、ブランクチェックの結果、冗長データＣｄを記憶するページのなかに、消去状態のページが少なくとも１ページある場合、冗長データＣｄの書き込みが未完了と判断する（ステップＳ１２２：ＮＯ）。読出制御部１２２４は、冗長データＣｄの書き込みが未完了の場合、その前の各セクタの冗長データＣｄ１〜Ｃｄ４及び事象データＩｄ１〜Ｉｄ４の書き込みが完了か未完了かは不明と判断する。事象データの書き込みが未完了又は不明である場合は、事象データの読み出しを終了してもよいが、書き込みが未完了であっても部分的に読み出したい場合もある。部分的に読み出さない場合(ステップＳ１２３:ＮＯ)は、読出制御部１２２４は、事象データの書き込みが未完了と判断し、事象データに対応付けて事象データの書き込み完了状態を示す付加情報を生成する。読出制御部１２２４は、事象データの書き込みが未完了の状態を示すフラグを付加情報にセットする（ステップＳ１２８）。以下は、部分的に読み出す場合(ステップＳ１２３:ＹＥＳ)の手順である。
【００９６】
部分的に読み出す場合（ステップＳ１２３:ＹＥＳ）、セクタ単位での読み出し処理を各セクタの書き込み順に実行する。具体的には、読出制御部１２２４は、各セクタのうち、１番目のセクタに対応する冗長データＣｄ１及び事象データＩｄ１の読み出しを、図５に示す第１実施形態の処理手順により行う（ステップＳ１２４）。
【００９７】
全セクタの読み出しが完了していない場合（ステップＳ１２５：ＮＯ）、読出制御部１２２４は、ステップＳ１２４に戻り、書き込み順が次のセクタの読み出し処理を実行する。全セクタの読み出し処理が完了すると（ステップＳ１２５：ＹＥＳ）読出制御部１２２４は、書き込みが完了と判断した事象データのセクタが少なくとも１つ以上ある場合(ステップＳ１２６：ＹＥＳ)、部分的に完了の状態を示すフラグを付加情報にセットする（ステップＳ１２７）。一方、読出制御部１２２４は、書き込みが完了と判断したセクタがない場合（ステップＳ１２６：ＮＯ）、事象データの書き込みが未完了の状態を示すフラグを付加情報にセットする（ステップＳ１２８）。その後、本処理を終了する。
【００９８】
一方、読出制御部１２２４は、ブランクチェックの結果、冗長データＣｄを記憶するページのなかに、消去状態のページがない場合、冗長データＣｄの書き込みが完了と判断する（ステップＳ１２２：ＹＥＳ）。読出制御部１２２４は、冗長データＣｄの書き込みが完了の場合、その前の各セクタの冗長データＣｄ１〜Ｃｄ４及び事象データＩｄ１〜Ｉｄ４の書き込みも完了と判断する。読出制御部１２２４は、冗長データＣｄを不揮発性メモリ１２７から読み出す（ステップＳ１２９）。また、読出制御部１２２４は、ブランクチェックを実施することなく各セクタの事象データＩｄ１〜Ｉｄ４を読み出す。読出制御部１２２４は、各セクタの事象データＩｄ１〜Ｉｄ４を結合して、分割前の事象データＩｄを復元する（ステップＳ１３０）。
【００９９】
読出制御部１２２４は、復元した事象データＩｄから冗長データを生成する（ステップＳ１３１）。冗長データの生成方式は、図９に示すステップＳ１０１で冗長データを生成したときと同じ方式が好ましいが、読み出した事象データＩｄから生成した冗長データを用いて整合性の検証ができるのであれば、他の方式であってもよい点は、第１実施形態の場合と同様である。読出制御部１２２４は、第１実施形態と同様にして、ステップＳ１２９で読み出した冗長データＣｄと、ステップＳ１３１で生成した冗長データとを照合し、事象データＩｄの整合性を検証する。
【０１００】
各冗長データが一致し、事象データＩｄの整合性が確認できた場合（ステップＳ１３２：ＹＥＳ）、読出制御部１２２４は、事象データＩｄを他のメモリ、例えばＲＡＭ１２６にコピーする（ステップＳ１３３）。読出制御部１２２４は、コピーした事象データＩｄに対応付けて付加情報を生成し、事象データＩｄの書き込みが完了の状態を示すフラグを付加情報にセットする（ステップＳ１３４）。一方、各冗長データが不一致であり、冗長データＣｄと事象データＩｄの整合性が確認できなかった場合（ステップＳ１３２：ＮＯ）、書き込みは完了したが、書き込み途中に異常、又は読み出し途中に異常等が発生したと考えられる。そのため、当該事象データすべてを、図８に示す第２実施形態のステップＳ７９と同様に初期値にして、ステップＳ１３３同様にＲＡＭ１２６に書き込む（ステップＳ１３５）。また、読出制御部１２２４は、ステップＳ１３４と同様に付加情報を生成し、付加情報に事象データの書き込み完了だが整合性不一致の状態を示すフラグをセットする（ステップＳ１３６）。その後、本処理を終了する。
【０１０１】
以上のように、第３実施形態のエアバッグＥＣＵ５０ａは、事象データをセクタ単位で分割し、各セクタの冗長データを生成して、不揮発性メモリ１２７に、各セクタの冗長データと事象データをセクタ単位で書き込む。さらに、エアバッグＥＣＵ５０ａは、セクタ単位で書き込む冗長データと事象データの前か後に、全セクタの事象データの冗長データを書き込む。この全セクタの事象データの冗長データを記憶する領域のみブランクチェックを行うことにより、第１実施形態又は第２実施形態と同様に、各セクタの冗長データ及び事象データの書き込みの完了状態をすぐに判断できる。また、第１実施形態又は第２実施形態と同様の読み出し処理を、セクタ単位でセクタの書き込み順に実行することにより、事象データの書き込みが未完了のセクタが判断できた時点で読み出しを終了することができ、読み出しの処理時間を短縮できる。
【０１０２】
以上、本発明の好ましい実施形態について説明したが、本発明は、これらの実施形態に限定されず、その要旨の範囲内で種々の変形及び変更が可能である。
例えば、本発明の制御装置の一実施形態としてエアバッグＥＣＵを説明したが、事象データの記録を行うＥＣＵであれば、エンジンＥＣＵ等の他のＥＣＵにおいても本発明を実施することができる。
【０１０３】
また、データを記憶する領域の状態として、書き込み済み状態、消去状態及び不定状態の３つの状態がある不揮発性メモリに事象データを記録する場合も本発明を実施することができる。この不揮発性メモリでは、例えば消去状態の領域のデータは、そのデータを構成するすべてのビットが０又は１のいずれか一方の値に初期化されているが、時間の経過、書き込み時のエラー等によって、保持するデータを構成するビットが０と１の間の不定値になる不定状態に変わりうる場合がある。この場合においては、ブランクチェックにより消去状態に加え不定状態の判別を行い、書き込み済み状態以外の消去状態又は不定状態と判断した領域のデータは、書き込みが未完了とみなすことができる。
【０１０４】
また、上記実施形態では、事象データの記録に、ＭＣＵ１２０内で内部バス１７０を介してＣＰＵ１２２と直接接続される不揮発性メモリ１２７を使用しているが、ＭＣＵ１２０の外部の記憶部１６０を使用してもよい。
【０１０５】
また、上記実施形態では、不揮発性メモリ１２７から読み出した事象データをコピーする他のメモリとして、ＲＡＭ１２６の例を挙げている。他のメモリは、これに限らず、記憶部１６０であってもよいし、エアバッグＥＣＵ５０ａに接続された診断用のＰＣ、タブレット等の外部のコンピュータのメモリであってもよい。
【符号の説明】
【０１０６】
５０ａ・・・エアバッグＥＣＵ、１２２・・・ＣＰＵ、１２２２・・・データ取得部、１２２３・・・書込制御部、１２２４・・・読出制御部、１２７・・・不揮発性メモリ、４００・・・バッテリ電源
【図１】
2020030589.tif 000003
【図２】
2020030589.tif 000004
【図３】
2020030589.tif 000005
【図４】
2020030589.tif 000006
【図５】
2020030589.tif 000007
【図６】
2020030589.tif 000008
【図７】
2020030589.tif 000009
【図８】
2020030589.tif 000010
【図９】
2020030589.tif 000011
【図１０】
2020030589.tif 000012
【図１１】
2020030589.tif 000013