JP4609381B2 - 異常監視用プログラム、記録媒体及び電子装置 - Google Patents

異常監視用プログラム、記録媒体及び電子装置 Download PDF

Info

Publication number
JP4609381B2
JP4609381B2 JP2006164968A JP2006164968A JP4609381B2 JP 4609381 B2 JP4609381 B2 JP 4609381B2 JP 2006164968 A JP2006164968 A JP 2006164968A JP 2006164968 A JP2006164968 A JP 2006164968A JP 4609381 B2 JP4609381 B2 JP 4609381B2
Authority
JP
Japan
Prior art keywords
task
wake
microcomputer
program
procedure
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
JP2006164968A
Other languages
English (en)
Other versions
JP2007334587A (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.)
Denso Corp
Original Assignee
Denso 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 Denso Corp filed Critical Denso Corp
Priority to JP2006164968A priority Critical patent/JP4609381B2/ja
Priority to EP07011622.3A priority patent/EP1868095B1/en
Priority to US11/812,086 priority patent/US7996732B2/en
Publication of JP2007334587A publication Critical patent/JP2007334587A/ja
Application granted granted Critical
Publication of JP4609381B2 publication Critical patent/JP4609381B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0715Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a system implementing multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0736Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in functional embedded systems, i.e. in a data processing system designed as a combination of hardware and software dedicated to performing a certain function
    • G06F11/0739Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in functional embedded systems, i.e. in a data processing system designed as a combination of hardware and software dedicated to performing a certain function in a data processing system embedded in automotive or aircraft systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、リアルタイムオペレーティングシステム(RTOS)を用いたプログラムの実行異常を監視する技術に関する。
