JP2022045239A - 電子制御装置 - Google Patents

電子制御装置 Download PDF

Info

Publication number
JP2022045239A
JP2022045239A JP2020150821A JP2020150821A JP2022045239A JP 2022045239 A JP2022045239 A JP 2022045239A JP 2020150821 A JP2020150821 A JP 2020150821A JP 2020150821 A JP2020150821 A JP 2020150821A JP 2022045239 A JP2022045239 A JP 2022045239A
Authority
JP
Japan
Prior art keywords
area
stack
control device
failure
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
Application number
JP2020150821A
Other languages
English (en)
Inventor
啓太 小石
Keita Koishi
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.)
Hitachi Astemo Ltd
Original Assignee
Hitachi Astemo Ltd
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 Hitachi Astemo Ltd filed Critical Hitachi Astemo Ltd
Priority to JP2020150821A priority Critical patent/JP2022045239A/ja
Publication of JP2022045239A publication Critical patent/JP2022045239A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】ローカル変数をスタック領域に確保した際に、スタック領域に確保したローカル変数領域の異常を判定し、故障領域を回避することにより、ローカル変数を確実に退避および復帰することができる電子制御装置を提供すること。【解決手段】CPUは、プログラムに従い演算を実行し、演算で使用する演算データを一時的に記憶する複数の演算レジスタを有し、RAMは、割り込み処理または、プログラムによるサブルーチンコールが発生した場合に、演算レジスタを一時的に記憶する少なくとも1つのスタック領域を有し、CPUは、スタック領域の参照先アドレスを記憶するスタックポインタを有し、割り込み処理または、サブルーチンコールが発生した場合に、割り込み処理または、サブルーチンコール内で一時的に使用するローカル変数をスタック領域に確保するため、スタックポインタをローカル変数の分だけ次のアドレスに変更する。【選択図】 図9

Description

