(57)【要約】【課題】  実行周期があらかじめ定まっていないようなプログラムの暴走をも検出できる技術を提供する。【解決手段】  電子制御装置が、タイムシェアリング方式に基づいて中断されたプログラム２２２の実行アドレスをスタック領域に記録し、プログラム２２２よりも優先度の高い領域外アクセス検出処理プログラム２２３が、記録したその実行アドレスが、あらかじめ決められた正常実行アドレス領域外であることに基づいて、プログラム実行異常に対処するための処理を行う。【選択図】   図９
2006235924.tif 000002
【特許請求の範囲】
【請求項１】
演算回路を備え、
前記演算回路は、
実行しているプログラムの実行アドレスを記憶媒体に記録する実行アドレス記録手段、
前記実行アドレス記録手段が記録した前記実行アドレスが、あらかじめ決められた正常実行アドレス領域外であることを検出する検出手段、および、
前記検出手段の検出に基づいて、プログラム実行異常に対処するための処理を行う異常対処手段として機能することを特徴とする電子制御装置。
【請求項２】
前記実行アドレス記録手段は、前記演算回路による複数種類のプログラムのタイムシェアリング方式による実行のタイミングを制御し、あるプログラムの実行中に他のより優先度の高いプログラムの実行タイミングが訪れると、実行中のプログラムの実行を中断し、実行を中断したプログラムの中断時の実行位置アドレスを前記記憶媒体に記録することを特徴とする請求項１に記載の電子制御装置。
【請求項３】
前記実行アドレス記録手段は、中断したプログラムの実行を再開するとき、前記記憶媒体に記録した当該プログラムの中断時の実行アドレスを前記記憶媒体から消去し、
前記検出手段は、前記演算回路が実行する複数のプログラムのうち、少なくとも１つのプログラムよりも優先順位が高い検出用プログラムを前記演算回路が実行することで実現されることを特徴とする請求項２に記載の電子制御装置。
【請求項４】
前記検出用プログラムの実行開始タイミングは、前記演算回路が実行する複数のプログラムのうち、前記検出用プログラムより優先度が低いプログラムの所定の実行開始タイミングから、当該プログラムの実行完了に要する時間内であることを特徴とする請求項３に記載の電子制御装置。
【請求項５】
所定の待ち期間前記演算回路から所定の信号を受けなかったことに基づいて、前記演算回路をリセットする監視回路を備え、
前記異常対処手段は、プログラム実行異常に対処するための処理として、記憶媒体中の信号出力フラグをオンからオフにし、
前記演算回路は、前記所定の待ち期間より短い繰り返しタイミングで、前記信号出力フラグがオンであることに基づき、前記所定の信号を前記監視回路に出力する信号出力手段として機能することを特徴とする請求項１ないし４のいずれか１つに記載の電子制御装置。
【請求項６】
前記検出手段、前記異常対処手段および前記信号出力手段は、単一のプログラムまたは連続的に実行開始されるようになっている複数のプログラムを前記演算回路が実行することで、この順序で実現するようになっていることを特徴とする請求項５に記載の電子制御装置。
【請求項７】
プログラムを記憶するプログラム記憶媒体と、
前記プログラム記憶媒体中の指定されたアドレスに記録された命令を読み出して実行することで、前記プログラムの実行を実現する演算回路と、を備え、
前記プログラム記憶媒体は、プログラム実行異常に対処するための処理を行う異常対処手段として前記演算回路を機能させる異常対処プログラムの先頭アドレスへのジャンプ命令を連続的に複数記憶していることを特徴とする電子制御装置。
【請求項８】
プログラムを記憶するプログラム記憶媒体と、
前記プログラム記憶媒体中の指定されたアドレスに記録された命令を読み出して実行することで、前記プログラムの実行を実現する演算回路と、を備え、
前記プログラム記憶媒体は、プログラム実行異常に対処するための処理を行う異常対処手段として前記演算回路を機能させるための異常対処プログラムを連続的に複数記憶していることを特徴とする電子制御装置。
【請求項９】
所定の待ち期間前記演算回路から所定の信号を受けなかったことに基づいて、前記演算回路をリセットする監視回路を備え、
前記異常対処手段は、プログラム実行異常に対処するための処理として、記憶媒体中の信号出力フラグをオフにし、
前記演算回路は、前記所定の待ち期間より短い繰り返しタイミングで、前記信号出力フラグがオンであることに基づき、前記所定の信号を前記監視回路に出力する信号出力手段として機能することを特徴とする請求項７または８に記載の電子制御装置。
【請求項１０】
前記監視回路が前記演算回路をリセットした履歴が記録される不揮発性の記憶媒体を備えたことを特徴とする請求項５、６、および９のいずれか１つに記載の電子制御装置。
【請求項１１】
前記リセットした履歴を外部からの要求に応じて送信するための通信回路を有することを特徴とする請求項１０に記載の電子制御装置
【請求項１２】
前記異常対処手段は、前記検出手段が検出した前記正常実行アドレス領域外のアドレスの実行に係るプログラムを検出すると共に、どのプログラムを検出したかを示す検出プログラム履歴を、不揮発性の記憶媒体に記録することを特徴とする請求項１ないし１１のいずれか１つに記載の電子制御装置。
【請求項１３】
前記異常対処手段が記録した検出プログラム履歴を、外部からの要求に応じて送信するための通信回路を有することを特徴とする請求項１２に記載の電子制御装置。
【請求項１４】
前記異常対処手段は、前記検出プログラム履歴に基づいて、処理内容を切り替えることを特徴とする請求項１２または１３に記載の電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムの実行アドレス異常を検出する電子制御装置に関する。
【背景技術】
【０００２】
従来、演算回路を備えた電子制御装置において、演算回路がプログラムを実行しているとき、その実行アドレスが予期しないアドレスに移ってしまい、プログラムの実行が暴走してしまうことがあった。このようなプログラムの実行アドレス異常等による暴走を検出する技術としては、種々のものがある。
【０００３】
例えば、ウオッチドッグタイマと呼ばれる装置がある。ウオッチドッグタイマは、演算回路から所定の待ち期間以上パルス信号を受けなかったことに基づいて、演算回路をリセットする装置である。特許文献１には、演算回路がマルチタスク方式で複数のプログラムを実行する場合に、それらプログラムの実行アドレス異常を、このウオッチドッグタイマを用いて検出する技術が記載されている。具体的には、演算回路が、各プログラムの実行が正常に終了したときに、所定のカウンタをカウントアップし、そのカウンタ値と、各タスクの所定の実行周期を考慮した規格値とを比較し、その比較の結果、すべてのタスクが正常に作動していると判定したときにのみ、ウオッチドッグタイマにパルス信号を出力するようになっている。
【特許文献１】特開平３−２８８９４２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、この特許文献のような技術では、不定期な割り込みによって実行が始まるプログラムのような、実行周期が予測できないプログラムについては、それらが正常に実行されたか否かを判断するための規格値を作成することができないという問題がある。
【０００５】
本発明は上記点に鑑み、実行周期があらかじめ定まっていないようなプログラムの暴走をも検出できる新規な技術を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記の目的を達成するための本発明の第１の特徴は、電子制御装置が演算回路を備え、その演算回路が、実行しているプログラムの実行アドレスを記憶媒体に記録し、記録したその実行アドレスが、あらかじめ決められた正常実行アドレス領域外であることを検出したことに基づいてプログラム実行異常に対処するための処理を行うことである。
【０００７】
このように、プログラムの実行アドレスが、あらかじめ決められた正常実行アドレス領域外であることに基づいて、当該プログラムの実行アドレス異常による暴走があったことを検出することで、そのプログラムの実行周期があらかじめ決まっているといないとに関わらず、プログラムの暴走を検出することができる。
【０００８】
また、電子制御装置は、演算回路による複数種類のプログラムのタイムシェアリング方式による実行のタイミングを制御し、あるプログラムの実行中に他のより優先度の高いプログラムの実行タイミングが訪れると、実行中のプログラムの実行を中断し、実行を中断したプログラムの中断時の実行位置アドレスを記憶媒体に記録するようになっていてもよい。このように、実行中のプログラムの中断時の実行位置アドレスが、あらかじめ決められた正常実行アドレス領域外であることを検出することで、当該プログラムの暴走を検出するようになっていてもよい。
【０００９】
また、演算回路が、中断したプログラムの実行を再開するとき、記憶媒体に記録した当該プログラムの中断時の実行アドレスを消去するようになっている場合には、実行する複数のプログラムのうち、少なくとも１つのプログラムよりも優先順位が高い検出用プログラムを演算回路が実行することにより、記録した実行アドレスが正常実行アドレス領域外であることを検出するようになっていればよい。このようになっていることで、この検出用のプログラムの実行時に、それよりも優先度の低いプログラムが実行されていれば、その優先度の低いプログラムの実行アドレスが記録され、その記録された実行アドレスが正常実行アドレス領域外であることを検出することが可能となる。
【００１０】
また、この検出用プログラムの実行開始タイミングは、演算回路が実行する複数のプログラムのうち、この検出用プログラムより優先度が低いプログラムの所定の実行開始タイミングから、当該プログラムの実行完了に要する時間内であるようになっていてもよい。このようになっていることで、電子制御装置は、当該プログラムの実行アドレス異常による暴走を、より高い確率で検出することができるようになる。
【００１１】
また、電子制御装置は、所定の待ち期間演算回路から所定の信号を受けなかったことに基づいて演算回路をリセットする監視回路を有していてもよい。このとき、演算回路は、プログラム実行異常に対処するための処理として、記憶媒体中の信号出力フラグをオンからオフにし、さらに、この所定の待ち期間より短い繰り返しタイミングで、信号出力フラグがオンであることに基づき、所定の信号を監視回路に出力するようになっていてもよい。
【００１２】
このようになっていることで、信号出力フラグがオンの間は、所定の待ち期間より短い繰り返しタイミングで所定の信号が監視回路に出力されるが、演算回路がプログラム実行アドレス異常を検出すると、信号出力フラグがオンからオフに変わることで、所定の信号が監視回路に出力されなくなり、その結果監視回路が演算回路をリセットする。
【００１３】
そしてこのとき、（１）記録した実行アドレスが正常実行アドレス領域外であることの検出、（２）信号出力フラグのオフ、および（３）信号出力フラグのオン・オフに基づく信号出力処理の３つは、単一のプログラムまたは連続的に実行開始されるようになっている複数のプログラムを演算回路が実行することで、この（１）〜（３）の順序で実現するようになっていてもよい。このようになっていることで、プログラムの実行アドレス異常の検出から演算回路のリセットまでが迅速に行われることになる。
【００１４】
また、本発明の第２の特徴は、電子制御装置が、プログラムを記憶するプログラム記憶媒体と、このプログラム記憶媒体中の指定されたアドレスに記録された命令を読み出して実行することで、プログラムの実行を実現する演算回路と、を備え、このプログラム記憶媒体が、プログラム実行異常に対処するための処理機能を演算回路に実現させる異常対処プログラムの先頭アドレスへのジャンプ命令を連続的に複数記憶していることである。
【００１５】
このようになっているので、演算回路によるプログラム実行時に、実行アドレス異常が発生したとき、その実行アドレスが、当該ジャンプ命令の位置であった場合、演算回路は、異常対処プログラムの実行を開始することになる。このように、プログラムの実行アドレスが異常となり、ジャンプ命令が実行されることで、当該プログラムの実行アドレス異常に対処するための処理が実行されるので、そのプログラムの実行周期があらかじめ決まっているといないとに関わらず、プログラムの暴走を検出することができる。
【００１６】
また、プログラム記憶媒体は、このジャンプ命令を連続的に複数記憶しているので、プログラムの実行アドレスが異常となった場合にジャンプ命令が実行される可能性が高くなる。記憶されるジャンプ命令の量は、多ければ多いほど望ましい。例えば、プログラム記憶媒体全体の１０パーセント以上を占めると、実行アドレス異常の検出率が概ね１０パーセント以上となる。
【００１７】
なお、ここでいう「異常対処プログラムの先頭アドレスへのジャンプ命令」とは、異常対処プログラムの先頭アドレスへ「直接」ジャンプする命令のみならず、異常対処プログラムの先頭アドレスへ「最終的に移動することになる」ジャンプ命令をも含む概念である。また、ここでいう「先頭アドレス」とは、形式的にそのプログラムの先頭部分に当たるアドレスのみならず、そこから実行を始めれば異常対処プログラムの主要部分の実行が実現されるようなアドレスをも含む概念である。
【００１８】
また、本発明の第３の特徴は、電子制御装置が、プログラムを記憶するプログラム記憶媒体と、このプログラム記憶媒体中の指定されたアドレスに記録された命令を読み出して実行することで、プログラムの実行を実現する演算回路と、を備え、このプログラム記憶媒体が、プログラム実行異常に対処するための処理機能を演算回路に実現させるための異常対処プログラムを連続的に複数記憶していることである。
【００１９】
このようになっているので、演算回路によるプログラム実行時に、実行アドレス異常が発生したとき、その実行アドレスが、当該異常対処プログラムの先頭アドレスであった場合、演算回路は、異常対処プログラムの実行を開始することになる。このように、プログラムの実行アドレスが異常となることが、直接当該プログラムの実行アドレス異常に対処するための処理の実行に繋がるので、そのプログラムの実行周期があらかじめ決まっているといないとに関わらず、プログラムの暴走を検出することができる。
【００２０】
また、プログラム記憶媒体は、この異常対処プログラムを連続的に複数記憶しているので、プログラムの実行アドレスが異常となった場合に異常対処プログラムが実行される可能性が高くなる。記憶される異常対処プログラム量は、多ければ多いほど望ましく、またそのプログラムサイズは小さければ小さいほど望ましい。例えば、複数の異常対処プログラムの総サイズプログラム記憶媒体全体の２０パーセント以上を占め、１つの異常対処プログラム当たりのサイズが４アドレス分だとすると、実行アドレス異常の検出率が概ね５パーセント以上となる。
【００２１】
また、これら第２または第３の特徴を有する電子制御装置が、所定の待ち期間演算回路から所定の信号を受けなかったことに基づいて演算回路をリセットする監視回路を有していてもよい。このとき、演算回路は、プログラム実行異常に対処するための処理として、記憶媒体中の信号出力フラグをオンからオフにし、さらに、この所定の待ち期間より短い繰り返しタイミングで、信号出力フラグがオンであることに基づき、所定の信号を監視回路に出力するようになっていてもよい。
【００２２】
このようになっていることで、信号出力フラグがオンの間は、所定の待ち期間より短い繰り返しタイミングで所定の信号が監視回路に出力されるが、演算回路がプログラム実行アドレス異常を検出すると、信号出力フラグがオンからオフに変わることで、所定の信号が監視回路に出力されなくなり、その結果監視回路が演算回路をリセットする。
【００２３】
また、これら第１〜第３のいずれか１つの特徴を有する電子制御装置が、監視回路が演算回路をリセットした履歴が記録される不揮発性の記憶媒体を有するようになっていてもよい。このようになっていることで、リセットの履歴が記憶媒体に残るので、後にこの履歴を参照することが可能となる。
【００２４】
なお、ここでいう「不揮発性の記憶媒体」とは、フラッシュメモリ等の電力供給が無くとも記憶内容を保持する記憶媒体のみならず、スタンバイＲＡＭ等、バックアップ電源から常に電力供給を受けるようになっていることで、制御装置への電力供給が途絶えたとしても記憶内容を保持する記憶媒体をも含む概念である。
【００２５】
また、電子制御装置が、リセットした履歴を外部からの要求に応じて送信するための通信回路を有していれば、履歴の参照が容易になる。
【００２６】
また、これら第１〜第３のいずれか１つの特徴を有する電子制御装置が、検出した正常実行アドレス領域外のアドレスの実行に係るプログラムを検出すると共に、どのプログラムを検出したかを示す検出プログラム履歴を、不揮発性の記憶媒体に記録するようになっていてもよい。このようになっていることで、どのプログラムの実行が暴走したかについての履歴が記憶媒体に残るので、後にこの履歴を参照することが可能となる。
【００２７】
また、電子制御装置が、どのプログラムが暴走したかについての履歴を外部からの要求に応じて送信するための通信回路を有していれば、履歴の参照が容易になる。
【００２８】
また、電子制御装置は、検出プログラム履歴に基づいて、プログラム実行異常に対処するための処理内容を切り替えるようになっていてもよい。このようになっていることで、どのプログラムがどれくらいの頻度で暴走したかという情報に基づく細かな異常対応ができるようになる。
【発明を実施するための最良の形態】
【００２９】
以下、本発明の一実施形態について説明する。図１に、本実施形態に係る車両制御用の電子制御装置１の構成および電子制御装置１と周辺装置との関係を示す。電子制御装置１は、マイコン２、通信回路３、入出力回路４、および外部監視装置５を有している。
【００３０】
マイコン２は、ＣＰＵ２１、ＲＯＭ２２、ＲＡＭ２３、スタンバイＲＡＭ２４等を有している。ＣＰＵ２１は、ＲＯＭ２２中の指定されたアドレスに記録された命令を読み出して実行することで、ＲＯＭ２２中のプログラムの実行を実現し、その実行において、必要に応じてＲＡＭ２３、スタンバイＲＡＭ２４に対してデータの書き込みおよび読み出しの制御を行い、またＲＯＭ２２に対してデータの読み出しの制御を行い、また図示しないＩ／Ｏを介して通信回路３、入出力回路４、および外部監視装置５と信号のやりとりを行う。またＣＰＵ２１は、外部監視装置５からリセット信号を受けることで、自身のリセット動作を行うようになっている。なお、ＣＰＵ２１の具体的な処理内容については後述する。
【００３１】
ＲＯＭ２２には、ＣＰＵ２１が実行するためのプログラムやＣＰＵ２１が読み出して使用するための各種データがあらかじめ記録されている。図２に、ＲＯＭ２２中に記録されているデータの構成を示す。ＲＯＭ２２は、その先頭アドレス（ゼロ番地）からＡｄｄＳ番地までのデータ領域２２ａに、各種データを保持し、ＡｄｄＳ番地からＡｄｄＥ番地までのプログラム領域２２ｂに、ＣＰＵ２１が実行する車両制御用のプログラムを保持している。またＡｄｄＥ番地からＲＯＭ２２の最終番地までは、空き領域２２ｃである。本実施形態においては、この空き領域には、空き領域処理と呼ぶ所定の命令群が連続的に複数記録されている。
【００３２】
通信回路３は、車内ＬＡＮ等の外部回線と電子制御装置１との間のインターフェースとなる回路である。この通信回路３は、接続された外部回線を介して外部ツール１０等の電子機器からデータを受信すると、そのデータをＣＰＵ２１に出力する。また通信回路３は、ＣＰＵ２１から受けたデータを、外部回線を介して外部ツール１０等の電子機器に送信する。
【００３３】
入出力回路４は、車内のセンサ１１およびアクチュエータ１２と電子制御装置１との間のインターフェースとなる回路である。この入出力回路４は、ＣＰＵ２１から受けた制御データに基づく制御信号を、その制御データ内で指定されたアクチュエータ１２に出力し、またセンサ１１から受けた検出信号に基づく検出データをＣＰＵ２１に出力する。
【００３４】
外部監視装置５は、一定期間経過毎に保持するカウンタの値を一定値減じ、ＣＰＵ２１から所定のウオッチドッグタイマ信号を受けるとそのカウンタ値を初期値（正値）に戻し、そのカウンタ値がゼロ以下になるとＣＰＵ２１にリセット信号を送信する。このようになっていることで、外部監視装置５は、最後にウオッチドッグタイマ信号を受けてから所定の待ち期間（すなわち［上述の初期値］×［上述の一定期間］／［上述の一定値］）以上ＣＰＵ２１からデータを受けなかった場合、ＣＰＵ２１をリセットする。また外部監視装置５は、ＣＰＵ２１から特定のアクチュエータの作動を停止する旨の作動停止命令を受けると、その命令に係るアクチュエータの作動を停止させる。このような機能を有する外部監視装置５は、例えば通常のマイコンを用いて実現することができる。
【００３５】
外部ツール１０は、ユーザの操作に基づいて電子制御装置１にデータ要求を送信し、電子制御装置１からデータを受けるとそのデータの内容をユーザに表示する装置である。このような外部ツール１０は、例えば通信機能を有するパーソナルコンピュータ、ＰＤＡ等によって実現することが可能である。
【００３６】
次に、図３に、ＣＰＵ２１が実行する各処理を概念的に表す図を示す。ＣＰＵ２１は起動時に、まずオペレーティングシステムのためのプログラム（図中ではＯＳと記す）２２０をＲＯＭ２２から読み出す。そしてＣＰＵ２１は、このオペレーティングシステム２２０を実行することで、複数種類のプログラムのタイムシェアリング方式による実行のタイミングを制御する。具体的には、ＣＰＵ２１は、各タイミングにおいてはそれぞれただ１つのプログラムの命令のみを実行し、どのタイミングにどのプログラムを実行するかは、オペレーティングシステム２２０によって規定されている各プログラムの定期実行タイミング、割り込みによって発生する各プログラムの不定期実行タイミング、およびオペレーティングシステム２２０によって規定されている各プログラムの優先度に基づいて決定する。すなわち、あるプログラムの実行中に他のより優先度の高いプログラムの、定期または不定期の実行タイミングが訪れると、実行中のプログラムの実行を中断し、そのより優先度の高い方のプログラムの実行を開始する。また、プログラムの実行が終了すると、中断したプログラム、およびそれまでに実行タイミングが訪れたにも関わらず優先度が低いために実行開始されなかったプログラムのうち、最も優先度の高いプログラムの実行を開始する。
【００３７】
ここでいう複数種類のプログラムのそれぞれは、車両制御等のためのある機能単位を実現するためのタスクとして１つにまとめられた命令群から成る。これら複数種類のプログラムとしては、例えば内燃機関制御処理プログラム２２１、電子スロットル制御処理プログラム２２２、領域外アクセス検出処理プログラム２２３、ウオッチドッグタイマ信号（以下ＷＤ信号と記す）生成処理プログラム２２４等がある。なお、フェールセーフ処理プログラム２２５および空き領域２２ｃ中に記録された空き領域処理プログラム２２６については後述する。
【００３８】
内燃機関制御処理プログラム２２１を実行することで、ＣＰＵ２１は、アクチュエータ１２の１つである内燃機関１２ｂにおける燃料噴射量、燃料点火タイミング等の制御を行う。電子スロットル制御処理プログラム２２２を実行することで、ＣＰＵ２１は、センサ１１の１つであるドライバ指示センサ１１ａからアクセル開度情報を取得し、その取得した情報に基づいて、電子スロットルモータ１３を駆動するアクチュエータであるモータ駆動回路１２ａの制御を行う。領域外アクセス検出処理プログラム２２３を実行することで、ＣＰＵ２１は、各種プログラムの実行アドレスがあらかじめ決められた正常実行アドレス領域外であることを検出し、その検出に基づいて、プログラム実行異常に対処するための処理を行う。この内燃機関制御処理プログラム２２１の詳細については後述する。ＷＤ信号生成処理プログラム２２４を実行することで、ＣＰＵ２１は、後述する所定の条件が満たされると、ＷＤ信号を外部監視装置５に出力する。
【００３９】
なお、電子スロットル制御処理プログラム２２２、領域外アクセス検出処理プログラム２２３、およびＷＤ信号生成処理プログラム２２４は、オペレーティングシステム２２０においてあらかじめ定められた一定周期毎に実行されるようになっている。そしてその周期は、上述の外部監視装置５についての所定の待ち期間よりも短く、かつ所定の待ち期間の１／２より長い。また、内燃機関制御処理プログラム２２１は、図示しないクランクセンサからの信号に基づいて、クランク角が特定の値になったときに、すなわち不定期のタイミングで、その実行が始まるようになっている。また、これらプログラム２００〜２０４間の優先度の高低の関係は、［ＷＤ信号生成処理プログラム２２４］＝［領域外アクセス検出処理プログラム２２３］＞［電子スロットル制御処理プログラム２２２］＞［内燃機関制御処理プログラム２２１］となっている。
【００４０】
図４に、ＣＰＵ２１によるこれらプログラム２２１〜２２４の実行タイミングの割り振りのタイミング図を示す。この図中左から右への方向が、時間経過の方向に相当する。この図においては、内燃機関制御処理プログラム２２１の実行中、電子スロットル制御処理プログラム２２２の定期実行タイミング４０１が訪れると、内燃機関制御処理プログラム２２１の実行が中断すると共に、より優先度の高い内燃機関制御処理プログラム２２１の実行が始まる。
【００４１】
さらに電子スロットル制御処理プログラム２２２の実行中に、領域外アクセス検出処理プログラム２２３の定期実行タイミング４０２が訪れると、電子スロットル制御処理プログラム２２２の実行が中断すると共に、より優先度の高い領域外アクセス検出処理プログラム２２３の実行が始まる。
【００４２】
さらに領域外アクセス検出処理プログラム２２３の実行が終了した直後に、引き続きＷＤ信号生成処理プログラム２２４の定期実行タイミング４０３が訪れ、その実行が始まる。そしてＷＤ信号生成処理プログラム２２４の実行が終了したタイミング４０４で、電子スロットル制御処理プログラム２２２の実行が再開し、そのＷＤ信号生成処理プログラム２２４の実行が終了したタイミング４０５で、内燃機関制御処理プログラム２２１の実行が再開する。
【００４３】
このように、領域外アクセス検出処理プログラム２２３の定期実行タイミングは、電子スロットル制御処理プログラム２２２の定期実行タイミングから所定の遅れ時間後に訪れるようになっている。そしてこの所定の遅れ時間とは、電子スロットル制御処理プログラム２２２の実行完了に要する時間より短い時間である。なお、電子スロットル制御処理プログラム２２２の実行完了に要する時間は、各種要因によって変動するので、ここでいう実行完了に要する時間としては、典型的な実行完了に要する時間（例えば実測した実行完了に要する時間の平均、実測した実行完了に要する時間のうち最小のもの等）を用いればよい。このようになっていることで、電子スロットル制御処理プログラム２２２の実行中にその実行が中断されて、領域外アクセス検出処理プログラム２２３の実行が始まる頻度が高くなる。
【００４４】
また、上記の通り、領域外アクセス検出処理プログラム２２３とＷＤ信号生成処理プログラム２２４とは、この順に連続的に、すなわち間に他の車両制御用プログラムの実行を挟むことなく実行されるようになっている。なお、領域外アクセス検出処理プログラム２２３およびＷＤ信号生成処理プログラム２２４がまとまって１つのプログラムとして実現されていてもよい。
【００４５】
なお、ＣＰＵ２１は、実行中のプログラムの中断および中断したプログラムの再開を、オペレーティングシステム２２０の処理内容に基づき、ＲＡＭ２３中に割り当てたスタック領域へのデータの待避および復帰を行うことで実現する。
【００４６】
この、スタック領域を用いた待避および復帰について、図５を用いて説明する。図５は、図４に示したようにプログラムの実行の中断、再開がある場合の、スタック領域内のデータ構造の変遷を示す。まず、図４のタイミング４０１までの期間Ｐ１においては、スタック領域にはデータが含まれていない。そして、タイミング４０１で内燃機関制御処理プログラム２２１の実行が中断するとき、ＣＰＵ２１は、現在のＣＰＵ２１内のプログラムカウンタ内のアドレス、すなわち現在のＲＯＭ２２中の実行アドレス、をスタック領域に書き込む。さらにこのとき、ＣＰＵ２１は、現在のＣＰＵ２１内の各種レジスタの内容を、スタック領域に追記的に書き込む。これによって、タイミング４０１〜４０２までの期間Ｐ２におけるスタック領域内のデータは、バー４１１のように、内燃機関制御処理プログラム２２１の中断時実行アドレスを示すプログラムカウンタ値に続いて、その中断時のレジスタの待避データがあるという構造となる。
【００４７】
そして、タイミング４０２で電子スロットル制御処理プログラム２２２の実行が中断するとき、ＣＰＵ２１は、現在のＣＰＵ２１内のプログラムカウンタ内のアドレスをスタック領域に追記的に書き込む。さらにこのとき、ＣＰＵ２１は、現在のＣＰＵ２１内の各種レジスタの内容を、スタック領域に追記的に書き込む。これによって、タイミング４０２〜４０３までの期間Ｐ３におけるスタック領域内のデータは、バー４１２のように、内燃機関制御処理プログラム２２１の中断時実行アドレスおよび待避データに続き、電子スロットル制御処理プログラム２２２の中断時実行アドレスおよびそれに続く待避データがあるという構造となる。
【００４８】
このようになっているので、領域外アクセス検出処理プログラム２２３の実行時には、スタック領域に内燃機関制御処理プログラム２２１および電子スロットル制御処理プログラム２２２の中断時の実行アドレスが記憶されていることになる。
【００４９】
そして、タイミング４０４で電子スロットル制御処理プログラム２２２の実行が再開するとき、ＣＰＵ２１は、スタック領域の最後尾の待避データを各種レジスタに書き戻し、その待避データをスタック領域から消去し、さらにスタック領域の最後尾のプログラムカウンタ値をプログラムカウンタに書き戻し、そのプログラムカウンタ値をスタック領域から消去する。これによって、タイミング４０４〜４０５までの期間Ｐ４におけるスタック領域内のデータは、バー４１１のような構造となる。
【００５０】
そして、タイミング４０５で内燃機関制御処理プログラム２２１の実行が再開するとき、ＣＰＵ２１は、スタック領域の最後尾の待避データを各種レジスタに書き戻し、その待避データをスタック領域から消去し、さらにスタック領域の最後尾のプログラムカウンタ値をプログラムカウンタに書き戻し、そのプログラムカウンタ値をスタック領域から消去する。これによって、タイミング４０５以降の期間Ｐ４においては、スタック領域内のデータが空となる。
【００５１】
このようなＣＰＵ２１のオペレーティングシステム２２０に基づいた待避および復帰の作動により、実行を中断したプログラムの中断時の実行位置アドレスがスタック領域に記録され、中断したプログラムの実行を再開するとき、スタック領域に記録した当該プログラムの中断時の実行アドレスを記憶媒体から消去する。すなわち、プログラムの中断時のみ、そのプログラムの中断時の実行アドレスがスタック領域に残ることになる。
【００５２】
ここで、領域外アクセス検出処理プログラム２２３を実行するＣＰＵ２１の作動について説明する。図６に、領域外アクセス検出処理プログラム２２３のフローチャートを示す。ＣＰＵ２１は、このプログラム２２３の実行において、まずステップ１１０で待避データおよびプログラムカウンタ値がスタック領域内に存在するか否かを判定し、存在しない場合はこのプログラム２２３の実行を終了し、存在する場合は続いてステップ１２０で、スタック領域内のすべてのプログラムカウンタ値を読み出す。
【００５３】
そしてステップ１２０に続いてステップ１３０で、そのプログラムカウンタが正常範囲内であるか否かを判定する。ここで、正常範囲とは、ＲＯＭ２２のプログラム領域２２ｂ内を示す、あらかじめ定められてＲＯＭ２２のデータ領域２２ａ内に記録されたアドレス範囲である。正常範囲内であれば領域外アクセス検出処理プログラム２２３の実行を終了し、正常範囲内でなければステップ１４０を実行する。
【００５４】
ステップ１４０では、領域外アクセス検出履歴（検出プログラム履歴および演算回路をリセットした履歴に相当する）を、スタンバイＲＡＭ２４に記録する。領域外アクセス検出履歴の内容は、現在時刻、中断時の実行アドレスが正常でなかったプログラムの識別番号等である。なお、ステップ１３０で正常範囲内でなかった実行アドレスが、どのプログラムの中断時のものであるかを特定するためには、ＣＰＵ２１が、オペレーティングシステム２２０の規定に基づき、中断時のプログラムの識別番号を、その中断時のプログラムカウンタ値と対応付けて、スタック領域またはＲＡＭ２３中の他の領域に、対応データとして記憶させておけばよい。このようになっていれば、ステップ１４０では、この対応データに基づいて、ステップ１２０で読み出したカウンタ値に対応するプログラムの識別番号を特定することができる。
【００５５】
なお、ステップ１４０では、更に、領域外アクセス検出履歴に基づいて、過去にプログラムカウンタ値が正常範囲外であると判定された累積回数を特定し、それが所定回数（１回以上）以上の場合、マイコン２が故障している旨のデータをスタンバイＲＡＭ２４に書き込むようになっていてもよい。
【００５６】
また１４０では、更に、領域外アクセス検出履歴のプログラム識別番号に基づいて、過去に特定のプログラムについての中断時実行アドレスが正常範囲外であると判定された累積回数を特定し、それが所定回数（１回以上）以上の場合、外部監視装置５に対して、そのプログラムに関連するアクチュエータ（例えば内燃機関制御処理プログラム２２１の場合内燃機関１２ｂ、電子スロットル制御処理プログラム２２２の場合モータ駆動回路１２ａ）の作動停止命令を出力するようになっていてもよい。また、このような累積回数が所定回数以上であるようなプログラムの実行を、例えばそのプログラムについてのスタック領域中のデータを消去する等の方法を用いて、強制終了するようになっていてもよい。このように、ＣＰＵ２１は、領域外アクセス検出履歴のプログラム識別番号に基づいて、ステップ１４０の処理内容を切り替えるようになっていてもよい。このようになっていることで、どのプログラムがどれくらいの頻度で暴走したかという情報に基づく細かな異常対応ができるようになる。
【００５７】
続いてステップ１５０では、ＣＰＵ２１のリセットのための処理として、ＲＡＭ２３中の変数である信号出力フラグをオンからオフに変化させる。なお、この信号出力フラグは、ＣＰＵ２１の起動時に、オペレーティングシステム２２０の処理によってオンとなるようになっている。そして、後述する通り、この信号出力フラグがオフになった後、すぐにＣＰＵ２１がリセットされる。したがって、信号出力フラグがオフになっているということは、現在プログラム実行アドレス異常が発生していることを示している。ステップ１５０の後、このプログラム２２３の処理は終了する。
【００５８】
このように、領域外アクセス検出処理プログラム２２３をＣＰＵ２１が実行することで、電子制御装置１は、スタック領域内に記録されたプログラム中断時の実行アドレスが正常範囲内でないとき（ステップ１１０〜１３０参照）、プログラム実行異常に対処するための処理として、領域外アクセス検出履歴の記録および信号出力フラグのオフ等を行う（ステップ１４０、１５０参照）。
【００５９】
続いて、ＷＤ信号生成処理プログラム２２４を実行するＣＰＵ２１の作動について説明する。図７に、このＷＤ信号生成処理プログラム２２４のフローチャートを示す。ＣＰＵ２１は、このプログラム２２４の実行において、まずステップ１５４でＲＡＭ２３中の信号出力フラグがオンであるか否かを判定し、オンであればプログラム２２４の実行を終了し、オフであれば続いてステップ１５８でＷＤ信号を外部監視装置５に出力した後にプログラム２２４の実行を終了する。このようなＷＤ信号生成処理プログラム２２４を、上述の外部監視装置５についての所定の待ち期間よりも短い周期でＣＰＵ２１が実行することで、信号出力フラグがオンである場合、すなわち現在プログラム実行アドレス異常が発生していない場合は、外部監視装置５がＣＰＵ２１をリセットしないようなタイミングでのＷＤ信号の出力を繰り返す。そして、信号出力フラグがオフである場合、すなわち現在プログラム実行アドレス異常が発生している場合は、ＷＤ信号を出力しないことで、外部監視装置５にＣＰＵ２１をリセットさせる。
【００６０】
ここで、図８に、以上のような作動の電子制御装置１において、車両制御プログラムの実行アドレス異常が発生しない場合の、ＣＰＵ２１のＲＯＭ２２中の実行アドレス位置の変化を示す。図中左から右への向きが時間経過の向きであり、縦方向がＲＯＭ２２中のアドレスを示している。この図に示す通り、ＣＰＵ２１は、タイムシェアリング方式に従い、内燃機関制御処理プログラム２２１、電子スロットル制御処理プログラム２２２、領域外アクセス検出処理プログラム２２３、電子スロットル制御処理プログラム２２２、内燃機関制御処理プログラム２２１、ＷＤ信号生成処理プログラム２２４を順次実行するが、その際、実行アドレスはプログラム領域２２ｂ内に留まり続ける。
【００６１】
次に、図９に、以上のような作動の電子制御装置１において、電子スロットル制御処理プログラム２２２の実行中に実行アドレス異常が発生した場合の、ＣＰＵ２１のＲＯＭ２２中の実行アドレス位置の変化を、図８と同じ形式で示す。この図に示す通り、電子スロットル制御処理プログラム２２２の実行中のタイミング３０１に、何らかの原因によってプログラム実行位置がデータ領域２２ａに移ってしまうと、電子スロットル制御処理プログラム２２２の実行は暴走してしまう。しかし、オペレーティングシステム２２０に基づく処理により、より優先度の高い領域外アクセス検出処理プログラム２２３の実行タイミングにおいて、その暴走した電子スロットル制御処理プログラム２２２の実行は中断し、その暴走中の実行アドレスの値がスタック領域に記録される。そして領域外アクセス検出処理プログラム２２３の実行においてその実行アドレスが正常範囲内にないことが検出された結果、タイミング３０３で信号出力フラグがオフとなる。そして続くＷＤ信号生成処理プログラム２２４の実行において、ＷＤ信号が出力されなくなり、その結果外部監視装置５のカウンタ値がゼロ以下になったタイミング３０４で、ＣＰＵ２１がリセットされる。  
【００６２】
このように、電子制御装置１のＣＰＵ２１が、タイムシェアリング方式に基づいて中断されたプログラムの実行アドレスをスタック領域に記録し、記録したその実行アドレスが、あらかじめ決められた正常実行アドレス領域外であることを検出したことに基づいて、プログラム実行異常に対処するための処理を行うことで、プログラムの実行アドレス異常による暴走を検出することができる。そして、検出できるプログラムの実行アドレス異常は、そのプログラムの実行周期があらかじめ決まっているといないとには関わらない。内燃機関制御処理プログラム２２１のような不定期実行タイミングで実行されるプログラムであっても、領域外アクセス検出処理プログラム２２３よりも優先度が低いプログラムであれば、領域外アクセス検出処理プログラム２２３が繰り返し実行されることで、その内燃機関制御処理プログラム２２１の実行中に領域外アクセス検出処理プログラム２２３の実行タイミングが訪れたときには、内燃機関制御処理プログラム２２１の中断時の実行アドレスがスタック領域に記録されるので、これに基づいて実行アドレス異常を検出することができる。
【００６３】
また、上述した通り、この領域外アクセス検出処理プログラム２２３の定期実行タイミングは、電子スロットル制御処理プログラム２２２の定期実行タイミングから、当該プログラム２２２の実行完了に要する時間内であるので、電子制御装置１は、当該プログラム２２２の実行アドレス異常による暴走を、効率よく検出することができる。
【００６４】
また、領域外アクセス検出処理プログラム２２３およびＷＤ信号生成処理プログラム２２４が、連続的に（または単一のプログラムとして）実行開始されるようになっている複数のプログラムを演算回路が実行することで、この順序で実現するようになっていることで、プログラムの実行アドレス異常の検出からＣＰＵ２１のリセットまでが迅速に行われる。
【００６５】
ここで、フェールセーフ処理プログラム２２５および空き領域処理プログラム２２６について説明する。空き領域処理プログラム２２６は、図２に示した通り、空き領域２２ｃ中の全体に敷き詰められた複数のジャンプ命令である。１つのジャンプ命令は、ＲＯＭ２２中の１つのアドレスを占めるようになっており、それらのジャンプ先は、プログラム領域２２ｂ中のフェールセーフ処理プログラム２２５の先頭アドレスとなっている。したがって、ＣＰＵ２１においてプログラム実行位置異常が発生し、プログラム実行位置が空き領域２２ｃ中のアドレスに変化してしまった場合、いずれかのジャンプ命令が実行され、続いてフェールセーフ処理プログラム２２５の実行が始まる。
【００６６】
図１０に、フェールセーフ処理プログラム２２５のフローチャートを示す。このフェールセーフ処理プログラム２２５の実行において、ＣＰＵ２１は、まずステップ１６０で、領域外アクセス検出処理プログラム２２３のステップ１４０と同等の領域外アクセス検出履歴記憶処理を行い、続いてステップ１７０で、ステップ１５０と同等の信号出力停止フラグオフの処理を行い、その後終了する。ただし、このステップ１６０において、領域外アクセス検出履歴に記録するプログラムの識別番号は、このフェールセーフ処理プログラム２２５の実行の直前に空き領域処理プログラム２２６のジャンプ命令に実行を移したプログラムの識別番号である。このようなプログラムを特定するためには、ＣＰＵ２１が、オペレーティングシステム２２０の規定に基づき、実行中のプログラムの識別番号をＲＡＭ２３の所定の領域に記憶させておけばよい。このようになっていれば、ステップ１６０では、この所定の領域の識別番号をプログラム実行異常の発生したプログラムの識別番号として特定することができる。
【００６７】
ここで、図１１に、以上のような作動の電子制御装置１において、電子スロットル制御処理プログラム２２２の実行中のタイミング３１１に実行アドレス異常が発生し、実行アドレスが空き領域２２ｃ中となった場合の、ＣＰＵ２１のＲＯＭ２２中の実行アドレス位置の変化を、図８および図９と同じ形式で示す。このような場合、この図に示す通り、空き領域処理プログラム２２６、すなわちジャンプ命令をＣＰＵ２１が実行することで、フェールセーフ処理プログラム２２５の実行が始まる。そしてそのプログラム２２５の実行中のタイミング３１２で、信号出力フラグがオフとなる。そして続くＷＤ信号生成処理プログラム２２４の実行において、ＷＤ信号が出力されなくなり、その結果外部監視装置５のカウンタ値がゼロ以下になったタイミング３１３で、ＣＰＵ２１がリセットされる。  
【００６８】
このように、ＲＯＭ２２が、プログラム実行異常に対処するための処理機能をＣＰＵ２１演算回路に実現させる空き領域処理プログラム２２６の先頭アドレスへのジャンプ命令を、空き領域に連続的に敷き詰めて複数記憶することで、ＣＰＵ２１によるプログラム実行時に、実行アドレス異常が発生したとき、その実行アドレスが、空き領域２２ｃ内であった場合、演算回路は、必ずフェールセーフ処理プログラム２２５の実行を開始することになる。このように、プログラムの実行アドレスが異常となり、ジャンプ命令が実行されることで、当該プログラムの実行アドレス異常に対処するための処理が実行されるので、そのプログラムの実行周期があらかじめ決まっているといないとに関わらず、プログラムの暴走を検出することができる。また、実行アドレス異常が発生したとき、その実行アドレスが、データ領域２２ａであった場合には、フェールセーフ処理プログラム２２５は実行されないが、上述の通り領域外アクセス検出処理プログラム２２３が実行されることで、プログラム実行アドレス異常の検出ができる場合がある。
【００６９】
なお、ＣＰＵ２１は、通信回路３を介して外部ツール１０から要求を受けた場合は、本実施形態においてスタンバイＲＡＭ２４に記録されたデータを読み出し、通信回路３に出力するようになっていてもよい。このようにすることで、外部ツール１０は、通信回路３から送信された領域外アクセル検出履歴等のデータをユーザに表示することができるので、履歴の参照が容易になる。
【００７０】
なお、上記の実施形態において、ＣＰＵ２１が演算回路に相当し、外部監視装置５が監視回路に相当し、領域外アクセス検出処理プログラム２２３が検出用プログラムに相当し、フェールセーフ処理プログラム２２５が異常対処プログラムに相当し、ＲＯＭ２２がプログラム記憶媒体に相当する。
【００７１】
また、ＣＰＵ２１が、オペレーティングシステム２２０を実行することで実行アドレス記録手段として機能する。またＣＰＵ２１が、領域外アクセス検出処理プログラム２２３のステップ１１０〜１３０を実行することで、検出手段として機能する。またＣＰＵ２１が、領域外アクセス検出処理プログラム２２３のステップ１４０および１５０を実行することで異常対処手段として機能する。またＣＰＵ２１が、フェールセーフ処理プログラム２２５を実行することで異常対処手段として機能する。またＣＰＵ２１がＷＤ信号生成処理プログラム２２４を実行することで信号出力手段として機能する。
（他の実施形態）
なお、上記の実施形態において、空き領域処理プログラム２２６としてのジャンプ命令は、空き領域２２ｃ全体に敷き詰められて連続的に記録される必要はない。例えば、空き領域２２ｃ全体の５０パーセント以上を埋めるように記録されていても、ある程度の暴走検出効果が達成される。
【００７２】
また、敷き詰められるジャンプ命令は、必ずしも、フェールセーフ処理プログラム２２５への直接的なジャンプ命令である必要はない。例えば、連続する空き領域２２ｃ中の最後のアドレス以外には、次のアドレスにジャンプする命令が記録されており、最後のアドレスにのみ、フェールセーフ処理プログラム２２５にジャンプする命令が記録されていてもよい。
【００７３】
また、空き領域２２ｃに連続的に記録される空き領域処理プログラム２２６は、必ずしもジャンプ命令である必要はない。たとえば、フェールセーフ処理プログラム２２５そのものを複数連続的に記録するようになっていてもよい。このようになっているので、ＣＰＵ２１によるプログラム実行時に、実行アドレス異常が発生したとき、その実行アドレスが、空き領域２２ｃ中の当該フェールセーフ処理プログラム２２５の先頭アドレスであった場合、ＣＰＵ２１は、フェールセーフ処理プログラム２２５の実行をすぐに開始することになる。このように、プログラムの実行アドレスが異常となることが、直接当該プログラムの実行アドレス異常に対処するための処理の実行に繋がるので、そのプログラムの実行周期があらかじめ決まっているといないとに関わらず、プログラムの暴走を検出することができる。またこの場合、フェールセーフ処理プログラム２２５の数は、多ければ多いほど望ましく、またそのプログラムサイズは小さければ小さいほど望ましい。
【００７４】
また、ＣＰＵ２１が、領域外アクセス検出処理プログラム２２３を実行するようになっており、ＲＯＭ２２はフェールセーフ処理プログラム２２５を記憶していないような場合であっても本発明の実行アドレス異常検出の効果は達成される。
【００７５】
また逆に、ＣＰＵ２１が領域外アクセス検出処理プログラム２２３を実行しないようになっており、ＲＯＭ２２が空き領域処理プログラム２２６およびフェールセーフ処理プログラム２２５を記憶している場合であっても、本発明の実行アドレス異常検出の効果は達成される。
【００７６】
また、上記の実施形態においては、中断されたプログラムの、中断時のプログラムカウンタの値に基づいて、プログラム実行アドレス異常を検出しているが、必ずしも中断時のプログラムカウンタ値に基づいて検出する必要はない。例えば、電子制御装置１が、定期的にＣＰＵ２１中のプログラムカウンタの値を読み取る外部装置を有しており、その外部装置が、プログラムカウンタの値が正常範囲内である場合、ＣＰＵ２１から外部監視装置５へのＷＤ信号を遮断することで、外部監視装置５にＣＰＵ２１のリセットを行わせるようになっていてもよい。
【００７７】
また、ステップ１１０〜１３０と、ステップ１４０、１５０は、連続的に実行開始される２つの異なるプログラムとして実現されていてもよい。
【００７８】
また、上記の実施形態のような技術に、特許文献１に示したような、ＣＰＵ２１が、各プログラムの実行が正常に終了したときに、所定のカウンタをカウントアップし、そのカウンタ値と、各プログラムの所定の実行周期を考慮した規格値とを比較し、その比較の結果、すべてのプログラムが正常に作動していると判定したときに、ウオッチドッグタイマにパルス信号を出力する技術を組み合わせてもよい。
【図面の簡単な説明】
【００７９】
【図１】本発明の実施形態に係る電子制御装置１のハードウェア構成図である。
【図２】ＲＯＭ２２内のデータ構成を示す図である。
【図３】ＣＰＵ２１の処理内容を示す図である。
【図４】オペレーティングシステム２２０による優先度に基づいたプログラムのタイムシェアリング制御を示す図である。
【図５】ＲＡＭ２３中のスタック領域の変化を示す図である。
【図６】ＣＰＵ２１が実行する領域外アクセス検出処理プログラム２２３のフローチャートである。
【図７】ＣＰＵ２１が実行するＷＤ信号生成処理プログラム２２４のフローチャートである。
【図８】ＣＰＵ２１によるプログラム実行アドレス異常がない場合の実行プログラムタイミング図である。
【図９】ＣＰＵ２１によるプログラム実行アドレス異常がある場合の実行プログラムタイミング図である。
【図１０】ＣＰＵ２１が実行するフェールセーフ処理プログラム２２５のフローチャートである。
【図１１】ＣＰＵ２１によるプログラム実行アドレス異常がある場合の実行プログラムタイミング図である。
【符号の説明】
【００８０】
１…電子制御装置、２…マイコン、３…通信回路、４…入出力回路、
５…外部監視装置、１０…外部ツール、１１…センサ、１１ａ…ドライバ指示センサ、
１２…アクチュエータ、１２ａ…モータ駆動回路、１２ｂ…内燃機関、
１３…電子スロットルモータ、２１…ＣＰＵ、２２…ＲＯＭ、２３…ＲＡＭ、
２４…スタンバイＲＡＭ、２２ａ…データ領域、２２ｂ…プログラム領域、
２２ｃ…空き領域、２２０…オペレーティングシステム、
２２１…内燃機関制御処理プログラム、２２２…電子スロットル制御処理プログラム、
２２３…領域外アクセス検出処理プログラム、２２４…ＷＤ信号生成処理プログラム、
２２５…フェールセーフ処理プログラム、２２６…空き領域処理プログラム。
【図１】
2006235924.tif 000003
【図２】
2006235924.tif 000004
【図３】
2006235924.tif 000005
【図４】
2006235924.tif 000006
【図５】
2006235924.tif 000007
【図６】
2006235924.tif 000008
【図７】
2006235924.tif 000009
【図８】
2006235924.tif 000010
【図９】
2006235924.tif 000011
【図１０】
2006235924.tif 000012
【図１１】
2006235924.tif 000013