従来より、例えば車両に搭載される電子制御装置では、電波ノイズなどの外乱によるRAMデータ破壊などに起因するプログラム暴走が発生した際に、それを検出して、マイコン(マイクロコンピュータ)を一旦リセットする処置を実施している。
そのうち、一定時間毎に実行されるべき処理が正しく実行されなくなる異常の検出及び処置方法として、ウォッチドックタイマによるマイコンリセットの方法がよく知られている。
これは、マイコンからの信号によって所定時間以内毎にリセットされないとマイコンへリセット信号を出力するウォッチドッグタイマを設けると共に、マイコン側では、上記所定時間よりも短い一定時間毎に実行される特定のルーチンにより、ウォッチドッグタイマをリセットするための上記信号(所謂ウォッチドッグタイマクリア信号であり、以下、WDC信号という)を出力する、という方法である。そして、この方法によれば、上記特定のルーチンが何らかの原因で正常に実行されなくなり、マイコンからWDC信号が出力されない状態が所定時間以上続くと、プログラムの暴走と判断されて、マイコンがウォッチドッグタイマによりリセットされることとなる。
しかし、リアルタイムオペレーティングシステム(以下、RTOSと記す)を用いたプログラムでは、あるタスク内でプログラム暴走が発生し、そのタスクが実行停止状態(例えば無限ループ)になったとしても、それより優先度の高いタスクは、それに割り込む形で正常に実行される場合があるため、単に特定の時間周期タスクによってWDC信号を出力するように構成するだけでは不十分である。尚、時間同期タスクとは、一定時間毎に起床要求されて実行されるタスクのことである。
そこで、RTOSを用いたプログラムの実行異常を監視する方法として、従来より、ある特定の高い優先度の時間同期タスクAによってWDC信号を出力する処理を行うと共に、その時間同期タスクAにより、優先度が一番低い特定の時間同期タスクBが正常に実行されているか否かを監視して、そのタスクBが実行されない状態が一定時間以上続いたならばWDC信号の出力を停止して、ウォッチドッグタイマによるマイコンのリセットが行われるようにする、という方法がある。
こうすることで、優先度がタスクAと同じかそれよりも高いタスク内でプログラム暴走が発生した場合には、タスクA自体が実行されなくなってWDC信号が出力されなくなり、また、優先度がタスクAよりも低いタスク内でプログラム暴走が発生した場合には、タスクBが実行されなくなってタスクAによりWDC信号の出力が停止されることになる。よって、どのタスクでプログラム暴走が発生しても、マイコンのリセットが実施されることとなる。尚、こうした技術は、例えば特許文献1に記載されている。
特開平7−114490号公報
しかしながら、上記従来技術では、RTOSは予め設定されたタスクの優先順位に従ってタスクのスケジューリングを正しく行い、あるタスク内で無限ループに陥った場合はそのタスクの優先度以下のタスクは実行されない、ということを前提にしているため、もしRTOS自体が異常となって、上記タスクA,Bは実行されるがそれ以外のタスクは実行されない、といった状態に陥った場合には、それを検出することができない。
本発明は、こうした問題に鑑みなされたものであり、RTOSに異常が生じて、タスクの起床が要求されてもそのタスクが実行されない、という異常を検出できるようにすることを目的としている。
上記目的を達成するためになされた発明は、マイコンにより実行される複数のタスクと、複数種類の各イベントの発生を検知し、その検知したイベントに対応するタスクの起床を要求する手順を、マイコンに実行させるための起床要求プログラムと、その起床要求プログラムによるタスクの起床要求に対し、予め設定された優先度に基づいて、その起床要求に対応するタスクを起床する手順を、マイコンに実行させるためのRTOSとを有したプログラムが、マイコンにより正常に実行されているか否かを監視するための異常監視用プログラムである。
そして、本発明(請求項1,3)の異常監視用プログラムは、複数のタスクのうちの一部又は全部について、タスクの起床要求から、その起床要求に対応するタスクの実行が開始されるまでの遅延時間を計測すると共に、その計測値が規定の起床タイムアウト値以上になったならば異常と判断する遅延時間監視手順と、その遅延時間監視手順により異常と判断された場合に、マイコンをリセットするための処理を行うリセット用手順とを、そのマイコンに実行させる、という基本的な特徴を有している。
つまり、本発明の異常監視用プログラムでは、起床要求プログラムによりRTOSに対してタスクの起床が要求されてから、そのタスクの実行が開始(起床)されるまでの遅延時間(以下、起床遅延時間ともいう)を計測し、その計測値が起床タイムアウト値以上になったならば、即ち、起床要求から起床タイムアウト時間以上経過しても該当タスクが実行されなければ、異常と判断してマイコンをリセットするための処理が行われるように構成されている。
尚、本明細書においては、便宜上、「RTOSやタスクが・・・する」といったプログラムを主体とした表現も適宜用いるが、その表現は、そのプログラムをマイコンが実行することで実現される機能手段の動作内容(簡単に言えば、そのプログラムの機能の内容)を表している。
このような本発明の異常監視用プログラムによれば、RTOSに異常が生じ、タスクの起床が要求されてもそのタスクが実行されない、という異常を検出できるようになる。
また、タスクの起床トリガが、一定時間毎に発生する時間同期イベントと、時間に非同期に発生する時間非同期イベントとの何れであっても、異常を検出することができる。つまり、遅延時間監視手順の対象のタスク(起床遅延時間を計測する対象のタスクであり、以下、遅延時間監視対象タスクともいう)が、一定時間毎に起床要求される時間同期タスクと、時間とは非同期に起床要求される時間非同期タスクとの何れであっても、異常検出が可能となる。尚、例えば車載電子制御装置に搭載されるマイコンの場合、時間非同期タスクとしては、クランク軸の回転に同期して起床要求されるタスク(いわゆる角度同期タスク)や、人によるスイッチ操作などが行われた時に起床要求されるタスクがある。
更に、本発明の異常監視用プログラムによれば、遅延時間監視対象タスクと同じ優先度かそれよりも高い優先度の他のタスク内でプログラム暴走が発生した場合でも、異常を検出してマイコンをリセットすることができる。その場合でも遅延時間監視対象タスクが実行されなくなるからである
しかも、特に請求項1の異常監視用プログラムは、アイドルタスクよりも優先度が低い監視用タスクと、その監視用タスクの起床を要求し、その監視用タスクが実行されたならば異常と判断してマイコンをリセットするための処理を行う手順を、マイコンに実行させるためのプログラムとを、更に有している。そして、この異常監視用プログラムによれば、アイドルタスクが起床されない異常が発生したことを検知してマイコンをリセットすることができるようになる。尚、アイドルタスクとは、マイコンによって実現される目的の機能に必要などのタスクよりも優先度が低く、且つ、マイコンが起動した後に1回だけ起床要求されて、その後は終了することなく、当該タスクよりも優先度が高い他のタスクに割り込まれながら実行され続けるタスクであり、簡単に言えば、マイコンが目的の機能に必要な処理を行わない時(即ち、暇な時)に実行されるタスクである。
次に、請求項2の異常監視用プログラムでは、請求項1の異常監視用プログラムにおいて、遅延時間監視手順の対象のタスクのうち、一部又は全部は、起床要求されてから実行が終了するまでの間に起床要求されることが可能な多重起床要求可能タスクである。そして、マイコンに遅延時間監視手順を実行させるプログラムは、対象の多重起床要求可能タスクについて、起床要求されたが実行されていない残り回数を計数する計数手順を、マイコンに実行させるためのプログラムを有すると共に、前記計数手順により計数される残り回数が1以上の多重起床要求可能タスクについては、初回の起床要求から最初に実行されるまでは起床遅延時間を計測し、その後、前記残り回数が0となるまでは、実行開始から次の実行開始までの時間を起床遅延時間の代わりに計測する手順を、マイコンに実行させるように構成されている。つまり、多重起床要求可能タスクが多重に起床要求される場合には、起床要求(1回目)→起床要求(2回目)→実行(1回目)→実行(2回目)、というような順になるため、2回目以降の実行の監視については、対応する起床要求からの経過時間ではなく、前回の実行開始時からの経過時間を計測するようにしており、これにより時間計測のための処理プログラムを簡略化することができる。
また、請求項3の異常監視用プログラムは、前述した基本的な特徴に加えて、請求項2に記載の特徴と同じ特徴を有している。よって、請求項2の異常監視用プログラムについて述べた効果と同じ効果が得られる。
次に、請求項4の異常監視用プログラムでは、請求項2,3の異常監視用プログラムにおいて、前記計数手順により計数される残り回数が多重起床の上限回数未満である多重起床要求可能タスクについて起床要求された際に、その起床要求がRTOSによって受け付けられなかったならば、異常と判断してマイコンをリセットするための処理を行う手順を、マイコンに実行させるプログラムを更に有している。そして、この異常監視用プログラムによれば、タスクの起床要求がRTOSによって受け付けられなくなる異常を検出してマイコンをリセットすることができるようになる。
また、請求項5の異常監視用プログラムでは、請求項2,3の異常監視用プログラムにおいて、前記計数手順により計数される残り回数が0である多重起床要求可能タスクについて起床要求された際に、その起床要求がRTOSによって受け付けられなかったならば、異常と判断してマイコンをリセットするための処理を行う手順を、マイコンに実行させるプログラムを更に有している。そして、この異常監視用プログラムによっても、タスクの起床要求がRTOSによって受け付けられなくなる異常を検出してマイコンをリセットすることができるようになる。また、請求項4の異常監視用プログラムよりも簡単な処理内容で済むという点で有利である。
次に、請求項の異常監視用プログラムでは、請求項1〜5の異常監視用プログラムにおいて、無限ループ導入用プログラムを有している。この無限ループ導入用プログラムは、遅延時間監視手順により異常と判断された場合に、割り込みを禁止状態にした上でマイコンによるプログラムの実行状態を無限ループ状態にするための手順を、マイコンに実行させるためのものである。そして、このような異常監視用プログラムによれば、マイコンが異常状態で処理を継続してしまうことを確実に防止することができる。
ところで、マイコンをリセットするための処理としては、請求項に記載の処理が考えられる。
即ち、請求項の異常監視用プログラムでは、請求項1〜5の異常監視用プログラムにおいて、まず、マイコンは、当該マイコンの外部又は内部に設けられたウォッチドッグタイマが当該マイコンにより所定時間以内にリセットされないと該ウォッチドッグタイマによりリセットされるようになっていると共に、その所定時間よりも短い一定時間毎に特定のプログラムを実行することにより、ウォッチドッグタイマをリセットするための処理を行うようになっている。尚、ウォッチドッグタイマがマイコンの外部に設けられる場合、ウォッチドッグタイマをリセットするための処理は、前述したWDC信号を出力する処理となり、また、ウォッチドッグタイマがマイコンの内部に設けられる場合、ウォッチドッグタイマをリセットするための処理は、ウォッチドッグタイマのタイマ値を初期値にする処理となる。
そして、請求項の異常監視用プログラムにおいて、マイコンにリセット用手順を実行させるプログラムは、マイコンをリセットするための処理として、ウォッチドッグタイマをリセットするための処理が行われないようにする処理を、マイコンに実行させるように構成されている。ウォッチドッグタイマをリセットするための処理が行われないようにすれば、そのウォッチドッグタイマによってマイコンがリセットされるからである。
この構成によれば、マイコンのリセットを簡単に実施することができる。
次に、請求項の異常監視用プログラムでは、請求項の異常監視用プログラムにおいて、マイコンに遅延時間監視手順を実行させるプログラム(以下、遅延時間監視プログラムともいう)のうち、起床要求されたタスクの前記遅延時間の計測値を更新していくための部分と、前記遅延時間の計測値が起床タイムアウト値以上になったか否かを判定するための部分との、両方又は一方は、前記特定のプログラム内に設けられている。
この構成によれば、「起床遅延時間の計測と、その計測値の判定との、両方又は一方が行われなくなること」=「ウォッチドッグタイマのリセットが行われなくなること」となるため、遅延時間監視プログラムが正常に実行されなくなって異常なのにマイコンをリセットできない、といったことを防止することができる。つまり、仮に、遅延時間監視プログラムの全てと前記特定のプログラムとが別々のタイミングで実行されるものとした場合、遅延時間監視プログラムが実行されなくなると、異常であるにも拘わらずマイコンをリセットすることができなくなるが、請求項の発明によれば、そのような問題を回避することができる。
次に、請求項の異常監視用プログラムでは、請求項1〜の異常監視用プログラムにおいて、遅延時間監視手順での判定に用いられる起床タイムアウト値は、タスクの優先度毎に異なる値に設定されている。
つまり、タスクの正常な起床遅延時間の許容範囲は、そのタスクの優先度によって異なるため、請求項のように設定すると良い。そして、この異常監視用プログラムによれば、優先度が高いタスクの起床タイムアウト値ほど短く設定することで、異常を極力早く検出することができるようになる。
一方、遅延時間監視対象タスク(遅延時間監視手順の対象のタスク)は、請求項10に記載のように、時間と非同期に発生するイベントに対応した時間非同期タスク(時間とは非同期に起床要求されるタスク)であることが好ましい。
なぜなら、一定時間毎に発生するイベント対応した時間同期タスク(一定時間毎に起床要求されるタスク)については、例えば、そのタスクの実行間隔を計測すると共に、その計測値が規定の実行間隔タイムアウト値以上になったならば異常と判断する実行間隔監視手順と、その実行間隔監視手順により異常と判断された場合にマイコンをリセットするための処理を行う手順とを、マイコンに実行させるプログラムを設けることで、その時間同期タスクが実行されなくなった異常の発生時にマイコンをリセットすることができ、また、タスクの実行間隔を計測する処理は、起床遅延時間を計測する処理と比べると簡単なものになるため、マイコンの処理負荷を抑制することができるからである。
次に、請求項11の異常監視用プログラムでは、請求項1〜10の異常監視用プログラムにおいて、アイドルタスクを除く最低優先度のタスクとして、一定時間毎に起床要求される時間同期タスクが設けられており、その時間同期タスクが、遅延時間監視対象タスクとなっている
そして、請求項11の異常監視用プログラムによれば、アイドルタスクを除く最低優先度の時間非同期タスク内でプログラム暴走が発生しても、その異常を検出することができる。最低優先度の時間非同期タスク内でプログラム暴走が発生すれば、それと同じ最低優先度の時間同期タスクは実行されなくなるため、遅延時間監視手順により異常と判断されるからである。尚、目的の機能を実現するためのプログラムにおける最低優先度のタスクとして、時間同期タスクが無ければ、最低優先度の時間同期タスクを故意に追加して、そのタスクを遅延時間監視手順の対象とすれば良い。
一方、請求項12の異常監視用プログラムでは、請求項1〜10の異常監視用プログラムにおいて、アイドルタスクを除く最低優先度のタスクとして、時間と非同期に発生するイベントに対応した時間非同期タスクがある。そして、その最低優先度の時間非同期タスクの実行時間を計測すると共に、その計測値が規定の実行時間タイムアウト値以上になったならば異常と判断する実行時間監視手順を、マイコンに実行させるプログラムと、その実行時間監視手順により異常と判断された場合にマイコンをリセットするための処理を行う手順を、マイコンに実行させるプログラムとを、更に有している。
この異常監視用プログラムによれば、最低優先度のタスクとして時間同期タスクが無くても(また、故意に設けなくても)、最低優先度の時間非同期タスク内でプログラム暴走が発生した場合に、その異常を検出することができる。
次に、請求項13の異常監視用プログラムでは、請求項1〜12の異常監視用プログラムにおいて、タスクのうち、一定時間毎に起床要求される時間同期タスクの1つ以上について、そのタスクの実行間隔を計測すると共に、その計測値が規定の実行間隔タイムアウト値以上になったならば異常と判断する実行間隔監視手順を、マイコンに実行させるプログラムと、その実行間隔監視手順により異常と判断された場合にマイコンをリセットするための処理を行う手順を、マイコンに実行させるプログラムとを、更に有している。
この異常監視用プログラムによれば、一定時間毎に時間同期タスクの起床を要求するためのプログラムに異常が発生するなどして、時間同期タスクの起床要求そのものがされなくなった異常も検出できるようになる。
次に、請求項14の異常監視用プログラムでは、請求項1〜13の異常監視用プログラムにおいて、まず、マイコンは、当該マイコンの外部又は内部に設けられたウォッチドッグタイマが当該マイコンにより所定時間以内にリセットされないと該ウォッチドッグタイマによりリセットされるようになっていると共に、その所定時間よりも短い一定時間毎に特定のプログラムを実行することにより、ウォッチドッグタイマをリセットするための処理を行うようになっている。そして、請求項14の異常監視用プログラムでは、前記特定のプログラムを一定時間毎に起床させるためのタイマを起動する処理を、マイコンに行わせるためのプログラムが、前記タスクのうち、マイコンが起動した際に最初に起床されるイニシャルタスク内に設けられている。
このような請求項14の異常監視用プログラムによれば、イニシャルタスクを遅延時間監視対象タスクとしなくても、そのイニシャルタスクが正常に実行されない場合に、マイコンをリセットすることができる。イニシャルタスクが正常に実行されなければ、前記特定のプログラムが起床されず、ウォッチドッグタイマをリセットするための処理が行われなくなるため、ウォッチドッグタイマによってマイコンがリセットされることとなるからである。
次に、請求項15の発明は、請求項1〜14の異常監視用プログラムを記録したコンピュータ読み取り可能な記録媒体である。そして、この記録媒体に記録したプログラムをコンピュータに実行させれば、前述した請求項1〜14の各異常監視用プログラムによる効果を得ることができる。
また、請求項16の発明は、請求項1〜14の異常監視用プログラムを実行するマイコンを備えた電子装置である。そして、この電子装置によれば、前述した請求項1〜14の各異常監視用プログラムによる効果を得ることができる。
以下に、本発明が適用された実施形態の電子制御装置(以下、ECUという)について説明する。尚、本実施形態のECUは、マイコンを備えた電子装置に相当すると共に、例えば車両に搭載されてその車両のエンジンを制御するものである。
[第1実施形態]
まず図1に示すように、第1実施形態のECU1は、エンジンを制御するための各種処理を実行するマイコン3と、車載バッテリ5の電圧(バッテリ電圧)を一定の電源電圧(例えば5V)に降圧してマイコン3に供給する電源IC7と、エンジンのクランク軸が所定角度回転する毎にパルス状の信号を出力するクランクセンサ、エンジンの冷却水の温度を検出する水温センサ、及びエンジンの吸入空気量を検出する吸気量センサ等、エンジンの運転状態を検出する様々なセンサ9からの信号を入力して波形整形やA/D変換を行うことにより、それら各信号をマイコン3に取り込ませる入力回路11と、マイコン3からの制御信号に応じて、エンジンを作動させるためのインジェクタやイグナイタ等のアクチュエータ13を駆動する出力回路15とを、備えている。
そして、マイコン3には、プログラムを実行する周知のCPU21と、実行対象のプログラムが予め記憶されたROM23と、CPU21による演算結果等を記憶するためのRAM25と、入力回路11及び出力回路15との間で信号をやり取りするための入出力ポート27とが備えられている。
また、電源IC7には、マイコン3にてプログラムが正常に実行されているか否かを監視するためのウォッチドッグタイマ(以下、WDTと記す)17が備えられている。そして、電源IC7内のWDT17は、マイコン3から電源IC7へ出力されるWDC信号がレベル変化(ハイ→ロー、又は、ロー→ハイ)すると、そのレベル変化エッジによってリセットされるようになっていると共に、もし、予め定められたWDT用のタイムアウト時間(以下、WDタイムアウト時間という)以内にリセットされなければ、マイコン3へ一定時間だけローアクティブのリセット信号を出力して、マイコン3をリセットし再起動を試みるようになっている。
次に図2に、電源IC7のWDT17によるマイコン3の監視手順を示す。
まず、ECU1へのバッテリ電圧の供給が開始されて、電源IC7からマイコン3への電源電圧が立ち上がると、その後、一定の時間が経過した時点で、電源IC7からマイコン3へのリセット信号がローからハイになり、マイコン3のリセットが解除される。これは、電源IC7に備えられた周知のパワーオンリセット機能によるものである。
すると、マイコン3が起動して初期状態からプログラムの実行を開始する。そして、マイコン3は、特定のプログラムを実行することにより、WDタイムアウト時間よりも短い一定時間毎に、WDT17をリセットするための処理として、WDC信号の出力レベルを反転させるWDC信号出力処理を行う。
このため、マイコン3が正常にプログラムを実行している場合には、マイコン3から電源IC7(WDT17)へのWDC信号が、WDタイムアウト時間よりも短い間隔でレベル反転することとなる。
これに対し、マイコン3にてプログラムが正常に実行されなくなり、上記WDC信号出力処理が行われなくなると、マイコン3からのWDC信号がレベル変化しなくなる。
すると、その時点からWDタイムアウト時間が経過した時に、電源IC7(WDT17)からマイコン3へリセット信号が一定時間だけ出力され(即ち、リセット信号が一定時間だけローとなり)、マイコン3は一旦リセットされて再起動することとなる。
尚、本実施形態において、マイコン3が上記WDC信号出力処理を行わなくなる場合としては、そのWDC信号出力処理を行うためのプログラム(本実施形態では、後述する1msタスク)自体が実行されなくなる場合と、異常監視用のプログラムにより異常が検出されてWDC信号出力処理が行われるのが故意に禁止される場合とがある。
次に図3に、マイコン3が実行するプログラム(以下、実行対象プログラムという)の構成を示す。
図3に示すように、マイコン3の実行対象プログラムは、少なくとも、RTOS、複数のタスク、RTOSに対してタスクの起床要求を行うための起床要求プログラム、及び各種割り込み処理のプログラム(図示省略)から構成されている。そして、タスクとしては、イニシャルタスク、時間同期タスク(A,B,C,…)、角度同期タスク(D,E,…)、イベントタスク(F,G,…)、及びアイドルタスクがある。
イニシャルタスクは、マイコン3が起動した際に最初に起床される。そして、そのイニシャルタスクの中には、マイコン3内にて周期タイマ割り込み(一定時間毎のタイマ割り込み)を発生させるためのタイマ29を起動する処理のプログラムが含まれている。つまり、タイマ29はイニシャルタスクが実行されることで起動される。
時間同期タスクは、一定時間毎に起床要求されるタスクである。尚、以下の説明においては、N(Nは整数)ms毎に起床要求される時間同期タスクのことを、Nmsタスクという。
角度同期タスクとイベントタスクは、時間とは非同期に起床要求される時間非同期タスクである。そして、角度同期タスクは、クランク軸の回転に同期して一定のクランク角毎のタイミングで起床要求される。また、イベントタスクは、人による特定のスイッチ操作が行われた時やセンサの異常が検出された時など、時間にもクランク角にも関係のないタイミングで起床要求される。
アイドルタスクは、マイコン3によって実現される制御機能(本実施形態ではエンジンの制御機能)に必要などのタスクよりも優先度が低く、且つ、マイコン3が起動した後に例えばRTOSにより1回だけ起床要求されて、その後は終了することなく、当該タスクよりも優先度が高い他のタスクに割り込まれながら実行され続けるタスクである。つまり、アイドルタスクは、マイコン3がエンジンの制御に必要な処理を行わないアイドル時に実行される。
一方、起床要求プログラムは、時間同期タスクの起床要求を行うための時間同期スケジュール部と、角度同期タスクの起床要求を行うための回転角度検出部と、イベントタスクの起床要求を行うためのイベント検出部とを備えている。
時間同期スケジュール部は、タイマ29によって一定時間毎に発生される周期タイマ割り込み(本実施形態では1ms毎のタイマ割り込み)を受けると、1ms毎の時間同期イベントが発生したとして1msタスクの起床要求を行う(起床を要求する)。
更に、時間同期スケジュール部は、1ms周期のタイミングが2回来たら、2ms毎の時間同期イベントが発生したとして2msタスクの起床要求を行い、1ms周期のタイミングが4回来たら、4ms毎の時間同期イベントが発生したとして4msタスクの起床要求を行う、といった具合に、1ms周期のタイミングを分周して周期が異なる複数の時間同期タスクの起床を要求する。
また、回転角度検出部は、クランクセンサからの信号(回転信号)に基づきクランク角を検出し、一定のクランク角のタイミング毎に、角度同期イベントが発生したとして、その一定のクランク角毎に実行されるべき角度同期タスクの起床要求を行う。
イベント検出部は、時間にもクランク角にも関係のない不定期なイベントの発生を検出して、その検出したイベントに対応するイベントタスクの起床要求を行う。例えば、各種センサからの入力信号をモニタして、正常範囲外であったときにセンサ異常と判定し、ダイアグノシス処理を行うためのイベントタスクの起床要求を行う。
RTOSは、上記のようなタスクの起床要求を受けて、それぞれの起床要求に対応するタスクを、あらかじめ設定されたタスクの優先度(優先順位)に基づきスケジューリングして起床させる。
尚、タスクの優先度とは、図4に例示するように、優先度が低いタスクは、それよりも優先度が高いタスクに割り込まれ、その優先度が高いタスクが終了すると再び優先度が低いタスクの続きの処理が行われる、といったものである。そして、本実施形態において、時間同期タスクのうちでは、1msタスク(時間同期タスクA)が最も高い優先度に設定されている。
一方、本実施形態において、RAM25には、CPU21による演算結果として、プログラムの実行を正しく進めるためのアドレス情報などが記憶される。また、実行対象プログラムは、予め全てROM23に記憶されているが、マイコン3の動作中に適宜RAM25へコピーされ、そのRAM25上で実行される場合もある。このため、例えば電波ノイズなどの外乱によってRAM25内のデータが破壊されると、マイコン3にてプログラムが正常に実行されなくなる。よって、そのような場合には、マイコン3をリセットして再起動する必要がある。
そこで次に、マイコン3にてプログラムが正常に実行されているか否かを監視するために、そのマイコン3が実行する異常監視用プログラムの内容について、図5のフローチャートを用い説明する。
まず、本実施形態の異常監視用プログラムによって実現される機能(異常監視用機能)の概要を説明すると、この機能は、起床要求プログラムによりRTOSに対してタスクの起床が要求されてから、そのタスクの実行が開始(起床)されるまでの起床遅延時間を計測し、その計測値が起床タイムアウト値以上になったならば、異常と判断して、WDC信号の出力(レベル反転)を停止することにより、当該マイコン3がWDT17によりリセットされるようにするものである。
そこで、異常監視用プログラムの処理として、図5(A)〜(C)の処理が行われるようにしている。尚、本実施形態において、遅延時間監視対象タスク(即ち、起床遅延時間を計測して監視する対象のタスク)は、1msタスク以外の時間同期タスク、角度同期タスク、及びイベントタスクの各々である。
まず、図5(A)に示すように、起床要求プログラムでは、あるタスクXに対応するイベントが発生して、そのタスクXの起床要求を行った際に(S110)、そのタスクXに対応する起床要求フラグTAF[X]をオンにする(S120)。尚、[X]は、それが付された情報(ここでは、フラグ)が、タスクXに対応するものであることを示している。そして、起床要求フラグTAF[X]は、タスクXの起床要求が行われたことを示すフラグである。
また、図5(B)に示すように、遅延時間監視対象タスクの各々では、その先頭にて、当該タスクXに対応する起床要求フラグTAF[X]をオフにし(S210)、更に、当該タスクXに対応する起床遅延時間カウンタTDC[X]を0にクリアする(S220)。尚、起床遅延時間カウンタTDC[X]は、タスクXの起床遅延時間を計測するためのカウンタであり、後述する1msタスクによってインクリメント(1カウントアップ)される。
そして、図5(C)に示すように、1msタスクでは、まずS310にて、遅延時間監視対象タスクの番号を示す番号カウンタiを初期値の1にし、次のS315にて、その番号カウンタiの値に該当する遅延時間監視対象タスクの起床要求フラグTAF[i]が、オンであるか否かを判定する。そして、起床要求フラグTAF[i]がオンでなければ(オフならば)、S320に進む。
S320では、番号カウンタiをインクリメントし、続くS325にて、番号カウンタiの値が遅延時間監視対象タスクの総数(以下単に、対象タスク総数という)を越えたか否かを判定する。そして、番号カウンタiの値が対象タスク総数を越えていなければ、上記S315に戻る。
また、上記S315にて、起床要求フラグTAF[i]がオンであると判定した場合には、S330に移行して、現在の番号カウンタiの値に該当する遅延時間監視対象タスクの起床遅延時間カウンタTDC[i]をインクリメントする。
そして、次のS335にて、その起床遅延時間カウンタTDC[i]の値が、起床タイムアウト値以上であるか否かを判定し、起床タイムアウト値以上でなければ、上記S320へ移行する。
これに対し、上記S335にて、起床遅延時間カウンタTDC[i]の値が起床タイムアウト値以上であると判定した場合には、異常と判断して、S340に進む。
そして、S340では、割り込みを禁止状態にし、プログラムの実行状態を無限ループ状態にする。つまり、プログラムの実行先が当該S340のままになるようにする。
一方、上記S325にて、番号カウンタiの値が対象タスク総数を越えたと判定した場合には、S345に移行する。
S345では、WDC信号の出力レベルが同一レベルである継続時間を計測するためのカウンタWICの値が、WDCパルス幅相当値(即ち、WDC信号の出力レベルを反転させてから次に反転させるまでの時間に相当する値)以上であるか否かを判定する。そして、カウンタWICの値がWDCパルス幅相当値以上でなければ、S350に進んで、カウンタWICをインクリメントし、その後、1msタスクにおける他の処理のステップへ進む。
また、上記S345にて、カウンタWICの値がWDCパルス幅相当値以上であると判定した場合には、S355に移行して、そのカウンタWICの値を0にクリア(初期化)し、続くS360にて、WDC信号の出力レベルを反転させる。そして、その後、1msタスクにおける他の処理のステップへ進む。
つまり、1msタスクでは、WDタイムアウト時間よりも短い一定時間毎にWDC信号の出力レベルを反転させるための処理(S345〜S360)を行うと共に、遅延時間監視対象タスクの各々について、起床要求フラグTAFがオンになっている継続時間(即ち、起床遅延時間)を起床遅延時間カウンタTDCにより計測し(S310〜S335)、何れか1つのタスクでも、その時間の計測値が規定の起床タイムアウト値以上になったならば、異常と判断して(S335:YES)、当該1msタスク内でプログラムを無限ループさせ(S340)、これにより、以後はWDC信号のレベル反転が故意に行われないようにしている。
尚、各タスクの起床遅延時間の正常な最大値は、タスクの優先度に依存し、優先度が低いタスクほど長くなるため、起床タイムアウト値は、最低優先度のタスクに合わせて設定しておけば良い。つまり、起床タイムアウト値は、最低優先度のタスクについて考えられる起床遅延時間の正常な最大値よりも若干大きい値に設定しておけば良い。
次に、上記図5の処理の作用について、図6を用い説明する。尚、図6は、あるタスクX内でプログラム暴走(無限ループ)が発生した場合の例である。
図6に示すように、タスクXよりも優先度が低いタスクYの起床要求が行われた際、そのタスクYの起床要求フラグTAF[Y]がオンとなり、1msタスク内で、タスクYの起床遅延時間の計測(即ち、起床遅延時間カウンタTDC[Y]のカウントアップ)が始まる。
ここで、タスクYの実行開始がタスクXによって遅らされた場合でも、起床遅延時間が正常範囲内(即ち、TDC[Y]<起床タイムアウト値)であれば、WDC信号は出力し続けられ、その後、タスクYが実行された時点で起床要求フラグTAF[Y]がオフとなり、その回のタスクYの起床遅延時間の計測は終了する。
これに対し、タスクX内でプログラム暴走(無限ループ)が発生した場合には、タスクYはいつまで経っても実行されなくなり、起床遅延時間カウンタTDC[Y]の値が起床タイムアウト値に達することとなる。すると、WDC信号の出力(レベル反転)が停止して、その後、マイコン3は電源IC7のWDT17によりリセットされる。
尚、こうした動作は、タスクYの優先度がタスクXと同じであっても同様である。
また、図6の例は、タスクXが1msタスクよりも優先度が低い場合の例であるが、1msタスクと同じ優先度か高い優先度のタスク(又は割り込み)の何れかの処理でプログラム暴走が発生した場合は、1msタスク自体が実行できなくなることでWDC信号の出力が止まり、やはり、WDT17によるマイコン3のリセットが発生することとなる。
また特に、RTOSに異常が生じて、ある特定のタスク、又は特定の優先度のタスク全てが実行されないという状態になった場合にも、起床要求に対して該当するタスクが実行されなくなるため、やはり、起床遅延時間カウンタTDCの値が起床タイムアウト値に達して、WDC信号の出力が停止し、WDT17によるマイコン3のリセットが発生することとなる。
以上のような第1実施形態ECU1によれば、RTOSに異常が生じて、タスクの起床が要求されてもそのタスクが実行されない、という異常状態を検出して、マイコン3をリセットすることができる。そして、タスクが、時間同期タスクと時間非同期タスクとの何れであっても、異常検出が可能となる。更に、遅延時間監視対象タスクと同じ優先度かそれよりも高い優先度の他のタスク内でプログラム暴走が発生した場合でも、異常を検出してマイコン3をリセットすることができる。
また、本実施形態では、図5(A)のS120、図5(B)のS210,S220、及び図5(C)のS310〜S335が、遅延時間監視プログラム(マイコンに遅延時間監視手順を実行させるプログラム)に相当しているが、そのうち、起床要求されたタスクの起床遅延時間カウンタTDCの値を更新していくための処理ステップ(S310〜S330)と、起床遅延時間カウンタTDCの値が起床タイムアウト値以上になったか否かを判定するための処理ステップ(S335)とが、WDC信号を出力するためのS360(即ち、WDT17をリセットするための処理ステップ)を含む1msタスク内に設けられているため、「起床遅延時間の計測と、その計測値の判定とが行われなくなること」=「WDT17のリセットが行われなくなること」となる。よって、遅延時間監視プログラムが正常に実行されなくなって異常なのにマイコン3をリセットできない、といったことも防止することができる。
また、本実施形態では、図5(C)のS335で異常と判断された場合に、次のS340により、割り込みを禁止状態にした上でプログラムの実行状態を無限ループ状態にしているため、マイコン3が異常状態で処理を継続してしまうことを確実に防止することができる。
尚、本実施形態では、図5(C)のS340が、マイコンにリセット用手順を実行させるプログラムに相当しており、また、無限ループ導入用プログラムにも相当している。
更に、本実施形態では、1msタスクを周期的に起床させるためのタイマ29を起動する処理を、イニシャルタスク内で行うようにしているため、イニシャルタスクを遅延時間監視対象タスクとしなくても、そのイニシャルタスクが正常に実行されない場合に、マイコン3をリセットすることができる。イニシャルタスクが正常に実行されなければ、1msタスクが起床されず、WDC信号を出力するための処理(S360)が行われなくなるため、WDT17によりマイコン3がリセットされるからである。
一方、S335の判定に用いられる起床タイムアウト値は、タスクの優先度毎に異なる値に設定しても良い。つまり、優先度が高いタスクの起床タイムアウト値ほど短い値(小さい値に)設定しておくことで、異常を極力早く検出できるようになる。
[第2実施形態]
ところで、タスクには、起床要求されてから実行が終了するまでの間に重ねて起床要求されることが可能な多重起床要求可能タスクがある。
そこで、第2実施形態では、そのような多重起床要求可能タスクに関しても異常検出が十分できるように、図5(A)〜(C)の処理に代えて、図7(A)〜(C)の処理が行われるようにプログラムを構成している。尚、図7において、図5と同じ内容の処理については、同一のステップ番号を付しているため説明を省略する。
まず、図7(A)に示すように、起床要求プログラムでは、ある多重起床要求可能タスクXに対応するイベントが発生して、そのタスクXの起床要求をS110で行うと、次のS130にて、RTOSからの戻り値がOKであったか否かを判定し、戻り値がOKならば(S130:YES)、今回行ったタスクXの起床要求がRTOSによって受け付けられたということであるから、S140に進む。そして、そのS140にて、タスクXに対応する起床要求回数カウンタTAC[X]をインクリメントし、その後、当該図7(A)の処理を抜ける。
尚、起床要求回数カウンタTAC[X]は、タスクXの起床要求回数と実行回数との差分の回数であって、タスクXが起床要求されたが未だ実行されていない残り回数(以下、起床残り回数という)を計数するためのカウンタであり、その初期値は0である。
一方、上記S130にて、RTOSからの戻り値がOKではないと判定した場合(具体的には、RTOSが“エラー”を示す戻り値を返した場合)には(S130:NO)、今回行ったタスクXの起床要求がRTOSによって受け付けられなかったということであるから、S150に移行し、起床要求回数カウンタTAC[X]の値が、タスクXについての多重起床上限回数[X]以上であるか否かを判定する。そして、このS150にて、起床要求回数カウンタTAC[X]の値が多重起床上限回数[X]以上であると判定した場合には、そのまま当該図7(A)の処理を抜ける。尚、多重起床上限回数[X]は、タスクXについて、RTOSに予め設定された多重起床要求回数(多重に起床要求できる回数)の上限値である。
また、上記S150にて、起床要求回数カウンタTAC[X]の値が多重起床上限回数[X]以上ではないと判定した場合には、RTOSが異常であると判断して、S160に進む。そして、そのS160にて、前述した図5(C)のS340と同様に、割り込みを禁止状態にし、プログラムの実行状態を無限ループ状態にする。すると、その後、WDタイムアウト時間が経過した時に、WDT17により当該マイコン3がリセットされることとなる。
そして、図7(B)に示すように、遅延時間監視対象タスクである多重起床要求可能タスクの各々では、その先頭にて、当該タスクXに対応する起床要求回数カウンタTAC[X]をデクリメント(1カウントダウン)し(S215)、更に、当該タスクXに対応する起床遅延時間カウンタTDC[X]を0にクリアする(S220)。
一方、図7(C)に示すように、本第2実施形態の1msタスクでは、図5(C)の1msタスクと比較すると、S315の代わりに、S317の処理が行われる点のみ異なっており、そのS317では、番号カウンタiの値に該当するタスクの起床要求回数カウンタTAC[i]の値が0であるか否かを判定する。
そして、そのS317にて、起床要求回数カウンタTAC[i]の値が0であると判定した場合には、前述したS320に進む。また、S317にて、起床要求回数カウンタTAC[i]の値が0ではないと判定した場合には、前述したS330に移行する。
つまり、本第2実施形態では、多重起床要求可能タスクの各々について、起床要求フラグTAFの代わりに、起床要求回数カウンタTACを設け、図8に示すように、その起床要求回数カウンタTACを、起床要求時にインクリメントし(S140)、タスクの実行開始時にデクリメントすることで(S215)、その起床要求回数カウンタTACの値が起床残り回数を示すようにしている。尚、図8においては、少なくともタスクYが多重起床要求可能タスクであり、そのタスクYの優先度は、図6と同様に、1msタスク及びタスクXよりも低く設定されている。
そして、図8に示すように、1msタスクでは、多重起床要求可能タスクの各々について、起床要求回数カウンタTACの値が0でない場合に(S317:NO)、そのタスクの起床遅延時間カウンタTDCをインクリメントするようになっている(S330)。また、その起床遅延時間カウンタTDCの値は、該当するタスクが実行されると、0にクリアされる(S220)。
このような処理により、図8におけるタスクYのように、多重起床要求可能タスクについては、初回の起床要求から最初に実行されるまでは起床遅延時間が、起床遅延時間カウンタTDCの値として計測され、その後、起床要求回数カウンタTACの値(起床残り回数)が0となるまでは、実行開始から次の実行開始までの時間が、起床遅延時間カウンタTDCの値として計測されることとなる。そして、何れにしても、起床遅延時間カウンタTDCの値が起床タイムアウト値以上になったならば、異常と判断されることとなる(S335:YES)。
つまり、多重起床要求可能タスクが多重に起床要求される場合には、起床要求(1回目)→起床要求(2回目)→実行(1回目)→実行(2回目)、というような順になるため、2回目以降の時間計測については、対応する起床要求からの経過時間ではなく、前回の実行開始時からの経過時間を計測するようにしており、これにより時間計測のための処理プログラムを簡略化している。尚、通常、起床要求が累積した場合には、「起床→実行」までの時間よりも「実行→実行」までの時間の方が短くなるため、2回目以降の時間計測時においてS335での起床タイムアウト値を変えなくても、検出性能上特に問題はない。よって、それぞれの回の「起床→実行」までの時間を別々に計測するよりもソフトウェアのロジックを簡単なものにすることができるのである。
そして、このような第2実施形態によれば、RTOSに異常が生じて、多重に起床要求されたタスクがその回数分だけ正常に起床されなくなった、という異常状態を、簡単な処理で且つ確実に検知してマイコン3をリセットすることができる。
また、本第2実施形態では、図7(A)のS130,S150,及びS160の処理を行っているため、起床要求回数カウンタTACの値が多重起床上限回数未満であるタスクについて新たに起床要求された際に、RTOSが戻り値としてOKを返さず、その起床要求がRTOSによって受け付けられなかったならば、異常と判断して無限ループ状態となり、WDC信号の出力を停止することとなる。よって、タスクの起床要求がRTOSによって受け付けられなくなる異常を検出して、マイコン3のリセットを実施することができる。
尚、本第2実施形態では、図7(A)のS140、図7(B)のS215,S220、及び図7(C)のS310〜S335が、遅延時間監視プログラムに相当しているが、そのうち、図7(A)のS140、及び図7(B)のS215が、多重起床要求可能タスクについて起床要求されたが実行されていない残り回数(起床残り回数)を計数する計数手順を、マイコンに実行させるプログラムに相当している。また、図7(A)のS130,S150,及びS160が、請求項に記載の手順を、マイコンに実行させるプログラムに相当している。
一方、言うまでもないが、図7の処理は、遅延時間監視対象タスクが多重起床要求可能タスクでなくても(即ち、多重に起床要求することのできない、又は多重に起床要求されることのないタスクであっても)適用することはできる。
また、変形例として、図7(A)のS150では、起床要求回数カウンタTAC[X]の値が0であるか否かを判定し、0であればRTOSが異常であると判断して、S160へ進むようにしても良い。このように変形すれば、起床要求回数カウンタTACの値が0であるタスクについて新たに起床要求された際に、その起床要求がRTOSによって受け付けられなかったならば、異常と判断して無限ループ状態となり、WDC信号の出力を停止することとなる。
そして、この変形例によっても、タスクの起床要求がRTOSによって受け付けられなくなる異常を検出してマイコン3のリセットを実施することができ、しかも、処理内容を簡単化することができる。例えば、第2実施形態のS150では、判定に用いる多重起床上限回数をタスク毎に切り替える必要があるが、この変形例によれば、多重起床上限回数を意識する必要がなく、そのような切り替えを行わなくて済むからである。尚、この変形例では、図7(A)のS130,S150,及びS160が、請求項に記載の手順を、マイコンに実行させるプログラムに相当することとなる。
[第3実施形態]
ところで、上記各実施形態の異常監視用プログラムでは、あるタスク内でプログラム暴走(無限ループ)が発生したことは、そのタスクと優先度が同じかそれよりも優先度が低い他のタスクの起床遅延時間が起床タイムアウト値以上になることで検知する仕組みになっている。
このため、時間周期タスクのうちの最も優先度が低いタスクよりも更に優先度が低く、且つ、アイドルタスクではない最低優先度のタスクとして、時間非同期タスク(特に、時間にもクランク角にも関係のない不定期なタイミングで起床要求されるイベントタスク)があり、しかも、その最低優先度の時間非同期タスクが1つである場合には、その時間非同期タスクの中でのプログラム暴走は検知されない。その時間非同期タスク内でプログラム暴走が発生しても、他のタスクの起床遅延時間に影響が出ないからである。
また、そのような最低優先度の時間非同期タスクが複数あり、その各タスクが遅延時間監視対象タスクとなっていても、異常を検知できるまでの時間が不定になってしまう。例えば、最低優先度の時間非同期タスクとしてTAとTBとがあり、そのうちのTA内でプログラム暴走が発生したとすると、TBは起床要求されても実行されなくなるため、そのTBが起床要求されれば、やがては異常が検知されるが、TBが起床要求されるタイミングは時間的に不定であるため、TA内でプログラム暴走が発生してから異常が検知されるまでの時間が不定になってしまうのである。
そこで、こうした懸念を簡単に解決するために、第3実施形態では、例えば第2実施形態に対して、図9(A),(B)の処理が追加して行われるようにしている。そして、その図9(A),(B)の処理により、最低優先度の時間非同期タスクの実行時間(実行開始から実行終了までの時間)を計測すると共に、その計測値が規定の実行時間タイムアウト値以上になったならば、異常と判断して、WDC信号の出力を停止することにより、マイコン3がWDT17によりリセットされるようにしている。尚、以下では、実行時間を計測する対象の最低優先度の時間非同期タスクを、実行時間監視対象タスクという。
具体的に説明すると、まず図9(A)に示すように、実行時間監視対象タスクの各々では、その先頭にて、前述したS215,S220の処理(図7(B)参照)を行った後、当該タスクXに対応する実行時間カウンタTEC[X]を0にクリアし(S230)、更に、当該タスクXに対応する実行中フラグTEF[X]をオンにする(S240)。そして、当該タスクXの最後で実行中フラグTEF[X]をオフに戻す(S250)。
尚、実行時間カウンタTEC[X]は、タスクXの実行時間を計測するためのカウンタであり、後述する1msタスクのS430でインクリメントされる。また、実行中フラグTEF[X]は、タスクXが実行中であることを示すフラグである。
そして、1msタスクでは、図7(C)の処理に加え、更に図9(B)の処理を行う。
即ち、図9(B)に示すように、まずS410にて、実行時間監視対象タスクの番号を示す番号カウンタjを初期値の1にし、次のS415にて、その番号カウンタjの値に該当する実行時間監視対象タスクの実行中フラグTEF[j]が、オンであるか否かを判定する。そして、実行中フラグTEF[j]がオンでなければ(オフならば)、S420に進む。
S420では、番号カウンタjをインクリメントし、続くS425にて、番号カウンタjの値が実行時間監視対象タスクの総数を越えたか否かを判定する。そして、番号カウンタjの値が上記総数を越えていれば(S425:YES)、1msタスクにおける他の処理のステップへ進むが、番号カウンタjの値が上記総数を越えていなければ(S425:NO)、上記S415に戻る。
また、上記S415にて、実行中フラグTEF[j]がオンであると判定した場合には、S430に移行して、現在の番号カウンタjの値に該当する実行時間監視対象タスクの実行時間カウンタTEC[j]をインクリメントする。
そして、次のS435にて、その実行時間カウンタTEC[j]の値が、実行時間タイムアウト値以上であるか否かを判定し、実行時間タイムアウト値以上でなければ、上記S420へ移行する。
これに対し、上記S435にて、実行時間カウンタTEC[j]の値が実行時間タイムアウト値以上であると判定した場合には、異常と判断して、S440に進む。
そして、S440では、図7(C)のS340と同様に、割り込みを禁止状態にし、プログラムの実行状態を無限ループ状態にする。すると、以後はWDC信号の出力が行われなくなり、マイコン3はWDT17によってリセットされることとなる。
つまり、1msタスクでは、実行時間監視対象タスクの各々について、実行中フラグTEFがオンになっている継続時間(即ち、実行時間)を実行時間カウンタTECにより計測し(S410〜S435)、何れか1つのタスクでも、その時間の計測値が実行時間タイムアウト値以上になったならば、異常と判断して(S435:YES)、当該1msタスク内でプログラムを無限ループさせ(S440)、これにより、以後はWDC信号のレベル反転が故意に行われないようにしている。
以上のような第3実施形態によれば、最低優先度のタスクとして時間同期タスクが無くても、最低優先度の時間非同期タスク内でプログラム暴走が発生した場合には、その異常を、上記実行時間タイムアウト値に相当する時間が経過した時点で確実に検出することができるようになる。図9(B)のS435で異常と判断されるからである。
尚、本第3実施形態では、図9(A)のS230〜S250と図9(B)のS410〜S435が、実行時間監視手順をマイコンに実行させるプログラムに相当し、図9(B)のS440が、実行時間監視手順により異常と判断された場合にマイコンをリセットするための処理を行う手順を、マイコンに実行させるプログラムに相当している。
一方、上記第3実施形態の別案として、前述した懸念を解決するためには、図9の処理を行う代わりに、以下のようにしても良い。
即ち、アイドルタスクを除く最低優先度のタスクとして、時間同期タスクがなければ、制御には関係のない時間同期タスクを追加し、その追加した時間同期タスクも遅延時間監視対象タスクとなるようにプログラムを構成すれば良い。
このようにすれば、アイドルタスクを除く最低優先度の時間非同期タスク内でプログラム暴走が発生した場合には、それと同じ最低優先度の上記追加した時間同期タスクが実行されなくなるため、図5(C)又は図7(C)のS335により異常と判断されるからである。
尚、エンジンの制御機能を実現するためのプログラムにおける最低優先度のタスクとして、時間同期タスクが元々あれば、その時間同期タスクを遅延時間監視対象タスクにしておけば良い。
[第4実施形態]
次に、第4実施形態では、第2又は第3実施形態と比較すると、下記(1)〜(4)の点が異なっている。
(1)時間同期タスクのうちの1つ以上が、実行間隔監視対象タスクとなっている。
尚、実行間隔監視対象タスクとは、それの実行間隔(実行開始から次の実行開始までの時間)が後述の処理によって計測されるタスクのことである。
(2)図10(A)に示すように、起床要求プログラムでは、実行間隔監視対象タスクXについては、そのタスクXに対応するイベントが発生すると、起床要求だけを行う(S110)。
尚、実行間隔監視対象タスク以外のタスク(即ち、遅延時間監視対象タスク)については、前述した図7(A)の処理が行われる。
(3)図10(B)に示すように、実行間隔監視対象タスクの各々では、その先頭にて、当該タスクXに対応する起床要求回数カウンタTAC[X]の値を1に設定し(S217)、更に、当該タスクXに対応するカウンタTC[X]を0にクリアする(S222)。
尚、実行間隔監視対象タスク以外の遅延時間監視対象タスクでは、前述した図7(B)の処理が行われるが、そのタスクXにおけるS220では、そのタスクXに対応するカウンタTC[X]を0にクリアする。
そして、本第4実施形態において、カウンタTC[X]は、タスクXが実行間隔監視対象タスクであれば、そのタスクの実行間隔を計測するためのカウンタとして用いられ、タスクXが実行間隔監視対象タスクでなければ、そのタスクXの起床遅延時間を計測するためのカウンタとして用いられる。
(4)1msタスクは、図7(C)の処理に代えて、図11の処理が行われるように構成されている。尚、図11において、図7(C)と同じ内容の処理については、同一のステップ番号を付しているため説明を省略する。
図11に示すように、本第4実施形態の1msタスクでは、7(C)と比較すると、S330の代わりにS332の処理が行われ、S335の代わりにS338の処理が行われ、更にS332とS338との間で、S337の処理が行われる点が異なっている。
そして、S332では、現在の番号カウンタiの値に該当するタスクのカウンタTC[i]をインクリメントする。
次にS337では、番号カウンタiの値に該当するタスクが、実行間隔監視対象タスクであるか否かを判別し、実行間隔監視対象タスクであれば、カウンタTC[i]と大小比較するタイムアウト値を、実行間隔のタイムアウト値に設定し、また、番号カウンタiの値に該当するタスクが実行間隔監視対象タスクでなければ、タイムアウト値を、図7(C)のS335で用いられる起床タイムアウト値と同じタイムアウト値(即ち、起床遅延時間のタイムアウト値)に設定する。
尚、本第4実施形態において、図11の番号カウンタiは、実行間隔監視対象タスクと遅延時間監視対象タスクとの各タスクの番号を示している。そして、どの番号のタスクが実行間隔監視対象タスクと遅延時間監視対象タスクとの何れであるかの対応情報が予めROM23に記憶されており、S337では、その対応情報を参照して上記の判別を行う。
次にS338では、カウンタTC[i]の値が、上記S337で設定されたタイムアウト値以上であるか否かを判定する。そして、カウンタTC[i]の値がタイムアウト値以上でなければ、S320に移行するが、カウンタTC[i]の値がタイムアウト値以上であれば、異常と判断してS340に進み、割り込みを禁止状態にした上でプログラムの実行状態を無限ループ状態にする。
以上のような処理により、実行間隔監視対象タスクについては、上記S332により、実行間隔がカウンタTCで計測され、その計測値が実行間隔のタイムアウト値以上になったならば、上記S338により異常と判断されて、マイコン3がWDT17によりリセットされることとなる。また、遅延時間監視対象タスクについては、上記S332により、起床遅延時間がカウンタTCで計測され、その計測値が起床遅延時間のタイムアウト値以上になったならば、上記S338により異常と判断されて、マイコン3がWDT17によりリセットされることとなる。尚、この遅延時間監視対象タスクについての動作は、第2及び第3実施形態と同じである。
そして、このような第4実施形態によれば、RTOSに対して一定時間毎に時間同期タスクの起床を要求するためのプログラム(即ち、起床要求プログラムの時間同期スケジュール部)に関するRAM25内のデータがノイズ等で破壊され、時間同期タスクの起床要求そのものがされなくなった異常状態も検出して、マイコン3をリセットすることができる。
尚、本第4実施形態では、図7(A)のS140、図7(B)のS215,S220、及び図11のS310〜S338が、遅延時間監視プログラムに相当し、図11のS340が、マイコンにリセット用手順を実行させるプログラムに相当している。そして、図10(B)のS217,S222、及び図11のS310〜S338が、実行間隔監視手順をマイコンに実行させるプログラムに相当しており、図11のS340は、実行間隔監視手順により異常と判断された場合にマイコンをリセットするための処理を行う手順を、マイコンに実行させるプログラムにも相当している。
一方、上記第4実施形態において、時間同期タスクのうちの一部を実行間隔監視対象タスクとし、他の時間同期タスクと時間非同期タスクとを遅延時間監視対象タスクとしても良いが、遅延時間監視対象タスクとしては時間非同期タスクだけにし、時間同期タスクの全て又は一部を実行間隔監視対象タスクとすれば、高い異常検出能力と処理負荷の低減化とを両立し易くなる。つまり、タスクの実行間隔を計測する処理と、起床遅延時間を計測する処理とを比較すると、前者の場合、例えば、図10(A)に示したように、起床要求プログラムではタスクの起床要求だけを行えば良く(換言すれば、フラグTAFのオンやカウンタTACのインクリメントといった追加の処理を行わなくても良く)、少なくともその分は後者の場合よりも処理が簡単になるからである。
[第5実施形態]
次に、第5実施形態では、第1〜第4実施形態の何れかに対して、下記(a),(b)の点が追加されている。
(a)まず、タスクとして、アイドルタスクよりも優先度が低い監視用タスクが追加されている。そして、その監視用タスクの中には、図12(B)に示すように、割り込みを禁止状態にして、プログラムの実行状態を無限ループ状態にするステップ(S610)が含まれている。つまり、監視用タスクのS610では、前述したS340と同様に、プログラムの実行先が当該S610のままになるようにする。
(b)次に、図12(A)に示すように、RTOSを構成するプログラムのうち、マイコン3が起動した時に最初に実行される起動処理のプログラムでは、まずS510にて、RAM25の初期化などを行い、その後、S520にて、イニシャルタスクの起床を要求し、S530にて、アイドルタスクの起床を要求する。更に、S540にて、上記監視用タスクの起床を要求し、その後、他の処理を行う。
尚、エンジンの制御機能に必要な他のタスク(即ち、時間同期タスク、角度同期タスク、及びイベントタスクの各々であり、以下、それらを制御用タスクという)については、図12(A)のS510〜S540の処理が終了した後、起床要求プログラムにより適宜起床要求される。
そして、本第5実施形態のECU1におけるマイコン3では、図13(A)に示すように、イニシャルタスクは、上記S520で起床要求が行われると、RTOSのうちのタスクスケジュール用プログラムによって即座に起床される(実行が開始される)。
また、アイドルタスクは、上記S530で起床要求が行われると、イニシャルタスクの実行が終了した時点で、上記タスクスケジュール用プログラムにより起床される。但し、アイドルタスクは、制御用タスクよりも優先度が低いため、制御用タスクに割り込まれながら実行されることとなる。
一方、監視用タスクも、上記S540で起床要求が行われると、基本的には、上記タスクスケジュール用プログラムによりタスクの優先度に基づき起床されるが、その監視用タスクは、アイドルタスクよりも更に優先度が低いため、マイコン3にてプログラムが正常に実行されている限り実際に起床されることはない。
ところが、図13(B)に示すように、例えばRTOSに異常が生じて、アイドルタスクが起床されなければ、イニシャルタスクの実行が終了した時点で監視用タスクが起床されることとなる。すると、その監視用タスクのS610により、プログラムの実行状態が無限ループ状態となり、その結果、マイコン3からWDC信号が出力されなくなる。よって、マイコン3は、WDT17によってリセットされることとなる。
このような本第5実施形態によれば、アイドルタスクが起床されない異常が発生したことを検知してマイコン3をリセットすることができる。
尚、本第5実施形態では、図12(A)のS540と図12(B)のS610とが、請求項に記載の「監視用タスクの起床を要求し、その監視用タスクが実行されたならば異常と判断してマイコンをリセットするための処理を行う手順」を、マイコンに実行させるためのプログラムに相当している。
以上、本発明の一実施形態について説明したが、本発明はこうした実施形態に何等限定されるものではなく、本発明の要旨を逸脱しない範囲において、種々なる態様で実施し得ることは勿論である。
例えば、WDTは、マイコン3内に設けられていても良い。その場合、WDTをリセットするための処理としては、そのWDTのタイマ値を初期値に設定する処理となる。
また、マイコンをリセットするための処理としては、例えば、プログラムの実行先アドレスをイニシャルスタート時の先頭アドレスに変更する処理であっても良い。
実施形態のECUの構成を表す構成図である。 電源ICのWDT(ウォッチドッグタイマ)によるマイコンの監視手順を表すタイムチャートである。 実行対象プログラムの構成を表す構成図である。 タスクの優先度を説明するタイムチャートである。 第1実施形態の異常監視用プログラムの内容を表すフローチャートである。 第1実施形態の作用を表すタイムチャートである。 第2実施形態の異常監視用プログラムの内容を表すフローチャートである。 第2実施形態の作用を表すタイムチャートである。 第3実施形態の異常監視用プログラムの内容を表すフローチャートである。 第4実施形態の異常監視用プログラムの内容を表す第1のフローチャートである。 第4実施形態の異常監視用プログラムの内容を表す第2のフローチャートである。 第5実施形態の異常監視用プログラムの内容を表すフローチャートである。 第5実施形態の作用を表すタイムチャートである。
符号の説明
1…ECU、3…マイコン、5…車載バッテリ、7…電源IC、9…センサ、11…入力回路、13…アクチュエータ、15…出力回路、17…ウォッチドッグタイマ(WDT)、21…CPU、23…ROM、25…RAM、27…入出力ポート、29…タイマ

