(57)【要約】【課題】複数のマイコンにて実施されていたアプリケーション等のコンポーネントを１つのマイコンにて実施させるときや、プログラム構成に設計変更が生じたときにおいて、検証済のコンポーネントの再検証を不要とすることができる技術を提供する。【解決手段】統合ＥＣＵにおいては、ＶＭや仮想デバイス等の特定プログラムにおいて入出力されるパラメータのうちの、特定プログラムにて利用される内部パラメータ、およびこの内部パラメータを他のプログラムにて利用する際の外部パラメータを、予め対応付けた対応リストを参照しつつ、内部パラメータと外部パラメータとを相互に書き換える（Ｓ３１０，Ｓ３２０）。従って、内部パラメータの送り先が特定プログラムの作成時以降に変更になったとしても、特定プログラムを書き換えることなく、対応リストを参照して適切な送り先を示す外部パラメータに変更することができる。【選択図】図３
2011028559.tif 000002
【特許請求の範囲】
【請求項１】
あるプログラム（以下、「特定プログラム」という。）が実行された際に該特定プログラムによって入出力されるパラメータを、コンピュータが他のプログラムとの間で中継するときに実行する中継プログラムであって、
前記特定プログラムにて入出力されるパラメータのうちの前記特定プログラムにて利用されるパラメータ（以下、「内部パラメータ」という。）、および該内部パラメータを前記他のプログラムにて利用する際のパラメータ（以下、「外部パラメータ」という。）を予め対応付けた対応リストを参照しつつ、前記内部パラメータと前記外部パラメータとを相互に書き換える書換手段、
を備えたことを特徴とする中継プログラム。
【請求項２】
請求項１に記載の中継プログラムにおいて、
前記書換手段にて書換後のパラメータを予め設定された記録領域に格納する格納手段を備えたこと
を特徴とする中継プログラム。
【請求項３】
請求項２に記載の中継プログラムにおいて、
前記格納手段は、前記書換手段による書換後のパラメータのうちの内部パラメータを格納すること
を特徴とする中継プログラム。
【請求項４】
請求項１〜請求項３の何れかに記載の中継プログラムに従い処理を行うコンピュータを備える電子制御装置。
【請求項５】
請求項４に記載の電子制御装置において、
前記特定プログラムにおける処理として、当該電子制御装置が有する機能のうちの初期化する範囲を表す初期化範囲が指定された初期化指令を、前記中継プログラムを介して受信する初期化指令受信手段と、
前記指定された初期化範囲における初期化を行う初期化実行手段と、
を備えたことを特徴とする電子制御装置。
【請求項６】
請求項５に記載の電子制御装置において、
前記初期化指令受信手段は、前記初期化指令として初期化範囲の広さに応じた数値情報を受信し、
前記初期化実行手段は、予め各数値情報と初期化範囲とが対応付けられたデータベースを参照することによって、前記受信された数値情報に対応する初期範囲を特定し、該初期化範囲における初期化を行うこと
を特徴とする電子制御装置。
【請求項７】
請求項４〜請求項６の何れかに記載の電子制御装置において、
当該電子制御装置は、
複数の処理単位のうちのいずれかに対して予め設定されたタイミングでタイムスロットを割り当てることにより、これらの前記処理単位をＣＰＵに並行して実行させる基本プログラムであって、
前記処理単位として、外部からの入力に対し予め設定された時間内での応答が可能であるという性質であるリアルタイム性が要求されるリアルタイム処理単位と、前記リアルタイム性が要求されない非リアルタイム処理単位とが存在し、前記非リアルタイム処理単位は、いずれかの前記リアルタイム処理単位に対応付けられており、
前記処理単位に対して前記タイムスロットを割り当てるタイミングを示すデータであるタイムスロットデータを有しており、
前記タイムスロットデータに基づき、前記リアルタイム処理単位に前記タイムスロットを割り当てる第一のステップと、
前記第一のステップにて割り当てられた前記タイムスロットを使い切ることなく、前記リアルタイム処理単位が終了した場合には、該リアルタイム処理単位に替えて、該リアルタイム処理単位に対応付けられている前記非リアルタイム処理単位に、該タイムスロットの残り時間を割り当てる第二のステップと、
を有する基本プログラムを実行可能に構成されていることを特徴とする電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、あるプログラムにて入出力されるパラメータを中継する中継プログラムおよび電子制御装置に関する。
【背景技術】
【０００２】
プログラムをより少ない労力で開発できるようにするために、プログラムをプラットフォームとコンポーネント（アプリケーション等のプログラム）とに分けて、これらを階層構造に構成し、コンポーネントがプラットフォームの機能を利用できるようにしたものが知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００３−１５０３２１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで近年では、複数のマイコンがそれぞれ実行していた処理を１つのマイコンで実施できるようにしたいという要望がある。ここで、他のマイコンで実施されていた複数のアプリケーションを１つのマイコンで作動する場合、他のアプリケーションやハードウェアとの接続関係等を考慮してアプリケーションのプログラムを書き換える必要がある。このため、既に検証済のアプリケーションであってもプログラムの書き換えによって再度の検証が必要となり、この作業が繁雑であった。
【０００５】
また、他のアプリケーションの追加等、プログラム構成に設計変更が生じた場合においても、検証済のアプリケーションの書き換えおよび再検証の作業が必要となり、この作業が繁雑であった。
【０００６】
そこで、このような問題点を鑑み、複数のマイコンにて実施されていたアプリケーション等のコンポーネントを１つのマイコンにて実施させるときや、プログラム構成に設計変更が生じたときにおいて、検証済のコンポーネントの再検証を不要とすることができる技術を提供することを本発明の目的とする。
【課題を解決するための手段】
【０００７】
かかる目的を達成するために成された請求項１に記載の中継プログラムにおいて、書換手段は、特定プログラムにおいて入出力されるパラメータのうちの、特定プログラムにて利用される内部パラメータおよび内部パラメータを他のプログラムにて利用する際の外部パラメータを予め対応付けた対応リストを参照しつつ、内部パラメータと外部パラメータとを相互に書き換える。
【０００８】
このような中継プログラムによれば、例えば、内部パラメータの送り先が特定プログラムの作成時以降に変更になったとしても、特定プログラムを書き換えることなく、対応リストを参照して適切な送り先を示す外部パラメータに変更することができる。また、設計変更等によって内部パラメータの値をそのまま他のプログラムにて利用できなくなった場合であっても、対応リストを参照して他のプログラムが利用可能な適切な値を示す外部パラメータに書き換えて出力することができる。
【０００９】
つまり、複数のマイコンにて実施されていたアプリケーション等のコンポーネントを１つのマイコンにて実施させるときや、プログラム構成に設計変更が生じたときにおいて、検証済のコンポーネントの再検証を不要とすることができる。
【００１０】
ところで、請求項１に記載の中継プログラムにおいては、請求項２に記載のように、書換後のパラメータを予め設定された記録領域に格納する格納手段を備えていてもよい。
このような中継プログラムによれば、特定プログラムや他のプログラムが必要なときに書換後のパラメータを取得することができる。よって、良好にパラメータを受け渡すことができる。
【００１１】
特に、請求項３に記載のように、格納手段は、書換手段による書換後のパラメータのうちの内部パラメータのみを格納するように構成されていれば、特定プログラムは任意のタイミングで外部から入力されるパラメータを利用することができる。
【００１２】
次に、請求項４に記載の電子制御装置は、請求項１〜請求項３の何れかに記載の中継プログラムに従い処理を行うコンピュータを備えている。
このような電子制御装置によれば、少なくとも請求項１に記載の中継プログラムと同様の効果を享受することができる。
【００１３】
また、請求項４に記載の電子制御装置においては、請求項５に記載のように、特定プログラムにおける処理として、電子制御装置が有する機能のうちの初期化する範囲を表す初期化範囲が指定された初期化指令を、中継プログラムを介して受信する初期化指令受信手段と、指定された初期化範囲における初期化を行う初期化実行手段と、を備えていてもよい。
【００１４】
このような電子制御装置によれば、指定された初期化範囲のみの初期化を実施することができる。この際、電子制御装置は、中継プログラムを介して初期化指令を受信するので、初期化指令の種別毎に、また特定プログラム毎に、初期化を実施するか否かを設定することができる。よって、初期化指令が影響する範囲をより細かに設定することができる。
【００１５】
さらに、請求項５に記載の電子制御装置においては、請求項６に記載のように、初期化指令受信手段は、初期化指令として初期化範囲の広さに応じた数値情報を受信し、初期化実行手段は、予め各数値情報と初期化範囲とが対応付けられたデータベースを参照することによって、受信された数値情報に対応する初期範囲を特定し、この初期化範囲における初期化を行うように構成されていてもよい。
【００１６】
このような電子制御装置によれば、初期化範囲の広さに応じた数値情報を利用するので、プログラム構成を変更する際等、プログラムを解析する際に、初期化範囲を分かり易くすることができる。
【００１７】
また、請求項４〜請求項６の何れかに記載の電子制御装置においては、請求項７に記載の電子制御装置における基本プログラムを実行可能に構成されていてもよい。
ここで、請求項７に記載の基本プログラムは、複数の処理単位のうちのいずれかに対して予め設定されたタイミングでタイムスロットを割り当てることにより、これらの処理単位をＣＰＵに並行して実行させる。なお、処理単位にタイムスロットを割り当てるとは、例えば、ＣＰＵにタイムスロットが示す時間にわたって処理単位を実行させることであってもよい。また、処理単位には、外部からの入力に対し予め設定された時間内での応答が可能であるという性質であるリアルタイム性が要求されるリアルタイム処理単位と、リアルタイム性が要求されない非リアルタイム処理単位とが存在し、非リアルタイム処理単位は、いずれかのリアルタイム処理単位に対応付けられている。また、基本プログラムは、処理単位に対してタイムスロットを割り当てるタイミングを示すデータであるタイムスロットデータを有している。また、基本プログラムは、タイムスロットデータに基づき、リアルタイム処理単位にタイムスロットを割り当てる第一のステップを有している。
【００１８】
ここで、リアルタイム処理単位は、外部からの入力に対し予め設定された時間内に応答することが要求されるが、例えば、この外部からの入力が無い場合等には、リアルタイム処理単位は、タイムスロットを割り当てられてもこのタイムスロットが示す時間にわたって処理を継続する必要が無いといったことが想定される。つまり、タイムスロットが割り当てられたリアルタイム処理単位は、タイムスロットを使い切ることなく処理を終了するという場合が想定されるのである。
【００１９】
そこで、この基本プログラムは、第一のステップにて割り当てられたタイムスロットを使い切ることなくリアルタイム処理単位が終了した場合には、該リアルタイム処理単位に替えて、該リアルタイム処理単位に対応付けられている非リアルタイム処理単位に、該タイムスロットの残り時間を割り当てる第二のステップをさらに有している。
【００２０】
このような構成を有することにより、タイムスロットを使い切ることなくリアルタイム処理単位の実行を終了した場合に、余った時間を、非リアルタイム処理単位に割り当てることができる。したがって、この基本プログラムは、非リアルタイム処理単位により実現される処理の停滞を抑えつつ、リアルタイム処理単位と非リアルタイム処理単位とをＣＰＵに並行して実行させることができる。
【００２１】
なお、タイムスロットを使い切ることなくリアルタイム処理単位の実行を終了した場合に、次のようにして、余った時間を非リアルタイム処理単位に割り当ててもよい。
即ち、リアルタイム処理単位は、複数の非リアルタイム処理単位に対応付けられており、該リアルタイム処理単位に対応する非リアルタイム処理単位には、優先順位が設定されており、第二のステップにおいて、リアルタイム処理単位に対応する非リアルタイム処理単位のうち、優先順位の高い非リアルタイム処理単位から順にタイムスロットの残り時間を割り当ててもよい。
【００２２】
このような構成を有する場合であっても、非リアルタイム処理単位により実現される処理の停滞を抑えつつ、リアルタイム処理単位と非リアルタイム処理単位をＣＰＵに並行して実行させることができる。
【００２３】
また、既に述べたように、複数のＥＣＵを１つに統合するということが望まれているが、このような場合には、複数のＥＣＵの制御プログラムを１つに統合し、新たなプログラムを作成しなければならない。そこで、処理単位とは、次のようなソフトウェアであってもよい。
【００２４】
即ち、処理単位のうちの少なくとも１つは、プログラムが搭載される装置とは異なる他の装置の制御プログラムに基づく処理単位であるＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｐｒｏｇｒａｍの略）であってもよい。
【００２５】
こうすることにより、複数のＥＣＵの制御プログラムを１つに統合した場合に、リアルタイム性が要求されないＶＭの処理の停滞を抑えつつ、ＣＰＵに複数のＶＭを並行して実行させることができる。
【００２６】
また、処理単位をＶＭとした場合には、本プログラムを実行するＣＰＵの周辺デバイスに対し、次のようにして指示を行ってもよい。
即ち、ＶＭは、他の装置におけるＣＰＵの周辺デバイスであって、基本プログラムが搭載される装置におけるＣＰＵにおける周辺デバイスである自装置の周辺デバイスと同一の用途にて用いられる周辺デバイスである他の装置の周辺デバイスを制御するための処理を有しており、自装置の周辺デバイスには、他の装置の周辺デバイスとは異なる形式で指示を行う必要があってもよい。そして、基本プログラムは、それぞれのＶＭから、他の装置の周辺デバイスへの指示と同様の形式で、自装置の周辺デバイスに対しての指示を受け付ける第三のステップと、第三のステップにて受け付けた指示を、自装置の周辺デバイスに対応する形式に変換し、該自装置の周辺デバイスに対しての制御を行う第四のステップとをさらに有していてもよい。
【００２７】
このような構成を有することにより、ＶＭは、統合前のＥＣＵにおけるＣＰＵの周辺デバイスに対応する形式で、統合後のＥＣＵにおけるＣＰＵの周辺デバイスに対して指示を行うことができる。このため、統合前のＥＣＵにおける制御プログラムにおいてＣＰＵの周辺デバイスに対する指示を行う部位の構成を変更することなく、この制御プログラムに基づきＶＭを作成することができる。つまり、複数のＥＣＵの制御プログラムを１つに統合する際の変更規模の増加を抑えることができるのである。
【００２８】
また、ＶＭに対し、ＣＰＵの周辺デバイスから受け取ったデータを次のようにして提供してもよい。
即ち、基本プログラムは、自装置の周辺デバイスから提供されるデータを取得する第五のステップと、第五のステップにて自装置の周辺デバイスから取得したデータを、該自装置の周辺デバイスに対応する他の装置の周辺デバイスを制御する処理を有する前記ＶＭに対し、該他の装置の周辺デバイスに対応する形式で提供する第六のステップとをさらに有していてもよい。
【００２９】
このような構成を有することにより、ＶＭは、統合前のＥＣＵにおけるＣＰＵの周辺デバイスに対応する形式で、統合後のＥＣＵにおけるＣＰＵの周辺デバイスからデータを受け取ることができる。このため、統合前のＥＣＵにおける制御プログラムにおいてＣＰＵの周辺デバイスからデータを受け取る部位の構成を変更することなく、この制御プログラムに基づきＶＭを作成することができる。つまり、複数のＥＣＵの制御プログラムを１つに統合する際の変更規模の増加を抑えることができるのである。
【００３０】
また、統合前のＥＣＵにおける制御プログラムには、割込み処理が用いられている場合がある。例えば、処理単位が、このような制御プログラムに基づくＶＭである場合には、プログラムは、次のようなステップをさらに有していてもよい。
【００３１】
即ち、処理単位として、所定の割込みに対応する割込み処理を有している割込み対応処理単位が存在し、基本プログラムは、割込み対応処理単位に対し、タイムスロット、または、タイムスロットの残り時間が割り当てられている間に、該割込み対応処理単位に対応する所定の割込みが発生すると、該所定の割込みに対応する割込み処理を実行する第七のステップをさらに有していてもよい。
【００３２】
このような構成を有することにより、処理単位が有している割込み処理を、確実に実行することができる。したがって、例えば、統合前のＥＣＵにおける制御プログラムに割込み処理が用いられている場合であっても、この割込み処理が流用されたＶＭを処理単位とすることができる。このため、複数のＥＣＵの制御プログラムを１つに統合する際の変更規模の増加を抑えることができる。
【００３３】
また、割込み処理は、割込み要求が発生した後、速やかに実行されるべきである。
そこで、所定の割込みが発生した後、該所定の割込みに対応する割込み対応処理単位に対してタイムスロット、または、タイムスロットの残り時間が割り当てられると、該所定の割込みに対応する割込み処理を実行する第八のステップをさらに有する。
【００３４】
こうすることにより、先に発生した割込み要求に対応する割込み処理を速やかに実行することができる。
また、次のようにして割込み処理が実行されてもよい。
【００３５】
即ち、第一のステップにおいてタイムスロットが割り当てられるリアルタイム処理単位をメインの処理単位とすると共に、第二のステップにおいて、該第一のステップにてメインの処理単位に割り当てられたタイムスロットの残り時間が割り当てられる非リアルタイム処理単位をサブの処理単位としてもよい。そして、基本プログラムは、メインの処理単位が割込み対応処理単位である場合において、サブの処理単位にタイムスロットの残り時間が割り当てられている間に、該メインの処理単位に対応する所定の割込みが発生すると、第七のステップに先立ち、該メインの処理単位である割込み対応処理単位が有する割込み処理を実行する第九のステップをさらに有していてもよい。
【００３６】
こうすることにより、サブの処理単位にタイムスロットが割り当てられている間に、対応するメインの処理単位についての割込み要求が発生した場合には、優先的にこのメインの処理単位における対応する割込み処理を実行することができる。したがって、メインの処理単位を、サブの処理単位に対してより優先的に実行することができ、メインの処理単位に要求されるリアルタイム性を、より確実なものとすることができる。
【図面の簡単な説明】
【００３７】
【図１】統合ＥＣＵ、および、統合制御プログラムの構成を示すブロック図である。
【図２】仮想デバイス等の構成を示すブロック図である。
【図３】ＣＡＮを介してのデータ送信が行なわれる際の仮想デバイス等の作動についてのシーケンス図である。
【図４】ＣＡＮを介してのデータ受信が行なわれる際の仮想デバイス等の作動についてのシーケンス図である。
【図５】第一のＣＡＮドライバがリセット指令を送信する際の作動を示すシーケンス図である。
【図６】リセットレベルとリセット対象との関係を示す表（ａ）およびデバイス管理テーブル（ｂ）である。
【図７】リセット処理を示すフローチャートである。
【図８】ＶＭスケジューリングテーブル、および、スケジュールパラメータテーブルを示す表である。
【図９】タイムスロット管理テーブルを示す表である。
【図１０】タイムスロット割当処理のフローチャートである。
【図１１】サブのタスク開始処理のフローチャートである。
【図１２】割込み発生処理のフローチャートである。
【図１３】タイムスロット１〜３の利用状況についての説明図である。
【図１４】割込み処理の実行状況についての説明図である。
【発明を実施するための形態】
【００３８】
以下に本発明にかかる実施の形態を図面と共に説明する。
［構成の説明］
（１）統合ＥＣＵの構成について
図１（ａ）は、本実施形態における統合ＥＣＵ１０（ＥＣＵは電子制御装置を示す。）の構成を示すブロック図である。この統合ＥＣＵ１０は、第一のＥＣＵと、第二のＥＣＵと、第三のＥＣＵという三つのＥＣＵの機能が統合されたものである。また、統合ＥＣＵ１０は、ＣＰＵ１１と、ＲＯＭ１２と、ＲＡＭ１３と、ＣＡＮコントローラ１４とを有しており、これらの部位は内部バス１５で接続されている。なお、統合ＥＣＵ１０は、これらの部位以外にも、第一〜第三のＥＣＵが備えている部位に対応する部位を有している。また、ＣＡＮは、Controller Area Networkの略である。
【００３９】
ＣＰＵ１１は、ＲＯＭ１２に記憶されているプログラムや、ＲＡＭ１３にロードされたプログラムに従い統合ＥＣＵ１０の制御や各種演算を行う部位である。なお、統合前の三つのＥＣＵにそれぞれ搭載されていたＣＰＵで実行されていた全ての処理は、このＣＰＵ１１で実行される。
【００４０】
ＲＯＭ１２は、各種のプログラムやデータが記憶されている周知のＲＯＭである。ＲＡＭ１３は、ＣＰＵ１１から直接アクセスされるメインメモリ等として利用される記憶装置である。このＲＡＭ１３には、ＲＯＭ１２等から、各種プログラムやデータがロードされる。
【００４１】
ＣＡＮコントローラ１４は、ＣＡＮ２０を介して他のＥＣＵと通信を行うための部位である。
（２）統合制御プログラムの構成について
図１（ｂ）は、統合ＥＣＵ１０に搭載されている統合制御プログラム１００の構成を示すブロック図である。統合制御プログラム１００は、ＲＯＭ１２に記憶されている。統合制御プログラム１００は、保護機能付きＲＴＯＳ１１０と、第一のＶＭ１２０と、第二のＶＭ１３０と、第三のＶＭ１４０と、仮想デバイス１５０とを有している。また、各ＶＭ１２０，１３０，１４０および仮想デバイス１５０に対応して第一のＰＡＬ１２４、第二のＰＡＬ１３４、第三のＰＡＬ１４４、仮想デバイスのＰＡＬ１５４を備えている。なお、ＶＭとは、Virtual Machine programの略であり、ＰＡＬは、Physical Abstraction Layer（物理仮想化層）の略である。
【００４２】
保護機能付きＲＴＯＳ１１０は、第一〜第三のＶＭや、仮想デバイス１５０といったタスクのスケジューリングを行なうプログラムである。このスケジューリングは、スケジューラ１１１により行なわれる。なお、スケジューリングの詳細に関しては後述する。また、保護機能付きＲＴＯＳ１１０は、各タスクに対応するメモリ領域や、自身に対応するメモリ領域の保護を行なう。
【００４３】
また、保護機能付きＲＴＯＳ１１０は、リセット部１１２としての機能を有している。リセット部１１２の機能としては、各ＶＭ１２０，１３０，１４０から受けたリセット範囲の指定に応じて、リセットするデバイスを特定し、リセット対象となるデバイスに対してリセット指示を送信する処理を実施する。
【００４４】
また、第一のＶＭ１２０，第二のＶＭ１３０，第三のＶＭ１４０は、保護機能付きＲＴＯＳ１１０によるスケジューリングの対象となるタスクである。これらのＶＭは、それぞれ、統合前のＥＣＵである第一のＥＣＵ，第二のＥＣＵ，第三のＥＣＵの制御プログラムの一部を変更して作成されたプログラムである。
【００４５】
なお、第一のＥＣＵおよび第二のＥＣＵは、外部からの入力に対して所定の時間内に応答を行うというリアルタイム性が要求されるＥＣＵであるため、第一のＶＭ１２０および第二のＶＭ１３０により実現される処理には、リアルタイム性が要求される。また、これらのＥＣＵでは、ＡＵＴＯＳＡＲやＯＳＥＫ（登録商標）に準拠したリアルタイムＯＳがそれぞれ用いられている。このため、第一のＶＭ１２０，第二のＶＭ１３０は、それぞれ、ＡＵＴＯＳＡＲ，ＯＳＥＫに準拠したリアルタイムＯＳを有している。
【００４６】
なお、第一のＶＭ１２０に用いられているリアルタイムＯＳをＡＵＴＯＳＡＲ１２１、第二のＶＭ１３０に用いられているリアルタイムＯＳをＯＳＥＫ１３１と記載する。一方、第三のＥＣＵはリアルタイム性が要求されないＥＣＵであり、第三のＶＭ１４０により実現される処理にはリアルタイム性は要求されない。また、このＥＣＵでは、ＯＳとしてＬｉｎｕｘが用いられており、第三のＶＭ１４０はＬｉｎｕｘ１４１を有している。
【００４７】
また、第一〜第三のＶＭでは、統合前のＥＣＵのプログラムで用いられていた割込みハンドラに対応する割込み処理が用いられており、保護機能付きＲＴＯＳ１１０は、周辺デバイスから割込み要求が発生すると、対応する上記割込み処理を実行する。
【００４８】
また、仮想デバイス１５０は、第一〜第三のＶＭと、統合ＥＣＵ１０におけるＣＰＵ１１の周辺デバイスへとのＩ／Ｆとなるタスクである。
ところで、各ＰＡＬ１２４，１３４，１４４，１５４は、各ＶＭ１２０，１３０，１４０や仮想デバイス１５０（これらを「特定プログラム」ともいう。）に対応してそれぞれ設けられており、それぞれ対応する特定プログラムが実行された際に該特定プログラムによって入出力されるパラメータを、コンピュータが他のプログラムとの間で中継するときに実行する中継プログラムとして機能する。
【００４９】
また各ＰＡＬ１２４，１３４，１４４，１５４は、特定プログラムにて入出力されるパラメータのうちの特定プログラムにて利用されるパラメータ（以下、「内部パラメータ」という。）、および内部パラメータを他のプログラムにて利用する際のパラメータ（以下、「外部パラメータ」という。）を予め対応付けた対応リストを参照しつつ、内部パラメータと外部パラメータとを相互に書き換える機能を有する。
【００５０】
これらの機能の詳細については後述する。
［作動の説明］
統合制御プログラム１００は、第一〜第三のＥＣＵの機能を、統合ＥＣＵ１０にて実現するためのプログラムである。統合制御プログラム１００では、保護機能付きＲＴＯＳ１１０が第一〜第三のＶＭのスケジューリングを行い、第一〜第三のＶＭをＣＰＵ１１に並行して実行させることにより、第一〜第三のＥＣＵの機能を実現している。
【００５１】
（１−１）仮想デバイスについて
ここでは、まず、スケジューラ１１１におけるタスクの１つである仮想デバイス１５０について説明する。上述したように、この仮想デバイス１５０は、第一〜第三のＶＭと、統合ＥＣＵ１０におけるＣＰＵ１１の周辺デバイスへとのＩ／Ｆとなる部位である。また、この仮想デバイス１５０は、後述する図９に記載のタイムスロット管理テーブルでは、タイムスロット９に対応するメインのタスクとして設定されている。ここでは、一例として、仮想デバイス１５０におけるＣＡＮコントローラ１４に対応する機能について説明する。
【００５２】
第一のＥＣＵおよび第二のＥＣＵはＣＡＮによる通信機能を有している。これらのＥＣＵのプログラムは、ＣＡＮによる通信を制御するためのＣＡＮドライバを有しており、このＣＡＮドライバでは、統合前のＥＣＵにおけるＣＡＮコントローラを制御するためのレジスタへのＩＯアクセスが行われる。第一のＶＭ１２０，第二のＶＭ１３０は、統合前のプログラムにおけるＣＡＮドライバを流用した第一のＣＡＮドライバ１２２，第二のＣＡＮドライバ１３２をそれぞれ有している。仮想デバイス１５０は、第一のＣＡＮドライバ１２２や第二のＣＡＮドライバ１３２からＣＡＮコントローラ１４への指令を受け付け、このＣＡＮコントローラ１４を制御する機能を有している。
【００５３】
仮想デバイス１５０の構成について図２に示すブロック図を用いて説明する。仮想デバイス１５０は、第一の仮想ＣＡＮドライバ１５１と、第二の仮想ＣＡＮドライバ１５２と、デバイス調停機構１５３とを有している。
【００５４】
第一の仮想ＣＡＮドライバ１５１は、第一のＶＭ１２０がＣＡＮ２０による他のＥＣＵとの通信を行う際に、第一のＰＡＬ１２４および仮想デバイスのＰＡＬ１５４を介して第一のＣＡＮドライバ１２２からＣＡＮコントローラ１４への指令を受け付ける部位である。
【００５５】
また、第二の仮想ＣＡＮドライバ１５２は、第二のＶＭ１３０がＣＡＮ２０による他のＥＣＵとの通信を行う際に、第二のＰＡＬ１３４および仮想デバイスのＰＡＬ１５４を介して第二のＣＡＮドライバ１３２からＣＡＮコントローラ１４への指令を受け付ける部位である。
【００５６】
また、デバイス調停機構１５３は、第一のＣＡＮドライバ１２２や第二のＣＡＮドライバ１３２からの指令に従い、ＣＡＮコントローラ１４を制御する部位である。
（１−２）データ送信処理について
次に、第一のＶＭ１２０または第二のＶＭ１３０が、ＣＡＮ２０を介して接続されている他のＥＣＵにデータを送信する場合の作動について、各ＰＡＬ１２４，１３４，１５４の作動とともに、図３に記載のシーケンス図を用いて説明する。
【００５７】
第一のＶＭ１２０では、ＣＡＮ２０を介してデータ送信を行う場合には、第一のＣＡＮドライバ１２２がコールされる（Ｓ１０５）。
第一のＣＡＮドライバ１２２は、第一のＥＣＵにおけるＣＰＵの周辺デバイスであるＣＡＮコントローラに対応する形式で、ＣＡＮ２０を介しての送信要求と送信データの設定を行なう。このとき、送信要求等は、第一のＣＡＮドライバが存在する番地（アドレス）を指定して送信されるが、システムの構成変更（例えばＶＭの追加等）が実施されると、その番地が変更になることがある。
【００５８】
この際、第一のＣＡＮドライバ１２２（第一のＶＭ１２０）に関するプログラムを書き換えなくてもよいように、ＰＡＬを介して送信要求等を送信する。即ち、第一のＰＡＬ１２４は、第一のＣＡＮドライバ１２２からの送信要求等の送信先となる番地（内部パラメータ）をスケジューラ１１１やリセット部１１２を含む全体構成に対応した番地（外部パラメータ）に書き換える（Ｓ１１０）。
【００５９】
そして、仮想デバイスのＰＡＬ１５４は、第一のＰＡＬ１２４によって書き換えられた番地（外部パラメータ）を、さらに、仮想デバイス１５０に対応した番地（内部パラメータ）に書き換える（Ｓ１１５）。
【００６０】
そして、仮想デバイスのＰＡＬ１５４から第一の仮想ＣＡＮドライバ１５１がデータを受けることによって、仮想デバイス１５０における第一の仮想ＣＡＮドライバ１５１が第一のＣＡＮドライバ１２２からサブルーチンとしてコールされることになる（Ｓ１２０）。なお、各ＰＡＬにおける内部パラメータと外部パラメータとの関係は、予めＲＯＭ１２またはＲＡＭ１３に記録されている（対応リスト）。
【００６１】
このようにして、第一の仮想ＣＡＮドライバ１５１が、第一のＥＣＵにおけるＣＡＮコントローラに対応する形式でＣＡＮ２０を介しての送信要求等を受け付ける。この結果、第一のＥＣＵにおけるプログラムを流用して第一のＣＡＮドライバ１２２とする際の変更規模を抑えることが可能となる。
【００６２】
また、このとき、第一の仮想ＣＡＮドライバ１５１は、例えば、第一のＥＣＵにおけるＣＡＮコントローラと同様にして、第一のＣＡＮドライバ１２２に対して応答を行ってもよい。こうすることにより、第一のＣＡＮドライバ１２２は、第一のＥＣＵと同一の形式でＣＡＮ２０を介してのデータ送信を行うことが可能となる。したがって、第一のＥＣＵにおけるプログラムを流用して第一のＣＡＮドライバ１２２とする際の変更規模をより抑えることが可能となる。
【００６３】
そして、第一の仮想ＣＡＮドライバ１５１では、デバイス調停機構１５３に属するサブルーチンがコールされ（Ｓ１２５）、このサブルーチンにて、第一のＣＡＮドライバ１２２から受け付けた送信データがバッファリングされる。
【００６４】
第二のＶＭ１３０においても、同様にしてＣＡＮ２０を介してのデータ送信要求が行なわれる。第二のＶＭ１３０では、ＣＡＮ２０を介してのデータ送信を行う場合には、第二のＣＡＮドライバ１３２がコールされる（Ｓ１３５）。
【００６５】
そして、第二のＰＡＬ１３４は、第二のＣＡＮドライバ１３２からの送信要求等の送信先となる番地（内部パラメータ）をスケジューラ１１１やリセット部１１２を含む全体構成に対応した番地（外部パラメータ）に書き換える（Ｓ１４０）。
【００６６】
そして、仮想デバイスのＰＡＬ１５４は、第一のＰＡＬ１２４によって書き換えられた番地（外部パラメータ）を、さらに、仮想デバイス１５０に対応した番地（内部パラメータ）に書き換える（Ｓ１４５）。
【００６７】
そして、仮想デバイスのＰＡＬ１５４から第二の仮想ＣＡＮドライバ１５２がデータを受けることによって、仮想デバイス１５０における第二の仮想ＣＡＮドライバ１５２が第二のＣＡＮドライバ１３２からサブルーチンとしてコールされることになる（Ｓ１５０）。
【００６８】
このようにして、第二の仮想ＣＡＮドライバ１５２が、第二のＥＣＵにおけるＣＡＮコントローラに対応する形式でＣＡＮ２０を介しての送信要求等を受け付ける。なお、このとき、第二の仮想ＣＡＮドライバ１５２は、例えば、第二のＥＣＵにおけるＣＡＮコントローラと同様にして、第二のＣＡＮドライバ１３２に対して応答を行ってもよい。
【００６９】
そして、第二の仮想ＣＡＮドライバ１５２では、デバイス調停機構１５３に属するサブルーチンがコールされ（Ｓ１５５）、このサブルーチンにて、第二のＣＡＮドライバ１３２から受け付けた送信データがバッファリングされる。
【００７０】
次に、所定のタイムスロット（ここでは９）が仮想デバイス１５０に割り当てられ、仮想デバイス１５０の実行が開始されると、デバイス調停機構に属するサブルーチンがコールされる（Ｓ１６５）。このサブルーチンは、ＣＡＮコントローラ１４に対し、このＣＡＮコントローラ１４に対応する形式で、第一のＣＡＮドライバ１２２等から受け取った送信データの送信を指示する。具体的には、ＣＡＮコントローラ１４にＩＯアクセスを行い（Ｓ１７０）、バッファリングされている送信データをＣＡＮコントローラ１４の送信バッファにセットし、送信を指示する。
【００７１】
（１−３）データ受信時の作動について
次に、統合ＥＣＵ１０がＣＡＮ２０を介して接続されている他のＥＣＵからデータを受信する場合の仮想デバイス１５０等の作動について、図４の上図に記載のシーケンス図を用いて説明する。
【００７２】
統合ＥＣＵ１０がＣＡＮ２０を介して他のＥＣＵからデータを受信すると、ＣＡＮコントローラ１４は、ＣＰＵ１１に対して割込み要求を通知し（Ｓ２０５）、この割込み要求に対応する割込みハンドラ（以後、ＣＡＮ受信割込みハンドラとも記載）がコールされる（Ｓ２１０）。なお、このＣＡＮ受信割込みハンドラは、仮想デバイス１５０におけるデバイス調停機構１５３に属するものである。
【００７３】
このＣＡＮ受信割込みハンドラでは、ＣＡＮコントローラ１４から受信データが取得される。そして、受信データが第一のＶＭ１２０宛のデータである場合には、前述のように、仮想デバイスのＰＡＬ１５４、第一のＰＡＬ１２４を介して（Ｓ２１５，Ｓ２２０）、第一のＣＡＮドライバ１２２に属するサブルーチンがコールされる（Ｓ２３０）。このサブルーチンでは、第一のＶＭ１２０に対してのＣＡＮ受信割込み要求フラグがセットされ、第一のＥＣＵにおけるＣＡＮコントローラと同様の形式で、第一のＶＭ１２０に対してのデータ受信の通知や、受信データのバッファリングが行なわれる。また、受信したデータが第二のＶＭ１３０宛のデータである場合には、仮想デバイスのＰＡＬ１５４、第二のＰＡＬ１３４を介して（Ｓ２４５，Ｓ２５０）、第二のＣＡＮドライバ１３２に属するサブルーチンがコールされる（Ｓ２６０）。このサブルーチンでも、第二のＶＭ１３０に対してのＣＡＮ受信割込み要求フラグがセットされ、第二のＥＣＵにおけるＣＡＮコントローラと同様の形式で、第二のＶＭ１３０に対してのデータ受信の通知や、受信データのバッファリングが行なわれる。
【００７４】
なお、上記の受信時の作動においては、受信データを受け入れるＰＡＬ（ここでは第一のＰＡＬ１２４および第二のＰＡＬ１３４）が中継するデータのバッファリングを行うようにしてもよい。即ち、図４の下図に示すように、第一のＰＡＬ１２４および第二のＰＡＬ１３４は、受信したデータをバッファリングし（Ｓ２２５，Ｓ２５５）、第一のＣＡＮドライバ１２２や第二のＣＡＮドライバ１３２の処理が実施される任意のタイミングで、バッファリングしたデータを取得させるようにしてもよい（Ｓ２２５，Ｓ２６５）。
【００７５】
（１−４）リセット時の作動について
ここで、各ＣＡＮドライバ１２２，１３２等は、例えばリセット指令等の各種コマンドを仮想デバイス１５０等の他のプログラムや、ＣＡＮコントローラ１４等の他のデバイスに対して送る機能も有する。特に、第一のＣＡＮドライバ１２２が統合ＥＣＵ１０の各部に対してリセット指令を送信する際の作動を示すシーケンス図を、図５に示す。なお、本処理においては、第一のＶＭ１２０の実行中に行われる処理である。
【００７６】
まず、第一のＣＡＮドライバ１２２は、リセットすべきと判断すると、リセットの種別を指定してリセット指令（内部パラメータ）を出力する（Ｓ３０５）。なお、第一のＣＡＮドライバ１２２は、ＣＡＮコントローラの通信状態や第一のＰＡＬ１２４を介した内部の通信状態等を検出し、この検出結果に基づいてリセットする範囲を選択する。
【００７７】
特に、リセットする範囲としては、ソフトリセットまたは、ソフトリセットよりも広範囲をリセットする物理リセットを選択する。
第一のＰＡＬ１２４は、第一のＣＡＮドライバ１２２によって指定されたリセットする範囲の指令を、リセット部１１２や他のＰＡＬ１３４，１５４等が認識できる共通のパラメータに書き換えて出力する（Ｓ３１０）。具体的には、第一のＰＡＬ１２４は、リセットする範囲の指令がソフトリセットであれば、例えば、リセットレベル２を指定し、リセットする範囲の指令が物理リセットであれば、例えば、リセットレベル２よりも広範囲をリセットする旨のリセットレベル０を指定する。
【００７８】
なお、第二のＣＡＮドライバ１３２等においてもリセットの種別を指定してリセット指令（内部パラメータ）を出力することができる。この構成において、例えば第二のＰＡＬ１３４は、第二のＣＡＮドライバ１３２がソフトリセットを指定していれば、例えば、リセットレベル１を指定し、第二のＣＡＮドライバ１３２が物理リセットを指定していれば、例えば、リセットレベル０を指定するようにすればよい。
【００７９】
そして、リセット部１１２は、リセットレベルを受けて、後述するリセット処理を実行し、リセット対象となる対象物に対して順次リセット指令を送信する（Ｓ３１５）。ここで、リセットレベルに応じたリセット対象については、図６（ａ）に示すように、予め対応付けてＲＯＭ１２に格納されている。
【００８０】
具体的には、リセットレベルが０の場合には、対象となる仮想ＣＡＮドライバ１５１，１５２（ＶＤＥ）、対象となるＶＭのＣＰＵ（特にＣＰＵ内臓のインターバルタイマ等のタイマ）、ＣＰＵのキャッシュメモリ、ＣＡＮコントローラ１４（物理デバイス）の全てをリセットする。また、リセットレベルが１の場合には、ＶＤＥ、ＣＰＵ、ＣＰＵのキャッシュメモリをリセットする。
【００８１】
さらに、リセットレベルが２の場合には、ＶＤＥのみを初期化する。なお、リセットレベルが３以上はオプションであって、任意に初期化範囲を設定することができる。
また、各ＶＭと、各ＶＭに対応する仮想ＣＡＮドライバとの関係については、図６（ｂ）に示すデバイス管理テーブルとしてＲＯＭ１２に格納されている。具体的には、第一のＶＭ１２０（ＶＭ１）と第一の仮想ＣＡＮドライバ１５１（ＶＤＥ１）等とが対応し、第二のＶＭ１３０（ＶＭ２）と第二の仮想ＣＡＮドライバ１５２（ＶＤＥ２）等とが対応する。
【００８２】
また、初期化処理の際には、例えば、指令送信元のＶＭのみをリセット対象として、このＶＭに対応する機能のみを初期化範囲として設定することができる。つまり、統合ＥＣＵ１０においても、統合前のＥＣＵを初期化の単位とすることができるようにしている。
【００８３】
続いて、仮想デバイスのＰＡＬ１５４は、リセット指令の宛先を仮想デバイス１５０に対応した宛先に書き換え仮想デバイス１５０（デバイス調停機構１５３）に送る（Ｓ３２０）。その後、デバイス調停機構１５３においてリセット対象をリセットする処理が実施される（Ｓ３２５）。
【００８４】
なお、Ｓ３２０の処理においては、図４の下図のＳ２２５等に示すように、バッファリングするのみとし、デバイス調停機構１５３がバッファリングされたデータを取得するようにしてもよい。
【００８５】
（１−５）リセット処理について
次に、ＣＰＵ１１がリセット部１１２としての機能を実行する際の処理について図７を用いて説明する。図７はＣＰＵ１１が実行するリセット処理を示すフローチャートである。
【００８６】
リセット処理は、リセット指令が入力されると開始される処理であって、リセット指令を出力したＶＭの実行中に行われる処理である。具体的には図７に示すように、まず、リセットレベルを判定する（Ｓ４０５）。リセットレベルが０であれば（Ｓ４０５：０）、デバイス管理テーブルからリセット対象となるＶＭ（リセット指令送信元のＶＭ）に対応する仮想ＣＡＮドライバを特定し、この仮想ＣＡＮドライバに対してリセット指令を送信する（Ｓ４１０）。続いて、リセット対象となるＶＭのＣＰＵに対して、リセット指令を送信する（Ｓ４２０）。さらに、リセット対象となるＣＰＵのキャッシュメモリに対して、リセット指令を送信する（Ｓ４３０）。
【００８７】
そして、リセット対象となる物理デバイス（ＣＡＮコントローラ１４）に対して、リセット指令を送信する。この処理が終了するとリセット処理を終了する。
次に、リセットレベルが１であれば（Ｓ４０５：１）、Ｓ４３５〜Ｓ４４５の処理を実施する。これらの処理においては、前述のＳ４１０〜Ｓ４２５と同様の処理が実施される。
【００８８】
また、リセットレベルが２であれば（Ｓ４０５：２）、Ｓ４５５の処理を実施する。これらの処理においては、前述のＳ４１０と同様の処理が実施される。
（２）保護機能付きＲＴＯＳ１１０の作動について
次に、保護機能付きＲＴＯＳ１１０の作動について説明する。
【００８９】
（２−１）タイムスロットについて
保護機能付きＲＴＯＳ１１０のスケジューラ１１１は、第一〜第三のＶＭと、仮想デバイス１５０とをタスクとしており、これらのタスクに対し、タイムスロット１〜１０を順次割り当てる。また、タイムスロット１０の割り当てが行なわれた後は、再度、タイムスロット１〜１０の割り当てが順次行なわれる。そして、タスクにいずれかのタイムスロットが割り当てられると、ＣＰＵ１１は、このタイムスロット分の処理時間にわたって、このタスクを実行する。なお、本実施形態では、タイムスロット１〜１０は全て１００μｓの長さであるが、各タイムスロットの長さは、この時間に限定されるものではない。また、例えば、割り当てるタスクに応じてタイムスロットの長さを変更してもよいし、条件に応じて異なる長さのタイムスロットが用いられてもよい。また、タイムスロットの長さとして、例えば、１００μｓ〜１２０μｓといった具合に、一定の時間幅を持った時間が設定されていてもよい。そして、例えば、所定の条件やタスクの状態等に応じて、この時間幅の範囲内でＣＰＵの実行時間を変動させてもよい。
【００９０】
なお、タスクにタイムスロットを割り当てるということを、タスクに対し、タイムスロットが示す時間にわたってＣＰＵの実行権を付与すると言い換えることもできるということを、念のため付言しておく。
【００９１】
（２―２）第一〜第三のＶＭのスケジューリングについて
次に、第一〜第三のＶＭのスケジューリングについて説明する。図８（ａ）は、タイムスロット１〜１０をどのＶＭに割り当てるかを示すＶＭスケジューリングテーブルである。また、図８（ｂ）は、第一〜第三のＶＭのサービス周期等を示すスケジューリングパラメータテーブルである。
【００９２】
ＶＭスケジューリングテーブルは、図８（ａ）に示すように、タイムスロット１は第一のＶＭ１２０に、タイムスロット２は第二のＶＭ１３０に、タイムスロット３は第三のＶＭ１４０に、タイムスロット４は第三のＶＭ１４０に、タイムスロット５は第三のＶＭ１４０に、タイムスロット６は第一のＶＭ１２０に、タイムスロット７は第二のＶＭ１３０に、タイムスロット８は第三のＶＭ１４０に、それぞれ割り当てられることを示している。
【００９３】
また、タイムスロット９，１０に関しては、第一〜第三のＶＭに割り当てられないことを示している。スケジューラ１１１は、ＶＭスケジューリングテーブルが示すようにタイムスロット１〜１０を第一〜第三のＶＭに割り当て、ＣＰＵ１１に、第一〜第三のＶＭを並行して実行させる。
【００９４】
また、スケジューリングパラメータテーブルは、図８（ｂ）に示すように、「ＶＭ」，「最短サービス周期」，「最長連続走行時間」，「サービス周期許容誤差」という項目を有している。
【００９５】
なお、「ＶＭ」は、第一〜第三のＶＭのうちのいずれかを示す項目である。また、「最短サービス周期」は、ＶＭに対してタイムスロットが割り当てられる時間間隔を示している。また、「最長連続走行時間」は、ＶＭの最長の連続実行時間を示している。また、「サービス周期許容誤差」とは、「最短サービス周期」の誤差として許容される時間を示している。
【００９６】
保護機能付きＲＴＯＳ１１０は、スケジューラ１１１による第一〜第三のＶＭについてのスケジューリングについて、スケジューリングパラメータテーブルに基づき異常判定を行うという機能を有している。この機能について具体的に説明する。保護機能付きＲＴＯＳ１１０は、各ＶＭについて、対応する「最短サービス周期」が示す時間に「サービス周期許容誤差」が示す時間を加えた時間を閾値とする。そして、リアルタイム性が要求されるＶＭに関して、このＶＭにタイムスロットが割り当てられた後、上記閾値に相当する時間が経過しても新たにタイムスロットが割り当てられない場合には、異常が発生したものとみなす。また、保護機能付きＲＴＯＳ１１０は、各ＶＭについて、タイムスロットが割り当てられた後、対応する「最長連続走行時間」を経過した後もＣＰＵ１１による実行が継続されている場合には、異常が発生したものとみなす。
【００９７】
（２−３）タスクのスケジューリングについて
スケジューラ１１１によるタスクのスケジューリングについて説明する。上述したように、タイムスロット１〜１０は、順次、第一〜第三のＶＭのいずれかに割り当てられる。しかし、仮想デバイス１５０に関しても、処理時間を確保する必要があり、仮想デバイス１５０に対してもタイムスロットを割り当てることができる。また、タイムスロットを割り当てられた第一のＶＭ１２０または第二のＶＭ１３０は、所定の条件が成立すると、自発的に処理を終了する。このため、第一のＶＭ１２０または第二のＶＭ１３０に関しては、割り当てられたタイムスロットを全て使い切ることなく、処理が終了してしまう場合がある。このようなケースを想定して、タイムスロット１〜１０に対し、メインのタスクとサブのタスクとを対応付けておくことができる。そして、スケジューラ１１１は、メインのタスクがタイムスロットを使い切ることなく終了した場合には、サブのタスクに対しタイムスロットの残り時間を割り当てるのである。
【００９８】
なお、図８（ａ）に示すＶＭスケジューリングテーブルは、タイムスロット１〜１０に対し、メインのタスクとして登録されているＶＭを示している。
（３−１）タイムスロット管理テーブルについて
図９は、タイムスロット１〜１０に対応付けられているメインのタスクとサブのタスクを示すタイムスロット管理テーブルの一例である。タイムスロット管理テーブルは、タイムスロット１，６には、メインのタスクとして第一のＶＭ１２０が、サブのタスクとして第三のＶＭ１４０が対応付けられていることを示している。
【００９９】
また、タイムスロット２，７には、メインのタスクとして第二のＶＭ１３０が、サブのタスクとして第三のＶＭ１４０が対応付けられていることを示している。また、タイムスロット３〜５、８には、メインのタスクとして第三のＶＭ１４０が対応付けられており、サブのタスクに関しては対応付けがなされていないことを示している。
【０１００】
また、タイムスロット９には、メインのタスクとして仮想デバイス１５０が対応付けられており、サブのタスクに関しては対応付けがなされていないことを示している。また、タイムスロット１０には、メインのタスクおよびサブのタスクに関して、対応付けがなされていないことを示している。スケジューラ１１１は、タイムスロット管理テーブルに基づき、各タスクのスケジューリングを行なう。
【０１０１】
（３−２）タイムスロット割当処理について
スケジューラ１１１によるタスクのスケジューリングについて、さらに詳しく説明する。スケジューラ１１１は、各タイムスロットに相当する時間（１００μｓ）が経過する度に、タイムスロット割当処理を実行する。ここでは、タイムスロット割当処理について、図１０に記載のフローチャートを用いて説明する。
【０１０２】
Ｓ５０５では、スケジューラ１１１は、ＣＰＵの実行権が付与されているタスク、つまり、作動中のタスクの有無についてチェックし、作動中のタスクが有る場合には（Ｓ５０５：ＹＥＳ）、このタスクを停止させる（Ｓ５１０）。
【０１０３】
続いて、スケジューラ１１１は、タイムスロット管理テーブルに基づき、タスクへの割り当てを行なうタイムスロットを特定する（Ｓ５１５）。なお、スケジューラ１１１は、番号の若いタイムスロットから順に対応するタスクへの割り当てを行い、タイムスロット１０についての割り当てを行なった後は、再度、タイムスロット１から順に割り当てを行なう。
【０１０４】
そして、スケジューラ１１１は、タイムスロット管理テーブルに基づき、特定したタイムスロットを割り当てるメインのタスクの有無を判定する（Ｓ５２０）。そして、タイムスロット１〜９のように、タイムスロットを割り当てるメインのタスクが有る場合には（Ｓ５２０：ＹＥＳ）、スケジューラ１１１は、このメインのタスクにタイムスロットを割り当てる（Ｓ５２５）。また、タイムスロット１０のように、タイムスロットを割り当てるメインのタスクが無い場合には（Ｓ５２０：ＮＯ）、タイムスロットの割り当てを行うことなく本処理を終了する。
【０１０５】
続いて、スケジューラ１１１は、タイムスロットを割り当てたメインのタスクがＶＭである場合（Ｓ５３０：ＹＥＳ）、このＶＭに対応する割込み要求フラグがセットされているか否かを判定する（Ｓ５３５）。そして、このＶＭに対応する割込み要求フラグがセットされている場合（Ｓ５３５：ＹＥＳ）、スケジューラ１１１は、ＣＰＵ１１に、このＶＭにおける、この割込み要求フラグに対応する割込み処理を実行させる（Ｓ５４０）。そして、この割込み処理の実行が終了すると、スケジューラ１１１は、上記割込み要求フラグをクリアし、本処理を終了する。そして、以後、タイムスロットが割り当てられたＶＭにおける、割込み処理以外の他の処理が実行される。
【０１０６】
また、タイムスロットを割り当てたメインのタスクがＶＭでない場合や（Ｓ５３０：ＮＯ）、このＶＭに対応する割込み要求フラグがセットされていない場合（Ｓ５３５：ＮＯ）には、スケジューラ１１１は、本処理を終了する。そして、以後、タイムスロットが割り当てられたタスクが実行される。
【０１０７】
なお、割込み処理とは、ＶＭに対応する統合前のＥＣＵの制御プログラムにて用いられていた割込みハンドラに相当するサブルーチンであり、周辺デバイスからの割込み要求に応じてＣＰＵ１１から直接コールされる割込みハンドラとは異なる処理であることを念のため付言しておく。
【０１０８】
（３−３）サブのタスク開始処理について
また、上述したように、第一のＶＭ１２０および第二のＶＭ１３０は、自発的に終了する場合があるが、タイムスロットを割り当てられたメインのタスクが自発的に終了すると、スケジューラ１１１は、サブのタスク開始処理を実行する。ここでは、サブのタスク開始処理について、図１１に記載のフローチャートを用いて説明する。
【０１０９】
Ｓ６０５では、スケジューラ１１１は、タイムスロット管理テーブルに基づき、終了し
たメインのタスクに対応するタイムスロットに、サブのタスクが登録されているか判定する。タイムスロット１，２，６，７のように、サブのタスクが登録されている場合には（Ｓ６０５：ＹＥＳ）、Ｓ６１０に処理を移行する。また、サブのタスクが登録されていない場合には（Ｓ６０５：ＮＯ）、本処理を終了する。
【０１１０】
Ｓ６１０では、スケジューラ１１１は、サブのタスクにタイムスロットの残り時間を割り当て、Ｓ６１５に処理を移行する。
続いて、スケジューラ１１１は、タイムスロットを割り当てたサブのタスクがＶＭである場合（Ｓ６１５：ＹＥＳ）、このＶＭに対応する割込み要求フラグがセットされているか否かを判定する（Ｓ６２０）。そして、このＶＭに対応する割込み要求フラグがセットされている場合（Ｓ６２０：ＹＥＳ）、スケジューラ１１１は、ＣＰＵ１１に、このＶＭにおける、この割込み要求フラグに対応する割込み処理を実行させる（Ｓ６２５）。そして、この割込み処理の実行が終了すると、スケジューラ１１１は、上記割込み要求フラグをクリアし、本処理を終了する。そして、以後、タイムスロットが割り当てられたＶＭにおける、割込み処理以外の他の処理が実行される。
【０１１１】
また、タイムスロットを割り当てたサブのタスクがＶＭでない場合や（Ｓ６１５：ＮＯ）、このＶＭに対応する割込み要求フラグがセットされていない場合（Ｓ６２０：ＮＯ）には、スケジューラ１１１は、本処理を終了する。そして、以後、タイムスロットが割り当てられたタスクが実行される。
【０１１２】
（３−４）割込み発生処理について
既に述べたが、統合ＥＣＵ１０は、第一〜第三のＥＣＵを統合したＥＣＵであり、第一〜第三のＥＣＵが備える機能を有している。また、第一〜第三のＶＭは、それぞれ、第一〜第三のＥＣＵのプログラムの一部を変更して作成されたプログラムである。そして、第一〜第三のＥＣＵのプログラムでは、周辺デバイスからの割込み要求が発生した際にＣＰＵから直接コールされる割込みハンドラが用いられているが、第一〜第三のＶＭでは、この割込みハンドラに対応するサブルーチンが用いられている。
【０１１３】
統合ＥＣＵ１０では、周辺デバイスからＣＰＵ１１に対して割込み要求が発生すると、割込みハンドラが実行される。この割込みハンドラでは、発生した割込み要求がどのＶＭに対応するものであるか特定し、対応するＶＭに対しての割込み要求フラグをセットすることにより、対応するＶＭに対して割込み要求を通知する。ここでは、周辺デバイスからの割込み要求が発生し、対応するＶＭに対しての割込み要求の通知がなされた直後にスケジューラ１１１が行なう処理である割込み発生処理について、図１２に記載のフローチャートを用いて説明する。なお、周辺デバイスからＣＰＵ１１に対して割込み要求が発生した際に統合制御プログラム１００にて行われる処理については、後述する。
【０１１４】
Ｓ７０５では、スケジューラ１１１は、第一〜第三のＶＭのうちのいずれかに対してタイムスロットが割り当てられているか判定する。そして、いずれかのＶＭにタイムスロットが割り当てられている場合には（Ｓ７０５：ＹＥＳ）、Ｓ７１０に処理を移行し、いずれのＶＭにもタイムスロットが割り当てられていない場合には（Ｓ７０５：ＮＯ）、本処理を終了する。なお、現在タイムスロットが割り当てられているＶＭのことを、実行中のＶＭとも記載する。
【０１１５】
Ｓ７１０では、スケジューラ１１１は、実行中のＶＭは、タイムスロット管理テーブルにサブのタスクとして登録されているか判定する（なお、以後、タイムスロット管理テーブルにメインのタスクとして登録されているＶＭをメインのＶＭとも記載し、サブのタスクとして登録されているＶＭをサブのＶＭとも記載する）。そして、実行中のＶＭがサブのタスクとして登録されている場合には（Ｓ７１０：ＹＥＳ）、発生した割込み要求が、実行中のサブのＶＭに対応するメインのＶＭに対応しているか判定する（Ｓ７１５）。発生した割込み要求がこのメインのＶＭに対応している場合には（Ｓ７１５：ＹＥＳ）、スケジューラ１１１は、Ｓ７２０に処理を移行する。また、実行中のＶＭがサブのタスクでない場合や（Ｓ７１０：ＮＯ）、発生した割込み要求が上記メインのＶＭに対応していない場合には（Ｓ７１５：ＮＯ）、スケジューラ１１１は、Ｓ７３５に処理を移行する。
【０１１６】
Ｓ７２０では、スケジューラ１１１は、実行中のサブのＶＭに替えて、このサブのＶＭに対応するメインのＶＭにタイムスロットの残り時間を割り当て、このメインのＶＭにおける、発生した割込み要求に対応する割込み処理を実行する（Ｓ７２５）。そして、この割込み処理の実行が終了すると、対応する割込み要求フラグをクリアし、メインのＶＭに替えて、このメインのＶＭに対応するサブのＶＭにタイムスロットの残り時間を割り当てる（Ｓ７３０）。そして、Ｓ７３５に処理を移行する。
【０１１７】
Ｓ７３５では、スケジューラ１１１は、発生した割込み要求が、実行中のＶＭに対応しているか判定する。発生した割込み要求が実行中のＶＭに対応している場合（Ｓ７３５：ＹＥＳ）、実行中のＶＭにおける対応する割込み処理を実行する（Ｓ７４０）。そして、この割込み処理の実行が終了すると、対応する割込み要求フラグをクリアし、本処理を終了する。発生した割込みが実行中のＶＭに対応していない場合（Ｓ７３５：ＮＯ）、本処理を終了する。
【０１１８】
（４）タイムスロットの利用状況について
次に、上述したタイムスロット割当処理やサブのタスク開始処理によりタイムスロットの割り当てを行った場合のタイムスロットの利用状況について説明する。なお、スケジューラ１１１は、図９に記載のタイムスロット管理テーブルに従いタイムスロットの割り当てを行うものとする。また、ここでは、わかりやすく説明するため、タイムスロット１〜３の利用状況については、図１３に記載の説明図を用いて特に詳しく説明する。
【０１１９】
図１３に記載されているように、タイムスロット１は、最初、メインのタスクである第一のＶＭ１２０に割り当てられる。そして、タイムスロット１が割り当てられた後、１００μｓが経過する前に第一のＶＭ１２０が自発的に停止すると、タイムスロット１の残り時間がサブのタスクである第三のＶＭ１４０に割り当てられる。なお、第一のＶＭ１２０が自発的に停止しなかった場合には、第三のＶＭ１４０へのタイムスロット１の残り時間の割り当ては行なわれず、タイムスロット１は、全て、第一のＶＭ１２０により消費される。
【０１２０】
タイムスロット１が全て消費されると（換言すれば、タイムスロット１が第一のＶＭ１２０に割り当てられた後１００μｓが経過すると）、タイムスロット２についての割り当てが行なわれる。タイムスロット２は、最初、メインのタスクである第二のＶＭ１３０に割り当てられる。そして、タイムスロット２が割り当てられた後、１００μｓが経過する前に第二のＶＭ１３０が自発的に停止すると、タイムスロット２の残り時間がサブのタスクである第三のＶＭ１４０に割り当てられる。なお、第二のＶＭ１３０が自発的に停止しなかった場合には、第三のＶＭ１４０へのタイムスロット２の残り時間の割り当ては行なわれず、タイムスロット２は、全て、第二のＶＭ１３０により消費される。
【０１２１】
タイムスロット２が全て消費されると（換言すれば、タイムスロット２が第二のＶＭ１３０に割り当てられた後１００μｓが経過すると）、タイムスロット３についての割り当てが行なわれる。タイムスロット３は、メインのタスクである第三のＶＭ１４０に割り当てられる。第三のＶＭ１４０は、自発的に停止することはないため、タイムスロット３は、全て第三のＶＭ１４０により消費される。
【０１２２】
そして、タイムスロット４〜８に関しても、同様にして対応するタスクへの割り当てが行なわれる。なお、タイムスロット９に関しては、後述する仮想デバイス１５０に割り当てられ、この仮想デバイス１５０により全て消費される。
【０１２３】
また、タイムスロット管理テーブルにおいて、タイムスロット１０に対応するタスクは登録されていないため、タイムスロット１０の割り当てを行なうタイミングが到来しても、タイムスロット１０の割り当ては行なわれない（つまり、どのタスクも実行されない）。そして、タイムスロット１０の割り当てを行なうタイミングが到来した後、タイムスロット１０に相当する時間（１００μｓ）が経過すると、再度、タイムスロット１の割り当てが行なわれる。
【０１２４】
（５）割込み処理の実行状況について
次に、割込み処理の実行状況について、図１４に記載の説明図を用いて説明する。なお、スケジューラ１１１は、図９に記載のタイムスロット管理テーブルに従いタイムスロットの割り当てを行うものとする。また、この説明では、例としてＡ割込み，Ｂ割込み，Ｃ割込みが発生するものとしているが、Ａ割込み，Ｂ割込みに関しては、第一〜第三のＶＭがそれぞれ対応する割込み処理を有しており、Ｃ割込みに関しては、第二，第三のＶＭがそれぞれ対応する割込み処理を有している。
【０１２５】
タイムスロット１０に対応する期間においてＡ割込みが発生し、タイムスロット１がメインのタスクである第一のＶＭ１２０に割り当てられると、最初に第一のＶＭ１２０におけるＡ割込みに対応する割込み処理が実行され、次に、この割込み処理以外の他の処理が実行される。そして、第一のＶＭ１２０が終了し、タイムスロット１の残り時間がサブのタスクである第三のＶＭ１４０に割り当てられると、最初に第三のＶＭ１４０におけるＡ割込みに対応する割込み処理が実行され、次に、この割込み処理以外の他の処理が実行される。
【０１２６】
続いてタイムスロット２がメインのタスクである第二のＶＭ１３０に割り当てられると、最初に第二のＶＭ１３０におけるＡ割込みに対応する割込み処理が実行され、次に、この割込み処理以外の他の処理が実行される。この割込み処理の実行によりＡ割込みに対応する割込み処理は全て実行済となり、Ａ割込みに対応する割込み要求フラグは全てクリアされる。
【０１２７】
また、タイムスロット２がメインのタスクである第二のＶＭ１３０に割り当てられている間にＢ割込みが発生すると、第二のＶＭ１３０におけるＢ割込みに対応する割込み処理が実行される。この割込み処理が終了すると、第二のＶＭ１３０におけるこの割込み処理以外の他の処理が実行される。そして、第二のＶＭ１３０の実行が終了し、タイムスロット２の残り時間がサブのタスクである第三のＶＭ１４０に割り当てられると、最初に第三のＶＭ１４０におけるＢ割込みに対応する割込み処理が実行され、次に、この割込み処理以外の他の処理が実行される。
【０１２８】
続いてタイムスロット３〜５は、それぞれ、第三のＶＭ１４０に割り当てられる。なお、第三のＶＭ１４０はＢ割込みに対応している。しかし、第三のＶＭ１４０におけるＢ割込みに対応する割込み処理はタイムスロット２が割り当てられている間に既に実行されたため、タイムスロット３〜５が第三のＶＭ１４０に割り当てられている間に、この割込み処理が実行されることはない。
【０１２９】
そして、タイムスロット６がメインのタスクである第一のＶＭ１２０に割り当てられる
と、最初に第一のＶＭ１２０におけるＢ割込みに対応する割込み処理が実行され、次に、この割込み処理以外の他の処理が実行される。この割込み処理の実行により、Ｂ割込みに対応する割込み処理は全て実行済となり、Ｂ割込みに対応する割込み要求フラグは全てクリアされる。そして、第一のＶＭ１２０が終了すると、タイムスロット６の残り時間がサブのタスクである第三のＶＭ１４０に割り当てられる。
【０１３０】
続いてタイムスロット７は、メインのタスクである第二のＶＭ１３０に割り当てられる。その後、第二のＶＭ１３０が終了すると、タイムスロット７の残り時間がサブのタスクである第三のＶＭ１４０に割り当てられる。サブのタスクである第三のＶＭ１４０を実行中にＣ割込みが発生すると、第三のＶＭ１４０に替えて、メインのタスクである第二のＶＭ１３０にタイムスロットの残り時間が割り当てられ、第二のＶＭ１３０におけるＣ割込みに対応する割込み処理が実行される。そして、この割込み処理の実行が終了すると、タイムスロット７の残り時間が再び第三のＶＭ１４０に割り当てられ、第三のＶＭ１４０におけるＣ割込みに対応する割込み処理が実行される。この割込み処理の実行により、Ｃ割込みに対応する割込み処理は全て実行済となり、Ｃ割込みに対応する割込み要求フラグは全てクリアされる。Ｃ割込みに対応する割込み処理が終了すると、第三のＶＭ１４０における他の処理が実行される。
【０１３１】
そして、タイムスロット８は、メインのタスクである第三のＶＭ１３０に割り当てられ、タイムスロット９，１０に関しては、第一〜第三のＶＭへの割り当ては行なわれない。また、タイムスロット１は、再び第一のＶＭ１２０に割り当てられる。
【０１３２】
［特許請求の範囲との対応］
上記実施形態の説明で用いた用語と、特許請求の範囲の記載に用いた用語との対応を示す。
【０１３３】
保護機能付きＲＴＯＳ１１０および仮想デバイス１５０が基本プログラムに相当する。また、保護機能付きＲＴＯＳ１１０によるスケジューリングの対象となるタスクが処理単位に相当する。また、第一のＶＭ１２０，第二のＶＭ１３０が、それぞれ、リアルタイム処理単位に相当し、第三のＶＭ１４０が非リアルタイム処理単位に相当する。また、第一のＶＭ１２０，第二のＶＭ１３０，第三のＶＭ１４０が、それぞれ、割込み対応処理単位に相当する。
【０１３４】
また、第一のＶＭ１２０，第二のＶＭ１３０，第三のＶＭ１４０，仮想デバイス１５０が、それぞれ、特定プログラムに相当する。さらに、ＰＡＬ１２４，１３４，１４４，１５４が中継プログラムに相当する。
【０１３５】
また、タイムスロット管理テーブルがタイムスロットデータに相当する。
また、統合ＥＣＵ１０が制御装置に相当し、第一〜第三のＥＣＵが、それぞれ、他の装置に相当する。また、統合ＥＣＵ１０におけるＣＡＮコントローラ１４が自装置の周辺デバイスに、第一，第二のＥＣＵにおけるＣＡＮコントローラが、それぞれ、他の装置の周辺デバイスに相当する。
【０１３６】
また、図３に記載のシーケンス図におけるＳ１２０およびＳ１２５，Ｓ１５０およびＳ１５５が、それぞれ、第三のステップに相当し、Ｓ１６５が第四のステップに相当する。さらに、Ｓ１１０，Ｓ１１５等が書換手段に相当する。
【０１３７】
また、図４に記載のシーケンス図におけるＳ２１０が第五のステップに相当し、Ｓ２３０，Ｓ２６０が、それぞれ、第六のステップに相当する。さらに、Ｓ２２５，Ｓ２５５が格納手段に相当する。
【０１３８】
また、図５に記載のシーケンス図におけるＳ３１５が初期化指令受信手段に相当する。さらに、リセット処理全般が初期化実行手段に相当する。
また、タイムスロット割当処理におけるＳ５２５が第一のステップに、Ｓ５４０が第八のステップにそれぞれ相当する。また、サブのタスク開始処理におけるＳ６１０が第二のステップに、Ｓ６２５が第八のステップにそれぞれ相当する。また、割込み発生処理のＳ７４０が第七のステップに、Ｓ７２５が第九のステップにそれぞれ相当する。
【０１３９】
［本実施形態による効果］
以上のように詳述した統合ＥＣＵ１０において、ＣＰＵ１１は、ＶＭ１２０，１３０，１４０や仮想デバイス１５０としてのプログラムにおいて入出力されるパラメータのうちの、ＶＭ１２０，１３０，１４０や仮想デバイス１５０としてのプログラム（以下、特定プログラムという。）にて利用される内部パラメータ、および内部パラメータを他のプログラムにて利用する際の外部パラメータを、予め対応付けた対応リストを参照しつつ、内部パラメータと外部パラメータとを相互に書き換える。
【０１４０】
このような統合ＥＣＵ１０によれば、例えば、内部パラメータの送り先が特定プログラムの作成時以降に変更になったとしても、特定プログラムを書き換えることなく、対応リストを参照して適切な送り先を示す外部パラメータに変更することができる。また、設計変更等によって内部パラメータの値をそのまま他のプログラムにて利用できなくなった場合であっても、対応リストを参照して他のプログラムが利用可能な適切な値を示す外部パラメータに書き換えて出力することができる。
【０１４１】
つまり、複数のマイコンにて実施されていたアプリケーション等のコンポーネントを１つのマイコンにて実施させるときや、プログラム構成に設計変更が生じたときにおいて、検証済のコンポーネントの再検証を不要とすることができる。
【０１４２】
また、統合ＥＣＵ１０のＣＰＵ１１は、ＰＡＬ１２４，１３４，１４４，１５４による書換後のパラメータのうちの内部パラメータのみを予め設定された記録領域に格納するバッファリングを行う。
【０１４３】
このような統合ＥＣＵ１０によれば、特定プログラムや他のプログラムが必要なときに書換後のパラメータを取得することができる。よって、特定プログラムと他のプログラムとの処理速度の違いがあったとしても、良好にパラメータを受け渡すことができる。
【０１４４】
さらに、統合ＥＣＵ１０においてＣＰＵ１１は、特定プログラムにおける処理として、統合ＥＣＵ１０が有する機能のうちの初期化する範囲を表す初期化範囲が指定されたリセット指令（初期化指令）を、ＰＡＬ１２４，１３４，１４４，１５４を介して受信し、リセット処理にて、指定された初期化範囲における初期化を行う。
【０１４５】
このような統合ＥＣＵ１０によれば、指定された初期化範囲のみの初期化を実施することができる。この際、統合ＥＣＵ１０は、ＰＡＬ１２４，１３４，１４４，１５４を介してリセット指令を受信するので、リセット指令の種別毎に、また特定プログラム毎に、初期化を実施するか否かを設定することができる。よって、リセット指令が影響する範囲をより細かに設定することができる。
【０１４６】
また、統合ＥＣＵ１０においてＣＰＵ１１は、リセット指令として初期化範囲の広さに応じたリセットレベル（数値情報）を受信し、予め各数値情報と初期化範囲とが対応付けられたデータベースである表（図６（ａ）参照）を参照することによって、受信された数値情報に対応する初期化範囲を特定し、この初期化範囲における初期化を行う。
【０１４７】
このような統合ＥＣＵ１０によれば、初期化範囲の広さに応じたリセットレベルを利用するので、プログラム構成を変更する際等、プログラムを解析する際に、初期化範囲を分かり易くすることができる。
【０１４８】
また、統合ＥＣＵ１０においては、下記の基本プログラムを実行可能に構成されていている。即ち、基本プログラムは、複数の処理単位のうちのいずれかに対して予め設定されたタイミングでタイムスロットを割り当てることにより、これらの処理単位をＣＰＵに並行して実行させる。
【０１４９】
この基本プログラムにおいては、第一のステップにて割り当てられたタイムスロットを使い切ることなくリアルタイム処理単位が終了した場合には、該リアルタイム処理単位に替えて、該リアルタイム処理単位に対応付けられている非リアルタイム処理単位に、該タイムスロットの残り時間を割り当てる第二のステップをさらに有している。
【０１５０】
このような構成を有することにより、タイムスロットを使い切ることなくリアルタイム処理単位の実行を終了した場合に、余った時間を、非リアルタイム処理単位に割り当てることができる。したがって、この基本プログラムは、非リアルタイム処理単位により実現される処理の停滞を抑えつつ、リアルタイム処理単位と非リアルタイム処理単位とをＣＰＵに並行して実行させることができる。
【０１５１】
［他の実施形態］
本発明の実施の形態は、上記の実施形態に何ら限定されることはなく、本発明の技術的範囲に属する限り種々の形態を採りうる。
【０１５２】
例えば、上記実施形態では、第一〜第三のＶＭと、仮想デバイス１５０とがスケジューラ１１１の四つがタスクとして登録されているが、スケジューラ１１１に登録されるタスクの数は四つに限定されるものではない。また、本実施形態では、仮想デバイス１５０は、メインのタスクとしてタイムスロット９に割り当てられているが、サブのタスクとしてタイムスロットに割り当てられていてもよい。また、ＶＭ等に替えて、例えば、外部装置を制御するためのアプリケーション等をタスクとしてもよい。このような構成を有する場合であっても、同様の効果を得ることができる。
【０１５３】
また、本実施形態のスケジューラ１１１では、１つのタイムスロットに対し、第一〜第三のＶＭのうちのいずれか１つがサブのタスクとして登録されている。しかし、１つのタイムスロットに対し、第一〜第三のＶＭ、或いは仮想デバイス１５０のうちの複数をサブのタスクとして登録可能とし、この複数のＶＭ等に優先順位を設定してもよい。そして、メインのタスクの実行が終了すると、サブのタスクとして登録されている複数のＶＭ等のうち、優先順位の高いＶＭ等から順に、タイムスロットの残り時間を割り当ててもよい。このような構成を有する場合であっても、リアルタイム性が要求されないタスクにより実現される処理の停滞を抑えつつ、リアルタイム性が要求されるタスクとリアルタイム性が要求されないタスクをＣＰＵに並行して実行させることができる。
【符号の説明】
【０１５４】
１０…統合ＥＣＵ、１１…ＣＰＵ、１２…ＲＯＭ、１３…ＲＡＭ、１４…ＣＡＮコントローラ、１５…内部バス、２０…ＣＡＮ、１００…統合制御プログラム、１１０…保護機能付きＲＴＯＳ、１１１…スケジューラ、１１２…リセット部、１２０…第一のＶＭ、１２１…ＡＵＴＯＳＡＲ、１２２…第一のＣＡＮドライバ、１２４…第一のＰＡＬ、１３０…第二のＶＭ、１３１…ＯＳＥＫ、１３２…第二のＣＡＮドライバ、１３４…第二のＰＡＬ、１４０…第三のＶＭ、１４１…Ｌｉｎｕｘ、１３４…第三のＰＡＬ、１５０…仮想デバイス、１５１…第一の仮想ＣＡＮドライバ、１５２…第二の仮想ＣＡＮドライバ、１５３…デバイス調停機構、１５４…仮想デバイスのＰＡＬ。
【図１】
2011028559.tif 000003
【図２】
2011028559.tif 000004
【図３】
2011028559.tif 000005
【図４】
2011028559.tif 000006
【図５】
2011028559.tif 000007
【図６】
2011028559.tif 000008
【図７】
2011028559.tif 000009
【図８】
2011028559.tif 000010
【図９】
2011028559.tif 000011
【図１０】
2011028559.tif 000012
【図１１】
2011028559.tif 000013
【図１２】
2011028559.tif 000014
【図１４】
2011028559.tif 000015
【図１３】
2011028559.tif 000016