JP6762281B2 - スタックオーバーフロー検知装置及び車両制御システム - Google Patents

スタックオーバーフロー検知装置及び車両制御システム Download PDF

Info

Publication number
JP6762281B2
JP6762281B2 JP2017158993A JP2017158993A JP6762281B2 JP 6762281 B2 JP6762281 B2 JP 6762281B2 JP 2017158993 A JP2017158993 A JP 2017158993A JP 2017158993 A JP2017158993 A JP 2017158993A JP 6762281 B2 JP6762281 B2 JP 6762281B2
Authority
JP
Japan
Prior art keywords
stack
control unit
fail
safe
area
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.)
Active
Application number
JP2017158993A
Other languages
English (en)
Other versions
JP2019036261A (ja
Inventor
優 大田
優 大田
俊雄 齊藤
俊雄 齊藤
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 Automotive Systems 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 Automotive Systems Ltd filed Critical Hitachi Automotive Systems Ltd
Priority to JP2017158993A priority Critical patent/JP6762281B2/ja
Publication of JP2019036261A publication Critical patent/JP2019036261A/ja
Application granted granted Critical
Publication of JP6762281B2 publication Critical patent/JP6762281B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Combined Controls Of Internal Combustion Engines (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、スタックオーバーフロー検知装置及び車両制御システムに関する。
マイクロコンピュータ上で動作するソフトウェア、特にリアルタイム性が必要となるソフトウェアの制御においては、頻繁に割り込み処理や関数呼び出しが行われる。割り込み処理の実行においては、その時点で実行されていた処理を一時中断して、処理データを一時退避し、割り込み処理の終了後には退避データを利用して割り込み前の処理を再開する。この処理データを一時退避する領域として、マイクロコンピュータに内蔵されるRAMに、スタック領域が設けられる。
スタック領域はRAM内に確保されるため、ソフトウェア実行用のメモリ領域と隣接することとなる。そのため、ソフトウェアの不具合等によりスタック領域に空きがなくなり、退避情報がスタック領域外にあふれるスタックオーバーフローが発生すると、隣接するメモリ領域に格納されているデータが破壊され、ソフトウェアが予期せぬ動作をする可能性がある。
このため、従来スタックオーバーフローを検出する方法が提案されている。例えば、スタック領域の両端部に使用禁止領域を設け、使用禁止領域へのアクセスをトリガにスタックオーバーフローを検出する方法(特許文献1参照)や、スタック領域の端部に定期処理で使用する特定データを格納し、データが使用できなくなることにより、スタックオーバーフローを検出する方法(特許文献2参照)がある。
特開2008−23376号公報 特開2012−128743号公報
上述した例では、オーバーフロー検出後の処理は、データ破壊を行わせないためにリセット、または特定の異常処理となっている。リセットを行う場合は、その時点で一度ソフトウェアの動作を止めることとなる。また、オーバーフロー検出後の異常処理では、既にスタック領域に空きがないため、あまり多くの処理は行えない。
ここで、自動車制御において、走行用の車両機器のソフトウェア制御をリセットする場合、リセットによって車両機器が急停止することを防ぐため、例えば車両機器全体を管理する上位の制御(ここでは「走行制御」と呼ぶ)から、リセット処理を管理する必要がある。しかし、自動運転制御の要求が高まり、走行制御が持つ機能が増加する中で、リセット処理の管理により車両制御の処理的負担が増すことは望ましくない。
また、自動車の走行用装置として異常処理を行う場合は、機能安全の面から乗員や周囲の安全を考慮した処理を行うことが望ましい。しかしスタック領域に空きがない状態、つまり割り込みや関数呼び出しができない状態では、取り得る対処が限られてしまう。
そこで、本発明は、スタックオーバーフローを検出すると共に、オーバーフロー検出時にリセットを伴わず、かつ異常処理の実行に必要なスタック領域を確保することを目的とする。
上記課題を解決するために、本発明は、一例として、データを一次退避するスタックと、前記スタック内の前記データの格納先が示されたスタックポインタを管理する制御部と、を有し、前記スタックは、予め定めたフェールセーフ領域を備え、前記制御部は、前記スタックポインタが前記フェールセーフ領域に入ることが予測された場合、又は前記フェールセーフ領域を指している場合は、車両機器制御部へオーバーフローの予兆を示す信号を出力する。
本発明によれば、スタックオーバーフローを発生ではなく予兆として検出することで、スタックオーバーフローの発生前に異常処理を実施することができる。この時点ではスタックオーバーフローは発生していないため、データ破壊を防ぐために即時リセットを行う必要が無く、また、スタック領域に空きがある状態のため、異常処理の実行に際してスタック領域を使用して、より高度なフェールセーフ処理が実現できる。
走行制御システム構成の一例を示すブロック図である。 スタック領域内にフェールセーフ領域を持つRAM領域の定義例である。 スタックポインタ監視を行う処理の一例である。 本発明によるフェールセーフ処理を開始するまでの動作例である。 本発明の実施例を示すブロック図である。
本発明の一実施形態について説明する。
図1は、実施形態における走行制御システム構成の説明図である。図1において、自動車の走行時に使用される車両機器101は、マイクロコンピュータとマイクロコンピュータ内部で動作するソフトウェアにより構成される車両機器制御部102によって制御されるものであり、車両機器 制御部102は、車両全体の走行処理を管理する走行制御部103からの処理要求に従って動作するものである。車両機器制御部102において動作するソフトウェアは、マイクロコンピュータに内蔵されるROM104、RAM105とレジスタ106を参照する。
RAM105は、ソフトウェア実行中に発生する割り込みや関数呼び出しにおいて、処理実行後の戻り先や実行中のレジスタ情報等の処理データを格納するスタック107を持つ。スタック107について、車両機器制御部102はレジスタ106にスタックの参照アドレス情報を保持するスタックポインタを持ち、このスタックポインタは、スタックポインタ監視(制御部)108によって監視される。
図2は、本実施形態におけるRAM105の説明図である。RAM105は、スタック領域107を持ち、スタック領域107は、通常動作中のスタック領域として使用される通常使用領域201と、フェールセーフ処理のために使用されるフェールセーフ領域202を含む。フェールセーフ領域202は、通常使用領域201と、ソフトウェア実行時の変数値等が格納されるデータ領域203との間に位置する。
図2の通常使用領域201とフェールセーフ領域202は、領域の定義領域が異なるのみで、それぞれが持つ機能自体に差異は無い。それぞれの定義領域については、車両機器制御の設計時に事前に必要量を見積もればよい。そのうち通常使用領域201については、車両機器制御の機能実現に必要なスタックサイズに基づき、フェールセーフ領域202については、車両機器制御のフェールセーフ機能実現に必要なスタックサイズに基づけばよい。
図1のスタックポインタ監視108は、ソフトウェア実行中のスタックへのデータ退避、またはスタックからデータ復帰の際に参照される、スタックポインタを監視する。スタックポインタ監視108は、スタックポインタが示すアドレス値が、スタックの通常使用領域201からフェールセーフ領域202に移行する場合、車両機器制御部102に対してスタックオーバーフローの予兆を示す信号を出力する。逆にスタックポインタがフェールセーフ領域202から通常使用領域201に移行した場合、車両機器制御部102に対してスタックオーバーフローが解除されたことを示す信号を出力する。
図3は、本実施形態におけるスタックポインタ監視を実現する処理フロー例の説明図である。この例によると、スタックポインタ監視108の起動後、処理S301にてレジスタから現在のスタックポインタ値を取得し、処理S302にてスタックポインタに加減算されるアドレス値を取得し、処理S303にて、S301とS302で取得した二値の加減算を行い、更新後のスタックポインタアドレス値を算出する。処理S304にて、更新後のスタックポインタアドレスが指す領域が、前述の通常使用領域201からフェールセーフ領域202に移行すると判定された場合、S305の処理にてオーバーフローの予兆検出信号を車両機器制御部102に対して出力する。それ以外の場合、処理S306にて更新後のスタックポインタアドレスが指す領域が、フェールセーフ領域202から通常使用領域201に移行すると判定されたならば、処理S307にてオーバーフロー解除信号を車両機器制御部102に対して出力する。
次に、上記実施形態におけるオーバーフロー予兆検出の動作について説明する。
車両機器制御部102の起動時、ソフトウェアはROM104に格納されている、設計時に定義された、通常使用領域201とフェールセーフ領域202の境界値アドレスを、スタックポインタ監視108の使用データとして取得した後、走行制御部103からの処理要求に基づき車両機器101の制御を行う。
車両機器制御部102のソフトウェアは、内部で通常動作モードとフェールセーフモードの2つの動作モードを持ち、フェールセーフモードでは、通常動作モードで動作する処理のうち、設計時にフェールセーフ処理で不要と定義された処理は動作しない。車両機器101の制御の過程でスタックを使用する際、スタックポインタ監視108からスタックオーバーフロー予兆検出信号を受信した場合、ソフトウェアの動作モードをフェールセーフモードへと移行し、同時に走行制御部103にフェールセーフ通知信号を送信する。逆に、スタックポインタ監視108からスタックオーバーフロー解除信号を受信した際には、ソフトウェアの動作モードを通常動作モードへと移行し、同時に走行制御部103にフェールセーフ解除通知信号を送信する。
図4はソフトウェアが通常動作モードからフェールセーフモードに移行する際の動作説明図である。例として、通常動作モードのソフトウェアでは周期的な処理A,B,Cが実行されており、処理Cはフェールセーフモードでは動作対象外と定義されているものとする。
ここで、図4(a)においては、通常動作モードで処理Bが動作しており、スタックの通常使用領域には既に空きが無い状態となっている。図4(b)にて処理Aの割込み要求が発生し、処理Bの処理データがスタックに一時退避されると、通常使用領域に空きが無いため、スタックポインタはフェールセーフ領域に移行し、前記スタックポインタ監視108によってスタックオーバーフロー予兆検出信号が車両機器 制御部102に送信される。オーバーフロー予兆検出信号を受けた車両機器 制御部102のソフトウェアは、ソフトウェアの動作モードを通常動作モードからフェールセーフモードに移行し、走行制御部103にフェールセーフ通知を行うフェールセーフ通知処理を行う。図4(c)では、ソフトウェアの動作モードがフェールセーフモードとなっているため、事前に定義したとおりに処理Cは動作せず、以降は周期処理A,Bのみを動作させながら、走行制御部103からのフェールセーフ処理要求を実施する。
上記とは逆に、図4(d)のようにスタックポインタが通常使用領域に移行し、車両機器 制御部102がスタックポインタ監視108からスタックオーバーフロー解除信号を受信した場合、車両機器制御部102のソフトウェアは動作モードを通常動作モードに移行し、走行制御部103にフェールセーフ解除通知信号を送信する。ただし、単純にスタックポインタ監視108からの信号受信時に動作モードを切り替えた場合、通常使用領域とフェールセーフ領域の境界付近で頻繁に動作モードの切り替えが発生する可能性がある。そのため、通常モードへの移行に際しては、スタックポインタが通常使用領域に移行し、かつ通常使用領域に一定以上の空き領域が生じた場合にのみ行うという方法を取っても良い。
上記したように、本実施の形態をとることにより、スタックオーバーフローの発生前に、スタックを使用した異常処理を実施することができる。このため、故障検出時のフェールセーフ処理よりも時間的な猶予が生まれ、通常処理と異常処理を並行に行う等、多くの処理が実施できることになる。
図5は、モーター駆動の車両において自動運転制御を行う走行制御501と、モーター制御を行うインバータ503と、その制御を行うインバータ制御502の構成を含む実施例である。インバータ制御502は、走行制御501からの処理要求に応じて、周期処理によりインバータ503を制御してモーター操作を行うものであり、同時にインバータ503の故障検出や現在のモーター回転数の取得等を行う。走行制御501は、自動運転走行中のフェールセーフの処理として、路肩に寄りつつ減速し、車両停止を行い、ソフト的に問題のあった制御のリセットを行うものである。
インバータ制御502において、スタックオーバーフローの予兆を検出した際、インバータ制御502は走行制御501にフェールセーフ通知を行う。この際、インバータ制御502はスタックのフェールセーフ領域が使用できるため、車両が停止しないようにモーター回転制御や故障検出といった、走行に必須な処理を継続する。通知を受けた走行制御501は、車両を減速するために、インバータ制御502へ減速処理要求を出すが、この時点で処理要求を受ける側のインバータ制御502は、通常動作時とほぼ同様に動作しているため、減速処理を通常通り行うことが出来る。減速処理を継続し、車両が停止したことが確認できた時点で、走行制御501はインバータ制御のリセットにより、オーバーフローの解消を行う。
上記のように、スタックのフェールセーフ領域の使用により、オーバーフロー検出時よりも高度なフェールセーフ処理が実現できる。また、フェールセーフ処理における走行制御501は、インバータ制御502に対しては単純に減速処理要求をするのみでよく、走行制御の処理簡略化も可能である。
上記実施形態において、スタックポインタ監視をスタックポインタ更新の契機で行う方式を述べたが、これに限るものではなく、例えば周期処理による定期監視で行うことも可能であり、その場合は、周期処理の間隔で枯渇しないフェールセーフ領域と周期間隔の定義を行えばよい。実現方法についてもソフトウェアに限るものではなく、処理性能を考慮してハードウェアによる監視を行ってもよい。
上記実施形態は、次のように表現することができる。
すなわち、データを一次退避するスタックと、前記スタック内の前記データの格納先が示されたスタックポインタを管理する制御部と、を有し、前記スタックは、予め定めたフェールセーフ領域を備え、前記制御部は、前記スタックポインタが前記フェールセーフ領域に入ることが予測された場合、又は前記フェールセーフ領域を指している場合は、車両機器制御部へオーバーフローの予兆を示す信号を出力する、スタックオーバーフロー検知装置。
また、前記制御部は、前記スタックポインタが前記フェールセーフ領域外を指している場合、車両機器制御部へオーバーフロー解除を示す信号を出力する、スタックオーバーフロー検知装置。
また、データを一次退避するスタックと、前記スタック内のデータの格納先が示されたスタックポインタを管理する制御部と、車両機器を制御する車両機器制御部と、走行制御を行う走行制御部と、を有し、前記スタックは、予め定めたフェールセーフ領域を備え、前記制御部は、前記スタックポインタが前記フェールセーフ領域に入ることが予測された場合、又は前記フェールセーフ領域を指している場合は、車両機器制御部へオーバーフローの予兆を示す信号を出力し、前記車両機器制御部は、オーバーフローの予兆を示す信号が入力された場合、フェールセーフ通知信号を前記走行制御部へ送信し、前記走行制御部は、前記フェールセーフ通知信号が入力された場合、フェールセーフモードに基づく処理要求信号を前記車両機器制御部へ送信する、車両制御システム。
101:車両機器
102:車両機器制御部
103:走行制御部
104:ROM
105:RAM
106:レジスタ
107:スタック
108:スタックポインタ監視(制御部)
201:スタックの通常使用領域
202:スタックのフェールセーフ領域
203:RAMのデータ領域
501:走行制御
502:インバータ制御
503:インバータ

Claims (3)

  1. データを一次退避するスタックと、
    前記スタック内の前記データの格納先が示されたスタックポインタを管理する制御部と、を有し、
    前記スタックは、予め定めたフェールセーフ領域を備え、
    前記制御部は、前記スタックポインタが前記フェールセーフ領域に入ることが予測された場合、又は前記フェールセーフ領域を指している場合は、車両機器制御部へオーバーフローの予兆を示す信号を出力する、スタックオーバーフロー検知装置。
  2. 請求項1記載のスタックオーバーフロー検知装置であって、
    前記制御部は、前記スタックポインタが前記フェールセーフ領域外を指している場合、車両機器制御部へオーバーフロー解除を示す信号を出力する、スタックオーバーフロー検知装置。
  3. データを一次退避するスタックと、
    前記スタック内のデータの格納先が示されたスタックポインタを管理する制御部と、
    車両機器を制御する車両機器制御部と、
    走行制御を行う走行制御部と、を有し、
    前記スタックは、予め定めたフェールセーフ領域を備え、
    前記制御部は、前記スタックポインタが前記フェールセーフ領域に入ることが予測された場合、又は前記フェールセーフ領域を指している場合は、車両機器制御部へオーバーフローの予兆を示す信号を出力し、
    前記車両機器制御部は、オーバーフローの予兆を示す信号が入力された場合、フェールセーフ通知信号を前記走行制御部へ送信し、
    前記走行制御部は、前記フェールセーフ通知信号が入力された場合、フェールセーフモードに基づく処理要求信号を前記車両機器制御部へ送信する、車両制御システム。
JP2017158993A 2017-08-22 2017-08-22 スタックオーバーフロー検知装置及び車両制御システム Active JP6762281B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017158993A JP6762281B2 (ja) 2017-08-22 2017-08-22 スタックオーバーフロー検知装置及び車両制御システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017158993A JP6762281B2 (ja) 2017-08-22 2017-08-22 スタックオーバーフロー検知装置及び車両制御システム

Publications (2)

Publication Number Publication Date
JP2019036261A JP2019036261A (ja) 2019-03-07
JP6762281B2 true JP6762281B2 (ja) 2020-09-30

Family

ID=65637738

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017158993A Active JP6762281B2 (ja) 2017-08-22 2017-08-22 スタックオーバーフロー検知装置及び車両制御システム

Country Status (1)

Country Link
JP (1) JP6762281B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11208324B2 (en) 2019-02-28 2021-12-28 Sumitomo Electric Hardmetal Corp. Polycrystalline cubic boron nitride and method for manufacturing the same

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04205144A (ja) * 1990-11-29 1992-07-27 Mitsubishi Electric Corp マイクロプロセッサ
JP5079326B2 (ja) * 2004-03-26 2012-11-21 三菱電機株式会社 エレベータ制御装置
US9058419B2 (en) * 2012-03-14 2015-06-16 GM Global Technology Operations LLC System and method for verifying the integrity of a safety-critical vehicle control system

Also Published As

Publication number Publication date
JP2019036261A (ja) 2019-03-07

Similar Documents

Publication Publication Date Title
CN111994094B (zh) 远程遥控接管方法、装置、系统、介质及无人驾驶车辆
JP6220232B2 (ja) 車両の制御装置
US8321065B2 (en) Method for controlling/regulating at least one task
US20200290641A1 (en) Vehicle control device
JP2010285001A (ja) 電子制御システム、機能代行方法
JP6398879B2 (ja) 昇降機の作業状況監視装置および作業状況監視方法
US20220055637A1 (en) Electronic control unit and computer readable medium
JP6762281B2 (ja) スタックオーバーフロー検知装置及び車両制御システム
JP2013143093A (ja) 情報処理装置、情報処理システム
JP6007677B2 (ja) 安全制御システム、及び安全制御システムのプロセッサ
JP7447905B2 (ja) モビリティ制御システム、方法、および、プログラム
WO2021024589A1 (ja) モビリティ制御システム、方法、および、プログラム
JP6230729B2 (ja) エレベータ安全制御装置およびエレベータ安全制御方法
JP5652198B2 (ja) 電子制御装置、起動制御方法
CN116494893A (zh) 基于功能安全机制和中央计算架构的车辆控制方法及装置
JP2020100184A (ja) 電子制御装置、電子制御プログラムおよび電子制御システム
JP4820679B2 (ja) 車両用電子制御装置
JP6527846B2 (ja) エレベータシステム
JP6138308B1 (ja) 車載制御装置及び車載制御装置用rom
JP5961507B2 (ja) 地震発生時の自動運用切り替えシステムおよび方法
JP2018165873A (ja) 車載用制御装置
JP6821086B2 (ja) エレベーター制御装置およびエレベーター制御方法
US20200183733A1 (en) Vehicle control device
JP7504222B2 (ja) 車載用制御システム
WO2024122023A1 (ja) 車両の制御システム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170823

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190712

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190717

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200625

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: 20200811

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200908

R150 Certificate of patent or registration of utility model

Ref document number: 6762281

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250