本発明は、電子制御装置に関する。
電子制御装置においては、CPU(Central Processing Unit)で演算した結果を格納する記憶装置としてRAM(Random Access Memory)が使用されている。また、RAMの一部は、電子制御装置におけるCPUが処理中の演算データなどを一時的に退避させるスタック領域として使用される。このCPUによる演算データの一時退避は電子制御装置におけるプログラムのサブルーチンや、割り込みによって引き起こされる。その際、スタック領域において退避した演算データが故障した場合には、復帰した先の処理で不整合が生じてしまう。
そこで、このような不整合の防止を目的とする従来技術として、例えば、特許文献1には、演算処理を実行するCPUと、前記演算処理を実行するための実行プログラムの記憶されたROMと、前記演算処理にて算出された算出データを記憶するRAMと、を有する電子制御装置であって、前記CPUには、前記演算処理の実行途中の演算データを記憶する演算レジスタが含まれ、前記RAMには、サブ関数コール若しくは割り込み関数の発生時において、前記演算データを一時的に退避させるスタック領域が含まれ、前記CPUには前記演算レジスタの他に、前記スタック領域の参照アドレスを記憶するスタックポインタが含まれ、前記RAMには前記スタック領域の他に、前記参照アドレスを一時的に記憶する複数のバックアップ領域が含まれており、前記CPUは前記スタックポインタに記憶された前記参照アドレス、および、複数の前記バックアップ領域それぞれに記憶された前記参照アドレスそれぞれを比較することで、前記スタックポインタに記憶された前記参照アドレスの異常判定を行う電子制御装置が開示されている。
また、特許文献2には、メモリ及びCPUを備えた電子制御装置において、前記メモリは、不揮発性メモリのROMと、揮発性メモリのRAMを有し、前記ROMは、演算を実行するプログラムが記憶され、前記CPUは、前記プログラムに従い演算を実行し、前記演算で使用する演算データを一時的に記憶する複数の演算レジスタを有し、前記RAMは、割り込み処理、又は前記プログラムによるサブルーチンコールが発生した場合に前記演算レジスタを一時的に記憶するスタック領域を有し、前記CPUは、前記スタック領域の参照先アドレスを記憶するスタックポインタと、複数のコアと、を有し、該複数のコア毎に前記メモリが接続されてタスクを実行する電子制御装置が開示されている。
特開2017-123119号公報 特開2019-164579号公報
上記特許文献1に記載の従来技術では、スタック領域の退避先である参照アドレスを保存するスタックポインタの異常判定のために、そのスタックポインタに記憶された参照アドレスを複数のバックアップ領域に保存することにより、スタックポインタに記憶された参照アドレス、および複数のバックアップ領域それぞれに記憶された参照アドレスそれぞれを比較することで、スタックポインタに記憶された参照アドレスの異常判定を行っている。
また、上記特許文献2に記載の従来技術では、スタック領域に記憶された演算データとスタック領域に記憶する対象のレジスタを比較する事で、スタック領域に退避する記憶対象領域の異常を、その退避する際に判定し、故障領域を回避することにより、スタック領域に一時退避すべき演算データを確実に退避および復帰を行っている。
しかしながら、上記従来技術には次のような問題点がある。すなわち、スタック領域に一時退避すべき演算データには、記憶する対象のレジスタの他に、プログラムのサブルーチンがコールされた時に、そのサブルーチン内で一時的に使用するローカル変数がある。このローカル変数はサブルーチンがコールされた際にレジスタから保存されるのではなく、そのローカル変数の量だけスタックポインタをずらしてスタック領域に確保している。その後、サブルーチン実行時にローカル変数に退避処理を実行する際に初めてスタック領域に演算データを退避する。スタック領域が故障領域だった場合、サブルーチン内でローカル変数に退避するまで故障の判定が出来ない。
本発明は上記に鑑みてなされたものであり、ローカル変数をスタック領域に確保した際に、スタック領域に確保したローカル変数領域の異常を判定し、故障領域を回避することにより、ローカル変数を確実に退避および復帰することができる電子制御装置を提供することを目的とする。
本願は上記課題を解決する手段を複数含んでいるが、その一例を挙げるならば、不揮発性メモリであるROMおよび揮発性メモリであるRAMとからなるメモリと、CPUとを備えた電子制御装置において、前記ROMには、予め決められた演算を実行するためのプログラムが記憶され、前記CPUは、前記プログラムに従い演算を実行し、前記演算で使用する演算データを一時的に記憶する複数の演算レジスタを有し、前記RAMは、割り込み処理または、前記プログラムによるサブルーチンコールが発生した場合に、前記演算レジスタを一時的に記憶する少なくとも1つのスタック領域を有し、前記CPUは、前記スタック領域の参照先アドレスを記憶するスタックポインタを有し、前記CPUは、少なくとも1つのコアを有し、コア毎に前記メモリが接続され、少なくとも1つのタスクを実行し、前記CPUは、前記割り込み処理または、前記サブルーチンコールが発生した場合に、前記割り込み処理または、前記サブルーチンコール内で一時的に使用するローカル変数を前記スタック領域に確保するため、前記スタックポインタを前記ローカル変数の分だけ次のアドレスに変更するローカル変数領域確保処理を行うものとする。
本発明によれば、ローカル変数をスタック領域に確保した際に、その確保領域に故障を判定できるデータを書込み、その故障判定用データとスタック領域を比較する事で、スタック領域に確保したローカル変数領域の異常を判定し、故障領域を回避することにより、ローカル変数を確実に退避および復帰することができる。
電子制御装置をその制御対象となる火花点火内燃機関とともに抜き出して模式的に示す図である。 電子制御装置であるエンジンコントロールユニットの構成を関連構成とともに抜き出して模式的に示す機能ブロック図である。 マイクロコンピュータの一部の構成を抜き出して詳細を示す図である。 汎用レジスタとスタック領域で行われる退避および復帰に係る処理の様子を模式的に示す図であり、スタック退避処理を示す図である。 汎用レジスタとスタック領域で行われる退避および復帰に係る処理の様子を模式的に示す図であり、スタック復帰処理を示す図である。 汎用レジスタとスタック領域で行われる退避および復帰に係る処理の様子を模式的に示す図であり、ローカル確保処理を示す図である。 汎用レジスタとスタック領域で行われる退避および復帰に係る処理の様子を模式的に示す図であり、ローカル開放処理を示す図である。 エンジンコントロールユニットにおける処理内容を示すフローチャートである。 図8におけるローカル確保処理の処理内容を示すフローチャートである。 図8におけるローカル確保処理の処理内容を示すフローチャートである。
以下、本発明の一実施の形態について図面を参照しつつ説明する。なお、本実施の形態においては、火花点火内燃機関を制御する電子制御装置を例示して説明するが、これに限られず、例えば、ポート噴射式火花点火内燃機関や、筒内噴射とポート噴射の両方を備えたデュアル噴射式火花点火内燃機関においても本願発明を適用することが可能である。
図1は、本実施の形態に係る電子制御装置をその制御対象となる火花点火内燃機関とともに抜き出して模式的に示す図である。
図1において、火花点火内燃機関であるエンジン1には、ピストン2、吸気バルブ3、及び排気バルブ4が備えられている。吸気は、空気流量計(AFM)18を通過して絞り弁17に入り、分岐部であるコレクタ14より吸気管10、吸気バルブ3を介してエンジン1の燃焼室19に供給される。燃料は、燃料噴射弁5を介してエンジン1の燃焼室19に噴射供給され、点火コイル7で生成された電圧により点火プラグ6で点火される。燃焼後の排気ガスは、排気バルブ4を介して排気管11に排出される。排気管11には、排気ガス浄化のための三元触媒12が備えられている。
このように構成された火花点火内燃機関を制御する電子制御装置であるエンジンコントロールユニット(ECU:Engine Control Unit)9には、エンジン1のクランク角度センサ15の信号、AFM18の空気量信号、排気ガス中の空燃比を検出する空燃比センサ13の信号、及びアクセル開度センサ20のアクセル開度等の信号が入力されている。
エンジンコントロールユニット9は、アクセル開度センサ20の信号からエンジンへの要求トルクの算出、アイドル状態の判定等を行ない、エンジン1に必要な吸入空気量を算出し、それに見合った開度信号を絞り弁17に出力する。また燃料噴射弁5へは燃料噴射信号が、点火プラグ6へは点火信号が出力される。
また、エンジン1に取り付けられたノックセンサ8が、エンジン1の異常燃焼時に発生する異音(ノッキング)を検出し、点火信号をフィードバック制御している。
図2は、電子制御装置であるエンジンコントロールユニットの構成を関連構成とともに抜き出して模式的に示す機能ブロック図である。
図2において、エンジンコントロールユニット9は、マイクロコンピュータ210と、例えば、EEPROM(Electrically Erasable Programmable Read-Only Memory)などにより構成される外部不揮発性メモリ209とを有している。
マイクロコンピュータ210は、火花点火内燃機関などに設けられたセンサ類211及びアクチュエータ類212に接続されてエンジンコントロールユニット9内外間の信号送受信を行う入出力インタフェース(I/F)205と、外部の通信バス215を介して複数の外部装置213,214に接続されてエンジンコントロールユニット9の内外間の信号送受信を行う外部通信インタフェース(I/F)206と、一時的情報を記憶する揮発性メモリであるRAM(Random Access Memory)203と、制御プログラム及び各種制御設定を記憶する不揮発性メモリであるROM(Read Only Memory)202と、制御用学習値や故障コードを記憶する内部不揮発性メモリ204と、外部不揮発性メモリ209に接続されてマイクロコンピュータ210の内外間の信号送受信を行う内部通信インタフェース(I/F)207と、それらを統括して制御を司るCPU(Central Processing Unit)201とを有しており、これらの要素がバス208を介して相互通信可能に接続されている。
CPU201は、入出力I/F205を通じてセンサ類211から入力情報を取り込み、ROM202に保存された制御プログラムに従って、各制御および診断等を実行する機能を備えている。演算結果および入力情報はRAM203に一時保管されるとともに、演算結果により、入出力I/F205を通じてアクチュエータ類212の制御に用いられる。CPU201は、少なくとも1つのコアを有し、コア毎にメモリが接続され、少なくとも1つのタスクを実行可能である。
また、CPU201はROM202に保存された診断プログラムに従って、各種制御の診断を行うとともに、診断の結果の故障コードをRAM203と外部EEPROM209に保存する。さらにCPU201はROM202に保存された学習プログラムに従って各種制御の学習値を演算し、その学習値もRAM203と外部EEPROM209に保存する。加えて、CPU201は外部EEPROM209と同様に内部EEPROM204にも故障コードや学習値を保存する。
図3は、マイクロコンピュータの一部の構成を抜き出して詳細を示す図である。
図3に示すように、CPU201は、演算するデータを一時的に保存する汎用レジスタ301と、RAM203領域の一部に割り当てられたスタック領域を示すスタックポインタ302と、現在実行中のプログラムアドレスを指すプログラムカウンタ303を備えている。
RAM203は、車両制御データを保存する車両制御RAM領域304と、スタック領域の故障診断を行った結果、故障と判断されたスタック領域のアドレスを保存する故障アドレス保持領域305と、割り込みまたはサブルーチンコールが発生した場合に汎用レジスタで使用している演算データを一時的に退避するスタック領域306と、割り込みまたはサブルーチンコールが発生した場合にその処理内で使用するローカル変数を初回確保した際のアドレスを保持する初回アドレス保持領域307とを備えている。また、ROM202には、故障判定用データ308が格納されている。
ここで、汎用レジスタとスタック領域との間で行われる退避および復帰に係る処理の概要について説明する。
図4~図7は、汎用レジスタとスタック領域で行われる退避および復帰に係る処理の様子を模式的に示す図であり、図4はスタック退避処理、図5はスタック復帰処理、図6はローカル確保処理、図7はローカル開放処理の様子をそれぞれ示している。
図4では、スタック退避処理において、スタック領域306に故障領域がある場合であって、スタック領域診断処理の実施後の状態を示している。このとき、スタックポインタ302は、故障領域の次の領域を指し、汎用レジスタ301のデータDを退避しており、故障領域を回避している。
図5に示すように、スタック復帰処理においては、スタックポインタ302は、スタック領域306のデータDが退避された領域を指し、汎用レジスタ301にデータDを復帰する。
図6では、ローカル確保処理において、スタック領域306に初回ローカル領域401を確保した時に、その初回ローカル領域401に故障領域が含まれる場合であって、ローカル変数故障領域回避処理の実施後の状態を示している。このとき、スタックポインタ302は、故障領域を含まないローカル領域402を指し、故障領域の次の領域から順番にローカルA,B,Cを確保できており、故障領域を回避している。
図7に示すように、ローカル開放処理においては、初回アドレス保持領域307に保存したアドレスをスタックポインタ302に戻し、ローカル領域402を開放する。
続いて、汎用レジスタとスタック領域との間で行われる退避よび復帰に係る処理の詳細について説明する。
図8は、エンジンコントロールユニットにおける処理内容を示すフローチャートである。
図8に示すように、エンジンコントロールユニット9は、割り込みまたはサブルーチンコールが発生した時、汎用レジスタの演算データをスタック領域に退避させる(ステップS100)。
次に、スタックに退避した演算データ(スタック値)と汎用レジスタに保存されている演算データ(レジスタ値)とを比較して一致するか否かを判定する(ステップS110)。
ステップS110での判定結果がYESの場合、すなわち、一致したと判断された場合には、今回スタック領域に退避したアドレスの記憶領域は正常と判断する(ステップS120)。
また、ステップS110での判定結果がNOの場合、すなわち、不一致であると判断された場合には、ステップS100で退避した汎用レジスタと同じデータをスタック領域の次アドレスの領域へ退避させる(ステップS111)。
続いて、新たにスタック領域に退避した演算データ(スタック値)と、汎用レジスタに保存されている演算データ(レジスタ値)とを比較して一致するか否かを判定する(ステップS112)。
ステップS112での判定結果がYESの場合、すなわち、一致すると判断された場合には、前回領域、すなわちステップS100でスタック領域に退避した領域は故障していると判断し(ステップS113)、故障していると診断した故障領域のアドレスを故障アドレス保持領域305へ格納する(ステップS114)。
また、ステップS112での判定結果がNOの場合、すなわち、不一致であると判断された場合には、不一致が所定の回数(予め定めた回数)以上となったか否かを判定する(ステップS115)。
ステップS115での判定結果がNOの場合には、ステップS111の処理に戻る。また、ステップS115での判定結果がYESの場合、すなわち、不一致が所定回数に達している場合には、スタック領域が正常に機能しないと判断して診断異常を確定し、例えば、エンジンコントロールユニット9が搭載されているエンジン1を原動機とする自動車に搭載されるインジケータであるMIL(Malfunction Indicator Lamp)等の警告するための通知を行う(ステップS116)。続いて、システムを安全に動作させるための初期化処理を行い(ステップS117)、処理を終了する。
また、ステップS120或いはS114の何れかの処理が終了すると、続いて、ローカル確保処理(後述)を実行し(ステップS200)、割り込み時またはサブルーチンコール時の目的処理を実施し(ステップS130)、ローカル開放処理(後述)を実行する(ステップS300)。
ステップS300の処理が終了すると、続いて、スタックポインタの参照アドレスと故障アドレス保持領域305へ格納された故障アドレスとを比較して一致するか否かを判定する(ステップS140)。
ステップS140での判定結果がYESの場合には、スタックポインタを次の領域のアドレスに変更し(ステップS150)、ステップS140での判定結果がNOになるまでステップS140,S150の処理を繰り返す。
また、ステップS140での判定結果がNOの場合、すなわち、不一致と判定された場合には、スタック領域に退避されている演算データを汎用レジスタに復帰させ(ステップS141)、処理を終了する。
図9は、図8におけるローカル確保処理の処理内容を示すフローチャートである。
図9において、図8のステップS200におけるローカル確保処理が開始されると、まず、スタック領域306に初回ローカル領域を確保し(ステップS210)、初回ローカル領域を確保した時のスタックポインタ302の指すアドレスを初回アドレス保持領域307へ格納する(ステップS220)。
続いて、現在確保しているローカル領域の中に、故障アドレス保持領域305で保持している故障アドレスが含まれるか否かを判定し(ステップS230)、判定結果がYESの場合、すなわち、故障アドレスが含まれていると判定した場合には、ローカル領域故障判定Aを「有」とする(ステップS240)。また、ステップS230の判定結果がNOの場合には、ローカル領域故障判定Aを「無」とする(ステップS231)。
ステップS240或いはS231の何れかの処理が終了すると、続いて、故障判定用データ308に格納している故障判定データを、現在確保しているローカル領域に退避する(ステップS250)。
続いて、ローカル変数領域の故障判定データと、故障判定用データ308に格納している故障判定データとを比較して一致するか否かを判定する(ステップS260)。
ステップS260の判定結果がYESの場合には、ローカル領域故障判定Bを「無」とする(ステップS270)。また、ステップS260での判定結果がNOの場合、すなわち、故障アドレスが含まれないと判断した場合には、ローカル領域故障判定Bを「有」とし(ステップS261)、ローカル変数領域の故障アドレスを故障アドレス保持領域305へ格納する(ステップS262)。
ステップS270或いはS262の何れかの処理が終了すると、続いて、ローカル領域故障判定A及びBの両方が「無」であるか否かを判定する(ステップS280)。
ステップS280での判定結果がYESの場合、すなわち、ローカル領域故障判定Aが「無」であり、かつ、ローカル領域故障判定Bが「無」である場合には、今回スタック領域に確保したローカル変数領域は正常であると判断し(ステップS290)、処理を終了する。
また、ステップS280での判定結果がNOの場合、すなわち、ローカル領域故障判定Aとローカル領域故障判定Bの少なくとも一方が「有」である場合には、ステップS230,S260で判断した際の故障アドレスの次のアドレスからローカル領域を確保し直す(ステップS281)。
続いて、不一致が所定の回数(予め定めた回数)以上となったか否かを判定する(ステップS282)。
ステップS282での判定結果がYESの場合には、スタック領域が正常に機能していないと判断して診断異常を確定し(ステップS283)、例えば、エンジンコントロールユニット9が搭載されているエンジン1を原動機とする自動車に搭載されるインジケータであるMIL(Malfunction Indicator Lamp)等の警告するための通知を行う(ステップS283)。続いて、システムを安全に動作させるための初期化処理を行い(ステップS284)、処理を終了する。また、ステップS282の判定結果がNOの場合には、ステップS230の処理に戻り、ステップS281で新たに確保したローカル領域について再評価する。
図10は、図8におけるローカル確保処理の処理内容を示すフローチャートである。
図10において、図8のステップS300におけるローカル開放処理が開始されると、ローカル確保処理(図9のステップS220)で初回アドレス保持領域307へ格納した初回アドレスを、現在のスタックポインタ302に復帰することでローカル領域を解放し(ステップS310)、処理を終了する。
以上のように構成した本実施の形態における効果を説明する。
スタック領域に一時退避すべき演算データには、記憶する対象のレジスタの他に、プログラムのサブルーチンがコールされた時に、そのサブルーチン内で一時的に使用するローカル変数がある。従来技術においては、このローカル変数はサブルーチンがコールされた際にレジスタから保存されるのではなく、そのローカル変数の量だけスタックポインタをずらしてスタック領域に確保している。その後、サブルーチン実行時にローカル変数に退避処理を実行する際に初めてスタック領域に演算データを退避する。したがって、スタック領域が故障領域だった場合、サブルーチン内でローカル変数に退避するまで故障の判定が出来ないという問題があった。
これに対して本実施の形態においては、不揮発性メモリであるROM202および揮発性メモリであるRAM203とからなるメモリと、CPU201とを備えた電子制御装置(エンジンコントロールユニット9)において、ROM202には、予め決められた演算を実行するためのプログラムが記憶され、CPU201は、プログラムに従い演算を実行し、演算で使用する演算データを一時的に記憶する複数の演算レジスタを有し、RAM203は、割り込み処理または、プログラムによるサブルーチンコールが発生した場合に、演算レジスタを一時的に記憶する少なくとも1つのスタック領域を有し、CPU201は、スタック領域の参照先アドレスを記憶するスタックポインタを有し、CPU201は、少なくとも1つのコアを有し、コア毎にメモリが接続され、少なくとも1つのタスクを実行し、CPU201は、割り込み処理または、サブルーチンコールが発生した場合に、割り込み処理または、サブルーチンコール内で一時的に使用するローカル変数をスタック領域に確保するため、スタックポインタをローカル変数の分だけ次のアドレスに変更するローカル変数領域確保処理を行うように構成した。したがって、ローカル変数をスタック領域に確保した際に、その確保領域に故障を判定できるデータを書込み、その故障判定用データとスタック領域を比較する事で、スタック領域に確保したローカル変数領域の異常を判定し、故障領域を回避することにより、ローカル変数を確実に退避および復帰することができる。
<付記>
なお、本発明は上記の実施の形態に限定されるものではなく、その要旨を逸脱しない範囲内の様々な変形例や組み合わせが含まれる。また、本発明は、上記の実施の形態で説明した全ての構成を備えるものに限定されず、その構成の一部を削除したものも含まれる。また、上記の各構成、機能等は、それらの一部又は全部を、例えば集積回路で設計する等により実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。
1…エンジン、2…ピストン、3…吸気バルブ、4…排気バルブ、5…燃料噴射弁、6…点火プラグ、7…点火コイル、8…ノックセンサ、9…エンジンコントロールユニット(ECU)、10…吸気管、11…排気管、12…三元触媒、13…空燃比センサ、14…コレクタ、15…クランク角度センサ、17…弁、18…空気流量計(AFM)、19…燃焼室、20…アクセル開度センサ、204…内部EEPROM、204…内部不揮発性メモリ、205…入出力インタフェース(I/F)、206…外部通信インタフェース(I/F)、207…内部通信インタフェース(I/F)、208…バス、209…外部不揮発性メモリ、210…マイクロコンピュータ、211…センサ類、212…アクチュエータ類、213,214…外部装置、215…通信バス、301…汎用レジスタ、302…スタックポインタ、303…プログラムカウンタ、304…車両制御RAM領域、305…故障アドレス保持領域、306…スタック領域、307…初回アドレス保持領域、308…故障判定用データ、401…初回ローカル領域、402…ローカル領域

