JP2014035741A - 電子制御装置 - Google Patents
電子制御装置 Download PDFInfo
- Publication number
- JP2014035741A JP2014035741A JP2012178170A JP2012178170A JP2014035741A JP 2014035741 A JP2014035741 A JP 2014035741A JP 2012178170 A JP2012178170 A JP 2012178170A JP 2012178170 A JP2012178170 A JP 2012178170A JP 2014035741 A JP2014035741 A JP 2014035741A
- Authority
- JP
- Japan
- Prior art keywords
- function
- electronic control
- stack
- control device
- processing unit
- 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
Abstract
【課題】プログラムカウンタの異常による不正アクセスを検出する電子制御装置を提供する。
【解決手段】電子制御装置は、関数が正常に呼び出されるときの開始処理で、呼び出された関数の関数名をスタックに格納し(S400)、関数本体の処理を実行すると(S402)、スタックから関数名を取り出す(S404)。関数が正常にS400から呼び出されてS404の処理が実行されれば、スタックから取り出した関数名はS400でスタックに格納した関数名と一致する筈である。電子制御装置は、スタックから取り出した関数名が実行中の関数名と一致しない場合(S406:No)、プログラムカウンタが異常になり関数が不正なアクセスにより途中から実行されたと判断する。電子制御装置は、関数が途中から実行されると関数の処理が適切に実行されないので、フェイルセーフ処理として、例えば自装置をリセットする(S408)。
【選択図】図2
【解決手段】電子制御装置は、関数が正常に呼び出されるときの開始処理で、呼び出された関数の関数名をスタックに格納し(S400)、関数本体の処理を実行すると(S402)、スタックから関数名を取り出す(S404)。関数が正常にS400から呼び出されてS404の処理が実行されれば、スタックから取り出した関数名はS400でスタックに格納した関数名と一致する筈である。電子制御装置は、スタックから取り出した関数名が実行中の関数名と一致しない場合(S406:No)、プログラムカウンタが異常になり関数が不正なアクセスにより途中から実行されたと判断する。電子制御装置は、関数が途中から実行されると関数の処理が適切に実行されないので、フェイルセーフ処理として、例えば自装置をリセットする(S408)。
【選択図】図2
Description
本発明は、プログラムカウンタの異常による不正アクセスを検出する電子制御装置に関する。
マイクロコンピュータ(以下、「マイコン」とも言う。)は、CPUがメモリに記憶されているプログラムの命令を読み出して実行することにより処理を行う。命令の読み出しアドレスはプログラムカウンタに示されており、処理の流れに応じてプログラムカウンタは更新される。
しかし、宇宙線、電磁ノイズ等の影響によりプログラムカウンタが異常な値に更新されると、実行中のプログラムの処理流れからはアクセスされない他のプログラムの命令をCPUが読み出して実行するおそれがある。
この問題を解決するため、例えば特許文献1には、命令と命令との境界アドレスとプログラムカウンタが示すアドレスとを比較することにより、プログラムカウンタのアドレスが命令の境界アドレスよりも小さい値、境界アドレスに一致した値、境界アドレスよりも大きい値と順番に変化するか否かを判定し、境界アドレスに一致せずに更新されるとプログラムカウンタの異常と判定する技術が開示されている。
しかしながら、特許文献1の技術では、プログラムカウンタが命令の境界アドレスと一致してから異常値に更新されると、プログラムカウンタの異常のために実行中の処理単位から他の処理単位を不正にアクセスしても、不正アクセスであることを検出できないおそれがある。
本発明は上記課題を解決するためになされたものであり、プログラムカウンタの異常による不正アクセスを検出する電子制御装置を提供することを目的とする。
本発明の電子制御装置によると、複数の処理単位のうち処理単位を識別するための識別情報が設けられている少なくとも一つの対象処理単位において、対象処理単位の実行が正常に開始されるときの開始処理で識別情報をスタックに格納し、対象処理単位の終了処理でスタックに格納されている識別情報を取り出す。
その結果、対象処理単位が開始処理からではなく不正なアクセスにより途中から実行されると、開始処理が実行されないために実行中の対象処理単位の識別情報がスタックに格納されない。この場合、対象処理単位の終了処理でスタックから取り出した識別情報と実行中の対象処理単位の識別情報とが一致しない。
したがって、スタックから取り出した識別情報と、実行中の対象処理単位の識別情報とを対象処理単位の終了処理時に比較して一致しない場合、プログラムカウンタの異常により該当する対象処理単位が不正にアクセスされたと判定できる。
尚、本発明に備わる複数の手段の各機能は、構成自体で機能が特定されるハードウェア資源、プログラムにより機能が特定されるハードウェア資源、またはそれらの組合せにより実現される。また、これら複数の手段の各機能は、各々が物理的に互いに独立したハードウェア資源で実現されるものに限定されない。
以下、本発明の実施形態を図に基づいて説明する。
図1に示す電子制御装置(Electronic Control Unit:ECU)10は、例えば車両に搭載されており、CPU20、ROM30、RAM40、図示しない入出力インタフェース等からなるマイクロコンピュータにより主に構成されている。CPU20は、プログラムカウンタ22が示すアドレスの命令を読み出してROM30等に記憶されたプログラムを実行することにより、各種処理を実行する。
図1に示す電子制御装置(Electronic Control Unit:ECU)10は、例えば車両に搭載されており、CPU20、ROM30、RAM40、図示しない入出力インタフェース等からなるマイクロコンピュータにより主に構成されている。CPU20は、プログラムカウンタ22が示すアドレスの命令を読み出してROM30等に記憶されたプログラムを実行することにより、各種処理を実行する。
ROM30の記憶領域は、複数の重要プログラムを記憶している重要プログラム領域32と、複数の通常プログラムを記憶している通常プログラム領域34とに分割されている。RAM40の記憶領域は、重要データを記憶する重要データ領域42と、通常データを記憶する通常データ領域44とに分割されている。
CPU20は、プログラムが他のプログラムにアクセスするとき、両方のプログラムのアドレスをチェックすることにより、重要プログラム領域32から重要プログラム領域32または通常プログラム領域34へのアクセス、ならびに通常プログラム領域34から通常プログラム領域34へのアクセスであれば許可し、通常プログラム領域34から重要プログラム領域32へのアクセスであれば禁止する。
また、プログラムがデータにアクセスするとき、プログラムアドレスとデータアドレスとをチェックすることにより、重要プログラム領域32から重要データ領域42または通常データ領域44へのアクセス、ならびに通常プログラム領域34から通常データ領域44へのアクセスであれば許可し、通常プログラム領域34から重要データ領域42へのアクセスであれば禁止する。
ここで、プログラムが他のプログラムにアクセスするとき、重要プログラム領域32から重要プログラム領域32または通常プログラム領域34へのアクセス、ならびに通常プログラム領域34から通常プログラム領域34へのアクセスは、前述したように領域レベルでは許可されている。
しかし、宇宙線、電磁ノイズ等によりプログラムカウンタの値が異常値に更新されると、プログラムが正常な開始処理からではなく途中から不正なアクセスにより実行されるおそれがある。領域レベルではアクセスが許可されているプログラムであっても、プログラムを正常な開始処理からではなく途中から実行すると、適正な処理を実行できない。
本実施形態では、プログラムを構成する関数を処理単位とし、関数を識別するための識別情報として関数名を採用している。そして、関数名を格納して取り出すための識別情報用スタック(以下、単に「スタック」とも言う。)をRAM40に設けている。
重要プログラムを構成する関数であれば重要データ領域42または通常データ領域44のどちらにスタックを設けてもよく、通常プログラムを構成する関数であれば通常データ領域44にスタックを設ける。尚、関数に代えてタスクを処理単位としてよい。
(アクセスチェック処理)
識別情報を用いたアクセスチェック処理を図2に示す。図2において、「S」はステップを表わしている。
識別情報を用いたアクセスチェック処理を図2に示す。図2において、「S」はステップを表わしている。
CPU20は、関数が正常に呼び出されるときの開始処理で、呼び出された関数の関数名をスタックに格納し(S400)、関数本体の処理を実行する(S402)。図3に示すように、関数A、B、Cには関数A、B、Cを識別するための識別情報として関数名を表わす「A」、「B」、「C」がそれぞれ設定されており、関数が呼び出されると関数名がスタックに格納される。
関数本体の処理を終了すると、スタックから関数名を取り出す(S404)。この場合、スタックに格納されている関数名がなくスタックが空であるかを判定し、スタックが空の場合は関数名を取り出さず、取り出す関数名としてブランクを設定する等の処理を行うことが望ましい。
関数が正常に開始処理から呼び出され、S400の処理が実行されてからS404の処理が実行されれば、スタックから取り出した関数名はS400でスタックに格納した関数名と一致する筈である。
これに対し、図4の関数Bのように関数Cから不正にアクセスされて途中から実行され、S400の開始処理が実行されずにS404でスタックから関数名が取り出されると、関数BのS404でスタックから取り出された関数名は関数Cがスタックに格納した「C」であり、自身の関数名である「B」と一致しない。
そこで、CPU20は、スタックから取り出した関数名が実行中の自関数の関数名と一致するか否かを判定する(S406)。スタックから取り出した関数名が自身の関数名と一致する場合(S406:Yes)、プログラムカウンタは正常であり関数は開始処理から正常に呼び出されたと判断し、CPU20は本処理を終了する。
領域レベルではアクセスが許可されている関数であっても、スタックから取り出した関数名が自身の関数名と一致しない場合(S406:No)、CPU20は、プログラムカウンタが異常になり関数が不正なアクセスにより途中から実行されたと判断する。関数が途中から実行されると関数の処理が適切に実行されないので、CPU20はフェイルセーフ処理として、例えば自ECUをリセットする(S408)。
車両に搭載されるECUの場合には、ガソリンエンジンの場合にはスロットル開度を制限して吸気量を低減したり、ディーゼルエンジンの場合にはインジェクタからの噴射量を低減したり、あるいは変速段を固定にしたりして退避走行を実現するフェイルセーフ処理を実行してもよい。
また、複数の関数のすべてを、識別情報である関数名をスタックに格納してアクセス状態をチェックする対象となる対象処理単位としてもよいし、途中から不正アクセスされると重大な障害を引き起こすので不正アクセスを許可しない重要な関数だけを対象処理単位としてもよい。
識別情報をスタックに格納する重要な関数として、車両に搭載されるECUの場合には、ガソリンエンジンであれば吸気量制御、ディーゼルエンジンであれば噴射量制御、さらに過給制御、ブレーキ油圧制御、パワーステアリング制御等を実行する関数等が考えられる。
このように、すべての関数ではなく重要な関数だけを、識別情報をスタックに格納する対象処理単位とすることにより、識別情報をスタックに格納しない関数について、ROM、RAMの記憶容量および処理負荷を低減できる。
また、重要プログラム領域32から重要プログラム領域32または通常プログラム領域34のように、記憶されている領域レベルでは関数へのアクセスが許可されている場合であっても、プログラムカウンタの異常により正常な開始処理からではなく途中から関数が実行されたことをスタックから取り出した関数名と自関数の関数名とを比較して検出することにより、プログラムカウンタの異常による不正アクセスであることを検出できる。
また、プログラムカウンタが実行中の関数の命令の境界アドレスと一致してから異常値に更新されて他の関数を途中から実行しても、プログラムカウンタの異常による不正アクセスであることを検出できる。
[他の実施形態]
上記実施形態では、関数A、B、Cを識別するための識別情報として関数名である「A」、「B」、「C」をそれぞれ設定した。これに対し、関数名と関係のない数字、あるいは関数の終了アドレスが分かる場合には終了アドレスを識別情報として採用してもよい。
上記実施形態では、関数A、B、Cを識別するための識別情報として関数名である「A」、「B」、「C」をそれぞれ設定した。これに対し、関数名と関係のない数字、あるいは関数の終了アドレスが分かる場合には終了アドレスを識別情報として採用してもよい。
本発明の電子制御装置は、車両に搭載される装置に限らず、処理単位のアクセス状態に基づいてプログラムカウンタの異常による不正アクセスを検出することを目的とするのであれば、どのような用途に使用される電子制御装置に適用してもよい。
このように、本発明は、上記実施形態に限定されるものではなく、その要旨を逸脱しない範囲で種々の実施形態に適用可能である。
10:ECU(電子制御装置、格納手段、取り出し手段、判定手段、フェイルセーフ手段)、22:プログラムカウンタ
Claims (5)
- プログラムカウンタ(22)が示すアドレスの命令を読み出して複数の処理単位をそれぞれ実行する電子制御装置(10)であって、
複数の前記処理単位のうち前記処理単位を識別するための識別情報が設けられている少なくとも一つの対象処理単位において、前記対象処理単位の実行が正常に開始されるときの開始処理で前記識別情報をスタックに格納する格納手段(20、S400)と、
前記対象処理単位の終了処理で前記スタックに格納されている前記識別情報を取り出す取り出し手段(20、S404)と、
前記取り出し手段が前記スタックから取り出した前記識別情報と、実行中の前記対象処理単位の前記識別情報とを前記終了処理時に比較して一致しない場合、前記プログラムカウンタの異常による前記対象処理単位への不正アクセスであると判定する判定手段(20、S406)と、
を備えることを特徴とする電子制御装置。 - 前記対象処理単位として不正なアクセスを許可しない前記処理単位が選択されていることを特徴とする請求項1に記載の電子制御装置。
- 前記プログラムカウンタの異常であると前記判定手段が判定すると、フェイルセーフ処理を実行するフェイルセーフ手段(20、S408)を備えることを特徴とする請求項1または2に記載の電子制御装置。
- 前記フェイルセーフ手段は前記フェイルセーフ処理として自装置をリセットすることを特徴とする請求項3に記載の電子制御装置。
- 前記電子制御装置は車両に搭載される装置であることを特徴とする請求項1から4のいずれか一項に記載の電子制御装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012178170A JP2014035741A (ja) | 2012-08-10 | 2012-08-10 | 電子制御装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012178170A JP2014035741A (ja) | 2012-08-10 | 2012-08-10 | 電子制御装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2014035741A true JP2014035741A (ja) | 2014-02-24 |
Family
ID=50284682
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012178170A Pending JP2014035741A (ja) | 2012-08-10 | 2012-08-10 | 電子制御装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2014035741A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017123119A (ja) * | 2016-01-08 | 2017-07-13 | 株式会社デンソー | 電子制御装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04332055A (ja) * | 1991-05-07 | 1992-11-19 | Matsushita Electric Ind Co Ltd | プログラム暴走検知方法 |
JPH04343148A (ja) * | 1991-05-20 | 1992-11-30 | Ricoh Co Ltd | 組込型マルチタスクオペレーティングシステムの例外処理方法 |
JPH08115235A (ja) * | 1994-10-14 | 1996-05-07 | Honda Motor Co Ltd | 制御装置の異常検出装置およびその方法 |
JP2005092430A (ja) * | 2003-09-16 | 2005-04-07 | Digital Electronics Corp | ウォッチドッグタイマ |
JP2008530626A (ja) * | 2003-06-30 | 2008-08-07 | シーメンス アクチエンゲゼルシヤフト | マイクロコンピュータにおけるプログラムの実行を監視する方法 |
-
2012
- 2012-08-10 JP JP2012178170A patent/JP2014035741A/ja active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04332055A (ja) * | 1991-05-07 | 1992-11-19 | Matsushita Electric Ind Co Ltd | プログラム暴走検知方法 |
JPH04343148A (ja) * | 1991-05-20 | 1992-11-30 | Ricoh Co Ltd | 組込型マルチタスクオペレーティングシステムの例外処理方法 |
JPH08115235A (ja) * | 1994-10-14 | 1996-05-07 | Honda Motor Co Ltd | 制御装置の異常検出装置およびその方法 |
JP2008530626A (ja) * | 2003-06-30 | 2008-08-07 | シーメンス アクチエンゲゼルシヤフト | マイクロコンピュータにおけるプログラムの実行を監視する方法 |
JP2005092430A (ja) * | 2003-09-16 | 2005-04-07 | Digital Electronics Corp | ウォッチドッグタイマ |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017123119A (ja) * | 2016-01-08 | 2017-07-13 | 株式会社デンソー | 電子制御装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4803168B2 (ja) | 車両用情報記憶装置 | |
EP2159706B1 (en) | Operation processing apparatus and operation processing method | |
US8639905B2 (en) | Microcontroller and electronic control unit | |
US9235456B2 (en) | Configuration technique for an electronic control unit with intercommunicating applications | |
JP2015531521A (ja) | リンクされた複数のプログラムブロックの別々の実行を制御するための方法および制御装置 | |
CN102880467B (zh) | Cache一致性协议验证方法以及多核处理器系统 | |
JP7091486B2 (ja) | 電子制御装置、電子制御装置のセキュリティ検証方法 | |
US10824710B2 (en) | Method and device for authenticating application that requests access to memory | |
JP5533789B2 (ja) | 車載電子制御装置 | |
JP2013143095A (ja) | 電子制御装置、メモリ検査方法 | |
KR20150018441A (ko) | 반도체 집적 회로 장치 | |
JP2014035741A (ja) | 電子制御装置 | |
JP2013171467A (ja) | 情報処理装置、車両用電子制御装置、データ読み書き方法 | |
CN108958819B (zh) | 多分区系统的启动方法及多分区系统 | |
JP6771272B2 (ja) | 車載電子制御装置及びスタック使用方法 | |
JP2014035740A (ja) | 電子制御装置 | |
WO2013057825A1 (ja) | 情報処理装置、データ管理方法、データ管理プログラム | |
JP6466269B2 (ja) | 電子制御装置及びスタック領域の使用監視方法 | |
JP6469599B2 (ja) | メモリ管理システム | |
WO2016068981A1 (en) | Systems and methods for restricting write access to non-volatile memory | |
JP6877475B2 (ja) | 電子制御装置及びスタック使用方法 | |
JP4941103B2 (ja) | マルチプロセッサシステム、排他制御方法、車両用電子制御ユニット | |
JP2023009818A (ja) | 車両用電子制御装置及び車両用電子制御装置による制御方法 | |
JP6156117B2 (ja) | マイクロコンピュータ | |
JP5765311B2 (ja) | マイコン |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20141128 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20150723 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20150728 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20151208 |