Claims (16)

  1. マイコンにより実行される複数のタスクと、
    複数種類の各イベントの発生を検知し、その検知したイベントに対応するタスクの起床を要求する手順を、前記マイコンに実行させるための起床要求プログラムと、
    前記タスクの起床要求に対し、予め設定された優先度に基づいて、その起床要求に対応するタスクを起床する手順を、前記マイコンに実行させるためのリアルタイムオペレーティングシステムと、
    を有したプログラムが、前記マイコンにより正常に実行されているか否かを監視するための異常監視用プログラムであって、
    前記複数のタスクのうちの一部又は全部について、タスクの起床要求から、その起床要求に対応するタスクの実行が開始されるまでの遅延時間を計測すると共に、その計測値が規定の起床タイムアウト値以上になったならば異常と判断する遅延時間監視手順と、
    前記遅延時間監視手順により異常と判断された場合に、前記マイコンをリセットするための処理を行うリセット用手順とを、
    前記マイコンに実行させ
    更に、アイドルタスクよりも優先度が低い監視用タスクと、
    前記監視用タスクの起床を要求し、その監視用タスクが実行されたならば異常と判断して前記マイコンをリセットするための処理を行う手順を、前記マイコンに実行させるためのプログラムと、
    を有していることを特徴とする異常監視用プログラム。
  2. 請求項1に記載の異常監視用プログラムにおいて、
    前記遅延時間監視手順の対象のタスクのうち、一部又は全部は、起床要求されてから実行が終了するまでの間に起床要求されることが可能な多重起床要求可能タスクであり、
    前記マイコンに前記遅延時間監視手順を実行させるプログラムは、
    前記対象の多重起床要求可能タスクについて、起床要求されたが実行されていない残り回数を計数する計数手順を、前記マイコンに実行させるためのプログラムを有すると共に、
    前記計数手順により計数される残り回数が1以上の多重起床要求可能タスクについては、初回の起床要求から最初に実行されるまでは前記遅延時間を計測し、その後、前記残り回数が0となるまでは、実行開始から次の実行開始までの時間を前記遅延時間の代わりに計測する手順を、前記マイコンに実行させるように構成されていること、
    を特徴とする異常監視用プログラム。
  3. マイコンにより実行される複数のタスクと、
    複数種類の各イベントの発生を検知し、その検知したイベントに対応するタスクの起床を要求する手順を、前記マイコンに実行させるための起床要求プログラムと、
    前記タスクの起床要求に対し、予め設定された優先度に基づいて、その起床要求に対応するタスクを起床する手順を、前記マイコンに実行させるためのリアルタイムオペレーティングシステムと、
    を有したプログラムが、前記マイコンにより正常に実行されているか否かを監視するための異常監視用プログラムであって、
    前記複数のタスクのうちの一部又は全部について、タスクの起床要求から、その起床要求に対応するタスクの実行が開始されるまでの遅延時間を計測すると共に、その計測値が規定の起床タイムアウト値以上になったならば異常と判断する遅延時間監視手順と、
    前記遅延時間監視手順により異常と判断された場合に、前記マイコンをリセットするための処理を行うリセット用手順とを、
    前記マイコンに実行させ、
    更に、前記遅延時間監視手順の対象のタスクのうち、一部又は全部は、起床要求されてから実行が終了するまでの間に起床要求されることが可能な多重起床要求可能タスクであり、
    前記マイコンに前記遅延時間監視手順を実行させるプログラムは、
    前記対象の多重起床要求可能タスクについて、起床要求されたが実行されていない残り回数を計数する計数手順を、前記マイコンに実行させるためのプログラムを有すると共に、
    前記計数手順により計数される残り回数が1以上の多重起床要求可能タスクについては、初回の起床要求から最初に実行されるまでは前記遅延時間を計測し、その後、前記残り回数が0となるまでは、実行開始から次の実行開始までの時間を前記遅延時間の代わりに計測する手順を、前記マイコンに実行させるように構成されていること、
    を特徴とする異常監視用プログラム。
  4. 請求項2又は請求項3に記載の異常監視用プログラムにおいて、
    前記計数手順により計数される残り回数が多重起床の上限回数未満である多重起床要求可能タスクについて起床要求された際に、その起床要求が前記リアルタイムオペレーティングシステムによって受け付けられなかったならば、異常と判断して前記マイコンをリセットするための処理を行う手順を、前記マイコンに実行させるプログラムを更に有していること、
    を特徴とする異常監視用プログラム。
  5. 請求項2又は請求項3に記載の異常監視用プログラムにおいて、
    前記計数手順により計数される残り回数が0である多重起床要求可能タスクについて起床要求された際に、その起床要求が前記リアルタイムオペレーティングシステムによって受け付けられなかったならば、異常と判断して前記マイコンをリセットするための処理を行う手順を、前記マイコンに実行させるプログラムを更に有していること、
    を特徴とする異常監視用プログラム。
  6. 請求項1ないし請求項5の何れか1項に記載の異常監視用プログラムにおいて、
    前記遅延時間監視手順により異常と判断された場合に、割り込みを禁止状態にした上で前記マイコンによるプログラムの実行状態を無限ループ状態にするための手順を、前記マイコンに実行させるための無限ループ導入用プログラムを有していること、
    を特徴とする異常監視用プログラム。
  7. 請求項1ないし請求項の何れか1項に記載の異常監視用プログラムにおいて、
    前記マイコンは、当該マイコンの外部又は内部に設けられたウォッチドッグタイマが当該マイコンにより所定時間以内にリセットされないと該ウォッチドッグタイマによりリセットされるようになっていると共に、前記所定時間よりも短い一定時間毎に特定のプログラムを実行することにより、前記ウォッチドッグタイマをリセットするための処理を行うようになっており、
    前記マイコンに前記リセット用手順を実行させるプログラムは、前記マイコンをリセットするための処理として、前記ウォッチドッグタイマをリセットするための処理が行われないようにする処理を、前記マイコンに実行させるように構成されていること、
    を特徴とする異常監視用プログラム。
  8. 請求項に記載の異常監視用プログラムにおいて、
    前記マイコンに前記遅延時間監視手順を実行させるプログラムのうち、起床要求されたタスクの前記遅延時間の計測値を更新していくための部分と、前記遅延時間の計測値が前記起床タイムアウト値以上になったか否かを判定するための部分との、両方又は一方は、前記特定のプログラム内に設けられていること、
    を特徴とする異常監視用プログラム。
  9. 請求項1ないし請求項8の何れか1項に記載の異常監視用プログラムにおいて、
    前記起床タイムアウト値は、タスクの優先度毎に異なる値に設定されていること、
    を特徴とする異常監視用プログラム。
  10. 請求項1ないし請求項9の何れか1項に記載の異常監視用プログラムにおいて、
    前記遅延時間監視手順の対象のタスクは、時間と非同期に発生するイベントに対応した時間非同期タスクであること、
    を特徴とする異常監視用プログラム。
  11. 請求項1ないし請求項10の何れか1項に記載の異常監視用プログラムにおいて、
    アイドルタスクを除く最低優先度のタスクとして、一定時間毎に起床要求される時間同期タスクが設けられており、その時間同期タスクが、前記遅延時間監視手順の対象のタスクとなっていること、
    を特徴とする異常監視用プログラム。
  12. 請求項1ないし請求項10の何れか1項に記載の異常監視用プログラムにおいて、
    アイドルタスクを除く最低優先度のタスクとして、時間と非同期に発生するイベントに対応した時間非同期タスクがあり、
    その最低優先度の時間非同期タスクの実行時間を計測すると共に、その計測値が規定の実行時間タイムアウト値以上になったならば異常と判断する実行時間監視手順を、前記マイコンに実行させるプログラムと、
    前記実行時間監視手順により異常と判断された場合に、前記マイコンをリセットするための処理を行う手順を、前記マイコンに実行させるプログラムと、
    を更に有していることを特徴とする異常監視用プログラム。
  13. 請求項1ないし請求項12の何れか1項に記載の異常監視用プログラムにおいて、
    前記タスクのうち、一定時間毎に起床要求される時間同期タスクの1つ以上について、そのタスクの実行間隔を計測すると共に、その計測値が規定の実行間隔タイムアウト値以上になったならば異常と判断する実行間隔監視手順を、前記マイコンに実行させるプログラムと、
    前記実行間隔監視手順により異常と判断された場合に、前記マイコンをリセットするための処理を行う手順を、前記マイコンに実行させるプログラムと、
    を更に有していることを特徴とする異常監視用プログラム。
  14. 請求項1ないし請求項13の何れか1項に記載の異常監視用プログラムにおいて、
    前記マイコンは、当該マイコンの外部又は内部に設けられたウォッチドッグタイマが当該マイコンにより所定時間以内にリセットされないと該ウォッチドッグタイマによりリセットされるようになっていると共に、前記所定時間よりも短い一定時間毎に特定のプログラムを実行することにより、前記ウォッチドッグタイマをリセットするための処理を行うようになっており、
    前記特定のプログラムを前記一定時間毎に起床させるためのタイマを起動する処理を、前記マイコンに行わせるためのプログラムが、前記タスクのうち、前記マイコンが起動した際に最初に起床されるイニシャルタスク内に設けられていること、
    を特徴とする異常監視用プログラム。
  15. 請求項1ないし請求項14の何れか1項に記載の異常監視用プログラムを記録したコンピュータ読み取り可能な記録媒体。
  16. 請求項1ないし請求項14の何れか1項に記載の異常監視用プログラムを実行するマイコンを備えた電子装置。
