(57)【要約】      （修正有）【課題】  イベントに同期してＯＳのサービスを利用する割り込みハンドラのＯＳオーバーヘッドを削減する。【解決手段】  カテゴリ１割り込みハンドラ１１１は、ＯＳ管理外の割り込みハンドラであり、ＯＳのサービスは利用できない。カテゴリ２割り込みハンドラ１１２は、ＯＳ１１４が管理する割り込みハンドラであり、ＯＳのサービスを利用可能である。カテゴリ２割り込みハンドラ起動処理１１６は、カテゴリ１割り込みハンドラ１１１から呼ばれ、カテゴリ２割り込みハンドラ１１２の１つであるカテゴリ１要求割り込みハンドラ１１２１を起動する。【選択図】  図１
2006048239.tif 000002
【特許請求の範囲】
【請求項１】
検出されたイベントに応じて、オペレーシングシステムが関与するオペレーティングシステム管理内割り込みハンドラ又は前記オペレーシングシステムが関与しないオペレーティングシステム管理外割り込みハンドラを起動し、前記オペレーティングシステム管理内割り込みハンドラは、前記オペレーシングシステムに起動を要求することにより前記イベントに応じてＣＰＵに予定のアプリケーションプログラムを実行させる制御装置において、前記オペレーティングシステム管理外割り込みハンドラによりイベントを発生させることにより前記オペレーティングシステム管理割り込みハンドラを起動するオペレーティングシステム管理割り込みハンドラ発生手段を有することを特徴とする制御装置。
【請求項２】
さらに、前記オペレーティングシステム管理外割り込みハンドラから前記オペレーティングシステム管理内割り込みハンドラへ、オペレーティングシステムが実行する処理内容の実行を要求するオペレーティングシステムサービス要求手段と、
該オペレーティングシステムサービス要求手段により出された要求を実行するオペレーティングシステム要求実行手段と、を有することを特徴とする請求項１に記載の制御装置。
【請求項３】
前記オペレーティングシステム管理外割り込みハンドラが起動するイベントにおいて、前記オペレーティングシステムのサービスを利用する場合に、前記オペレーティングシステムサービス要求手段によってサービス要求を出すとともに、前記オペレーティングシステム管理割り込みハンドラ発生手段によって前記オペレーティング管理内割り込みハンドラを起動し、起動された該オペレーティングシステム管理内割り込みハンドラによって前記オペレーティングシステムサービス要求手段にて要求のあったサービスを前記オペレーシングシステム要求実行手段により実行することを特徴とする請求項１又は２に記載の制御装置。
【請求項４】
前記オペレーティングシステム管理割り込みハンドラ発生手段は、タイマ割り込みによる割り込みハンドラ発生手段であることを特徴とする請求項１から３までのいずれか１項に記載の制御装置。
【請求項５】
前記オペレーティングシステム管理割り込みハンドラ発生手段は、外部割込みによる割り込みハンドラ発生手段であることを特徴とする請求項１から３までのいずれか１項に記載の制御装置。
【請求項６】
アプリケーションプログラム、オペレーティングシステム、オペレーティングシステム管理割り込みハンドラ、オペレーティングシステム管理外割り込みハンドラを記憶するメモリと、
該メモリに記憶された前記アプリケーションプログラム、前記オペレーティングシステム、前記オペレーティングシステム管理内割り込みハンドラ、前記オペレーティングシステム管理外割り込みハンドラとを実行するＣＰＵとが、１チップマイコンに搭載されていることを特徴とする制御装置。
【請求項７】
前記ソフトウェアにより指定優先度の指定割り込みを即時に発生できるソフトウェア即時割り込み発生手段を有すること特徴とするマイクロコントローラを有する請求項６に記載の制御装置。
【請求項８】
前記ソフトウェア即時割り込み発生手段によりオペレーティングシステム管理外割り込みハンドラが発生する割り込みを行うことを特徴とする請求項７に記載の制御装置。
【請求項９】
請求項１から６まで又は８のいずれか１項に記載のオペレーティングシステムは、前記オペレーティングシステム管理割り込みハンドラ発生手段と、前記オペレーティングシステムサービス要求手段と、前記オペレーティングシステム要求実行手段とを有することを特徴とするオペレーティングシステム。
【請求項１０】
請求項１から８までのいずれか１項に記載の制御装置は、請求項９に記載のオペレーティングシステムを搭載していることを特徴とする制御装置。
【請求項１１】
請求項１から１０までのいずれか１項に記載の制御装置であって、自動車を制御する自動車制御部に設けられていることを特徴とする制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アクチュエータを制御する制御装置に関し、特に、イベントに同期した処理の起動に関するオーバーヘッドを少なくすることができる制御装置に関する。
【背景技術】
【０００２】
自動車エンジンの制御装置においては、クランク角センサ信号などの入力をもとに、燃料量や噴射タイミングなどを制御する。エンジン制御は、高度なリアルタイム性が要求されている分野の１つである。近年、欧州を中心に、自動車制御ソフトウェアの標準化が進みつつある。OSEK−OSはその１つであり、リアルタイムオペレーティングシステムの規格である。
【非特許文献１】OSEK/VDX編、 “OSEK/VDX Operating System version2.1 revision1”
【発明の開示】
【発明が解決しようとする課題】
【０００３】
OSEK-OSでは、割り込みの種別を３つの種別に分けている。カテゴリ１の割り込みは、OS（オペレーションシステム）が介在しないため、OSによる処理のオーバーヘッドはないが、OSが提供するサービスが使えないため、例えば、OSが提供するサービスの１つであるタスク起動ができない。一方、カテゴリ２及びカテゴリ３の割り込みはOSが介在するため、OSのオーバーヘッドがあるが、OSが提供するサービスを利用できるため、タスク起動ができる。従って、ある割り込みに応じてタスクを起動する場合には、カテゴリ２、３の割り込みを適用していた。しかしながら、頻繁に割り込みが入る場合には、OSのオーバーヘッドにより全体の処理に負荷がかかる。
【０００４】
本発明は、頻繁に割り込みが入る場合におけるOSのオーバーヘッドによる全体の処理に関する負荷を低減することを目的とする。
【課題を解決するための手段】
【０００５】
本発明の一観点によれば、検出されたイベントに応じて、オペレーシングシステムが関与するオペレーティングシステム管理内割り込みハンドラ又は前記オペレーシングシステムが関与しないオペレーティングシステム管理外割り込みハンドラを起動し、前記オペレーティングシステム管理内割り込みハンドラは、前記オペレーシングシステムにタスク起動を要求することにより前記イベントに応じてＣＰＵに予定のアプリケーションプログラムを実行させる制御装置において、前記オペレーティングシステム管理外割り込みハンドラによりイベントを発生させることにより前記オペレーティングシステム管理内割り込みハンドラを起動するオペレーティングシステム管理割り込みハンドラ発生手段を有することを特徴とする制御装置が提供される。
【０００６】
上記制御装置によれば、割り込みハンドラによりイベントを発生させる。オペレーティングシステム管理外割り込みハンドラは、オペレーティング管理内割り込みハンドラを起動するイベントを発生させることにより、オペレーティングシステム管理外割り込みハンドラが起動するイベントにおいてアプリケーションプログラムを起動させることができる。
【発明の効果】
【０００７】
本発明によれば、イベントに応じたアプリケーションプログラムを起動させる機能を保持したまま、割り込み処理に要するOSのオーバーヘッドを低減することができる。 
【発明を実施するための最良の形態】
【０００８】
以下、本実施の形態による組込み制御装置について図面を参照しつつ説明を行う。本実施の形態による組込み制御装置は、ハードウェア構成やOSを変更することなく、ソフトウェアを工夫することにより、OSのオーバーヘッドを低減イベント同期のタスク起動を実現する技術に関する。
【０００９】
まず、本実施の形態による組込み制御装置について説明する前に、本発明の原理について図１０を参照しつつ説明を行う。図１０（Ａ）に示すように、一般的な組込み制御装置は、カテゴリ２、３の割り込み処理を周期的に行っている様子を示す図であり、図１０（Ａ）においては４回のカテゴリ２、３の割り込み処理が行われている。それぞれの割り込み処理においては、OSのサービスをコールする／しないに関わらず、処理本体の前後にＯＳ処理を行う必要があるため、４回の割り込み処理において合計８回のオーバーヘッドが存在することになる。これに対して、本発明に係る組込み制御装置では、図１０（Ｂ）に示すようにＯＳのサービスを使用する処理に関してもカテゴリ１としておき、実際にＯＳのサービスを利用する割り込み処理の場合には、割り込み発生によって割り込み発生処理を行い、その後にＯＳの処理を前後に行うカテゴリ２又は３の割り込みを発生させる。この割り込み処理の中でＯＳサービスを使用するものである。この場合には、ＯＳのオーバーヘッドは２回に減少している。
【００１０】
上記原理に基づいて、まず、本発明の第１の実施の形態による組込み制御装置について図面を参照しつつ説明を行う。図１は、本実施の形態による組込み制御装置の制御ユニットの構成例を示す図である。図１に示すように、例えばマイコンを有する制御ユニット１は、センサ２やアクチュエータ３と接続されている。さらに例えば、ネットワーク４を介して、他の制御ユニット５と接続されている。制御ユニット１に接続するセンサ２、アクチュエータ３、ネットワーク、他の制御ユニット５は複数であってもよい。
【００１１】
制御ユニット１は、メモリ１１と、I/Oモジュール１２と、タイマモジュール１３と、CPU１４と、割り込みコントローラモジュール１５と、を含んで構成される。I/Oモジュール１２は、センサ２、アクチュエータ３、ネットワーク４などと接続され、入力値の取り込みや出力を行う。タイマモジュール１３は、所定の時刻に設定する機能を有し、設定された時刻に達すると割り込みが発生する。CPU１４は、メモリ１１内に格納されているプログラムを実行する。
【００１２】
割り込みコントローラ１５は、割り込みが発生すると、メモリ１１内に記憶されたベクタテーブル１１５に登録された番地にジャンプし、そこから処理を実行する。ベクタテーブル１１５は、割り込みとそのに対する処理とを関連づけするテーブルである。
【００１３】
カテゴリ１割り込みハンドラ１１１は、OSEK-OSの管理外の割り込みハンドラであり、OSのサービスは利用できない。カテゴリ２割り込みハンドラ１１２は、OS１１４が管理する割り込みハンドラであり、OSのサービスを利用可能である。OS１１４は、リアルタイムオペレーティングシステムである。アプリケーションプログラム１１３は、OSに登録したタスクで実行されるプログラムである。カテゴリ２割り込みハンドラ起動処理１１６は、カテゴリ１割り込みハンドラ１１１から呼ばれ、カテゴリ２割り込みハンドラ１１２の１つであるカテゴリ１要求割り込みハンドラ１１２１を起動する。
【００１４】
割り込みハンドラ１１１，１１２は、割込みが発生すると実行される。割り込み要因とそれに対して実行される割込みハンドラとは、ベクタテーブル１１５で関連付けされる。
【００１５】
図２はベクタテーブル１１５の構成例を示す図である。図２に示すように、ベクタテーブル１１５は、カテゴリ別に優先度が示されており、カテゴリ１割り込みハンドラの優先度は、カテゴリ２割り込みハンドラの優先度以上に設定されている。カテゴリ１内の＆AD（アドレス）変換割り込みハンドラ１１５１は、図３に示すAD変換割り込みハンドラ１１５１０の先頭アドレスである。＆エンジン入力割り込みハンドラ１１５２は、エンジン入力割り込みハンドラ１１５２０の先頭アドレスである。＆通信割り込みハンドラ１１５３は通信割り込みハンドラ１１５３０の先頭アドレスである。＆カテゴリ１割り込みハンドラ１１５４はカテゴリ１要求割り込みハンドラ１１２１の先頭アドレスである。AD変換割り込みハンドラ１１５１０はカテゴリ１割り込みハンドラであり、エンジン入力割り込みハンドラ、通信割り込みハンドラ、カテゴリ１要求割り込みハンドラはカテゴリ２割り込みハンドラである。
【００１６】
図３はAD変換割り込みハンドラ１１５１０の処理の流れを示すフローチャート図である。AD変換割り込みハンドラ１１５１０は、ある所定の領域のAD変換が完了すると割り込みが入り、起動される（Ｓｔａｒｔ）。AD変換割り込みハンドラ１１５１０は、AD変換処理本体１１１５１により構成される。AD変換割り込みハンドラ１１５１０は、カテゴリ１割り込みハンドラであるため、図３および、本ハンドラで実行される処理を示す図５、図６、図７、図８にはＯＳの処理はない。
【００１７】
ここで、AD変換割込みハンドラ１１５１０はカテゴリ１の割込みハンドラであるからOSのサービスを利用できない。そこで、OSのサービスを利用するために、カテゴリ２の割込みハンドラを起動するための割込みを発生する機能を有する。AD変換割り込みハンドラ１１５１０は、OSのサービスを利用するとき、カテゴリ１要求割り込みハンドラ１１２１を起動するための割り込みを発生する。
【００１８】
図４は、カテゴリ２の割り込みハンドラの１つであるカテゴリ１要求割り込みハンドラ１１２１における処理の流れを示すフローチャート図である。カテゴリ１要求割り込みハンドラ１１２１は、OS前処理１１５４２と、タスク起動処理１１５４１と、OS後処理１１５４３と、で構成される。カテゴリ１要求割り込みハンドラ１１２１は、 AD変換割り込み１１５１０ハンドラからの要求タイミングで起動される。尚、タスク起動処理１１５４１では、タスクを起動するためにOSのサービスを利用する。
【００１９】
カテゴリ１要求割込みハンドラ１１２１はAD変換割込みハンドラ１１５１０による発生させた割り込みにより起動されるが、そのAD変換割込みハンドラ１１５１０で処理されるAD変換処理本体は図５に示される。
【００２０】
図５はAD変換処理本体１１５１１の処理の流れを示すフローチャート図である。まず、処理を開始し（ＳＴＡＲＴ）、処理１１５１１６において割り込みステータスをクリアする。次いで、処理１１５１１１においてAD値を保存する。判定処理１１５１２２において診断処理を開始するタイミングであるか否かを判定する。判定１１５１２２が真（Ｙｅｓ）の場合、処理１１５１１３に進み診断起動処理を実行する。判定１１５１２２が偽（Ｎｏ）の場合、判定処理１１５１１４を実行する。判定１１５１１４は、周期タスク起動タイミングであるか否かを判定する。判定１１５１４４が真（Ｙｅｓ）の場合、処理１１５１１５において周期タスク起動処理を実行する。Ｎｏの場合には、処理を中止する。
【００２１】
図６は診断起動処理１１５１３の流れを示すフローチャート図である。図６に示すように、処理を開始すると（ＳＴＡＲＴ）、処理１１５１１３１において診断カウンタを“１”インクリメントする。処理１１５１１３２においてカテゴリ２割り込みハンドラ起動処理１１６を実行し、処理を終了（ＥＮＤ）する。
【００２２】
カテゴリ２割込みハンドラ起動処理１１６（これは、上記AD変換割込みハンドラ１１５１０の割込み発生処理を意味する）を図７に示す。
【００２３】
図７はカテゴリ２割り込みハンドラ起動処理１１６の流れを示すフローチャート図である。処理を開始すると（ＳＴＡＲＴ）、判定１１５１１３２１において、タイマ割り込みは既に発生済みか否か判定する。判定１１５１１３２１で偽（Ｎｏ）の場合は、処理１１５１１３２２に進みコンペアマッチレジスタに現在時刻＋５の値を設定し、５経過後にタイマ割り込みハンドラが起動されるようにする。判定１１５１１３２３においては、コンペアマッチレジスタが現レジスタ値より進んでいるか否かを判定する。これは、処理１１５１１３２２を実行している最中に、優先度の高い処理が割り込まれ、コンペアマッチレジスタに値を設定したときには、すでに現レジスタ値が進んでいる場合を想定した対策である。もし、そうなった場合は、タイマ割り込みをすぐに発生することはできない。判定１１５１１３２３で真（Ｙｅｓ）の場合は、判定１１５１１３２１に戻りこと判定を実行する。図５で示した診断処理１１５１１３と周期タスク起動処理１１５１１５において、診断処理１１５１１３は図６にすでに示し、周期タスク起動処理１１５１１５は図８に示す。
【００２４】
図８は周期タスク起動処理１１５１１５の流れを示すフローチャート図である。処理１１５１１５１で周期タスクカウンタを１インクリメントする。処理１１５１１５２では、カテゴリ２割り込みハンドラ起動処理１１６を実行し、処理を終了（ＥＮＤ）する。
【００２５】
図５で示した診断起動処理１１５１１３と周期タスク起動処理１１５１１５とは、実際には、図４で示したカテゴリ１要求ハンドラ１１２１を起動させるための割込みを発生している。カテゴリ１要求ハンドラ１１２１でタスク起動するタスク起動処理１１５４１を図９に示す。
【００２６】
図９はタスク起動処理１１５４１の流れを示すフローチャート図である。本処理１１５４１は、OSのサービスを利用して処理する場合にタイマ割り込みによって起動される。処理が開始されると（ＳＴＡＲＴ）、判定１１５４１１においては、診断タイマカウンタと診断カウンタとの値を比較する。これらの値が同じであれば、処理１１５４１２を実行する。処理１１５４１２はOSのサービス利用して診断タスクを起動する。処理１１５４１３では診断タイマカウンタの値を診断カウンタの値に更新する。処理１１５４１４では、cntに周期カウンタと周期タイマカウンタの差を格納する。処理１１５４１５では、周期タイマカウンタ値を周期カウンタ値に更新する。判定１１５４１６では、cntが０であるか否かを判定する。判定１１５４１６で偽ならば処理１１５４１７を実行する。処理１１５４１７はOSのサービスを利用してOSカウンタをインクリメントする。処理１１５４１８では、cntを1デクリメントし、処理を終了（ＥＮＤ）する。
【００２７】
以上、本実施の形態による制御装置においては、通常はカテゴリ１の割り込み処理を行い、ＯＳのサービスを利用する必要のある割り込み処理に対してはタイマ割り込みを発生させることにより、カテゴリ２又は３の割り込み処理を行う。
【００２８】
従って、常にカテゴリ２又は３の割り込み処理を行う場合と比べて、OSのサービスが必要なときのみＯＳのオーバーヘッドが生じるような構成になっているため、OSのオーバーヘッドを少なくできるという利点がある。また、カテゴリ１割込みハンドラからカテゴリ２割込みハンドラを起動するための割込み発生はタイマ割込みを使用しているため、ハードウェアを追加する必要がないという利点がある。
【００２９】
次に、本発明の第２の実施の形態による制御装置について説明する。本発明の第１の実施の形態による制御装置おいては、OSのサービスを利用する際にタイマ割り込み発生を利用していた。これに対して、本実施の形態による制御装置においては、外部入力による割り込みを発生させることを特徴とする。図１に外部割込み発生回路７を追加した構成を図１１に示す。外部入力による割り込み発生を行う場合は、出力ピンと割り込み用入力ピンとを接続しておくことにより、出力値を制御することで、割り込みを簡単に発生させることができる。
【００３０】
本実施の形態による制御装置においては、タイマによる自動発生ではなくユーザによる外部入力による割り込み発生を行う。従って、タイマによる割り込み発生に比べ、出力値を変化させるだけでよく、ソフトウェアが容易になる利点がある。
【００３１】
次に、本発明の第３の実施の形態による制御装置について説明する。本発明の第１の実施の形態においては、OSのサービスを利用するために、タイマ割り込み発生させていた。これに対して、本実施の形態による制御装置においては、レジスタに優先度又はそれに応じた設定値を設定する操作を行うことにより、その優先度に応じた割り込みを発生させることができるコントローラを使用する点を特徴とする。従って、割り込み発生をさせるための処理としてはレジスタ値の設定のみとなり、タイマによる割込み発生に比べて簡単に割り込みを発生させることができるという利点がある。また、外部割り込み発生のようにハードウェアの追加の不要となる。
【００３２】
次に、本発明の第４の実施の形態による制御装置について図面を参照しつつ説明を行う。本発明の第１の実施の形態においては、診断タスクや周期タスクを起動するために、診断起動処理１１５１１３（図５）や、周期タスク起動処理１１５１１５（図５）を作成したがこれらの機能はOSが提供してもよい。ＯＳが提供する場合は、カテゴリ１の処理では起動／終了におけるオーバーヘッドはないが、OSの限定されたサービスを利用することができるため、OS利用者の開発工数を低減することができるという利点がある。
【産業上の利用可能性】
【００３３】
本発明は、自動車制御をはじめとして、リアルタイム性を要求される制御システムを構成する制御装置に適用可能である。この場合に、イベントに応じたアプリケーションプログラムを起動する機能を損なうことなく、割り込み処理に要するOSのオーバーヘッドを低減することができる。
【図面の簡単な説明】
【００３４】
【図１】本実施の形態による組込み制御装置の制御ユニットの構成例を示す図である。
【図２】ベクタテーブルの構成例を示す図である。
【図３】AD変換割り込みハンドラ処理の流れを示すフローチャート図である。
【図４】カテゴリ２の割り込みハンドラの１つであるカテゴリ１要求割り込みハンドラ１１２１における処理の流れを示すフローチャート図である。
【図５】AD変換処理本体１１５１１の処理の流れを示すフローチャート図である。
【図６】診断起動処理１１５１３３の流れを示すフローチャート図である。
【図７】カテゴリ２割り込みハンドラ起動処理１１６の流れを示すフローチャート図である。
【図８】周期タスク起動処理１１５１１５の流れを示すフローチャート図である。
【図９】図９はタスク起動処理１１５４１の流れを示すフローチャート図である。
【図１０】本発明の原理についての説明図であり、図１０（Ａ）は、一般的な組込み制御装置においてカテゴリ２、３の割り込み処理を周期的に行っている様子を示す図であり、図１０（Ｂ）は本発明のカテゴリ２、３の割り込み処理を周期的に行っている様子を示す図である。
【図１１】本発明の第２の実施の形態による制御装置であって、外部入力による割り込みを発生させる外部割込み発生回路７を図１の構成に追加した構成を示す図である。
【符号の説明】
【００３５】
１    制御ユニット
２    センサ
３    アクチュエータ
４    ネットワーク
５    制御ユニット１に接続した制御ユニット
１１  メモリ
１２  I/Oモジュール
１３  タイマモジュール
１４  CPU
１５  割り込みコントローラモジュール
１１１  カテゴリ１割り込みハンドラ
１１２  カテゴリ２割り込みハンドラ
１１３  アプリケーションプルグラム
１１４  OS
１１５  ベクタテーブル
１１５１  AD変換割り込みハンドラの先頭番地
１１５２  エンジン入力割り込みハンドラの先頭番地
１１５３  通信割り込みハンドラの先頭番地
１１５４  タイマ割り込みハンドラの先頭番地
１１５１０  AD変換割り込みハンドラ
１１５１１  AD変換処理本体
１１５４１  タスク起動処理
１１５１１３  診断起動処理
１１５１１５  周期タスク起動処理
【図１】
2006048239.tif 000003
【図２】
2006048239.tif 000004
【図３】
2006048239.tif 000005
【図４】
2006048239.tif 000006
【図５】
2006048239.tif 000007
【図６】
2006048239.tif 000008
【図７】
2006048239.tif 000009
【図８】
2006048239.tif 000010
【図９】
2006048239.tif 000011
【図１０】
2006048239.tif 000012
【図１１】
2006048239.tif 000013