Claims (16)

  1. 不揮発性メモリであるROMおよび揮発性メモリであるRAMとからなるメモリと、CPUとを備えた電子制御装置において、
    前記ROMには、予め決められた演算を実行するためのプログラムが記憶され、
    前記CPUは、前記プログラムに従い演算を実行し、前記演算で使用する演算データを一時的に記憶する複数の演算レジスタを有し、
    前記RAMは、割り込み処理または、前記プログラムによるサブルーチンコールが発生した場合に、前記演算レジスタを一時的に記憶する少なくとも1つのスタック領域を有し、
    前記CPUは、前記スタック領域の参照先アドレスを記憶するスタックポインタを有し、
    前記CPUは、少なくとも1つのコアを有し、コア毎に前記メモリが接続され、少なくとも1つのタスクを実行し、
    前記CPUは、前記割り込み処理または、前記サブルーチンコールが発生した場合に、前記割り込み処理または、前記サブルーチンコール内で一時的に使用するローカル変数を前記スタック領域に確保するため、前記スタックポインタを前記ローカル変数の分だけ次のアドレスに変更するローカル変数領域確保処理を行うことを特徴とする電子制御装置。
  2. 請求項1記載の電子制御装置において、
    前記CPUは、前記演算レジスタに保持している前記演算データを前記スタック領域に退避するスタック退避処理と、
    前記スタック領域に退避した前記演算データを前記演算レジスタに復帰するスタック復帰処理とを行うことを特徴とする電子制御装置。
  3. 請求項1記載の電子制御装置において、
    前記タスクは、通常タスクと、所定の優先度により前記通常タスクから独立した高優先度タスクをそれぞれに複数有し、
    前記CPUは、前記タスクが実行される前の初期化状態を有し、
    前記初期化状態における、前記スタック領域の初期化を行うスタック領域初期化処理、および前記スタック領域が正常か異常かを診断するスタック領域初期診断処理を行うことを特徴とする電子制御装置。
  4. 請求項2記載の電子制御装置において、
    前記CPUは、前記割り込み処理または、前記サブルーチンコールが発生した場合に、前記スタック退避処理を実行した後、前記スタック領域に退避されている前記演算データと前記演算レジスタに格納されている前記演算データを比較することで、
    前記スタック領域の異常判定を行うスタック領域異常判定処理を行うことを特徴とする電子制御装置。
  5. 請求項4記載の電子制御装置において、
    前記CPUは、前記スタック領域異常判定処理の結果により、前記スタック領域に退避されている前記演算データと前記演算レジスタに格納されている演算データが違うと判断した場合に、前記スタックポインタが現在記憶している前記参照先アドレスを故障と判断し、前記スタックポインタを次のアドレスに変更し、前記演算レジスタに格納されている演算データを前記スタック退避処理によって前記スタック領域に退避することにより、前記スタック領域の故障領域を回避する故障領域回避処理を行うことを特徴とする電子制御装置。
  6. 請求項5記載の電子制御装置において、
    前記CPUは、前記スタック領域異常判定処理および前記故障領域回避処理を繰り返し実行することにより、前記スタック領域の故障を検知するとともに前記演算データを安全に前記スタック領域に退避することを特徴とする電子制御装置。
  7. 請求項5記載の電子制御装置において、
    前記CPUは、前記スタック領域異常判定処理および前記故障領域回避処理を所定の回数繰り返した場合に、前記スタック領域が全て異常であると診断し、システムの初期化処理を実行する、スタック領域診断確定処理を行うことを特徴とする電子制御装置。
  8. 請求項7記載の電子制御装置において、
    前記RAMは、前記スタック領域診断確定処理により、前記スタック領域が故障と判断された場合、その故障と判断されたスタック領域アドレスを格納する少なくとも1つの故障アドレス保持領域を有し、
    前記CPUは、前記故障と判断された前記スタック領域アドレスを前記故障アドレス保持領域に格納することを特徴とする電子制御装置。
  9. 請求項8記載の電子制御装置において、
    前記CPUは、前記割り込み処理または、前記サブルーチンコールの処理後に、前記スタック復帰処理によって、前記スタック領域に退避した前記演算データを前記演算レジスタに復帰する場合に、前記故障アドレス保持領域に格納されている前記故障と判断された前記スタック領域アドレスと、前記スタックポインタを比較することで、前記故障と判断された前記スタック領域から故障した前記演算データを復帰させないことを特徴とする電子制御装置。
  10. 請求項8記載の電子制御装置において、
    前記CPUは、前記タスクにより定期的に前記RAMが有する前記故障アドレス保持領域が正常に動作するか否かを監視するRAM診断処理を行うことを特徴とする電子制御装置。
  11. 請求項10記載の電子制御装置において、
    前記ROMは、故障を判定するための予め決められた固有である少なくとも1つの故障判定用データを有し、前記CPUは、前記ローカル変数領域確保処理にて前記スタック領域に確保したローカル変数領域に、前記故障判定用データを退避する故障判定用データ退避処理を有し、前記故障判定用データ退避処理を実行した後、前記ROMに有する前記故障判定用データと前記ローカル変数領域に退避した前記故障判定用データを比較することで、前記ローカル変数領域の異常判定を行うローカル変数領域異常判定処理を行うことを特徴とする電子制御装置。
  12. 請求項11記載の電子制御装置において、
    前記CPUは、前記ローカル変数領域異常判定処理を実施するか、前記ローカル変数領域確保処理にて確保したローカル変数領域に、前記故障アドレス保持領域に格納されている故障アドレスが含まれると判断した場合の、少なくともどちらか一方を判断した場合に、前記スタックポインタが現在記憶している前記ローカル変数領域を使用不可と判断し、その判断されたアドレスをベースに前記ローカル変数領域確保処理を実施することにより、前記スタック領域の故障領域を回避するローカル変数故障領域回避処理を行うことを特徴とする電子制御装置。
  13. 請求項12記載の電子制御装置において、
    前記CPUは、前記ローカル変数故障領域回避処理を所定の回数繰り返した場合に、前記ローカル変数領域が全て異常であると診断し、システムの初期化処理を実行する、ローカル変数領域診断確定処理を行うことを特徴とする電子制御装置。
  14. 請求項12記載の電子制御装置において、
    前記RAMは、前記ローカル変数故障領域回避処理が実施された場合、前記割り込み処理または、前記サブルーチンコールが発生した初回に前記ローカル変数領域確保処理を実施した後のアドレスを格納する少なくとも1つの初回アドレス保持領域を有し、前記CPUは、前記ローカル変数故障領域回避処理が実施された場合、初回ローカル変数アドレスを前記初回アドレス保持領域に格納することを特徴とする電子制御装置。
  15. 請求項14記載の電子制御装置において、
    前記CPUは、前記割り込み処理または、前記サブルーチンコールの処理後に、前記初回アドレス保持領域に保持されているアドレスを前記スタックポインタに戻すことを特徴とする電子制御装置。
  16. 請求項14記載の電子制御装置において、
    前記CPUは、前記タスクにより定期的に前記RAMが有する前記初回アドレス保持領域が正常に動作するか否か監視する初回アドレス保持領域処理を行うことを特徴とする電子制御装置。