JP2006164968A 2006-06-14 2006-06-14 異常監視用プログラム、記録媒体及び電子装置 Active JP4609381B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2006164968A JP4609381B2 (ja) 2006-06-14 2006-06-14 異常監視用プログラム、記録媒体及び電子装置
EP07011622.3A EP1868095B1 (en) 2006-06-14 2007-06-13 Program-execution monitoring method, system, and program
US11/812,086 US7996732B2 (en) 2006-06-14 2007-06-14 Program-execution monitoring method, system, and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006164968A JP4609381B2 (ja) 2006-06-14 2006-06-14 異常監視用プログラム、記録媒体及び電子装置

Publications (2)

Publication Number Publication Date
JP2007334587A JP2007334587A (ja) 2007-12-27
JP4609381B2 true JP4609381B2 (ja) 2011-01-12

Family

ID=38510374

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006164968A Active JP4609381B2 (ja) 2006-06-14 2006-06-14 異常監視用プログラム、記録媒体及び電子装置

Country Status (3)

Country Link
US (1) US7996732B2 (ja)
EP (1) EP1868095B1 (ja)
JP (1) JP4609381B2 (ja)

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7603504B2 (en) * 2007-12-18 2009-10-13 Intel Corporation Reducing core wake-up latency in a computer system
JP4624448B2 (ja) * 2008-07-30 2011-02-02 株式会社オートネットワーク技術研究所 制御装置、制御システム及びコンピュータプログラム
US8346958B2 (en) * 2008-12-04 2013-01-01 International Business Machines Corporation Rate control technique for a lightweight directory access protocol over MQSeries (LoM) server
JP2010277303A (ja) * 2009-05-28 2010-12-09 Renesas Electronics Corp 半導体装置及び異常検出方法
DE102010029839B4 (de) * 2009-06-11 2014-08-28 Mitsubishi Electric Corporation Steuersystem
JP5120664B2 (ja) 2009-07-06 2013-01-16 日本電気株式会社 サーバシステム及びクラッシュダンプ採取方法
JP2011028559A (ja) * 2009-07-27 2011-02-10 Denso Corp 中継プログラムおよび電子制御装置
US8375258B1 (en) 2009-08-26 2013-02-12 Cypress Semiconductor Corporation Watchdog timer with mode dependent time out
KR101671956B1 (ko) * 2010-06-04 2016-11-04 삼성전자주식회사 시스템 리세트 회로 및 방법
JP5218585B2 (ja) * 2011-03-15 2013-06-26 オムロン株式会社 制御装置およびシステムプログラム
JP5743932B2 (ja) 2012-03-16 2015-07-01 株式会社デンソー Ecuの異常監視回路
JP5984626B2 (ja) * 2012-10-31 2016-09-06 株式会社ケーヒン 車両用車両電子制御装置
KR102023164B1 (ko) * 2013-01-15 2019-09-19 콘티넨탈 오토모티브 시스템 주식회사 알티오에스 마이컴의 오에스 태스크의 모니터링 방법
US9824130B1 (en) * 2013-12-13 2017-11-21 Open Text Corporation Optimizing synchronization of enterprise content management systems
JP5962697B2 (ja) * 2014-03-26 2016-08-03 株式会社デンソー 電子制御装置
US9830289B2 (en) 2014-09-16 2017-11-28 Apple Inc. Methods and apparatus for aggregating packet transfer over a virtual bus interface
US9798377B2 (en) 2014-10-08 2017-10-24 Apple Inc. Methods and apparatus for recovering errors with an inter-processor communication link between independently operable processors
KR101603547B1 (ko) * 2014-11-06 2016-03-15 현대자동차주식회사 차량제어기 캘리브레이션 메모리 제어 방법 및 장치
JP6413778B2 (ja) * 2015-01-16 2018-10-31 株式会社リコー 機器、情報処理システム、情報処理方法、及びプログラム
US10834065B1 (en) 2015-03-31 2020-11-10 F5 Networks, Inc. Methods for SSL protected NTLM re-authentication and devices thereof
US10042794B2 (en) 2015-06-12 2018-08-07 Apple Inc. Methods and apparatus for synchronizing uplink and downlink transactions on an inter-device communication link
US10169137B2 (en) * 2015-11-18 2019-01-01 International Business Machines Corporation Dynamically detecting and interrupting excessive execution time
US10404698B1 (en) 2016-01-15 2019-09-03 F5 Networks, Inc. Methods for adaptive organization of web application access points in webtops and devices thereof
US10085214B2 (en) 2016-01-27 2018-09-25 Apple Inc. Apparatus and methods for wake-limiting with an inter-device communication link
US9946600B2 (en) * 2016-02-03 2018-04-17 Mitac Computing Technology Corporation Method of detecting power reset of a server, a baseboard management controller, and a server
US10191852B2 (en) 2016-02-29 2019-01-29 Apple Inc. Methods and apparatus for locking at least a portion of a shared memory resource
US10191859B2 (en) 2016-03-31 2019-01-29 Apple Inc. Memory access protection apparatus and methods for memory mapped access between independently operable processors
US10591976B2 (en) 2016-11-10 2020-03-17 Apple Inc. Methods and apparatus for providing peripheral sub-system stability
US10775871B2 (en) 2016-11-10 2020-09-15 Apple Inc. Methods and apparatus for providing individualized power control for peripheral sub-systems
JP2019007369A (ja) * 2017-06-21 2019-01-17 株式会社デンソー 車載電子制御装置
US10346226B2 (en) 2017-08-07 2019-07-09 Time Warner Cable Enterprises Llc Methods and apparatus for transmitting time sensitive data over a tunneled bus interface
US10331612B1 (en) 2018-01-09 2019-06-25 Apple Inc. Methods and apparatus for reduced-latency data transmission with an inter-processor communication link between independently operable processors
US11792307B2 (en) 2018-03-28 2023-10-17 Apple Inc. Methods and apparatus for single entity buffer pool management
US11381514B2 (en) 2018-05-07 2022-07-05 Apple Inc. Methods and apparatus for early delivery of data link layer packets
US10430352B1 (en) 2018-05-18 2019-10-01 Apple Inc. Methods and apparatus for reduced overhead data transfer with a shared ring buffer
US10585699B2 (en) 2018-07-30 2020-03-10 Apple Inc. Methods and apparatus for verifying completion of groups of data transactions between processors
US10719376B2 (en) 2018-08-24 2020-07-21 Apple Inc. Methods and apparatus for multiplexing data flows via a single data structure
US10846224B2 (en) 2018-08-24 2020-11-24 Apple Inc. Methods and apparatus for control of a jointly shared memory-mapped region
US10789110B2 (en) 2018-09-28 2020-09-29 Apple Inc. Methods and apparatus for correcting out-of-order data transactions between processors
US10838450B2 (en) 2018-09-28 2020-11-17 Apple Inc. Methods and apparatus for synchronization of time between independently operable processors
KR20200101682A (ko) * 2019-02-20 2020-08-28 삼성전자주식회사 전자 장치 및 그 제어 방법
US11301316B2 (en) * 2019-07-12 2022-04-12 Ebay Inc. Corrective database connection management
US11567527B2 (en) * 2019-07-23 2023-01-31 Texas Instruments Incorporated Preemptive wakeup circuit for wakeup from low power modes
US11829303B2 (en) 2019-09-26 2023-11-28 Apple Inc. Methods and apparatus for device driver operation in non-kernel space
US11558348B2 (en) 2019-09-26 2023-01-17 Apple Inc. Methods and apparatus for emerging use case support in user space networking
US11606302B2 (en) 2020-06-12 2023-03-14 Apple Inc. Methods and apparatus for flow-based batching and processing
US11775359B2 (en) 2020-09-11 2023-10-03 Apple Inc. Methods and apparatuses for cross-layer processing
US11954540B2 (en) 2020-09-14 2024-04-09 Apple Inc. Methods and apparatus for thread-level execution in non-kernel space
US11799986B2 (en) 2020-09-22 2023-10-24 Apple Inc. Methods and apparatus for thread level execution in non-kernel space
FR3115259A1 (fr) * 2020-10-16 2022-04-22 Psa Automobiles Sa Gestion de l’alimentation électrique d’un véhicule commandé à distance
FR3115258A1 (fr) * 2020-10-16 2022-04-22 Psa Automobiles Sa Gestion de l’alimentation électrique d’un véhicule commandé à distance
FR3125620B1 (fr) * 2021-07-20 2023-12-01 Vulog Méthode et système de calcul de temps d’attente entre deux réservations de véhicules appartenant à une flotte de véhicules partagés
FR3125619B1 (fr) * 2021-07-20 2023-12-22 Vulog Procédé et système de transmission de requêtes pour exécuter des actions sur des véhicules appartenant à une flotte de véhicules partagés
US11876719B2 (en) 2021-07-26 2024-01-16 Apple Inc. Systems and methods for managing transmission control protocol (TCP) acknowledgements
US11882051B2 (en) 2021-07-26 2024-01-23 Apple Inc. Systems and methods for managing transmission control protocol (TCP) acknowledgements

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63163932A (ja) * 1986-12-26 1988-07-07 Fuji Electric Co Ltd 制御用計算機のシステム監視方式
JPH02252034A (ja) * 1989-03-24 1990-10-09 Fujitsu Ltd ウォッチドッグタイマ設定方式
JPH0354644A (ja) * 1989-07-24 1991-03-08 Meidensha Corp Cpu異常処理方法
JPH041831A (ja) * 1990-04-19 1992-01-07 Fujitsu Ltd プログラム暴走監視方式
JPH0447147A (ja) * 1990-06-15 1992-02-17 Hitachi Ltd 自動車制御用マイクロコンピュータ装置
JPH0454648A (ja) * 1990-06-25 1992-02-21 Fujitsu Ten Ltd ソフトウエア開発装置
JPH04245547A (ja) * 1991-01-31 1992-09-02 Nec Corp プロセッサの処理異常検出方式
JPH04280329A (ja) * 1991-03-08 1992-10-06 Fujitsu Ltd プログラム異常検出方式
JPH10133887A (ja) * 1996-11-01 1998-05-22 Sharp Corp タスク監視方法
JP2000181755A (ja) * 1998-12-17 2000-06-30 Fuji Xerox Co Ltd 異常検知方法、異常検知装置、マルチタスクシステムおよび記録媒体
JP2001323836A (ja) * 2000-05-17 2001-11-22 Denso Corp クランク同期タスクの異常検出方法
JP2002189606A (ja) * 2000-12-20 2002-07-05 Denso Corp 処理実行装置及び記録媒体
JP2004054583A (ja) * 2002-07-19 2004-02-19 Denso Wave Inc セキュリティ装置およびセキュリティ装置の動作復帰方法

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4634110A (en) * 1983-07-28 1987-01-06 Harris Corporation Fault detection and redundancy management system
DE3481872D1 (de) * 1984-12-31 1990-05-10 Ibm Geraet zur erkennung von ausserbetriebzustaenden bei einem nichtbedienten unterbrechungsgesteuerten prozessor.
JPS62157953A (ja) * 1985-12-28 1987-07-13 Honda Motor Co Ltd 異常検知機能を備えたマイクロコンピユ−タ
JPS6479617A (en) * 1987-09-22 1989-03-24 Nissan Motor Signal processing apparatus of crank angle sensor
JP2793993B2 (ja) * 1990-04-05 1998-09-03 株式会社ゼクセル マイクロコンピュータにおけるプログラム暴走検出方法
US5278976A (en) * 1990-04-16 1994-01-11 Rolm Company Method for detecting infinite loops by setting a flag indicating execution of an idle task having lower priority than executing application tasks
JPH05265801A (ja) 1992-03-17 1993-10-15 Nec Corp プログラムモニタ装置
JP2721294B2 (ja) * 1993-01-29 1998-03-04 本田技研工業株式会社 コンピュータシステムのオンライン監視システム
JP2795140B2 (ja) 1993-10-19 1998-09-10 松下電器産業株式会社 暴走監視装置
JP3135772B2 (ja) * 1993-12-27 2001-02-19 アスコ株式会社 車両用安全装置
JPH09160807A (ja) * 1995-12-06 1997-06-20 Mitsuba Corp マイクロプロセッサの誤動作検出方法
JPH10198584A (ja) 1997-01-14 1998-07-31 Nippon Steel Corp アプリケーションソフトウェアの異常監視装置
US6446225B1 (en) * 1998-04-23 2002-09-03 Microsoft Corporation Server system with scalable session timeout mechanism
JP2000122900A (ja) 1998-10-20 2000-04-28 Fujitsu Ltd マイクロコントローラの暴走監視方法
KR100617228B1 (ko) * 1999-03-19 2006-08-31 엘지전자 주식회사 실시간 운영체계 커널의 이벤트 전달 체계 구현방법
US6594774B1 (en) * 1999-09-07 2003-07-15 Microsoft Corporation Method and apparatus for monitoring computer system objects to improve system reliability
US20010027464A1 (en) * 2000-03-27 2001-10-04 General Instrument Corporation Operating system abstraction interface for broadband terminal platform firmware
JP2001318807A (ja) 2000-05-11 2001-11-16 Nec Microsystems Ltd タスク切り替え制御方法及び装置
FR2816730B1 (fr) * 2000-11-13 2004-10-15 Commissariat Energie Atomique Procede de securisation rendant deterministe l'execution en temps reel d'applications multitaches du type controle- commande avec confinement d'erreur
US6934893B1 (en) * 2000-11-16 2005-08-23 Stmicroelectronics S.A. Method of monitoring the activation of programmed sequences of a programmed system and computer program and apparatus for implementing same
DE60207070T2 (de) * 2001-05-14 2006-07-27 Telefonaktiebolaget Lm Ericsson (Publ) Überwachung von tasks
US6655197B2 (en) * 2001-07-23 2003-12-02 Sonnax Industries, Inc. Automatic transmission fluid characteristic monitoring system employed for repair/maintenance and during operation of a land motor vehicle
US7054925B2 (en) * 2001-11-21 2006-05-30 International Business Machines Corporation Efficient method for determining record based I/O on top of streaming protocols
JP3988636B2 (ja) * 2002-02-15 2007-10-10 株式会社デンソー マイクロコンピュータ及び車両用ecu
DE10223773B4 (de) * 2002-05-28 2004-04-01 Infineon Technologies Ag Schaltungsanordnung und Verfahren zur Überwachung eines Mikrocontrollers
US7069543B2 (en) * 2002-09-11 2006-06-27 Sun Microsystems, Inc Methods and systems for software watchdog support
JP4009602B2 (ja) 2004-03-02 2007-11-21 日本電気通信システム株式会社 リアルタイムosを用いたタスク処理方法、装置、及びプログラム
GB0404696D0 (en) * 2004-03-02 2004-04-07 Level 5 Networks Ltd Dual driver interface
US20050268300A1 (en) * 2004-05-14 2005-12-01 Microsoft Corporation Distributed task scheduler for computing environments
JP2006338605A (ja) * 2005-06-06 2006-12-14 Denso Corp プログラム異常監視方法及びプログラム異常監視装置
US20070168740A1 (en) * 2006-01-10 2007-07-19 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for dumping a process memory space

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63163932A (ja) * 1986-12-26 1988-07-07 Fuji Electric Co Ltd 制御用計算機のシステム監視方式
JPH02252034A (ja) * 1989-03-24 1990-10-09 Fujitsu Ltd ウォッチドッグタイマ設定方式
JPH0354644A (ja) * 1989-07-24 1991-03-08 Meidensha Corp Cpu異常処理方法
JPH041831A (ja) * 1990-04-19 1992-01-07 Fujitsu Ltd プログラム暴走監視方式
JPH0447147A (ja) * 1990-06-15 1992-02-17 Hitachi Ltd 自動車制御用マイクロコンピュータ装置
JPH0454648A (ja) * 1990-06-25 1992-02-21 Fujitsu Ten Ltd ソフトウエア開発装置
JPH04245547A (ja) * 1991-01-31 1992-09-02 Nec Corp プロセッサの処理異常検出方式
JPH04280329A (ja) * 1991-03-08 1992-10-06 Fujitsu Ltd プログラム異常検出方式
JPH10133887A (ja) * 1996-11-01 1998-05-22 Sharp Corp タスク監視方法
JP2000181755A (ja) * 1998-12-17 2000-06-30 Fuji Xerox Co Ltd 異常検知方法、異常検知装置、マルチタスクシステムおよび記録媒体
JP2001323836A (ja) * 2000-05-17 2001-11-22 Denso Corp クランク同期タスクの異常検出方法
JP2002189606A (ja) * 2000-12-20 2002-07-05 Denso Corp 処理実行装置及び記録媒体
JP2004054583A (ja) * 2002-07-19 2004-02-19 Denso Wave Inc セキュリティ装置およびセキュリティ装置の動作復帰方法

