(57)【要約】【課題】ＣＰＵの負荷状態に応じた割り込み処理を実行する。【解決手段】ＣＰＵ４は、エンジンの回転状態に応じてベクタテーブルに記憶されている飛び先アドレスを書き換えるので、エンジンの回転状態により示されるＣＰＵ４の負荷状態に応じて割り込み要因に対する飛び先アドレスを変更可能となり、同じ割り込み要因に対し状況に応じて処理内容を変更することができる。これにより、ＣＰＵ４の負荷状態に応じて適切な割り込み処理を実行することができるので、ＣＰＵ４の処理能力をより有効に活用することができる。【選択図】図１
2018072921.tif 000002
【特許請求の範囲】
【請求項１】
割り込み要因に対応する飛び先アドレスを更新可能に記憶する記憶部（６）と、割り込み要求を受けた場合は、前記記憶部に記憶されている飛び先アドレスに移行し、当該飛び先アドレスの割り込みプログラムの実行が終了した場合は、中断アドレスに移行するＣＰＵ（４）と、を備えたマイクロコンピュータ（２）を主体として車両機器を制御する車載電子制御装置において、
前記マイクロコンピュータは、
割り込み要因が発生した場合は、前記ＣＰＵに割り込みを要求すると共に前記ＣＰＵが次に実行する予定であったアドレスを前記中断アドレスとして退避する割り込み制御部（７）と、
前記ＣＰＵの動作に影響を及ぼす負荷状態を取得する取得部（４ａ）と、
前記負荷状態に応じて、前記記憶部に記憶されている飛び先アドレスを前記ＣＰＵの負荷状態に応じた処理を実行する割り込みプログラムのアドレスに変更する書き換え処理を実行するスケジューラ（４ｂ）と、
を備えた車載電子制御装置。
【請求項２】
前記負荷状態に応じた処理として、前記ＣＰＵが前記割り込みプログラムを実行する際の処理の軽減、処理の変更、処理の停止の少なくとも一つを実行する請求項１に記載の車載電子制御装置。
【請求項３】
割り込み要因は複数設定されており、
前記スケジューラは、前記ＣＰＵの動作に影響を及ぼす全ての割り込み要因に対する書き換え処理を一括して実行する請求項１または２に記載の車載電子制御装置。
【請求項４】
前記スケジューラは、前記取得部が取得した前記負荷状態が変化した場合に前記書き換え処理を実行する請求項１から３の何れか一項に記載の車載電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車載電子制御装置に関する。
【背景技術】
【０００２】
従来、マイクロコンピュータでは、ＣＰＵが実行する割り込みルーチンは、割り込みが入った場合にマイクロコンピュータに搭載された割り込み制御回路がＲＯＭ上に設定されたベクタテーブルに格納されたアドレス値を参照し、現在の処理を一度スタック領域へ退避させ、ベクタテーブルの示すアドレス先の処理を実施する。その後割り込み処理が終了すると、ＣＰＵが中断されていた処理から再開するというものであった。この際、ベクタテーブルはＲＯＭ上に存在する為変更することができず、一つの割り込み要因に対して複数の割り込み処理を設定することができなかった。
【０００３】
これに対し、割り込みベクタテーブルをＲＡＭ上に設け、その時ＣＰＵが実行しているプログラム用に割り込みベクタテーブルを書き換えるものが提案されている（特許文献１参照）。これは、割り込みベクタテーブルをスタートアップ読み出し専用メモリと読み書き可能なメモリの固定番地に設けることで、１つの割り込み要因に対して複数の割り込み処理を設定するものである。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平４−２９６９３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記技術の割り込み制御機能は、スタートアップＲＯＭ上にＰＯＷＥＲＯＮ ＢＩＴプログラムを有すると共に、ＲＯＭ上に通常処理プログラムを有し、外部ハードウェア及び内部ハードウェアからの割り込みを受けた際にスタートアッププログラムと通常処理プログラムにおいてＲＡＭ上の割り込みベクタテーブルを書き換えることにより、１つの割り込み要因に対して複数の割り込み処理を設定することができる。
【０００６】
しかしながら、上記技術では、その時ＣＰＵが実行しているプログラム用に割り込みベクタテーブルを書き換えるため、各プログラムはそれぞれが静的にどの飛び先に切り替えるかを決定する必要があり、周辺装置やマイクロコンピュータの状態、つまりＣＰＵの負荷状態に応じた処理ができない。例えば、スタートアッププログラムから通常処理に入る場合はスタートアップ終了時に割り込みベクタテーブルを通常処理用に単に上書きしているだけであり、ＣＰＵの負荷状態に応じた割り込み処理を実行できないのが実情である。
【０００７】
本発明は上記事情に鑑みてなされたもので、その目的は、ＣＰＵの負荷状態に応じた割り込み処理を実行することができる車載電子制御装置を提供することにある。
【課題を解決するための手段】
【０００８】
請求項１の発明によれば、割り込み制御部（７）は、割り込み要因が発生した場合は、ＣＰＵ（４）に割り込みを要求すると共にＣＰＵ（４）が次に実行する予定であったアドレスを中断アドレスとして退避する。ＣＰＵ（４）は、割り込み要求を受けた場合は、記憶部（６）に記憶されている飛び先アドレスに移行し、当該飛び先アドレスの割り込みプログラムの実行が終了した場合は、中断アドレスに移行する。
【０００９】
ここで、取得部（４ａ）がＣＰＵ（４）の動作に影響を及ぼす負荷状態を取得すると、スケジューラ（４ｂ）は、負荷状態に応じて、記憶部（６）に記憶されている飛び先アドレスをＣＰＵ（４）の負荷状態に応じた処理を実行する割り込みプログラムのアドレスに変更する。これにより、ＣＰＵ（４）の負荷状態に応じて適切な割り込みプログラムを実行することができるので、ＣＰＵ（４）の処理能力をより有効に活用することができる。
【図面の簡単な説明】
【００１０】
【図１】第１実施形態におけるエンジンＥＣＵの構成を示す機能ブロック図
【図２】割り込みベクタテーブルの飛び先アドレスとプログラムとの関係を示す図
【図３】ＣＰＵによるスケジューラ処理を示すフローチャート
【図４】ＣＰＵによる割り込み処理を示すフローチャート
【図５】第２実施形態におけるＣＰＵによるスケジューラ処理を示すフローチャート
【図６】第３実施形態におけるＣＰＵによるスケジューラ処理を示すフローチャート
【発明を実施するための形態】
【００１１】
（第１実施形態）
以下、車両機器であるガソリンエンジンを制御するエンジンＥＣＵに適用した第１実施形態について図１から図４を参照しながら説明する。
【００１２】
図１に示すように、エンジンＥＣＵ１（車載電子制御装置に相当）は、主体となるマイクロコンピュータ（以下、マイコン）２と、外部入出力回路３（割り込み制御部に相当）とを備えて構成されている。マイコン２は、ＣＰＵ４、ＲＯＭ５、ＲＡＭ６（記憶部に相当）、割り込み制御回路７、タイマ８、入出力ポート９を備えており、図示しないエンジンを制御するための様々な処理を行う。外部入出力回路３は、エンジンＥＣＵ１を制御するための外部機器との間で信号の入出力処理を行う。
【００１３】
ＲＯＭ５にはエンジンを制御するための各種プログラムが格納されており、ＣＰＵ４は、ＲＯＭ５に格納された各種プログラムを実行することでエンジンを制御する。タイマ８は、エンジンを制御するのに必要な各種パルス信号を出力するタイミングを決定するために設けられている。ＲＡＭ６には各種プログラムが処理に用いる演算データを一時的に格納する領域が確保されている。尚、ＲＯＭ５やＲＡＭ６に代えて、ハードディスクドライブやフラッシュメモリに代表される半導体メモリのような非遷移的実体的記録媒体を設けるようにしても良い。
【００１４】
外部入出力回路３には、インジェクタ１０、イグナイタ１１、電子スロットル１２、クランクセンサ１３、水温センサ１４、スロットルセンサ１５などエンジンを制御するための各種アクチュエータやエンジンの状態を検出するための各種センサが接続されている。インジェクタ１０は、エンジンの吸気通路に燃料を噴射する。電子スロットル１２は、エンジンの吸気通路を流れる空気量を調節する。イグナイタ１１は、エンジンの点火プラグ（図示せず）に着火させる。
【００１５】
クランクセンサ１３は、エンジンのクランク軸の回転に応じて所定角度毎（例えば３０゜ＣＡ毎）にエッジをクランク信号として出力する。水温センサ１４は、エンジンの冷却水の温度を検出する。スロットルセンサ１５は、電子スロットル１２の開度を検出する。
【００１６】
外部入出力回路３は、入力した各種信号をデジタル信号に波形整形しマイコン２に出力する。また、外部入出力回路３はＡ／Ｄ変換器（図示せず）を内蔵しており、水温センサ１４やスロットルセンサ１５によるアナログセンサ信号を入力し、Ａ／Ｄ変換器を用いてデジタル信号に変換してマイコン２に出力する。
【００１７】
割り込み制御回路７は、クランクセンサ１３からのクランク信号を割り込み要因として入力可能であり、クランク信号を入力すると割り込み要求をＣＰＵ４に出力する。
図２に示すように、ＲＯＭ５には、スケジューラプログラムと、パターンＡ〜Ｄプログラムとが記憶されている。ＣＰＵ４がスケジューラプログラムを実行することで図１に示す取得部４ａ及びスケジューラ４ｂの動作が実現される。スケジューラプログラムは、後述するようにエンジンの回転状態に応じてＲＡＭ６の割り込みベクタテーブル（以下、ベクタテーブル）に記憶されている飛び先アドレスをパターンＡ〜Ｄプログラムのアドレスに書き換える処理（書き換え処理）を実行するものである。本実施形態では、説明の簡単化のためにエンジンを制御するプログラムとしてパターンＡ〜Ｄプログラムを示したが、実際には多数のプログラムによりエンジンを制御するようになっている。
【００１８】
図４に示すように、パターンＡプログラムは、処理Ａ，Ｂ，Ｃから構成されている。尚、説明の簡単化のためにプログラムＡプログラムを処理Ａ，Ｂ，Ｃから構成されているものとして説明するが、実際には多数の処理から構成されている。これは、他のプログラムも同様である。パターンＢプログラムは、処理Ａと、処理Ｂ，Ｃの処理を簡単化した処理Ｄとから構成されており、全体の処理時間がパターンＡプログラムよりも短縮されている。パターンＣプログラムは処理Ａのみから構成されており、全体の処理時間がパターンＢプログラムよりも短縮されている。パターンＤプログラムは、実行対象となる処理を有していない。つまり、パターンＤプログラムは、何も実行しないようになっており、全体の処理時間はほぼ０である。このパターンＤプログラムは、後述するように割り込み処理を実行する必要がない状態で割り込み要因が発生した場合に実行する特殊な処理である。
【００１９】
ＲＡＭ６には、ベクタテーブルと、周辺ＩＣの状態やマイコンの状態が記憶されている。ベクタテーブル内には割り込み要因Ｘに対する飛び先アドレスが記憶されている。本実施形態の割り込み要因Ｘはクランク軸が所定角度回転する毎に発生し、割り込み要因は割り込み要因Ｘのみの一つである。ベクタテーブルは、エンジンＥＣＵ１が電源投入により立ち上がった際に実行されるブートプログラムにより書き込まれる。周辺ＩＣの状態とはＣＰＵ４の負荷状態に影響を与える状態を示す状態値で、ＣＰＵ４が割り込みプログラムを実行する際に周辺ＩＣから状態値を取得することでＣＰＵ４の負荷状態を間接的に判断可能となる。マイコンの状態とはＣＰＵ４の負荷に影響を与える状態を示す状態値で、ＣＰＵ４が割り込みプログラムを実行する際にマイコンの状態から状態値を取得することでＣＰＵ４の負荷状態を直接的に判断可能となる。本実施形態の場合、エンジンの回転状態がＲＡＭ６に記憶されており、その回転状態によりＣＰＵ４の負荷状態を直接的に判断するようになっている。回転状態とは、エンジンの低回転、通常回転、高回転である。従って、本実施形態では、マイコンの状態として記憶されている状態値をＣＰＵ４の負荷状態を判断するために直接使用することになる。
【００２０】
さて、ＣＰＵ４は、ＲＯＭ５に記憶されているスケジューラプログラムによりスケジューラ処理を繰り返して実行している。このスケジューラプログラムは、マイコンの状態に基づいてベクタテーブルに記憶されている割り込み要因Ｘのベクタテーブルの飛び先アドレスを変更するものである。即ち、図３に示すようにスケジューラ処理を開始すると、周辺ＩＣやマイコンの状態を取得する（Ｓ１０１）。以降、ＣＰＵ４は取得した状態に応じて、割り込み要因に対する割り込み処理を切り替える。具体的には、状態Ａか（Ｓ１０２：ＮＯ）、状態Ｂか（Ｓ１０３：ＮＯ）、状態Ｃ（１０４：ＹＥＳ）または状態Ｄ（Ｓ１０４：ＮＯ）かを判断する。状態Ａ，Ｂ，Ｃは、エンジンの低回転、通常回転、高回転に対応する。状態Ｄは、イグニッションスイッチがＯＦＦされることに応じて、データのバックアップなどのシャットダウン処理を実行している状態で、エンジン制御に関する処理を停止している状態である。尚、エンジンの回転状態をさらに細かく分類するようにしても良い。
【００２１】
ここで、クランク軸が所定角度回転する毎にクランクセンサ１３からクランク信号が出力されるので、割り込み制御回路７は、クランク信号を入力したタイミングでＣＰＵ４に対して割り込み要求を出力し、それに応じてＣＰＵ４が割り込み処理を実行する。
【００２２】
ところで、割り込み処理は、エンジンの低回転時はＣＰＵ４の負荷が小さいことからエンジン制御に必要となる多くの処理を行うことができるが、通常時はＣＰＵ４の負荷が比較的大きいことから必要な処理だけを実施し、高回転時はＣＰＵ４の負荷が極めて大きいことから最低限必要な処理だけを実施することで、割り込み要因Ｘに対する割り込みプログラムを状況に応じて最適に実行することができる。従来では飛び先アドレスを書き変えた後にＣＰＵ４の負荷状態が変化した場合には対応できなかったが、本実施形態ではＣＰＵ４がスケジュールプログラムを実行することでスケジュール管理しているため対応が可能となる。
【００２３】
具体的には、状態Ａの場合（Ｓ１０２：ＹＥＳ）、割り込み要因Ｘのベクタテーブルの飛び先アドレスをパターンＡの処理内容に書き変えてから（Ｓ１０５）、スケジューラ処理を終了する。状態Ｂの場合（Ｓ１０３：ＹＥＳ）、割り込み要因Ｘのベクタテーブルの飛び先アドレスをパターンＢに書き変えてから（Ｓ１０６）、スケジューラ処理を終了する。状態Ｃの場合（Ｓ１０４：ＹＥＳ）、割り込み要因Ｘのベクタテーブルの飛び先アドレスをパターンＣに書き変えてから（Ｓ１０７）、スケジューラ処理を終了する。状態Ｄの場合（Ｓ１０４：ＮＯ）、割り込み要因Ｘのベクタテーブルの飛び先アドレスをパターンＤに書き変えてから（Ｓ１０８）、スケジューラ処理を終了する。
【００２４】
この様に割り込み要因Ｘに対する処理パターンとして予め複数のパターンＡ〜Ｄが用意されており、割り込み要因Ｘによる割り込みが発生した場合、割り込みベクターブル内に示された飛び先アドレスの割り込みプログラムが実行される。この場合、ＣＰＵ４によって飛び先アドレスは変更されるため、割り込みが発生した時点でパターンＡ〜Ｄのいずれかのプログラムが開始され、それぞれに応じてＣＰＵ４の負荷状態に対応した処理が実施されることになる。
【００２５】
具体的には、飛び先アドレスがパターンＡプログラムとなっていた場合、図４に示すパターンＡの割り込み処理が開始され、処理Ａ、処理Ｂ、処理Ｃの順に実施した後、リターンする。飛び先アドレスがパターンＢプログラムとなっていた場合、パターンＢの割り込み処理が開始され、処理Ａ、処理Ｄの順に実施した後、リターンする。飛び先アドレスがパターンＣプログラムとなっていた場合、パターンＣの割り込み処理が開始され、処理Ａを実施した後、リターンする。飛び先アドレスがパターンＤプログラムとなっていた場合、パターンＤの割り込み処理が開始され、何の処理も実施することなくリターンする。つまり、イグニッションスイッチがＯＦＦされた場合は、電源の自己保持状態を維持した状態でデータのバックアップ等のシャットダウン処理を実施し、シャットダウン処理が終了すると電源の自己保持状態を解除することで電源を遮断するようにしているが、シャットダウン処理中もエンジンが駆動していることに応じてクランク信号が入力している。このため、クランク信号の入力に応じて割り込み要因が発生することで、ＣＰＵ４が割り込みプログラムを無駄に実行している状態となっていることから、割り込みプログラムを実行するにしてもＣＰＵ４の処理負担を軽減するための工夫である。
【００２６】
尚、割り込み制御回路７は、ＣＰＵ４に割り込み要求を出力する場合、次に実行するアドレスを中断アドレスとしてスタック領域へ退避させてから出力する。その後、ＣＰＵ４は、割り込みプログラムの実行を終了すると、中断アドレスから再開するので、割り込み前に実行していた処理を再開することができる。
【００２７】
このような実施形態によれば、次のような効果を奏することができる。
ＣＰＵ４は、エンジンの回転状態に応じてベクタテーブルに記憶されている飛び先アドレスを書き換えるので、エンジンの回転状態により示されるＣＰＵ４の負荷状態に応じて割り込み要因Ｘに対する飛び先アドレスを変更可能となり、同じ割り込み要因Ｘに対し状況に応じて処理内容を変更することができる。これにより、ＣＰＵ４の負荷状態に応じて適切な割り込み処理を実行することができるので、ＣＰＵ４の処理能力をより有効に活用することができる。
【００２８】
割り込み処理内でＣＰＵ４の負荷状態によって分岐することが無いので、割り込み処理実行時に分岐判断の処理負荷を削減することができる。
エンジンの高回転時は割り込み要求の間隔が短くなり、ＣＰＵ４への処理負荷が高負荷となるため、割り込み処理内容を変更することで必要な処理だけを実施するので、特にエンジンの高回転時の効果を顕著に発揮することができる。
【００２９】
（第２実施形態）
第２実施形態について図５を参照して説明するに、第１実施形態と同一のステップには同一のステップ番号を付す。この第２実施形態は、複数の割り込み要因に対して割り込み処理を実行することを特徴とする。
【００３０】
割り込み制御回路７は、外部から複数の割り込み要因を入力可能であり、何れかの割り込み要因を入力すると、割り込み要求をＣＰＵ４に出力すると同時に、その入力した割り込み要因を特定可能な情報をＣＰＵ４に出力する。本実施形態では、説明の簡単化のために割り込み要因Ｘ，Ｙの２つの割り込み要因を説明するが、３つ以上の割り込み要因を入力可能としても良い。
【００３１】
ＣＰＵ４は、図５に示すようにスケジューラ処理を開始すると、第１実施形態と同様に、ＣＰＵ４の負荷状態を取得してから（Ｓ１０１）、状態Ａ〜Ｄに応じて（Ｓ１０２〜Ｓ１０４）、割り込み要因に対する割り込み処理を切り替える。即ち、状態Ａの場合（Ｓ１０２：ＹＥＳ）、割り込み要因Ｘのベクタテーブルの飛び先アドレスをパターンＡの処理内容に書き変えると共に（Ｓ１０５）、割り込み要因Ｙのベクタテーブルの飛び先アドレスをパターンＡに書き換えてから（Ｓ２０１）、スケジューラ処理を終了する。状態Ｂの場合（Ｓ１０３：ＹＥＳ）、割り込み要因Ｘのベクタテーブルの飛び先アドレスをパターンＢに書き変えると共に（Ｓ１０６）、割り込み要因Ｙのベクタテーブルの飛び先アドレスをパターンＢに書き変えてから（Ｓ２０２）、スケジューラ処理を終了する。状態Ｃの場合（Ｓ１０４：ＹＥＳ）、割り込み要因Ｘのベクタテーブルの飛び先アドレスをパターンＣに書き変えると共に（Ｓ１０７）、割り込み要因Ｙのベクタテーブルの飛び先アドレスをパターンＣに書き変えてから（Ｓ２０３）、スケジューラ処理を終了する。状態Ｄの場合（Ｓ１０４：ＮＯ）、割り込み要因Ｘのベクタテーブルの飛び先アドレスをパターンＤに書き変えると共に（Ｓ１０８）、割り込み要因Ｙのベクタテーブルの飛び先アドレスをパターンＤに書き変えてから（Ｓ２０４）、スケジューラ処理を終了する。
【００３２】
このような実施形態によれば、ＣＰＵ４は、複数の割り込み要因に対する飛び先アドレスをＣＰＵ４の負荷状態に応じて一括して書き換えるので、飛び先アドレスの書き換えに要する負担を抑制することができる。これにより各割り込みプログラム内で次の飛び先を判断する必要がなく、処理負荷を軽減することができる。特に割り込み要因数が多くなる程、その効果を顕著に発揮することができる。
【００３３】
（第３実施形態）
第３実施形態について図６を参照して説明する。この第３実施形態は、ＣＰＵ４の負荷状態が変化した場合のみ飛び先アドレスを変更することを特徴とする。第１実施形態及び第２実施形態では、スケジューラ処理を開始する毎にＣＰＵ４の負荷状態に応じてベクタテーブルの飛び先アドレスを書き換えたが、それではＣＰＵ４の負荷状態が変化しない場合であっても、ベクタテーブルの飛び先アドレスを同じ飛び先アドレスに書き換えることになり無駄な処理を実行することになる。
【００３４】
そこで、ＣＰＵ４は、図６に示すようにスケジューラ処理を開始すると、第１実施形態と同様の動作を実行した後、今回取得したエンジンの回転状態をＲＡＭ６上に状態値として更新記憶する（Ｓ３０２）。
【００３５】
次のタイミングでスケジューラ処理を実行する場合は、上述のようにして記憶更新した前回の状態値と今回の状態値とを比較し（Ｓ３０１）、前回の状態値と変更が無い場合は（Ｓ３０１：ＮＯ）、何もすることなく終了する。これに対して、前回の状態値と変更が有る場合は（Ｓ３０１：ＹＥＳ）、状態Ａ〜Ｄに対応した処理を実行した後（Ｓ１０２〜Ｓ１０８）、ＲＡＭ６上に記憶した状態値を更新記憶してから（Ｓ３０２）、スケジューラ処理を終了する。
【００３６】
このような実施形態によれば、ＣＰＵ４の負荷状態が変化した場合のみベクタテーブルの飛び先アドレスを書き変えるので、ＣＰＵ４の処理負荷を大幅に軽減することができる。特にＣＰＵ４の負荷状態が一定、つまりエンジンの回転状態が維持される場合に効果が顕著となる。
【００３７】
（その他の実施形態）
本発明は、上記実施形態に限定されることなく、次のように変形または拡張したり、各変形例を上記実施形態と組み合せたり、各変形例を組み合わせるようにしても良い。
【００３８】
クランク軸の回転に同期したタイミングでスケジューラ処理を実行するのに代えて、タイマ８によるイベントの発生に同期したタイミングで実行するようにしても良い。
駆動源としてはガソリンエンジンに限定されることなくディーゼルエンジンに適用しても良いし、電気自動車やハイブリッド自動車のように駆動源となるモータに適用するようにしても良い。
【００３９】
本開示は、実施例に準拠して記述されたが、本開示は当該実施例や構造に限定されるものではないと理解される。本開示は、様々な変形例や均等範囲内の変形をも包含する。加えて、様々な組み合わせや形態、さらには、それらに一要素のみ、それ以上、あるいはそれ以下、を含む他の組み合わせや形態をも、本開示の範疇や思想範囲に入るものである。
【符号の説明】
【００４０】
図面中、１はエンジンＥＣＵ（車載電子制御装置）、２はマイクロコンピュータ、４はＣＰＵ、４ａは取得部、４ｂはスケジューラ、６は記憶部、７は割り込み制御回路（割り込み制御部）である。
【図１】
2018072921.tif 000003
【図２】
2018072921.tif 000004
【図３】
2018072921.tif 000005
【図４】
2018072921.tif 000006
【図５】
2018072921.tif 000007
【図６】
2018072921.tif 000008