JP2020150821A 2020-09-08 2020-09-08 電子制御装置 Pending JP2022045239A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2020150821A JP2022045239A (ja) 2020-09-08 2020-09-08 電子制御装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020150821A JP2022045239A (ja) 2020-09-08 2020-09-08 電子制御装置

Publications (1)

Publication Number Publication Date
JP2022045239A true JP2022045239A (ja) 2022-03-18

Family

ID=80682203

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020150821A Pending JP2022045239A (ja) 2020-09-08 2020-09-08 電子制御装置

Country Status (1)

Country Link
JP (1) JP2022045239A (ja)

Similar Documents

Publication Publication Date Title
JP2574892B2 (ja) 自動車における負荷分担制御方法
JP4491967B2 (ja) 自己診断機能を備えた車両用制御装置及び記録媒体
US8311700B2 (en) Control apparatus for vehicle
US20060206241A1 (en) Control unit for vehicle and control system
US7248932B2 (en) Electronic control unit
WO2017078093A1 (ja) 電子制御装置及び電子制御方法
KR100704322B1 (ko) 자동차 내 연산 소자를 모니터링하기 위한 방법 및 장치
JP6306530B2 (ja) 自動車用電子制御装置
JP2006209685A (ja) 故障診断方法及び故障診断装置
JP2022045239A (ja) 電子制御装置
JP2019164579A (ja) 電子制御装置
JP3688224B2 (ja) 自動車用制御ユニット
WO2017002939A1 (ja) 電子制御装置及びスタック使用方法
JP6466269B2 (ja) 電子制御装置及びスタック領域の使用監視方法
JP3346163B2 (ja) 車両用電子制御装置
JP3741872B2 (ja) Ramの診断装置
JP6877475B2 (ja) 電子制御装置及びスタック使用方法
JPH1134766A (ja) 車輌制御用コンピュータの異常処理方法
JP6442326B2 (ja) 車両用制御装置
JP7226064B2 (ja) 電子制御装置
JPS61234401A (ja) 車両用制御装置
JP2634598B2 (ja) 内燃機関の電子制御装置
JP2023009818A (ja) 車両用電子制御装置及び車両用電子制御装置による制御方法
JPH0665866B2 (ja) エンジン負荷検出スイツチの故障診断装置
KR100412694B1 (ko) 산소센서 오체결 체크방법