Also Published As

Publication number Publication date
EP1868095A3 (en) 2011-01-19
EP1868095B1 (en) 2019-05-08
EP1868095A2 (en) 2007-12-19
US7996732B2 (en) 2011-08-09
JP2007334587A (ja) 2007-12-27
US20080010563A1 (en) 2008-01-10

Similar Documents

Publication Publication Date Title
JP4609381B2 (ja) 異常監視用プログラム、記録媒体及び電子装置
JP4665846B2 (ja) マイクロコンピュータ及び電子制御装置
JP2006338605A (ja) プログラム異常監視方法及びプログラム異常監視装置
US8311169B2 (en) Automatic frequency monitoring circuit, electronic device, automatic frequency monitoring method, and automatic frequency monitoring program
CN114174956A (zh) 用于从低功率模式唤醒的抢先唤醒电路
JP2008107914A (ja) マイクロコンピュータ、プログラム及び車両用電子制御装置
JP2011002993A (ja) ウォッチドックタイマ監視装置、ウォッチドックタイマ監視方法
JP2004280783A (ja) マイクロコンピュータ
JP5796452B2 (ja) 電子制御装置
JP3991782B2 (ja) 電子制御装置
JP2014146131A (ja) 情報処理装置、監視装置、制御装置
US20040210785A1 (en) Method of and apparatus for achieving "watch dog" functions in microcontrollers and microcomputers and the like, required to shut down for extended periods of time for energy-conservation purposes
JP2006011686A (ja) マルチタスクシステムの異常検知方法
JP2002041493A (ja) マイクロコンピュータ
JP3829916B2 (ja) マイクロコンピュータ
JP2020173644A (ja) 電子制御装置
JP3711849B2 (ja) マイクロコンピュータ
JP2001323836A (ja) クランク同期タスクの異常検出方法
JP2021163425A (ja) 電子制御装置
JP4063699B2 (ja) プログラム暴走検出回路
JP2020048265A (ja) 電源制御装置及び電子制御装置
JP2006193050A (ja) 制御装置およびそれを備えた電動パワーステアリング装置
JP2007226527A (ja) 制御装置及びウォッチドッグタイマ
JP4380530B2 (ja) マイクロコンピュータおよび時間計測方法
JP2591690Y2 (ja) Cpuの暴走監視装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080731

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100611

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100713

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100825

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100927

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131022

Year of fee payment: 3

R151 Written notification of patent or utility model registration

Ref document number: 4609381

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131022

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250