JP2014085770A - 情報処理装置 - Google Patents

情報処理装置 Download PDF

Info

Publication number
JP2014085770A
JP2014085770A JP2012233148A JP2012233148A JP2014085770A JP 2014085770 A JP2014085770 A JP 2014085770A JP 2012233148 A JP2012233148 A JP 2012233148A JP 2012233148 A JP2012233148 A JP 2012233148A JP 2014085770 A JP2014085770 A JP 2014085770A
Authority
JP
Japan
Prior art keywords
program
variation
executed
switching
memory
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.)
Granted
Application number
JP2012233148A
Other languages
English (en)
Other versions
JP5942778B2 (ja
Inventor
Kazumi Yamada
一美 山田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toyota Motor Corp
Original Assignee
Toyota Motor Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Toyota Motor Corp filed Critical Toyota Motor Corp
Priority to JP2012233148A priority Critical patent/JP5942778B2/ja
Publication of JP2014085770A publication Critical patent/JP2014085770A/ja
Application granted granted Critical
Publication of JP5942778B2 publication Critical patent/JP5942778B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

【課題】 本来実行されるべきでないプログラムが実行されていることを検出した場合に、本来実行されるべきプログラムへ切り換えることができる情報処理装置の提供を目的とする。
【解決手段】 所定プログラム以外のプログラムの実行を禁止する設定を行う初期設定処理と、前記所定プログラム以外のプログラムの実行を検出した場合に、実行するプログラムを前記所定プログラムに切り換えるプログラム切換処理と、を実行するように構成された情報処理装置。
【選択図】図1

Description

本発明は、情報処理装置に関する。
従来から、携帯可能電子装置の動作を制御するプログラムが複数のプログラムモジュールで構成されており、あるプログラムモジュールの実行を開始する前に、当該プログラムモジュールの実行可否を判断し、判断の結果、当該プログラムモジュールの実行が不可の場合は当該携帯可能電子装置の動作を停止させる技術が知られている(例えば、特許文献1参照)。
特開2007-115187号公報
ところで、車両等に実装される制御プログラムに関して、ECUのソフトウェアを例えば2WD、4WDなどの制御の異なる車両に対して共通化することがある。この場合、車両情報を他のECUや車両工場のツール等から受信し、不揮発性メモリに記憶し、その値を参照して動的に動作を切り換えるロジックが組み込まれる。
また、一般的に、マイコンはメモリ保護機能を備え、同じマイコン上で実行される処理(タスク)毎に使用可能なメモリ領域を制限して、他の処理による予期しないメモリアクセスによる干渉を防止している。
しかしながら、ECU内に記憶した情報を使って動的にソフトウェアの動作を切り換えると、メモリの破壊やノイズ等に起因して、ECU内に記憶した情報が破壊された場合に、誤動作が発生する(例えば、本来実行されるべきでない処理が実行されうる)という問題がある。この点、動的に条件分岐等で処理を切り換えるプログラムの場合、元となる情報を書き込んだメモリ自体を多重化するなどの保護を行ったとしても、動作時に参照する際はレジスタ等の一時的なメモリを使用することになるため、ノイズ等で誤動作する可能性がある。この点、現状のメモリ保護機能は、実装されるべき処理(タスク)間の干渉を防止しているが、本来実行されるべきでない処理の実行までは防止することができない。
そこで、本発明は、本来実行されるべきでないプログラムが実行されていることを検出した場合に、本来実行されるべきプログラムへ切り換えることができる情報処理装置の提供を目的とする。
上記目的を達成するため、本発明の一局面によれば、所定プログラム以外のプログラムの実行を禁止する設定を行う初期設定処理と、
前記所定プログラム以外のプログラムの実行を検出した場合に、実行するプログラムを前記所定プログラムに切り換えるプログラム切換処理と、を実行するように構成された情報処理装置が提供される。
本発明によれば、本来実行されるべきでないプログラムが実行されていることを検出した場合に、本来実行されるべきプログラムへ切り換えることができる情報処理装置が得られる。
車両制御装置100の一例を示す構成図である。 ECU10(マイコン20)におけるイニシャル処理の一例を示すフローチャートである。 ECU10(マイコン20)におけるメイン処理の一例を示すフローチャートである。 ECU10(マイコン20)におけるメモリ保護違反割り込み処理(プログラム切換処理)の一例を示すフローチャートである。 ECU10(マイコン20)におけるメモリ保護違反割り込み処理(プログラム切換処理)の他の一例を示すフローチャートである。 ECU10(マイコン20)におけるメモリ保護違反割り込み処理(プログラム切換処理)の他の一例を示すフローチャートである。
以下、図面を参照して、本発明を実施するための最良の形態の説明を行う。
図1は、車両制御装置100の一例を示す構成図である。車両制御装置100は、ECU10を含む。ECU10は、任意の車両制御を行うECUであってよい。例えば、ECU10は、車両の駆動力制御(エンジン制御やトランスミッション制御)を行うECUであってよい。
ECU10は、例えばCAN(controller area network)などの適切なバス14を介して、車両内の各種の他のECU12に接続されてよい。他のECU12は、例えば車両のボデー系の電装品を制御するボデーECU等を含んでよい。
ECU10のハードウェア構成自体は、任意であり、例えば図1に示すように、例えばCANドライバ12を介して、バス14に接続されるマイコン20を備える。マイコン20は、CPU22と、メモリ保護部(保護機能)24と、フラッシュメモリ26と、RAM28とを含む。
ここで、本実施例では、車両等に実装される制御プログラムに関して、ECUのソフトウェアを例えば2WD、4WDなどの制御の異なる車両に対して共通化しているものとする。即ち、制御プログラムは、複数のバリエーションのプログラム(対象となる制御自体は同じであるが、制御内容が異なるプログラム)を含む。ここでは、制御プログラムは、例えば仕向け国「欧州」向けのバリエーションAのためのプログラム(バリエーションA用プログラム)と、例えば仕向け国「日本」向けのバリエーションBのためのプログラム(バリエーションB用プログラム)とを含む。尚、バリエーションA用プログラムと、バリエーションB用プログラムとは、対象となる制御自体は同じであるが、制御内容(要求値の算出ロジックなどの制御ロジック)が異なる。例えば、対象となる制御自体は、同じ駆動力制御であるが、バリエーションA用プログラムは、例えば2WD用に設計された駆動力制御プログラムであり、バリエーションB用プログラムは、例えば4WD用に設計された駆動力制御プログラムであるといった具合である。この際、2WD用に設計された駆動力制御プログラムと、4WD用に設計された駆動力制御プログラムとは、例えば、HV(ハイブリッド)制御において、各モータへの要求トルク(配分)の算出ロジックが異なる。
尚、車両に実装される制御プログラムは、多数存在し、それぞれが、複数のバリエーションのプログラムを含みうる。ここでは、複数のバリエーションのプログラムを含む、ある特定の1つの任意の制御プログラムを対象として説明を続ける。
CPU22は、メモリ保護部24を介してフラッシュメモリ26やRAM28にアクセスし、フラッシュメモリ26に格納された制御プログラム(バリエーションA用プログラム及びバリエーションB用プログラム)に基づく各種処理を行う。
メモリ保護部24は、ある制御プログラムの実行に伴って、禁止領域として指定されたアドレス領域へのアクセス(例えばWrite/Readアクセス)が発生したこと(メモリ保護違反)を検出すると、その旨の情報(アクセス例外)を発生する。禁止領域は、例えばスーパーバイザーモード等のセキュリティ性を確保したアプリケーションにより設定(指定)されてよい。例えばバリエーションA用プログラムのみへのアクセスを許可し、バリエーションB用プログラムへのアクセスを禁止するとき、バリエーションB用プログラムが格納されたアドレス領域が禁止領域となる。このとき、バリエーションA用プログラムが格納されたアドレス領域が実行許可領域(実行許可アドレス)となる。
フラッシュメモリ26は、不揮発性メモリの一例であり、他の同様の類のメモリ(例えば他のEEPROM)が使用されてもよい。フラッシュメモリ26には、バリエーションA用プログラム及びバリエーションB用プログラムが格納される。
RAM28は、SRAM(Static Random Access Memory)であってよい。RAM28には、フラッシュメモリ26から一時的に読み出した値等が格納される。RAM28には、例えば後述のバリエーション情報[VARI]が格納される。
図2は、ECU10(マイコン20)におけるイニシャル処理の一例を示すフローチャートである。
ステップ200では、車両情報[INF]が入力される。車両情報は、例えばCAN通信等の車載ECU間通信にて他のECU12(例えばボデーECU等)から入力されてよい。この場合、車両情報は、イグニッションスイッチのオン中に定期的に受信されるデータであってよい。また、車両情報は、車両工場のツール等から受信されてもよい。車両情報は、制御プログラムのバリエーションに関する情報(即ち、当該車両に対してどのバリエーションのプログラムが実行されるべきかを示す情報)を含む。ここでは、車両情報は、バリエーションA用プログラム及びバリエーションB用プログラムのいずれが実行されるべきかを示す情報を含む。例えば、車両情報は、バリエーションA用プログラム及びバリエーションB用プログラムのいずれが実行されるべきかを間接的に示す情報として、仕向け等を示す情報であってもよい。
ステップ202では、上記ステップ200で入力された車両情報に基づいて、バリエーション情報[VARI]が確定される。即ち、上記ステップ200で入力された車両情報に応じたバリエーション情報[VARI]がRAM28(及びフラッシュメモリ26)に記憶される。例えば、上記ステップ200で入力された車両情報[INF]が、バリエーションA用プログラムを指示する情報を含む場合、バリエーション情報[VARI]が"A"として確定され、上記ステップ200で入力された車両情報[INF]が、バリエーションB用プログラムを指示する情報を含む場合、バリエーション情報[VARI]が"B"として確定される。
ステップ204では、上記ステップ202で確定されたバリエーション情報[VARI]に基づいて、即ち、RAM28(及びフラッシュメモリ26)内に記憶されたバリエーション情報[VARI]に基づいて、バリエーション情報[VARI]が"A"であるか否かが判定される。バリエーション情報[VARI]が"A"であるときは、ステップ206に進み、それ以外の場合は、ステップ208に進む。
ステップ206では、バリエーションA用プログラム以外の実行を禁止する設定を行う。即ち、バリエーションB用プログラムの実行を禁止する設定を行う。この設定は、例えば、バリエーションA用プログラムのみアクセスを許可し、バリエーションB用プログラムへのアクセスを禁止するようにユーザアプリケーション(例えばスーパーバイザーモード等のセキュリティ性を確保したアプリケーション)からマイコン20のメモリ保護部24のレジスタへ設定値を書き込むことで実現されてよい。
ステップ208では、上記ステップ202で確定されたバリエーション情報[VARI]に基づいて、バリエーション情報[VARI]が"B"であるか否かが判定される。バリエーション情報[VARI]が"B"であるときは、ステップ210に進み、それ以外の場合は、そのまま終了する。尚、バリエーションA用プログラム及びバリエーションB用プログラムの2種類のバリエーションしかない場合は、ステップ208を省略し、ステップ204で否定判定されたときにステップ210に進むこととしてもよい。
ステップ210では、上記ステップ206と同様、バリエーションB用プログラム以外の実行を禁止する設定を行う。即ち、バリエーションA用プログラムの実行を禁止する設定を行う。ステップ210の処理が終了すると、イニシャル処理が完了となる。
このように図2に示すイニシャル処理によれば、通信等で入力された車両情報を用いて、該当車両では実行すべきでないプログラム領域に対して実行を禁止する設定を行うことができる。
図3は、ECU10(マイコン20)におけるメイン処理の一例を示すフローチャートである。図3に示すメイン処理は、図2に示したイニシャル処理完了後、イグニッションスイッチがオンの間、所定周期毎に繰り返し実行されてよい。
ステップ300では、RAM28(又はフラッシュメモリ26)に格納されているバリエーション情報[VARI]に基づいて、バリエーション情報[VARI]が"A"であるか否かが判定される。バリエーション情報[VARI]が"A"であるときは、ステップ302に進み、それ以外の場合は、ステップ304に進む。
ステップ302では、バリエーションA用の関数Func_A()が実行される。即ち、バリエーションA用プログラムが実行される。
ステップ304では、RAM28(又はフラッシュメモリ26)に格納されているバリエーション情報[VARI]に基づいて、バリエーション情報[VARI]が"B"であるか否かが判定される。バリエーション情報[VARI]が"B"であるときは、ステップ306に進み、それ以外の場合は、そのままステップ300に戻る。尚、バリエーションA用プログラム及びバリエーションB用プログラムの2種類のバリエーションしかない場合は、ステップ304を省略し、ステップ300で否定判定されたときにステップ306に進むこととしてもよい。
ステップ306では、バリエーションB用の関数Func_B()が実行される。即ち、バリエーションB用プログラムが実行される。
ここで、図3に示すメイン処理の間に、RAM28(又はフラッシュメモリ26)に格納されているバリエーション情報が何らかの原因(ノイズ等)で正規の値でない値に動作中に書き換わってしまった場合、CPU22は、その正規でない値に基づいて、本来実行すべきでない方のプログラムの係るメモリ領域(禁止領域)へアクセスを行おうとする。この際、メモリ保護部24が機能し、当該アクセスを禁止する。従って、制御プログラムの切換(即ちバリエーションA用プログラム及びバリエーションB用プログラム間の切換)に使用している情報(又はその情報の複製)、即ちRAM28(又はフラッシュメモリ26)に格納されているバリエーション情報が何らかの原因で正規の値でない値に動作中に書き換わってしまった場合でも、メモリ保護部24の設定により、本来実行すべきでない処理の動作を確実に禁止することができる。
図4は、ECU10(マイコン20)におけるメモリ保護違反割り込み処理(プログラム切換処理)の一例を示すフローチャートである。図4に示す処理は、例えば、図3に示したメイン処理中に、メモリ保護部24がアクセス例外を発生したときに割り込み処理として実行されてよい。
ステップ400では、メモリ保護部24の設定情報(図2のステップ206及びステップ210参照)に基づいて、実行許可領域(実行許可アドレス)がバリエーションA用プログラムの処理(処理A)であるか否かを判定する。実行許可領域(実行許可アドレス)については、メモリ保護部24の設定情報を参照することで実現されてよい。実行許可領域が処理Aである場合は、ステップ402に進み、実行許可領域が処理Aでない場合は、ステップ404に進む。
ステップ402では、バリエーションA用の関数Func_A()への復帰が実行される。即ち、バリエーションA用プログラムへの切換が実行される。これにより、制御プログラムの切換(即ちバリエーションA用プログラム及びバリエーションB用プログラム間の切換)に使用しているRAM28(又はフラッシュメモリ26)内のバリエーション情報が何らかの原因で正規の値"A"でない値"B"に動作中に書き換わってしまった場合でも、本来実行されるべきバリエーションA用プログラムへの復帰(切換)を実現することができる。尚、この際、RAM28(又はフラッシュメモリ26)内のバリエーション情報についても値"A"に書換えすることとしてもよい。
ステップ404では、メモリ保護部24の設定情報(図2のステップ206及びステップ210参照)に基づいて、実行許可領域(実行許可アドレス)がバリエーションB用プログラムの処理(処理B)であるか否かを判定する。実行許可領域が処理Bである場合は、ステップ406に進み、実行許可領域が処理Bでない場合は、そのまま終了する。尚、バリエーションA用プログラム及びバリエーションB用プログラムの2種類のバリエーションしかない場合は、ステップ404を省略し、ステップ400で否定判定されたときにステップ406に進むこととしてもよい。
ステップ406では、バリエーションB用の関数Func_B()への復帰が実行される。即ち、バリエーションB用プログラムへの切換が実行される。これにより、制御プログラムの切換(即ちバリエーションA用プログラム及びバリエーションB用プログラム間の切換)に使用しているRAM28(又はフラッシュメモリ26)内のバリエーション情報が何らかの原因で正規の値"B"でない値"A"に動作中に書き換わってしまった場合でも、本来実行されるべきバリエーションB用プログラムへの復帰(切換)を実現することができる。尚、この際、RAM28(又はフラッシュメモリ26)内のバリエーション情報についても値"B"に書換えすることとしてもよい。
図4に示す処理によれば、メモリ保護違反発生時の割り込み処理により、本来実行すべきプログラム領域を判別し、本来実行すべきプログラムの実行状態へと復帰させることができる。
具体的には、図3に示すメイン処理の間に、RAM28(又はフラッシュメモリ26)に格納されているバリエーション情報が何らかの原因(ノイズ等)で正規の値でない値に動作中に書き換わってしまった場合、CPU22は、その正規でない値に基づいて、本来実行すべきでないプログラムの係るメモリ領域(禁止領域)へアクセスを行おうとする。この際、メモリ保護部24が機能し、上述の如く本来実行すべきでない処理が禁止されると共に、割り込み処理として図4に示す処理が実行される。従って、制御プログラムの切換(即ちバリエーションA用プログラム及びバリエーションB用プログラム間の切換)に使用しているバリエーション情報が何らかの原因で正規の値でない値に動作中に書き換わることで本来実行すべきでないプログラムが実行されうる状態になった場合でも、本来実行すべきプログラムへの復帰(補正)が可能となる。
尚、図4に示す処理では、制御プログラムがバリエーションA用プログラム及びバリエーションB用プログラムの2種類であることを前提としているが、制御プログラムが3種類以上であっても同様である。例えば制御プログラムがバリエーションA用プログラム、バリエーションB用プログラム及びバリエーションC用プログラムの3種類である場合、ステップ404で否定判定されたときに、メモリ保護部24の設定情報(図2のステップ206及びステップ210参照)に基づいて、実行許可領域(実行許可アドレス)がバリエーションC用プログラムの処理(処理C)であるか否かを判定し、実行許可領域が処理Cであるときは、バリエーションC用の関数Func_C()への復帰が実行されればよい。
図5は、ECU10(マイコン20)におけるメモリ保護違反割り込み処理(プログラム切換処理)の他の一例を示すフローチャートである。図5に示す処理は、例えば、図3に示したメイン処理中に、メモリ保護部24がアクセス例外を発生したときに割り込み処理として実行されてよい。
ステップ500では、メモリ保護違反の違反発生箇所がバリエーションA用プログラムの処理(処理A)であるか否かを判定する。例えば、メモリ保護違反発生時のプログラムカウンタの値(アドレス)を参照し、そのプログラムカウンタの値に対応する処理(タスク)がバリエーションA用プログラムの処理(処理A)であるか否かを判定してもよい。尚、この場合も、メモリ保護違反は、メモリ保護部24の設定情報(図2のステップ206及びステップ210参照)に基づいて発生されるので、メモリ保護違反の違反発生箇所は、メモリ保護部24の設定情報に基づいて判断されていることになる。違反発生箇所が処理Aである場合は、ステップ502に進み、違反発生箇所が処理Aでない場合は、ステップ504に進む。
ステップ502では、バリエーションB用の関数Func_B()への復帰が実行される。即ち、バリエーションB用プログラムへの切換が実行される。これにより、制御プログラムの切換(即ちバリエーションA用プログラム及びバリエーションB用プログラム間の切換)に使用しているRAM28(又はフラッシュメモリ26)内のバリエーション情報が何らかの原因で正規の値"B"でない値"A"に動作中に書き換わってしまった場合でも、本来実行されるべきバリエーションB用プログラムへの復帰(切換)を実現することができる。尚、この際、RAM28(又はフラッシュメモリ26)内のバリエーション情報についても値"B"に書換えすることとしてもよい。
ステップ504では、メモリ保護違反の違反発生箇所がバリエーションB用プログラムの処理(処理B)であるか否かを判定する。違反発生箇所が処理Bである場合は、ステップ506に進み、違反発生箇所が処理Bでない場合は、そのまま終了する。尚、バリエーションA用プログラム及びバリエーションB用プログラムの2種類のバリエーションしかない場合は、ステップ504を省略し、ステップ500で否定判定されたときにステップ506に進むこととしてもよい。
ステップ506では、バリエーションA用の関数Func_A()への復帰が実行される。即ち、バリエーションA用プログラムへの切換が実行される。これにより、制御プログラムの切換(即ちバリエーションA用プログラム及びバリエーションB用プログラム間の切換)に使用しているRAM28(又はフラッシュメモリ26)内のバリエーション情報が何らかの原因で正規の値"A"でない値"B"に動作中に書き換わってしまった場合でも、本来実行されるべきバリエーションA用プログラムへの復帰(切換)を実現することができる。尚、この際、RAM28(又はフラッシュメモリ26)内のバリエーション情報についても値"A"に書換えすることとしてもよい。
図5に示す処理によれば、同様に、メモリ保護違反発生時の割り込み処理により、メモリ保護違反が発生しないプログラムの実行状態、即ち本来実行すべきプログラムの実行状態へと復帰させることができる。
具体的には、図3に示すメイン処理の間に、RAM28(又はフラッシュメモリ26)に格納されているバリエーション情報が何らかの原因(ノイズ等)で正規の値でない値に動作中に書き換わってしまった場合、CPU22は、その正規でない値に基づいて、本来実行すべきでないプログラムの係るメモリ領域(禁止領域)へアクセスを行おうとする。この際、メモリ保護部24が機能し、上述の如く本来実行すべきでない処理が禁止されると共に、割り込み処理として図5に示す処理が実行される。これにより、制御プログラムの切換(即ちバリエーションA用プログラム及びバリエーションB用プログラム間の切換)に使用しているバリエーション情報が何らかの原因で正規の値でない値に動作中に書き換わることで本来実行すべきでないプログラムが実行されうる状態になった場合でも、本来実行すべきプログラムへの復帰(補正)が可能となる。
尚、図5に示す処理では、制御プログラムがバリエーションA用プログラム及びバリエーションB用プログラムの2種類であることを前提としているが、制御プログラムが3種類以上であっても同様である。例えば、制御プログラムがバリエーションA用プログラム、バリエーションB用プログラム、バリエーションC用プログラム及びバリエーションD用プログラムの4種類である場合、以下の図6に示すようなメモリ保護違反割り込み処理が実行されてもよい。
図6は、ECU10(マイコン20)におけるメモリ保護違反割り込み処理(プログラム切換処理)の他の一例を示すフローチャートである。図6に示す処理は、例えば、図3に示したメイン処理中に、メモリ保護部24がアクセス例外を発生したときに割り込み処理として実行されてよい。
ステップ600では、メモリ保護違反の違反発生箇所がバリエーションA用プログラムの処理(処理A)であるか否かを判定する。尚、メモリ保護違反の違反発生箇所は、メモリ保護部24の設定情報(図2のステップ206及びステップ210参照)に基づいて判断される。違反発生箇所が処理Aである場合は、ステップ602に進み、違反発生箇所が処理Aでない場合は、ステップ604に進む。
ステップ602では、バリエーションB用の関数Func_B()への変更が実行される。即ち、バリエーションB用プログラムへの切換が実行される。これにより、制御プログラムの切換に使用しているRAM28(又はフラッシュメモリ26)内のバリエーション情報が何らかの原因で正規の値"B"でない値に動作中に書き換わってしまった場合でも、本来実行されるべきバリエーションB用プログラムへの復帰(切換)を実現することができる。尚、この際、RAM28(又はフラッシュメモリ26)内のバリエーション情報についても値"B"に書換えすることとしてもよい。ここで、正規の値が"B"でないときは(例えば正規の値が"D"のとき)、バリエーションB用の関数Func_B()への変更後、再び、メモリ保護部24からアクセス例外が発生し、図6のメモリ保護違反割り込み処理が再度実行されることになる。この場合、後述のステップ604で肯定判定されることになる。
ステップ604では、メモリ保護違反の違反発生箇所がバリエーションB用プログラムの処理(処理B)であるか否かを判定する。違反発生箇所が処理Bである場合は、ステップ606に進み、違反発生箇所が処理Bでない場合は、ステップ608に進む。
ステップ606では、バリエーションC用の関数Func_C()への変更が実行される。即ち、バリエーションC用プログラムへの切換が実行される。これにより、制御プログラムの切換に使用しているRAM28(又はフラッシュメモリ26)内のバリエーション情報が何らかの原因で正規の値"C"でない値に動作中に書き換わってしまった場合でも、本来実行されるべきバリエーションC用プログラムへの復帰(切換)を実現することができる。尚、この際、RAM28(又はフラッシュメモリ26)内のバリエーション情報についても値"C"に書換えすることとしてもよい。ここで、正規の値が"C"でないときは(例えば正規の値が"D"のとき)、バリエーションC用の関数Func_C()への変更後、再び、メモリ保護部24からアクセス例外が発生し、図6のメモリ保護違反割り込み処理が再度実行されることになる。この場合、後述のステップ608で肯定判定されることになる。
ステップ608では、メモリ保護違反の違反発生箇所がバリエーションC用プログラムの処理(処理C)であるか否かを判定する。違反発生箇所が処理Cである場合は、ステップ610に進み、違反発生箇所が処理Cでない場合は、ステップ612に進む。
ステップ610では、バリエーションD用の関数Func_D()への変更が実行される。即ち、バリエーションD用プログラムへの切換が実行される。これにより、制御プログラムの切換に使用しているRAM28(又はフラッシュメモリ26)内のバリエーション情報が何らかの原因で正規の値"D"でない値に動作中に書き換わってしまった場合でも、本来実行されるべきバリエーションD用プログラムへの復帰(切換)を実現することができる。尚、この際、RAM28(又はフラッシュメモリ26)内のバリエーション情報についても値"D"に書換えすることとしてもよい。ここで、正規の値が"D"でないときは(例えば正規の値が"A"のとき)、バリエーションD用の関数Func_D()への変更後、再び、メモリ保護部24からアクセス例外が発生し、図6のメモリ保護違反割り込み処理が再度実行されることになる。
ステップ612では、バリエーションA用の関数Func_A()への変更が実行される。即ち、バリエーションA用プログラムへの切換が実行される。これにより、制御プログラムの切換に使用しているRAM28(又はフラッシュメモリ26)内のバリエーション情報が何らかの原因で正規の値"A"でない値に動作中に書き換わってしまった場合でも、本来実行されるべきバリエーションA用プログラムへの復帰(切換)を実現することができる。
このように図6に示す処理によれば、メモリ保護違反が発生する毎に、メモリ保護違反が発生しなくなるまで順次、制御プログラムが切り換えられる。これにより、制御プログラムの切換(即ちバリエーションA用プログラム、バリエーションB用プログラム、バリエーションC用プログラム、バリエーションD用プログラム間の切換)に使用しているバリエーション情報が何らかの原因で正規の値でない値に動作中に書き換わり、本来実行すべきでないプログラムが実行されうる状態になった場合でも、本来実行すべきプログラムへの復帰(補正)が可能となる。
例えば、本来実行すべきプログラムがバリエーションA用プログラムであるが(即ちバリエーション情報の正規の値が"A"であるが)、何らかの原因でバリエーション情報の値が"D"に書き換わった場合を想定する。この場合、ステップ600、ステップ604、ステップ608でそれぞれ否定判定され、ステップ612でバリエーションA用の関数Func_A()へ変更されることになる。即ち、本来実行すべきバリエーションA用プログラムへの復帰(補正)が実現される。
また、例えば、本来実行すべきプログラムがバリエーションD用プログラムであるが(即ちバリエーション情報の正規の値が"D"であるが)、何らかの原因でバリエーション情報の値が"A"に書き換わった場合を想定する。この場合、先ず、ステップ600で肯定判定され、ステップ602でバリエーションB用の関数Func_B()へ変更されることになる。この場合、バリエーションB用の関数Func_B()への変更後、再び、メモリ保護部24からアクセス例外が発生し、図6のメモリ保護違反割り込み処理が再度実行されることになる。次は、ステップ604で肯定判定され、ステップ606でバリエーションC用の関数Func_C()へ変更されることになる。この場合、バリエーションC用の関数Func_C()への変更後、再び、メモリ保護部24からアクセス例外が発生し、図6のメモリ保護違反割り込み処理が再度実行されることになる。次は、ステップ608で肯定判定され、ステップ610でバリエーションD用の関数Func_D()へ変更されることになる。即ち、本来実行すべきバリエーションD用プログラムへの復帰(補正)が実現される。
以上説明した本実施例によれば、とりわけ、以下のような優れた効果が奏される。
上述の如く、マイコン20のメモリ保護部(メモリ保護機能)24を利用して本来のバリエーションでは使用しないプログラム領域(メモリ領域)へのアクセスを禁止し、アクセス違反発生時(アクセス例外発生時)には本来のバリエーションで使用すべきプログラム領域へ強制的に変更させることができる。これにより、制御プログラムの切換に使用しているバリエーション情報が何らかの原因で正規の値でない値に動作中に書き換わり、本来実行すべきでないプログラムが実行されうる状態になった場合でも、本来実行すべきプログラムの実行状態への復帰(補正)が可能となる。
以上、本発明の好ましい実施例について詳説したが、本発明は、上述した実施例に制限されることはなく、本発明の範囲を逸脱することなく、上述した実施例に種々の変形及び置換を加えることができる。
例えば、上述した実施例において、メモリ保護部24は、ドメイン(特定の処理を行う機能単位のグループ)毎にメモリ領域へのアクセスを管理(保護)してよい。
また、上述した実施例において、バリエーションA用プログラムと、バリエーションB用プログラム(他のバリエーション用プログラムも同様)とは、完全に異なる別々のプログラムであってもよいし、一部に共通部分を有するプログラムであってもよい。後者の場合、例えば、バリエーションA用プログラムと、バリエーションB用プログラムとは、共通のタスク群(第1ドメイン)と、バリエーションA用プログラムに特有のタスク群(第2ドメイン)と、バリエーションB用プログラムに特有のタスク群(第3ドメイン)とを有してよい。この場合、メモリ保護部24は、例えば第2ドメイン及び第3ドメインに対してそれぞれのメモリ領域へのアクセスを管理(保護)してよい。
10 ECU
12 他のECU
20 マイコン
22 CPU
24 メモリ保護部
26 フラッシュメモリ
28 RAM
100 車両制御装置

Claims (6)

  1. 所定プログラム以外のプログラムの実行を禁止する設定を行う初期設定処理と、
    前記所定プログラム以外のプログラムの実行を検出した場合に、前記初期設定処理により設定された設定情報に基づいて、実行するプログラムを前記所定プログラムに切り換えるプログラム切換処理と、を実行するように構成された情報処理装置。
  2. メモリ保護部を備え、
    前記所定プログラム以外のプログラムの実行は、前記所定プログラム以外のプログラムに係るメモリ領域へのアクセスに基づいて、前記メモリ保護部により検出する、請求項1に記載の情報処理装置。
  3. 不揮発性メモリからなり、前記所定プログラムを含む複数のプログラムが格納された第1記憶装置と、
    前記第1記憶装置と同じ不揮発性メモリ又は異なる揮発性メモリからなり、前記複数のプログラムのうちの実行すべき前記所定プログラムを決定するための情報が格納された第2記憶装置と、
    メモリ保護部とを備え、
    前記第2記憶装置に格納される情報に基づいて、実行するプログラムを決定し、前記決定したプログラムの実行に伴う前記第1記憶装置へのアクセス時に前記メモリ保護部においてメモリ保護違反が発生した場合に、前記決定した実行するプログラムを、前記所定プログラムに切り換える、請求項1又は2に記載の情報処理装置。
  4. 前記プログラム切換処理は、メモリ保護違反の発生時に割り込み処理として実行し、前記初期設定処理により前記メモリ保護部において設定された実行許可領域を参照することで、前記所定プログラムへの切換を実現する、請求項2又は3に記載の情報処理装置。
  5. 前記プログラム切換処理は、メモリ保護違反の発生時に割り込み処理として実行し、メモリ保護違反の発生箇所を判断することで、前記所定プログラムへの切換を実現する、請求項2又は3に記載の情報処理装置。
  6. 前記プログラム切換処理は、メモリ保護違反の発生時に割り込み処理として実行し、メモリ保護違反が発生しなくなるまでプログラムを順次切り換えることで、前記所定プログラムへの切換を実現する、請求項2又は3に記載の情報処理装置。
JP2012233148A 2012-10-22 2012-10-22 情報処理装置 Expired - Fee Related JP5942778B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012233148A JP5942778B2 (ja) 2012-10-22 2012-10-22 情報処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012233148A JP5942778B2 (ja) 2012-10-22 2012-10-22 情報処理装置

Publications (2)

Publication Number Publication Date
JP2014085770A true JP2014085770A (ja) 2014-05-12
JP5942778B2 JP5942778B2 (ja) 2016-06-29

Family

ID=50788790

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012233148A Expired - Fee Related JP5942778B2 (ja) 2012-10-22 2012-10-22 情報処理装置

Country Status (1)

Country Link
JP (1) JP5942778B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016031659A (ja) * 2014-07-29 2016-03-07 株式会社デンソー 電子制御装置
JP2018018274A (ja) * 2016-07-27 2018-02-01 株式会社デンソー 電子制御装置
JP2019053405A (ja) * 2017-09-13 2019-04-04 株式会社デンソー 車両用制御装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0492734A (ja) * 1990-08-07 1992-03-25 Mazda Motor Corp 車載コンピュータの制御装置及びその制御方法
JPH06139084A (ja) * 1992-10-26 1994-05-20 Mitsubishi Electric Corp 情報処理装置
JPH07208258A (ja) * 1994-01-10 1995-08-08 Nippondenso Co Ltd 車両用制御装置
JPH08319880A (ja) * 1995-05-25 1996-12-03 Fuji Heavy Ind Ltd 車輌の制御方法
JP2001256460A (ja) * 2000-03-14 2001-09-21 Sharp Corp 1チップマイクロコンピュータ及びそれを用いたicカード
JP2006079230A (ja) * 2004-09-08 2006-03-23 Nec Electronics Corp 半導体回路装置及び暴走検出方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0492734A (ja) * 1990-08-07 1992-03-25 Mazda Motor Corp 車載コンピュータの制御装置及びその制御方法
JPH06139084A (ja) * 1992-10-26 1994-05-20 Mitsubishi Electric Corp 情報処理装置
JPH07208258A (ja) * 1994-01-10 1995-08-08 Nippondenso Co Ltd 車両用制御装置
JPH08319880A (ja) * 1995-05-25 1996-12-03 Fuji Heavy Ind Ltd 車輌の制御方法
JP2001256460A (ja) * 2000-03-14 2001-09-21 Sharp Corp 1チップマイクロコンピュータ及びそれを用いたicカード
JP2006079230A (ja) * 2004-09-08 2006-03-23 Nec Electronics Corp 半導体回路装置及び暴走検出方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016031659A (ja) * 2014-07-29 2016-03-07 株式会社デンソー 電子制御装置
JP2018018274A (ja) * 2016-07-27 2018-02-01 株式会社デンソー 電子制御装置
JP2019053405A (ja) * 2017-09-13 2019-04-04 株式会社デンソー 車両用制御装置

Also Published As

Publication number Publication date
JP5942778B2 (ja) 2016-06-29

Similar Documents

Publication Publication Date Title
US10127161B2 (en) Method for the coexistence of software having different safety levels in a multicore processor system
US7444668B2 (en) Method and apparatus for determining access permission
US8234476B2 (en) Information processing apparatus and method of updating stack pointer
CN107949847B (zh) 车辆的电子控制单元
JP5942778B2 (ja) 情報処理装置
JP2015531521A (ja) リンクされた複数のプログラムブロックの別々の実行を制御するための方法および制御装置
JP6323235B2 (ja) 電子制御装置
CN107179980B (zh) 用于监视计算***的方法和相应的计算***
US20140344916A1 (en) Method for operating a communication module, and communication module
CN110574343B (zh) 用于保护车辆安全***的操作***的方法和半导体电路
JP6471510B2 (ja) マイクロコンピュータ
JP2017204083A (ja) メモリ保護システム
JP6229637B2 (ja) 車載制御装置
JP2023510122A (ja) インタフェースを備える装置およびインタフェースを備える装置の動作方法
JP6349444B2 (ja) 車両用制御装置
WO2013057825A1 (ja) 情報処理装置、データ管理方法、データ管理プログラム
JP2017107394A (ja) 車両用制御装置
CN107710162B (zh) 电子控制装置及栈使用方法
CN111079194A (zh) 计算装置和用于该计算装置的运行方法
JP2023009818A (ja) 車両用電子制御装置及び車両用電子制御装置による制御方法
JP7025200B2 (ja) プログラム制御装置、プログラム制御システムおよびプログラム制御方法
JP2014137734A (ja) 情報処理装置、プログラム
JP6762411B2 (ja) 自動車用電子制御装置
JP6699591B2 (ja) エンジン制御装置
JP6596455B2 (ja) 自動車用電子制御装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150115

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150924

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151027

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151224

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160426

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160509

R151 Written notification of patent or utility model registration

Ref document number: 5942778

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

LAPS Cancellation because of no payment of annual fees