JP2013143095A - 電子制御装置、メモリ検査方法 - Google Patents
電子制御装置、メモリ検査方法 Download PDFInfo
- Publication number
- JP2013143095A JP2013143095A JP2012004229A JP2012004229A JP2013143095A JP 2013143095 A JP2013143095 A JP 2013143095A JP 2012004229 A JP2012004229 A JP 2012004229A JP 2012004229 A JP2012004229 A JP 2012004229A JP 2013143095 A JP2013143095 A JP 2013143095A
- Authority
- JP
- Japan
- Prior art keywords
- program
- area
- memory
- inspection
- electronic control
- 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.)
- Pending
Links
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
Abstract
【課題】メモリチェックによるCPU負荷を増大することなく、適切なタイミングでメモリチェック可能な電子制御装置を提供する。
【解決手段】プログラム記憶手段24と、プログラムを実行する演算手段と、を有する電子制御装置であって、プログラムが記憶されているアドレスのアドレス情報と、各プログラムが記憶されている領域毎に、予め定められている検査基準値と、領域を予め定められている方法で検査し、検査結果を前記検査基準値と比較するメモリ検査手段と、領域毎に、メモリ検査手段による検査済みか否かが登録された検査実行登録テーブル33と、予め定められた特定プログラムが実行されたことが登録された特定プログラム実行記録34と、を有し、メモリ検査手段は、検査実行登録テーブルに検査済みと登録された領域の検査を、特定プログラム実行記録に特定プログラムが実行されことが登録されている場合に行う。
【選択図】図1
【解決手段】プログラム記憶手段24と、プログラムを実行する演算手段と、を有する電子制御装置であって、プログラムが記憶されているアドレスのアドレス情報と、各プログラムが記憶されている領域毎に、予め定められている検査基準値と、領域を予め定められている方法で検査し、検査結果を前記検査基準値と比較するメモリ検査手段と、領域毎に、メモリ検査手段による検査済みか否かが登録された検査実行登録テーブル33と、予め定められた特定プログラムが実行されたことが登録された特定プログラム実行記録34と、を有し、メモリ検査手段は、検査実行登録テーブルに検査済みと登録された領域の検査を、特定プログラム実行記録に特定プログラムが実行されことが登録されている場合に行う。
【選択図】図1
Description
本発明は、記憶装置の記憶内容を検査して記憶内容の変更を検出する電子制御装置に関する。
エンジンやブレーキなどの車載装置をマイコンなどで制御する電子化が進んでいる。このため、車両には種々の電子制御装置が搭載されており、各電子制御装置はそれぞれ制御対象のアクチュエータ等を制御する。電子制御装置はコンピュータの一態様であるため、CPUがフラッシュメモリなどの不揮発性の記憶装置に記憶されているプログラムを、必要であればパラメータを使用して実行することで車載装置を適切に制御する。
一般に、不揮発性の記憶装置の情報保持期間は十分に長いので、プログラムやパラメータが消失することはない。しかしながら、上記のプログラムはいわゆる組み込み系のプログラムであるため、車両が駐車されていれば車両と共に駐車場などに放置される。このため、第三者が故意にプログラムを書き換えたり、一部を消去したりする作為的な改竄が行われるそれがある。また、不揮発性の記憶装置においても、電磁波などによって書き換わる可能性がある。
そこで、従来から、プログラムやパラメータの書き換えを検出する技術が考えられている(例えば、特許文献1参照。)。特許文献1には、不揮発性メモリの記憶領域を複数のサブプログラムの実行順序に基づいて分割しておき、サブプログラムの実行順序に従って、順次、次に実行されるサブプログラムを記憶する一の分割領域のメモリチェックを実行する車両用制御装置が開示されている。
しかしながら、特許文献1に記載された車両用制御装置では、サブプログラムの実行前に毎回、メモリチェックする必要があるため電子制御装置の負荷が増大してしまうという問題がある。
そこで、特許文献1に記載されているように、メモリチェックが1回終了した分割領域に対しメモリチェックを行わないことが考えられる。しかし、メモリチェックを初回の1回のみに限定してしまうと、チェック後に発生するメモリ異常を検出できないという問題がある。
本発明は、上記課題に鑑み、メモリチェックによるCPU負荷を増大することなく、適切なタイミングでメモリチェック可能な電子制御装置を提供することを目的とする。
本発明は、複数のプログラムを記憶するプログラム記憶手段と、前記プログラムを実行する演算手段と、を有する電子制御装置であって、各プログラムが記憶されているアドレスのアドレス情報と、各プログラムが記憶されている領域毎に、予め定められている検査基準値と、前記領域を予め定められている方法で検査し、検査結果を前記検査基準値と比較するメモリ検査手段と、前記領域毎に、前記メモリ検査手段による検査済みか否かが登録された検査実行登録テーブルと、予め定められた特定プログラムが実行されたことが登録された特定プログラム実行記録と、を有し、前記メモリ検査手段は、前記検査実行登録テーブルに検査済みと登録された前記領域の検査を、前記特定プログラム実行記録に前記特定プログラムが実行されことが登録されている場合に行う、ことを特徴とする。
メモリチェックによるCPU負荷を増大することなく、適切なタイミングでメモリチェック可能な電子制御装置を提供することができる。
以下、本発明を実施するための形態について図面を参照しながら説明する。
図1は、本実施形態の電子制御装置によるメモリチェックの概略的な特徴を説明する図の一例である。電子制御装置のフラッシュROM24には、いくつかのSC(Software Component)が記憶されている。
図1は、本実施形態の電子制御装置によるメモリチェックの概略的な特徴を説明する図の一例である。電子制御装置のフラッシュROM24には、いくつかのSC(Software Component)が記憶されている。
メモリチェック部31は、SCが記憶されている領域毎にメモリチェックを行う。メモリチェックは、SCが書き換わっている可能性がある場合にだけ行えばよい。そこで、メモリチェック部31は以下のようなタイミングでメモリチェックを行う。なお、以下のIG−ONとは、ハイブリッド車や電気自動車の場合はメインシステムがONとなることに相当する。以下では区別することなく単にIG−ONという。
(i)IG−ONの後、初めてSCが実行される場合
(ii)所定のSCが実行された後、初めてSCが実行される場合
すなわち、IG−OFFからIG−ONになるまでの間に、SCが書き換わっている可能性があるので、メモリチェック部31がIG−ONの後、初めてSCが実行される場合に実行されるSCの領域のみをメモリチェックする。これにより、IG−ON後、実行されるSCの領域が1回だけメモリチェックされるので、メモリチェックによるCPU負荷の増大を抑制できる。メモリチェック部31は、IG−ON後にメモリチェックを実行したSCを、チェック履歴テーブル33に記録しておく。
(i)IG−ONの後、初めてSCが実行される場合
(ii)所定のSCが実行された後、初めてSCが実行される場合
すなわち、IG−OFFからIG−ONになるまでの間に、SCが書き換わっている可能性があるので、メモリチェック部31がIG−ONの後、初めてSCが実行される場合に実行されるSCの領域のみをメモリチェックする。これにより、IG−ON後、実行されるSCの領域が1回だけメモリチェックされるので、メモリチェックによるCPU負荷の増大を抑制できる。メモリチェック部31は、IG−ON後にメモリチェックを実行したSCを、チェック履歴テーブル33に記録しておく。
また、IG−ON後に一度だけしかメモリチェックされないと、SCの実行中に、SCが他のSCを書き換えたことを検出できない。そこで、メモリチェック部31は、所定のSCが実行された後、初めてSCが実行される場合、再度、実行されるSCの領域をメモリチェックする。所定のSCは、例えば図のSC3である。このSC3は、SC1〜4を書き換える可能性があるSCとして予め特定されている。
SC3が実行されたことを検出するため、メモリチェック部31は実行フラグ34を監視する。実行フラグ34はSC3が実行されるとONになるフラグである。メモリチェック部31は、実行フラグ34がONのSCのメモリチェックを実行する。そして、メモリチェックしたSCの実行フラグ1〜4を個別にOFFに設定する。
こうすることで、SCを書き換える可能性がある所定のSC(SC3)が実行された後、SC1〜4の領域をメモリチェックするので、SC1〜4の書き換えを検出できる。また、所定のSC3が実行された後も、SC1〜4の領域は一度しかメモリチェックされないので、メモリチェックによるCPU負荷の増大を抑制できる。
〔構成例〕
図2は、電子制御装置のブロック図の一例を示す。電子制御装置100は、入力I/F11、電源回路14、マイクロコンピュータ12、及び、出力I/F13を有する。この他、CANコントローラのような他の電子制御装置と通信するための通信装置等を有しているが、図示を省略した。
図2は、電子制御装置のブロック図の一例を示す。電子制御装置100は、入力I/F11、電源回路14、マイクロコンピュータ12、及び、出力I/F13を有する。この他、CANコントローラのような他の電子制御装置と通信するための通信装置等を有しているが、図示を省略した。
車載される電子制御装置100には種々のものがある。例えば、HV−ECU((Electronic Control Unit)、エンジンECU、ブレーキECU、ボディECU、パワステECU、ナビゲーションECU(AV・情報処理ECU)、ゲートウェイECU等が知られている。本実施例の電子制御装置100はこれら機能の違いに影響されることなく、メモリチェックすることが可能である。
電源回路14はIG−SW15のON/OFFを検出する。IG−SW15のONを検出した場合、電源回路14はバッテリ16から供給される電力を必要に応じて降圧して、入力I/F11、マイクロコンピュータ12及び出力I/F13に供給する。また、IG−SW15のOFFを検出した場合、電源回路14は各回路への電力の供給を停止するが、例えば、RAM25にだけ電力を供給してパラメータを保持するとしてもよい。このようなIG−OFF時の省電力制御により、電子制御装置100は、IG−ON時に演算した(学習した)パラメータを、次回のIG−ON後に使用でき、操作性などを向上させることができる。
入力I/F11には、各種のセンサが接続されている。入力I/F11はマルチプレクサとして機能し、各センサの検出信号を時分割又は優先度に基づき読み出し、センサの識別情報と共にマイクロコンピュータ12のA/D21又はI/O22に送信する。なお、マイクロコンピュータ12はどのセンサからの入力かを、識別情報ではなく動作クロックにより識別してもよい。また、入力I/F11は、CPUからの指示によりセンサから検出信号を取得する場合と、指示がなくてもセンサから検出信号を取得する場合がある。
マイクロコンピュータ12は、バスを介してCPU23と接続されたA/D21、I/O22、フラッシュROM24、RAM25、及び、I/O26を有する。I/O22は、入力I/F11から入力された検出信号を検出信号の種別と共に、割込みなどの仕組みを利用してCPU23に通知する。また、A/D21はアナログの検出信号をデジタルの検出信号に変換する回路であり、変換後の検出信号を検出信号の種別と共に、割込みなどの仕組みを利用してCPU23に通知する。
CPU23は、フラッシュROM24に記憶されているプログラムを実行して、検出信号の読み取り、演算、マップ引き、RAM25への書き込み又はI/O26への出力を行う。演算内容は電子制御装置100の種類や、後述するSC1〜4によって異なる。フラッシュROM24に記憶されているプログラムについては後述する。なお、フラッシュROM24は、不揮発メモリであればよく、例えば、磁気抵抗RAM(MRAM)、強誘電体メモリ(FeRAM)、PCM(相変化メモリ)、ReRAM(抵抗変化型メモリ)などでもよい。
後段のI/O26は、CPU23からの指示により制御対象の識別情報と共に演算結果を出力I/F13に出力する。出力I/F13は、各種のアクチュエータと接続されている。出力I/F13は、例えばD/A変換した電圧値等をアクチュエータに出力することでアクチュエータを制御する。また、出力I/F13は例えば、スイッチ素子であり、ソレノイドやリレーなどの開閉を制御する。また、出力I/F13は例えば、ドライバ回路であり、直流電圧を交流電圧に変換してモータの回転数を制御する。
電子制御装置100がHV−ECUの場合、電子制御装置100は、エンジン出力及びモータ出力をそれぞれ決定する処理、バッテリ16のSOCを制御する処理、などを行う。入力I/F11にはアクセル開度、車速、モータ回転角、エンジン回転数等が入力される。CPU23は、マップなどを参照して最適な燃費効率のエンジン出力及びモータ出力をそれぞれ決定し、出力I/F13からエンジンECUやモータECUに演算した出力を要求する。
電子制御装置100がエンジンECUの場合、電子制御装置100は、燃料噴射量の制御、点火時期制御、スロットル開度制御等を行う。入力I/F11にはアクセル開度、車速、エンジン回転数等が入力される。CPU23は、燃料噴射量や点火タイミング、スロットル開度を決定し、出力I/F13から各種のアクチュエータに制御信号を出力する。
また、電子制御装置100がブレーキECUの場合、ブレーキECUは各車輪のホイルシリンダ圧を制御する。入力I/F11には車速、減速度、ストップランプスイッチ等が入力される。CPU23は車速からスリップ等を検出するとブレーキアクチュエータの複数の電磁開閉弁の開閉状態を決定し、出力I/F13からブレーキアクチュエータに制御信号を出力する。
図3は、フラッシュROM24に記憶されたSC1〜nとその領域を説明する図の一例である。フラッシュROM24は第1〜第n領域まで複数の領域に区分されている。実際にフラッシュROM24に領域が明示されているのではなく、1つのSCが記憶されているアドレス範囲が1つの領域である。本実施形態では、SC1〜nを区別しない場合又は全てのSC1〜nをまとめてプログラムと称している。フラッシュROM24は不揮発メモリなので領域は固定である。
ディーラなどで1つ以上のSCが更新された場合、領域の区分が変わる場合があるが、この場合は、更新後において1つのSCが占めるアドレス範囲が1つの領域となる。なお、SCが更新された場合、後述するSC領域テーブルやサム値テーブルも更新されるので、メモリチェックに支障はない。
各領域には、SCのプログラム(ロジック部分)とSCが使用するデータ(マップなど)が対に記憶される。データが複数ある場合もあるし、データがないSCもあり得る。また、プログラム(ロジック部分)にデータが記述されている場合もある。
例えば、電子制御装置100がHV−ECUの場合、SC1〜nには、エンジン出力及びモータ出力をそれぞれ決定する処理に対応するSC、バッテリ16のSOCを制御する処理に対応するSCが含まれる。また、ハイブリッド車に特有の機能ではないが、定速で走行する定速走行機能や先行車両との車間を保って追従走行する追従走行機能を提供するSCが含まれる。
なお、SC1〜nのいずれか1つ以上のSCはPF(プラットフォーム)であり、メモリチェックを行うメモリチェック部31の機能を備えている。この他、PFには、デバイスドライバやミドルウェア等が含まれている。
本実施形態では、各SCのASIL(Automotive Safety Integrity Level)が定められている。ASILにはA〜D、QMの安全性レベルがあり、D>C>B>A>QMの順に安全性レベルが高い。ASILは、ハザード(障害)を避けるために達成する必要のある安全性のレベルである。ASILの決定に際しては、例えば、ハザードによって生じる被害の大きさ、ハザードの生じる頻度、ハザードが生じた場合の制御難易度がハザード毎に検討される。したがって、安全性に影響し、よく使用され、異常により対応が困難な状況をもたらす可能性が高いSCほどASILが高くなる傾向になる。このような観点から、メーカや開発者は、各SCの安全性レベルをQM、A〜Dのいずれかに決定しており、安全性レベルに応じた設計がなされている。例えば、ブレーキを制御するSC、パワーステアリングを制御するSCはASILが高く、直接、走行制御に影響しにくいナビやAV系のSCのASILは低くなる。図の例では、SC1はASIL−A、SC2はASIL−B、SC3はASIL−QM、SCnはASIL−C、となっている。また、各SCの領域のメモリチェックを行うPFは、最もASILが高いSCと同じASILに設定される(図の例ではASIL−C)。
ここで、本実施形態では、ASILがA以上のSCは、プログラムが想定外の動作をすることがないように設計されている。想定外の動作とは例えば無限ループに陥ったり、デッドロックしたり、他のSCを実行したりすることが挙げられる。
一方、ASILがQMのSCは、例えば他のSCの領域にアクセスする可能性がある。アクセスしただけではSCを書き換えることはないが、本実施形態では監視を強化するため、書き換わる可能性を考慮して処理を行う。ASIL−QMのSCは複数あってもよい。なお、ASIL−QMのSCは、例えば、イモビライザの照合を行うSCや車両の存在を歩行者に気付かせる気づき音(例えば、擬似的なエンジン音)を再生するSCが挙げられる。
なお、ASILがA以上のSCであっても、人間、外部の情報処理装置、電磁波などが故意又は偶然、フラッシュROM24のSCを書き換える可能性がある。
〔メモリチェック部の機能〕
図4は、メモリチェック部31の機能を説明する図の一例である。図4では、電子制御装置100はSC1〜4の4つのSCを有している。そして、本実施形態では以下の前提を利用する。
(i) SC1〜4のASILが全て同じでない
(ii) ASILが所定値以下のSCは想定外の動作をしてプログラムを書き換えるおそれがある(ASILが所定値より大きいSCは想定外の動作をしてプログラムを書き換えることがない)
(i)については、1つの電子制御装置100に2種類以上のASILが存在することを意味する。図4の例ではA,B,QMの3種類のASILが存在する。(ii)については、ASILが所定値以下のASILのSCはSC3である。また、ASILと比較される所定値は、ASILに応じて開発者等がどの程度、品質レベルを設計しているかに依存する。例えば、ASILがA以上のSCについて、想定外の動作しないという品質レベルに基づき設計されている場合、所定値はQMである。また、例えば、ASILがB以上のSCについて想定外の動作をしないという品質レベルに基づき設計されている場合、所定値はAである。このように、ASILと比較される所定値はメーカや開発者が設定できる。本実施形態ではASILと比較される所定値をQMとする。
図4は、メモリチェック部31の機能を説明する図の一例である。図4では、電子制御装置100はSC1〜4の4つのSCを有している。そして、本実施形態では以下の前提を利用する。
(i) SC1〜4のASILが全て同じでない
(ii) ASILが所定値以下のSCは想定外の動作をしてプログラムを書き換えるおそれがある(ASILが所定値より大きいSCは想定外の動作をしてプログラムを書き換えることがない)
(i)については、1つの電子制御装置100に2種類以上のASILが存在することを意味する。図4の例ではA,B,QMの3種類のASILが存在する。(ii)については、ASILが所定値以下のASILのSCはSC3である。また、ASILと比較される所定値は、ASILに応じて開発者等がどの程度、品質レベルを設計しているかに依存する。例えば、ASILがA以上のSCについて、想定外の動作しないという品質レベルに基づき設計されている場合、所定値はQMである。また、例えば、ASILがB以上のSCについて想定外の動作をしないという品質レベルに基づき設計されている場合、所定値はAである。このように、ASILと比較される所定値はメーカや開発者が設定できる。本実施形態ではASILと比較される所定値をQMとする。
ASILに基づき品質レベルを設計することで、メモリ異常発生(SCの書き換え)条件を明確にすることができる。すなわち、ASILが所定値以下のSCが実行された場合、SCの書き換えが発生するおそれがあると判断できるので、ASILが所定値以下のSCが実行された場合に、メモリチェックすればよい。こうすることで、過不足のないメモリチェックが可能となる。
本実施形態では、IG−ONにより、CPU23が入力I/F11、出力I/F13の死活チェック、レジスタの初期化等の初期処理を行い、SC1〜3の実行を開始する。PFは他のアプリ的なSC1〜3と異なり、入出力処理を行うなど、他のSC1〜3に共通の機能を提供するため、他のSC1〜SC3から呼び出されることで実行される。SC1、2は、例えば時分割に順次、実行される。すなわち、CPU23にSC1が割り当てられ、SC1による制御が必要であればSC1が処理を行う。SC1による制御が必要でなければ、SC1は処理を行わない。この後、SC2がCPU23に割り当てられ、SC2も同様に、必要であれば処理を行う。SC2まで実行が完了するとCPU23にはSC1が割り当てられる。
SC3は、車載装置を制御するSCではないので、例えば、SC1、2がN回実行されると1回実行されるなど、不定期に実行される。または、何らかのイベント割込みにより実行されてもよいし、タイマ割込みで定期的に実行されてもよい。SC3の実行後は、SC1が実行される。
そして、各SC1〜3は、好ましくは処理の最初に(又は、少なくとも制御に必要な処理(センサの検出信号の取得など)を開始する前に)メモリチェック部31を呼び出す関数を実行する。したがって、CPU23は以下の順にSCを実行する
※SC1→メモリチェック部(SC4)→SC1
SC2→メモリチェック部(SC4)→SC2(※に戻る)
また、SC3が実行された場合、SC3の実行後、SC1が実行される。
※SC1→メモリチェック部(SC4)→SC1
SC2→メモリチェック部(SC4)→SC2(※に戻る)
また、SC3が実行された場合、SC3の実行後、SC1が実行される。
SC3→メモリチェック部(SC4)→SC3(※に戻る)
チェック履歴テーブル33は、IG−ONの後、メモリチェック部31がSC1〜4の領域をメモリチェックしたことが登録されるテーブルである。また、実行フラグ34は、SC1〜4に対応したSC1〜4と同じ数の実行フラグ1〜4を有している。実行フラグ1〜4は、ASILがQMのSC3が実行された際に、SC3がONに設定するフラグである。また、メモリチェック部31は、SC1〜4の領域をメモリチェックすると、チェックしたSCに対応する実行フラグ1〜4をOFFに設定する。
チェック履歴テーブル33は、IG−ONの後、メモリチェック部31がSC1〜4の領域をメモリチェックしたことが登録されるテーブルである。また、実行フラグ34は、SC1〜4に対応したSC1〜4と同じ数の実行フラグ1〜4を有している。実行フラグ1〜4は、ASILがQMのSC3が実行された際に、SC3がONに設定するフラグである。また、メモリチェック部31は、SC1〜4の領域をメモリチェックすると、チェックしたSCに対応する実行フラグ1〜4をOFFに設定する。
なお、メモリチェック部は、SC3の領域をチェック対象外とすることもできる。SC3のASILはQMであるため、異常監視の必要性が低いためである。SC3の領域をチェック対象外としてもASIL−A以上のSCの領域はメモリチェックされているので、異常は検出可能である。このように、SC3の領域のチェックを任意とすることで、CPUの負荷を低減できる。
メモリチェック部31は、チェック履歴テーブル33を参照して、メモリチェックを行うか否かを判定する。メモリチェックを行う場合、SC1〜4毎にメモリチェックを行う。メモリチェックの方法は例えばチェックサムとする。メモリチェック部31は、SC領域テーブル35とサム値テーブル36を参照して、各領域毎にチェック結果が正常か否かを判定する。SC領域テーブル35には、各SCの領域のアドレス範囲が登録されている。サム値テーブル36には各SCのサム値が登録されている。メモリチェック部31は、各SCの領域のbit(1の場合は1を足し、0の場合は加算しない)の合計を算出し、合計値がサム値と一致するか否かに基づきチェック結果が正常か否かを判定する。なお、SC領域テーブル35やサム値テーブル36はメモリチェック部31に記述されていてもよい。
なお、メモリチェック部31は、1つのSCの全てのbitの合計を求めるのでなく、奇数アドレス又は偶数アドレスのみの合計を求めたり、アドレスがnの倍数になるアドレスのみの合計を求めるなどしてもよい。こうすることでメモリチェック時間を短縮できる。
フェールセーフ部32は、合計値がサム値と一致しなかった場合に、フェールセーフ処理を行う。フェールセーフ処理は、例えば、異常検出の記録、再度のメモリチェック、以上が検出された領域のSCの実行禁止、マイコンのリセット等である。
〔動作手順〕
図5は、メモリチェック部31の動作手順を示すフローチャート図の一例を示す。
運転者がブレーキペダルを踏み込みながらスタートボタンを押下すると、IG−SW15がONとなる。これにより、電子制御装置100は初期処理を行い、SC1〜SC4の実行を開始する。
図5は、メモリチェック部31の動作手順を示すフローチャート図の一例を示す。
運転者がブレーキペダルを踏み込みながらスタートボタンを押下すると、IG−SW15がONとなる。これにより、電子制御装置100は初期処理を行い、SC1〜SC4の実行を開始する。
CPU23がSC1の実行を開始すると、SC1がメモリチェック部31を呼び出す。メモリチェック部31は上記のようにPFの一部なので、メモリチェック部31がSC1をメモリチェックする前にPFのような各SCに共通に使用される領域をメモリチェックすることが好ましい。このため、メモリチェック部31は、SC1をメモリチェックする前に共通領域(SC4)のメモリチェックを行う(S10)。この処理については後述する。
次に、メモリチェック部31は、IG−ON後、初めてSC1を実行するか否かを判定する(S20)。すなわち、メモリチェック部31は、チェック履歴テーブル33を参照し、SC1の領域がチェック済みになっているか否かを判定する。
チェック履歴テーブル33のSC1の領域がチェック済みでない場合(S20のYes)、メモリチェック部31はSC1の領域をメモリチェックする(S30)。
メモリチェック後、メモリチェック部31はチェック履歴テーブル33のSC1をチェック済みに変更する(S40)。
チェック履歴テーブル33のSC1の領域がチェック済みの場合(S20のNo)、メモリチェック部31は、SC3が実行された後、初めてSC1を実行するか否かを判定する(S50)。すなわち、メモリチェック部31は、実行フラグ1がONであるかを判定する。実行フラグ1がONの場合、メモリチェック部31がSC1の領域をメモリチェックした後(実行フラグ1をOFFにした後)、SC3が実行されたことを意味する。
SC3実行後、初めてSC1を実行する場合(S50のYes)、メモリチェック部31はSC1の領域をメモリチェックする(S60)。
また、メモリチェック部31は実行フラグ1をOFFに設定する(S70)。
この後、メモリチェック部31は、チェック結果が正常か否かを判定する(S80)。チェック結果が正常でない場合(S80のNo)、フェールセーフ部32がフェールセーフ処理を行う(S90)。例えば、異常検出の記録、再度のメモリチェック、マイコンのリセット等を行う。
チェック結果が正常だった場合(S80のYes)、メモリチェック部31は処理をSC1に戻す。これによりSC1が実行される(S100)。
図6(a)は、ステップS10において、メモリチェック部31が共通領域(SC4)のメモリチェックを行う手順を示すフローチャート図の一例である。全体的な手順は図5と同様である。
まず、メモリチェック部31は、共通領域のSCがIG−ON後、初めて実行されか否かを判定する(S101)。すなわち、メモリチェック部31は、チェック履歴テーブル33を参照し、SC4の領域がチェック済みになっているか否かを判定する。
チェック履歴テーブル33のSC4の領域がチェック済みでない場合(S101のYes)、メモリチェック部31はSC4の領域をメモリチェックする(S102)。
メモリチェック後、メモリチェック部31はチェック履歴テーブル33のSC4をチェック済みに変更する(S103)。
チェック履歴テーブル33のSC4の領域がチェック済みの場合(S101のNo)、メモリチェック部31は、SC3が実行された後、初めてSC4を実行するか否かを判定する(S104)。すなわち、メモリチェック部31は、実行フラグ4がONであるかを判定する。実行フラグ4がONの場合、メモリチェック部31がSC4の領域をメモリチェックした後(実行フラグ4をOFFにした後)、SC3が実行されたことを意味する。
SC3実行後、初めてSC4を実行する場合(S104のYes)、メモリチェック部31はSC4の領域をメモリチェックする(S105)。
また、メモリチェック部31は実行フラグ4をOFFに設定する(S106)。
このように、SC4についてはSC1〜SC3のメモリチェックの前に付随してメモリチェックが行われる。SC2、SC3についてはSC1と同様にメモリチェックされる。また、SC3の領域をチェック対象外とした場合は、SC3はメモリチェックされない。
このように、SC4についてはSC1〜SC3のメモリチェックの前に付随してメモリチェックが行われる。SC2、SC3についてはSC1と同様にメモリチェックされる。また、SC3の領域をチェック対象外とした場合は、SC3はメモリチェックされない。
SC3のメモリチェックについて補足する。
1.S20においてチェック履歴テーブル33のSC3の領域がチェック済みでない場合、SC3の領域がメモリチェックされる(チェック履歴テーブル33のSC3の領域がONになる)。
2.この後、SC3が実行されることで、実行フラグ1〜4がONになる。
1.S20においてチェック履歴テーブル33のSC3の領域がチェック済みでない場合、SC3の領域がメモリチェックされる(チェック履歴テーブル33のSC3の領域がONになる)。
2.この後、SC3が実行されることで、実行フラグ1〜4がONになる。
図6(b)は、SC3が実行フラグ1〜4をONに設定する手順を示すフローチャート図の一例である。
CPU23はSC3を実行する(S201)。
SC3は、実行フラグ1〜4を全てONに設定する(S202)。すなわち、すでにONであればONを維持し、OFFの場合はONに設定する。
実行フラグ1〜4のONにより、SC3の実行後は、ステップS50の判定により、SC1〜SC3の全ての領域がメモリチェックの対象となる(SC3がチェック対象の場合)。また、実行フラグ4のONにより、SC3の実行後は、ステップS104の判定により、SC4がメモリチェックの対象となる。
したがって、SC3が実行される頻度が多いと、結局、各SCの実行前に各SCの領域のメモリチェックが必要になるため、CPU23負荷の低減効果が低下してしまう。このため、上述したように、SC3については、SC1、2と比較して実行頻度が十分に小さくなるように(例えば、半分未満)設計することが有効になる。
なお、図5,6ではメモリチェック部31がチェック履歴テーブル33と実行フラグ1〜4を参照して、メモリチェックが必要か否かを判定している。しかし、メモリチェックの必要性はSC1〜3が判定してもよい。チェック履歴テーブル33と実行フラグを参照できれば、各SC1〜SC3がメモリチェックの必要性を判定できる。すなわち、各SC1〜SC3は、メモリチェックが必要であると判定した場合にメモリチェック部を呼び出す。呼び出すことで、SC4の領域もメモリチェックされる。
〔チェック履歴テーブル33、実行フラグの遷移〕
図7は、チェック履歴テーブル33及び実行フラグ1〜4の遷移例を示す図の一例である。
図7(a):IG−ONの前、チェック履歴テーブル33のSC1〜SC4は全て「未」、実行フラグ1〜4は全てOFFである。
図7(b):IG−ONによりSC1が実行されると、メモリチェック部31はSC1の領域をメモリチェックするので、チェック履歴テーブル33のSC1が「済み」となる。また、SC1がメモリチェックされる前、メモリチェック部31はSC4の領域をメモリチェックするので、チェック履歴テーブル33のSC4が「済み」となる。
図7(c):次に、SC2が実行されると、メモリチェック部31はSC2の領域をメモリチェックするので、チェック履歴テーブル33のSC2が「済み」となる。
図7は、チェック履歴テーブル33及び実行フラグ1〜4の遷移例を示す図の一例である。
図7(a):IG−ONの前、チェック履歴テーブル33のSC1〜SC4は全て「未」、実行フラグ1〜4は全てOFFである。
図7(b):IG−ONによりSC1が実行されると、メモリチェック部31はSC1の領域をメモリチェックするので、チェック履歴テーブル33のSC1が「済み」となる。また、SC1がメモリチェックされる前、メモリチェック部31はSC4の領域をメモリチェックするので、チェック履歴テーブル33のSC4が「済み」となる。
図7(c):次に、SC2が実行されると、メモリチェック部31はSC2の領域をメモリチェックするので、チェック履歴テーブル33のSC2が「済み」となる。
図7(c)の後、SC1、2が実行されても、チェック履歴テーブル33のSC1,2、4の領域は「済み」であり、実行フラグ1〜4はOFFのままなので、メモリチェックは行われない。
図7(d):次に、SC3が実行されると、メモリチェック部31はSC3の領域をメモリチェックするので、チェック履歴テーブル33のSC3が「済み」となる。一方、SC3が実行フラグ1〜4をONに設定する。これにより、SC3が実行されたことを検出可能になる。
図7(e):次に例えばSC1が実行されると、チェック履歴テーブル33のSC1が「済み」だが、実行フラグ1がONなので、メモリチェック部31はSC1の領域をメモリチェックする。また、メモリチェック部31は実行フラグ1をOFFに設定する。また、メモリチェック部31はSC4の実行フラグ4がONであることから、SC1がメモリチェックされる前、SC4の領域をメモリチェックする。また、メモリチェック部31は実行フラグ4をOFFに設定する。
図7(f):SC2が実行されると、チェック履歴テーブル33のSC2が「済み」だが、実行フラグ2がONなので、メモリチェック部31はSC2の領域をメモリチェックする。また、メモリチェック部31は実行フラグ2をOFFに設定する。
図7(g):SC1が実行されても、チェック履歴テーブル33のSC1の領域は「済み」であり、実行フラグ1はOFFのままなので、メモリチェック部はSC1の領域をメモリチェックしない。
図7(h):SC2が実行されても、チェック履歴テーブル33のSC2の領域は「済み」であり、実行フラグ2はOFFのままなので、メモリチェック部はSC2の領域をメモリチェックしない。
図7(i):SC3が実行されると、チェック履歴テーブル33のSC3が「済み」だが、実行フラグ3がONなので、メモリチェック部31はSC3の領域をメモリチェックする。また、メモリチェック部31は実行フラグ3をOFFに設定する。しかし、その後、SC3が実行されると、SC3は実行フラグ1〜4をONに設定する。これにより、チェック履歴テーブル33及び実行フラグ1〜4は、図7(d)と同じ状態になり、SC1,2が実行された場合にはSC1,2,4のメモリチェックが可能になる。
図7(d):次に、SC3が実行されると、メモリチェック部31はSC3の領域をメモリチェックするので、チェック履歴テーブル33のSC3が「済み」となる。一方、SC3が実行フラグ1〜4をONに設定する。これにより、SC3が実行されたことを検出可能になる。
図7(e):次に例えばSC1が実行されると、チェック履歴テーブル33のSC1が「済み」だが、実行フラグ1がONなので、メモリチェック部31はSC1の領域をメモリチェックする。また、メモリチェック部31は実行フラグ1をOFFに設定する。また、メモリチェック部31はSC4の実行フラグ4がONであることから、SC1がメモリチェックされる前、SC4の領域をメモリチェックする。また、メモリチェック部31は実行フラグ4をOFFに設定する。
図7(f):SC2が実行されると、チェック履歴テーブル33のSC2が「済み」だが、実行フラグ2がONなので、メモリチェック部31はSC2の領域をメモリチェックする。また、メモリチェック部31は実行フラグ2をOFFに設定する。
図7(g):SC1が実行されても、チェック履歴テーブル33のSC1の領域は「済み」であり、実行フラグ1はOFFのままなので、メモリチェック部はSC1の領域をメモリチェックしない。
図7(h):SC2が実行されても、チェック履歴テーブル33のSC2の領域は「済み」であり、実行フラグ2はOFFのままなので、メモリチェック部はSC2の領域をメモリチェックしない。
図7(i):SC3が実行されると、チェック履歴テーブル33のSC3が「済み」だが、実行フラグ3がONなので、メモリチェック部31はSC3の領域をメモリチェックする。また、メモリチェック部31は実行フラグ3をOFFに設定する。しかし、その後、SC3が実行されると、SC3は実行フラグ1〜4をONに設定する。これにより、チェック履歴テーブル33及び実行フラグ1〜4は、図7(d)と同じ状態になり、SC1,2が実行された場合にはSC1,2,4のメモリチェックが可能になる。
したがって、ASILがQMのSC3が実行されない限り、メモリチェックを行う必要がなくCPU負荷を低減できる。一方、ASILがQMのSC3が実行された場合、メモリチェック部31は、SC1〜SC4の領域のメモリチェックを行うことができるので、異常を監視できる。
図8は、SC1〜SC4の領域のメモリチェックの有無を模式的に説明する図の一例である。なお、図8ではSC4の実行を省略している。また、SC3のメモリチェックは行われない。
t0:IG−ONとなる
t1:SC1の領域がメモリチェックされた後、SC1が実行される(この時、SC4の領域もメモリチェックされる。)。
t2:SC2の領域がメモリチェックされた後、SC2が実行される。
t3:SC1が実行されるが、SC1の領域はメモリチェックされない。すなわち、前回のメモリチェック以降、SC3(QM)の実行がない場合、チェックが省略される。
t4:SC2が実行されるが、SC2の領域はメモリチェックされない。すなわち、前回のメモリチェック以降、SC3(QM)の実行がない場合、チェックが省略される。
t5:SC3が実行される。SC3はASILが所定値以下なのでSC3の領域はメモリチェックされない。
t6:SC3の実行後、初めてSC1が実行されるので、SC1の領域がメモリチェックされた後、SC1が実行される(この時、SC4の領域もメモリチェックされる。)。すなわち、SC3(QM)の実行後、初回の実行時はメモリチェックされる。
t7:SC1が実行されるが、SC1の領域はメモリチェックされない。すなわち、前回のメモリチェック以降、SC3(QM)の実行がない場合、チェックが省略される。
t8:SC3の実行後、初めてSC2が実行されるので、SC2の領域がメモリチェックされた後、SC2が実行される。すなわち、SC3(QM)の実行後、初回の実行時はメモリチェックされる。
t9:SC2が実行されるが、SC2の領域はメモリチェックされない。すなわち、前回のメモリチェック以降、SC3(QM)の実行がない場合、チェックが省略される。
t0:IG−ONとなる
t1:SC1の領域がメモリチェックされた後、SC1が実行される(この時、SC4の領域もメモリチェックされる。)。
t2:SC2の領域がメモリチェックされた後、SC2が実行される。
t3:SC1が実行されるが、SC1の領域はメモリチェックされない。すなわち、前回のメモリチェック以降、SC3(QM)の実行がない場合、チェックが省略される。
t4:SC2が実行されるが、SC2の領域はメモリチェックされない。すなわち、前回のメモリチェック以降、SC3(QM)の実行がない場合、チェックが省略される。
t5:SC3が実行される。SC3はASILが所定値以下なのでSC3の領域はメモリチェックされない。
t6:SC3の実行後、初めてSC1が実行されるので、SC1の領域がメモリチェックされた後、SC1が実行される(この時、SC4の領域もメモリチェックされる。)。すなわち、SC3(QM)の実行後、初回の実行時はメモリチェックされる。
t7:SC1が実行されるが、SC1の領域はメモリチェックされない。すなわち、前回のメモリチェック以降、SC3(QM)の実行がない場合、チェックが省略される。
t8:SC3の実行後、初めてSC2が実行されるので、SC2の領域がメモリチェックされた後、SC2が実行される。すなわち、SC3(QM)の実行後、初回の実行時はメモリチェックされる。
t9:SC2が実行されるが、SC2の領域はメモリチェックされない。すなわち、前回のメモリチェック以降、SC3(QM)の実行がない場合、チェックが省略される。
以上説明したように、本実施形態の電子制御装置は、IG−ONの後は各SCの領域をメモリチェックすることができる。また、想定外の動作を行う可能性があるSCが実行された後、最初にSCが実行される場合に限り、SCの各領域毎にメモリチェックすることができる。したがって、SCが書き換えられた可能性がある場合にのみメモリチェックすることができ、異常監視することでCPU負荷が増大しすぎることも、異常監視を怠ることも防止できる。
11 入力I/F
12 マイクロコンピュータ
13 出力I/F
24 フラッシュROM
31 メモリチェック部
32 フェールセーフ部
33 チェック履歴テーブル
34 実行フラグ
35 SC領域テーブル
36 サム値テーブル
100 電子制御装置
12 マイクロコンピュータ
13 出力I/F
24 フラッシュROM
31 メモリチェック部
32 フェールセーフ部
33 チェック履歴テーブル
34 実行フラグ
35 SC領域テーブル
36 サム値テーブル
100 電子制御装置
Claims (8)
- 複数のプログラムを記憶するプログラム記憶手段と、
前記プログラムを実行する演算手段と、を有する電子制御装置であって、
各プログラムが記憶されているアドレスのアドレス情報と、
各プログラムが記憶されている領域毎に、予め定められている検査基準値と、
前記領域を予め定められている方法で検査し、検査結果を前記検査基準値と比較するメモリ検査手段と、
前記領域毎に、前記メモリ検査手段により検査済みか否かが登録された検査実行登録テーブルと、
予め定められた特定プログラムが実行されたことが登録された特定プログラム実行記録と、を有し、
前記メモリ検査手段は、前記検査実行登録テーブルに検査済みと登録された前記領域の検査を、前記特定プログラム実行記録に前記特定プログラムが実行されことが登録されている場合に行う、
ことを特徴とする電子制御装置。 - 前記プログラム実行記録には、複数の各プログラムに対応づけて、前記特定プログラムが実行されたことを示す実行記録が登録されており、
前記メモリ検査手段は、1つの前記領域を検査する毎に、該領域に記憶されているプログラムに対応づけられた前記実行記録を消去する、
ことを特徴とする請求項1記載の電子制御装置。 - 前記演算手段により実行された前記特定プログラムは、前記プログラム実行記録の各プログラムの全てに対応付けて実行記録を登録する、
ことを特徴とする請求項2記載の電子制御装置。 - 車載装置を制御するプログラムは、プログラムに特有の制御処理を開始する前に、前記メモリ検査手段を呼び出し、
前記メモリ検査手段は、呼び出したプログラムが記憶された前記領域を予め定められている方法で検査する、
ことを特徴とする請求項1〜3いずれか1項記載の電子制御装置。 - 前記演算手段が実行することで前記メモリ検査手段を実現するプログラムが記憶された前記領域を、前記メモリ検査手段を呼び出したプログラムが記憶された前記領域よりも先に、前記メモリ検査手段が予め定められている方法で検査する、
ことを特徴とする請求項4記載の電子制御装置。 - 前記メモリ検査手段は、前記特定プログラムが記憶された前記領域を検査しない、
ことを特徴とする請求項1〜5いずれか1項記載の電子制御装置。 - 前記特定プログラムはASILがQMのプログラムであり、その他のプログラムはASILがA以上のプログラムである、ことを特徴とする請求項1〜6いずれか1項記載の電子制御装置。
- 複数のプログラムを記憶するプログラム記憶手段と、
前記プログラムを実行する演算手段と、
各プログラムが記憶されているアドレスのアドレス情報と、
各プログラムが記憶されている領域毎に、予め定められている検査基準値と、
前記領域を予め定められている方法で検査し、検査結果を前記検査基準値と比較するメモリ検査手段と、を有する電子制御装置のメモリ検査方法であって、
前記メモリ検査手段が、
前記領域毎に、前記メモリ検査手段による検査済みか否かが登録された検査実行登録テーブルと、予め定められた特定プログラムが実行されたことが登録された特定プログラム実行記録と、を参照して、
前記検査実行登録テーブルに検査済みと登録された前記領域の検査を、前記特定プログラム実行記録に前記特定プログラムが実行されことが登録されている場合に行う、
ことを特徴とするメモリ検査方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012004229A JP2013143095A (ja) | 2012-01-12 | 2012-01-12 | 電子制御装置、メモリ検査方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012004229A JP2013143095A (ja) | 2012-01-12 | 2012-01-12 | 電子制御装置、メモリ検査方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2013143095A true JP2013143095A (ja) | 2013-07-22 |
Family
ID=49039617
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012004229A Pending JP2013143095A (ja) | 2012-01-12 | 2012-01-12 | 電子制御装置、メモリ検査方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2013143095A (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014193690A (ja) * | 2013-03-29 | 2014-10-09 | Hitachi Automotive Systems Ltd | 車両用制御装置 |
JP2016038599A (ja) * | 2014-08-05 | 2016-03-22 | ルネサスエレクトロニクス株式会社 | マイクロコンピュータ及びマイクロコンピュータシステム |
JP2016134082A (ja) * | 2015-01-21 | 2016-07-25 | 株式会社デンソー | マイクロコンピュータ |
JP6227104B1 (ja) * | 2016-12-27 | 2017-11-08 | 三菱電機株式会社 | メモリ診断装置、車両制御装置、メモリ診断方法および車両制御方法 |
WO2020158075A1 (ja) * | 2019-01-30 | 2020-08-06 | デンソートリム株式会社 | メモリの書き換え履歴記録装置 |
JP2020135703A (ja) * | 2019-02-25 | 2020-08-31 | 日本電気株式会社 | 情報処理装置、端末装置、情報処理システム、情報処理方法及び情報処理プログラム |
-
2012
- 2012-01-12 JP JP2012004229A patent/JP2013143095A/ja active Pending
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014193690A (ja) * | 2013-03-29 | 2014-10-09 | Hitachi Automotive Systems Ltd | 車両用制御装置 |
JP2016038599A (ja) * | 2014-08-05 | 2016-03-22 | ルネサスエレクトロニクス株式会社 | マイクロコンピュータ及びマイクロコンピュータシステム |
JP2016134082A (ja) * | 2015-01-21 | 2016-07-25 | 株式会社デンソー | マイクロコンピュータ |
JP6227104B1 (ja) * | 2016-12-27 | 2017-11-08 | 三菱電機株式会社 | メモリ診断装置、車両制御装置、メモリ診断方法および車両制御方法 |
JP2018106458A (ja) * | 2016-12-27 | 2018-07-05 | 三菱電機株式会社 | メモリ診断装置、車両制御装置、メモリ診断方法および車両制御方法 |
WO2020158075A1 (ja) * | 2019-01-30 | 2020-08-06 | デンソートリム株式会社 | メモリの書き換え履歴記録装置 |
CN113396398A (zh) * | 2019-01-30 | 2021-09-14 | 株式会社电装多利牡 | 存储器的改写历史记录装置 |
JPWO2020158075A1 (ja) * | 2019-01-30 | 2021-09-30 | 株式会社デンソートリム | メモリの書き換え履歴記録装置 |
JP7085029B2 (ja) | 2019-01-30 | 2022-06-15 | 株式会社デンソートリム | メモリの書き換え履歴記録装置 |
CN113396398B (zh) * | 2019-01-30 | 2023-11-28 | 株式会社电装多利牡 | 存储器的改写历史记录装置 |
JP2020135703A (ja) * | 2019-02-25 | 2020-08-31 | 日本電気株式会社 | 情報処理装置、端末装置、情報処理システム、情報処理方法及び情報処理プログラム |
JP7183858B2 (ja) | 2019-02-25 | 2022-12-06 | 日本電気株式会社 | 情報処理装置、端末装置、情報処理システム、情報処理方法及び情報処理プログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2013143095A (ja) | 電子制御装置、メモリ検査方法 | |
JP5867495B2 (ja) | 電子制御装置 | |
JP2009145117A (ja) | 車両用情報記憶装置 | |
JPWO2009090978A1 (ja) | 車両用制御装置 | |
JP6149797B2 (ja) | 車載電子制御装置 | |
JP2015531521A (ja) | リンクされた複数のプログラムブロックの別々の実行を制御するための方法および制御装置 | |
JP2011145900A (ja) | マルチプロセッサ装置 | |
JP6471510B2 (ja) | マイクロコンピュータ | |
JP2002334024A (ja) | 電子制御装置 | |
US20230177894A1 (en) | Information processing apparatus and information processing method | |
JPH1115741A (ja) | 電子制御装置 | |
JP6159668B2 (ja) | 車両用制御装置 | |
JP6183251B2 (ja) | 電子制御装置 | |
JP6094387B2 (ja) | 制御装置 | |
JP6597489B2 (ja) | 車両制御装置 | |
JP2013152563A (ja) | 電子制御装置、メモリチェック方法 | |
CN111026093A (zh) | 一种判断ecu异常下电的方法及系统 | |
JP6919359B2 (ja) | 電子制御装置 | |
JP7200883B2 (ja) | 電子制御装置 | |
JP2004318672A (ja) | 処理装置 | |
JP2013030056A (ja) | 半導体集積回路装置 | |
JP2023009818A (ja) | 車両用電子制御装置及び車両用電子制御装置による制御方法 | |
JP4563644B2 (ja) | メモリ装置に格納されているデータの操作に対してマイクロコンピュータシステムを保護する方法 | |
JP2001182607A (ja) | 車両制御装置 | |
JP6639552B2 (ja) | フェールセーフ制御装置及びフェールセーフ制御方法 |