[go: up one dir, main page]

JP4985662B2 - プログラム、及び制御装置 - Google Patents

プログラム、及び制御装置 Download PDF

Info

Publication number
JP4985662B2
JP4985662B2 JP2009012055A JP2009012055A JP4985662B2 JP 4985662 B2 JP4985662 B2 JP 4985662B2 JP 2009012055 A JP2009012055 A JP 2009012055A JP 2009012055 A JP2009012055 A JP 2009012055A JP 4985662 B2 JP4985662 B2 JP 4985662B2
Authority
JP
Japan
Prior art keywords
time
real
processing unit
interrupt
time slot
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
JP2009012055A
Other languages
English (en)
Other versions
JP2010170320A (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 JP2009012055A priority Critical patent/JP4985662B2/ja
Publication of JP2010170320A publication Critical patent/JP2010170320A/ja
Application granted granted Critical
Publication of JP4985662B2 publication Critical patent/JP4985662B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)

Description

本発明は、CPUに、複数の処理単位を並行して実行させるプログラム等に関する。
車両には多くのECUが搭載されており、これらのECUは、車内LAN等を介して通信を行い、互いに連携して処理を行う。今後、車両の高機能化、高性能化に伴い、より多くのECUが車両に搭載されると考えられている。
しかしながら、車両内部は限られた空間であるため、無制限にECUの数を増やすことはできない。また、ECUの数を増加させると、車内LANの通信負荷が増加するため、各ECUの処理に対する悪影響が生じるおそれがある。さらに、ECUの数の増加により車両の重量が増加してしまうため、燃費の悪化が懸念される。このように、車両に搭載可能なECUの数には限りがあると共に、ECUの数の増加による様々なデメリットが存在する。このような問題の対策として、複数のECUを一つに統合するという方法が実施されている。複数のECUを一つに統合する際には、ECUの小型化やコスト低減の観点から、統合前のECUのマイコンにて行われていた処理を1台のマイコンで実施することが望ましい。このためには、統合前のECUのマイコンに搭載されているプログラムを一つに統合し、新たなプログラムを作成しなければならない。
ここで、非特許文献1には、複数のECUに搭載されているプログラムを統合し、一つのプログラムとする際に用いることができる保護機能付RTOSについて記載されている。この保護機能付RTOSでは、統合前のECUのプログラム(Virtual Machine Program、略してVMとも記載する)である第一のVMと、第二のVMと、第三のVMとに対し、例えば、図2の(a)に記載のVMスケジューリングテーブルに基づきタイムスロットを割り当て、各VMを並行して実行させていると考えられる。この保護機能付RTOSを用いることにより、プログラムを大きく変更することなく、複数のECUに搭載されているプログラムの統合を行うことができる。
ところで、車両には、例えば、エンジン制御ECUや、エアバック制御ECUが搭載されているが、このようなECUでは、安全上の観点から、外部からの入力に対して所定の時間内に応答を行うというリアルタイム性が要求される。これに対し、例えば、オーディオ制御ECU等においては、エンジン制御ECU等に比べると、リアルタイム性の必要性は低いといえる。このため、エンジン制御ECU等とオーディオ制御ECUとを一つに統合する場合には、少なくともエンジン制御ECU等に対応するVMのリアルタイム性を確保する必要がある。したがって、例えば、上述した保護機能RTOSを用いる場合であれば、エンジン制御ECU等に対応するVMに対しては、オーディオ制御ECU等に対応するVMよりも優先的に、タイムスロットの割り当て周期や、タイムスロットの長さ等を設定する必要がある。しかしながら、このようにしてタイムスロットの設定を行なうと、オーディオ制御ECU等に対応するVMが十分に実行されなくなってしまうおそれがある。このため、例えば、オーディオ制御ECU等に対応するVMにて動画表示処理を行う場合であれば、滑らかな動画表示ができなくなってしまうといった具合に、このVMによる処理が停滞してしまうおそれがある。
ここで、特許文献1には、異なる優先度を有するスレッドを時分割処理するシステムにおけるスケジューリング方法が記載されている。特許文献1に記載の方法では、各スレッドに対してタイムスロットデータを対応付け、このタイムスロットデータに対してスケジューリングを行なう。つまり、タイムスロットデータに処理時間が割り当てられると、このタイムスロットデータに対応するスレッドが実行されるのである。そして、例えば、スレッドAが、このスレッドAよりも優先度がより低いスレッドBにおける所定の処理の終了を待つ必要が生じた場合には、スレッドAに対応するタイムスロットデータAをスレッドBに対応付けることにより、スレッドAの優先度をスレッドBに承継する。そして、スレッドBにおける所定の処理が終了すると、タイムスロットデータAは、再びスレッドAに対応付けられる。
[平成21年1月6日検索]、インターネット<URL:http://www.toppers.jp/docs/ipaward10-presen.pdf>
特開2000−20323号公報
特許文献1に記載の方法によれば、スレッドの優先度を変更する際に生じるオーバーヘッドを抑えることができ、スレッドに割り当てられたCPUの処理時間を有効に利用することができる。しかしながら、特許文献1に記載の方法を保護機能RTOSに適用したとしても、上述したような、リアルタイム性の必要性が低いVMによる処理が停滞しまうおそれがあるという問題を解決することはできない。
本願発明は上記課題を解決するためになされたものであり、リアルタイム性が要求される処理単位と、リアルタイム性が要求されない処理単位とを並行してCPUに実行させるプログラムに関する発明である。本願発明は、リアルタイム性が要求されない処理単位により実現される処理の停滞を抑えつつ、これらの処理単位をCPUに並行して実行させることが可能なプログラムを提供することを目的とする。
上記課題を解決するためのなされた請求項1に記載の基本プログラムは、複数の処理単位のうちのいずれかに対して予め設定されたタイミングでタイムスロットを割り当てることにより、これらの処理単位をCPUに並行して実行させる。尚、処理単位にタイムスロットを割り当てるとは、例えば、CPUにタイムスロットが示す時間にわたって処理単位を実行させることであっても良い。また、処理単位には、外部からの入力に対し予め設定された時間内での応答が可能であるという性質であるリアルタイム性が要求されるリアルタイム処理単位と、リアルタイム性が要求されない非リアルタイム処理単位とが存在し、非リアルタイム処理単位は、いずれかのリアルタイム処理単位に対応付けられている。また、処理単位として、所定の割込みに対応する割込み処理を有している割込み対応処理単位が存在する。また、基本プログラムは、処理単位に対してタイムスロットを割り当てるタイミングを示すデータであるタイムスロットデータを有している。また、基本プログラムは、タイムスロットデータに基づき、リアルタイム処理単位にタイムスロットを割り当てる第一のステップを有している。また、タイムスロットにリアルタイム処理単位が割り当てられて当該リアルタイム処理単位が実行中、または、タイムスロットの残り時間に非リアルタイム処理単位が割り当てられて当該非リアルタイム処理単位が実行中に、割込み対応処理単位に対応する所定の割込みが発生すると、該所定の割込みに対応する割込み処理を優先して実行する第七のステップを有している。
ここで、リアルタイム処理単位は、外部からの入力に対し予め設定された時間内に応答することが要求されるが、例えば、この外部からの入力が無い場合等には、リアルタイム処理単位は、タイムスロットを割り当てられてもこのタイムスロットが示す時間にわたって処理を継続する必要が無いといったことが想定される。つまり、タイムスロットが割り当てられたリアルタイム処理単位は、タイムスロットを使い切ることなく処理を終了するという場合が想定されるのである。
そこで、この基本プログラムは、第一のステップにて割り当てられたタイムスロットを使い切ることなくリアルタイム処理単位が終了した場合には、該リアルタイム処理単位に替えて、該リアルタイム処理単位に対応付けられている非リアルタイム処理単位に、該タイムスロットの残り時間を割り当てる第二のステップをさらに有している。
このような構成を有することにより、タイムスロットを使い切ることなくリアルタイム処理単位の実行を終了した場合に、余った時間を、非リアルタイム処理単位に割り当てることができる。したがって、この基本プログラムは、非リアルタイム処理単位により実現される処理の停滞を抑えつつ、リアルタイム処理単位と非リアルタイム処理単位とをCPUに並行して実行させることができる。
また、タイムスロットを使い切ることなくリアルタイム処理単位の実行を終了した場合に、次のようにして、余った時間を非リアルタイム処理単位に割り当てても良い。
すなわち、請求項2に記載されているように、リアルタイム処理単位は、複数の非リアルタイム処理単位に対応付けられており、該リアルタイム処理単位に対応する非リアルタイム処理単位には、優先順位が設定されており、第二のステップにおいて、リアルタイム処理単位に対応する非リアルタイム処理単位のうち、優先順位の高い非リアルタイム処理単位から順にタイムスロットの残り時間を割り当てても良い。
このような構成を有する場合であっても、非リアルタイム処理単位により実現される処理の停滞を抑えつつ、リアルタイム処理単位と非リアルタイム処理単位をCPUに並行して実行させることができる。
また、既に述べたように、複数のECUを一つに統合するということが望まれているが、このような場合には、複数のECUの制御プログラムを一つに統合し、新たなプログラムを作成しなければならない。そこで、処理単位とは、次のようなソフトウェアであっても良い。
すなわち、請求項3に記載されているように、処理単位のうちの少なくとも二つは、プログラムが搭載される装置とは異なる他の装置の制御プログラムに基づく処理単位であるVM(Virtual Machine Programの略)であっても良い。
こうすることにより、複数のECUの制御プログラムを一つに統合した場合に、リアルタイム性が要求されないVMの処理の停滞を抑えつつ、CPUに複数のVMを並行して実行させることができる。
また、処理単位をVMとした場合には、本プログラムを実行するCPUの周辺デバイスに対し、次のようにして指示を行っても良い。
すなわち、請求項4に記載されているように、VMは、他の装置におけるCPUの周辺デバイスであって、基本プログラムが搭載される装置におけるCPUにおける周辺デバイスである自装置の周辺デバイスと同一の用途にて用いられる周辺デバイスである他の装置の周辺デバイスを制御するための処理を有しており、自装置の周辺デバイスには、他の装置の周辺デバイスとは異なる形式で指示を行う必要があっても良い。そして、基本プログラムは、それぞれのVMから、他の装置の周辺デバイスへの指示と同様の形式で、自装置の周辺デバイスに対しての指示を受け付ける第三のステップと、第三のステップにて受け付けた指示を、自装置の周辺デバイスに対応する形式に変換し、該自装置の周辺デバイスに対しての制御を行う第四のステップとをさらに有していても良い。
このような構成を有することにより、VMは、統合前のECUにおけるCPUの周辺デバイスに対応する形式で、統合後のECUにおけるCPUの周辺デバイスに対して指示を行うことができる。このため、統合前のECUにおける制御プログラムにおいてCPUの周辺デバイスに対する指示を行う部位の構成を変更することなく、この制御プログラムに基づきVMを作成することができる。つまり、複数のECUの制御プログラムを一つに統合する際の変更規模の増加を抑えることができるのである。
また、VMに対し、CPUの周辺デバイスから受け取ったデータを次のようにして提供しても良い。
すなわち、請求項5に記載されているように、基本プログラムは、自装置の周辺デバイスから提供されるデータを取得する第五のステップと、第五のステップにて自装置の周辺デバイスから取得したデータを、該自装置の周辺デバイスに対応する他の装置の周辺デバイスを制御する処理を有する前記VMに対し、該他の装置の周辺デバイスに対応する形式で提供する第六のステップとをさらに有していても良い。
このような構成を有することにより、VMは、統合前のECUにおけるCPUの周辺デバイスに対応する形式で、統合後のECUにおけるCPUの周辺デバイスからデータを受け取ることができる。このため、統合前のECUにおける制御プログラムにおいてCPUの周辺デバイスからデータを受け取る部位の構成を変更することなく、この制御プログラムに基づきVMを作成することができる。つまり、複数のECUの制御プログラムを一つに統合する際の変更規模の増加を抑えることができるのである。
なお、請求項6に記載されているように、割込み対応処理単位が有する割込み処理に対応する所定の割込みとは、CANを介してデータを受信した際に発生する割り込みであり、該割込み処理では、該データを受信するための処理が行われても良い。
また、統合前のECUにおける制御プログラムには、割込み処理が用いられている場合がある。例えば、処理単位が、このような制御プログラムに基づくVMである場合には、プログラムは、次のようなステップをさらに有していても良い。
すなわち処理単位として、所定の割込みに対応する割込み処理を有している割込み対応処理単位が存在し、基本プログラムは、割込み対応処理単位に対し、タイムスロット、または、タイムスロットの残り時間が割り当てられている間に、該割込み対応処理単位に対応する所定の割込みが発生すると、該所定の割込みに対応する割込み処理を実行する第七のステップをさらに有していても良い。
このような構成を有することにより、処理単位が有している割込み処理を、確実に実行することができる。したがって、例えば、統合前のECUにおける制御プログラムに割込み処理が用いられている場合であっても、この割込み処理が流用されたVMを処理単位とすることができる。このため、複数のECUの制御プログラムを一つに統合する際の変更規模の増加を抑えることができる。
また、割込み処理は、割込み要求が発生した後、速やかに実行されるべきである。
そこで基本プログラムは、所定の割込みが発生した後、該所定の割込みに対応する割込み対応処理単位に対してタイムスロット、または、タイムスロットの残り時間が割り当てられると、該所定の割込みに対応する割込み処理を実行する第八のステップをさらに有する。
こうすることにより、先に発生した割込み要求に対応する割込み処理を速やかに実行することができる。
また、次のようにして割込み処理が実行されても良い。
すなわち第一のステップにおいてタイムスロットが割り当てられるリアルタイム処理単位をメインの処理単位とすると共に、第二のステップにおいて、該第一のステップにてメインの処理単位に割り当てられたタイムスロットの残り時間が割り当てられる非リアルタイム処理単位をサブの処理単位としても良い。そして、基本プログラムは、メインの処理単位が割込み対応処理単位である場合において、サブの処理単位にタイムスロットの残り時間が割り当てられている間に、該メインの処理単位に対応する所定の割込みが発生すると、第七のステップに先立ち、該メインの処理単位である割込み対応処理単位が有する割込み処理を実行する第九のステップをさらに有していても良い。
こうすることにより、サブの処理単位にタイムスロットが割り当てられている間に、対応するメインの処理単位についての割込み要求が発生した場合には、優先的にこのメインの処理単位における対応する割込み処理を実行することができる。したがって、メインの処理単位を、サブの処理単位に対してより優先的に実行することができ、メインの処理単位に要求されるリアルタイム性を、より確実なものとすることができる。
ところで、請求項1から請求項に記載の基本プログラムに従い処理を行うコンピュータを備える制御装置を構成しても良い(請求項7)
こうすることにより、制御装置は、非リアルタイム処理単位により実現される処理の停滞を抑えつつ、リアルタイム処理単位と非リアルタイム処理単位とをCPUに並行して実行させることができる。
統合ECU、及び、統合制御プログラムの構成を示すブロック図である。 VMスケジューリングテーブル、及び、スケジュールパラメータテーブルを示す表である。 タイムスロット管理テーブルを示す表である。 タイムスロット割当処理のフローチャートである。 サブのタスク開始処理のフローチャートである。 割込み発生処理のフローチャートである。 タイムスロット1〜3の利用状況についての説明図である。 割込み処理の実行状況についての説明図である。 仮想デバイス等の構成を示すブロック図である。 CANを介してのデータ送信が行なわれる際の仮想デバイス等の動作についてのシーケンス図である。 CANを介してのデータ受信が行なわれる際の仮想デバイス等の動作についてのシーケンス図である。
以下、本発明の実施形態について図面を用いて説明する。尚、本発明の実施の形態は、下記の実施形態に何ら限定されることはなく、本発明の技術的範囲に属する限り種々の形態を採りうる。
[構成の説明]
(1)統合ECUの構成について
図1の(a)は、本実施形態における統合ECU10の構成を示すブロック図である。この統合ECU10は、第一のECUと、第二のECUと、第三のECUという三つのECUが統合されたものであり、この三つのECUが有していた機能を全て有している。また、統合ECU10は、CPU11と、ROM12と、RAM13と、CANコントローラ14とを有しており、これらの部位は内部バス15で接続されている。尚、統合ECU10は、これらの部位以外にも、第一〜第三のECUが備えている部位に対応する部位を有している。
CPU11は、ROM12に記憶されているプログラムや、RAM13にロードされたプログラムに従い統合ECU10の制御や各種演算を行う部位である。尚、統合前の三つのECUにそれぞれ搭載されていたCPUで実行されていた全ての処理は、このCPU11で実行される。
ROM12は、各種のプログラムやデータが記憶されている周知のROMである。
RAM13は、CPU11から直接アクセスされるメインメモリ等として利用される記憶装置である。このRAM13には、ROM12等から、各種プログラムやデータがロードされる。
CANコントローラ14は、CAN20を介して他のECUと通信を行うための部位である。
(2)統合制御プログラムの構成について
また、図1の(b)は、統合ECU10に搭載されている統合制御プログラム100の構成を示すブロック図である。統合制御プログラム100は、ROM12に記憶されている。統合制御プログラム100は、保護機能付きRTOS110と、第一のVM120と、第二のVM130と、第三のVM140と、仮想デバイス150とを有している。尚、VMとは、Virtual Machine Programの略である。
保護機能付きRTOS110は、第一〜第三のVMや、仮想デバイス150といったタスクのスケジューリングを行なうプログラムである。このスケジューリングは、スケジューラ111により行なわれる。スケジューリングの詳細に関しては後述する。また、保護機能付きRTOS110は、各タスクに対応するメモリ領域や、自身に対応するメモリ領域の保護を行なう。
また、第一のVM120,第二のVM130,第三のVM140は、保護機能付きRTOS110によるスケジューリングの対象となるタスクである。これらのVMは、それぞれ、統合前のECUである第一のECU,第二のECU,第三のECUの制御プログラムの一部を変更して作成されたプログラムである。尚、第一のECU及び第二のECUは、外部からの入力に対して所定の時間内に応答を行うというリアルタイム性が要求されるECUであるため、第一のVM120及び第二のVM130により実現される処理には、リアルタイム性が要求される。また、これらのECUでは、AUTOSARやOSEK(登録商標)に準拠したリアルタイムOSがそれぞれ用いられている。このため、第一のVM120,第二のVM130は、それぞれ、AUTOSAR,OSEKに準拠したリアルタイムOSを有している。尚、第一のVM120に用いられているリアルタイムOSをAUTOSAR121、第二のVM130に用いられているリアルタイムOSをOSEK131と記載する。一方、第三のECUはリアルタイム性が要求されないECUであり、第三のVM140により実現される処理にはリアルタイム性は要求されない。また、このECUでは、OSとしてLinuxが用いられており、第三のVM140はLinux141を有している。
また、第一〜第三のVMでは、統合前のECUのプログラムで用いられていた割込みハンドラに対応する割込み処理が用いられており、保護機能付きRTOS110は、周辺デバイスから割込み要求が発生すると、対応する上記割込み処理を実行する。
また、仮想デバイス150は、第一〜第三のVMと、統合ECU10におけるCPU11の周辺デバイスへとのI/Fとなるタスクである。
[動作の説明]
統合制御プログラム100は、第一〜第三のECUの機能を、統合ECU10にて実現するためのプログラムである。統合制御プログラム100では、保護機能付きRTOS110が第一〜第三のVMのスケジューリングを行い、第一〜第三のVMをCPU11に並行して実行させることにより、第一〜第三のECUの機能を実現している。ここでは、保護機能付きRTOS110の動作について説明する。
(1)タイムスロットについて
保護機能付きRTOS110のスケジューラ111は、第一〜第三のVMと、仮想デバイス150とをタスクとしており、これらのタスクに対し、タイムスロット1〜10を順次割り当てる。また、タイムスロット10の割り当てが行なわれた後は、再度、タイムスロット1〜10の割り当てが順次行なわれる。そして、タスクにいずれかのタイムスロットが割り当てられると、CPU11は、このタイムスロット分の処理時間にわたって、このタスクを実行する。尚、本実施形態では、タイムスロット1〜10は全て100μsの長さであるが、各タイムスロットの長さは、この時間に限定されるものではない。また、例えば、割り当てるタスクに応じてタイムスロットの長さを変更しても良いし、条件に応じて異なる長さのタイムスロットが用いられても良い。また、タイムスロットの長さとして、例えば、100μs〜120μsといった具合に、一定の時間幅を持った時間が設定されていても良い。そして、例えば、所定の条件やタスクの状態等に応じて、この時間幅の範囲内でCPUの実行時間を変動させても良い。
尚、タスクにタイムスロットを割り当てるということを、タスクに対し、タイムスロットが示す時間にわたってCPUの実行権を付与すると言い換えることもできるということを、念のため付言しておく。
(2)第一〜第三のVMのスケジューリングについて
次に、第一〜第三のVMのスケジューリングについて説明する。図2の(a)には、タイムスロット1〜10をどのVMに割り当てるかを示すVMスケジューリングテーブルが記載されている。VMスケジューリングテーブルは、タイムスロット1は第一のVM120に、タイムスロット2は第二のVM130に、タイムスロット3は第三のVM140に、タイムスロット4は第三のVM140に、タイムスロット5は第三のVM140に、タイムスロット6は第一のVM120に、タイムスロット7は第二のVM130に、タイムスロット8は第三のVM140に、それぞれ割り当てられることを示している。また、タイムスロット9,10に関しては、第一〜第三のVMに割り当てられないことを示している。スケジューラ111は、VMスケジューリングテーブルが示すようにタイムスロット1〜10を第一〜第三のVMに割り当て、CPU11に、第一〜第三のVMを並行して実行させる。
また、図2の(b)には、第一〜第三のVMのサービス周期等を示すスケジューリングパラメータテーブルが記載されている。スケジューリングパラメータテーブルは、「VM」,「最短サービス周期」,「最長連続走行時間」,「サービス周期許容誤差」という項目を有している。
「VM」は、第一〜第三のVMのうちのいずれかを示す項目である。
また、「最短サービス周期」は、VMに対してタイムスロットが割り当てられる時間間隔を示している。
また、「最長連続走行時間」は、VMの最長の連続実行時間を示している。
また、「サービス周期許容誤差」とは、「最短サービス周期」の誤差として許容される時間を示している。
保護機能付きRTOS110は、スケジューラ111による第一〜第三のVMについてのスケジューリングについて、スケジューリングパラメータテーブルに基づき異常判定を行うという機能を有している。この機能について具体的に説明する。保護機能付きRTOS110は、各VMについて、対応する「最短サービス周期」が示す時間に「サービス周期許容誤差」が示す時間を加えた時間を閾値とする。そして、リアルタイム性が要求されるVMに関して、このVMにタイムスロットが割り当てられた後、上記閾値に相当する時間が経過しても新たにタイムスロットが割り当てられない場合には、異常が発生したものとみなす。また、保護機能付きRTOS110は、各VMについて、タイムスロットが割り当てられた後、対応する「最長連続走行時間」を経過した後もCPU11による実行が継続されている場合には、異常が発生したものとみなす。
(3)タスクのスケジューリングについて
スケジューラ111によるタスクのスケジューリングについて説明する。上述したように、タイムスロット1〜10は、順次、第一〜第三のVMのいずれかに割り当てられる。しかし、仮想デバイス150に関しても、処理時間を確保する必要があり、仮想デバイス150に対してもタイムスロットを割り当てることができる。また、タイムスロットを割り当てられた第一のVM120または第二のVM130は、所定の条件が成立すると、自発的に処理を終了する。このため、第一のVM120または第二のVM130に関しては、割り当てられたタイムスロットを全て使い切ることなく、処理が終了してしまう場合がある。このようなケースを想定して、タイムスロット1〜10に対し、メインのタスクとサブのタスクとを対応付けておくことができる。そして、スケジューラ111は、メインのタスクがタイムスロットを使い切ることなく終了した場合には、サブのタスクに対しタイムスロットの残り時間を割り当てるのである。
尚、図2の(a)に記載のVMスケジューリングテーブルは、タイムスロット1〜10に対し、メインのタスクとして登録されているVMを示している。
(3−1)タイムスロット管理テーブルについて
図3には、タイムスロット1〜10に対応付けられているメインのタスクとサブのタスクを示すタイムスロット管理テーブルの一例が記載されている。タイムスロット管理テーブルは、タイムスロット1,6には、メインのタスクとして第一のVM120が、サブのタスクとして第三のVM140が対応付けられていることを示している。また、タイムスロット2,7には、メインのタスクとして第二のVM130が、サブのタスクとして第三のVM140が対応付けられていることを示している。また、タイムスロット3〜5、8には、メインのタスクとして第三のVM140が対応付けられており、サブのタスクに関しては対応付けがなされていないことを示している。また、タイムスロット9には、メインのタスクとして仮想デバイス150が対応付けられており、サブのタスクに関しては対応付けがなされていないことを示している。また、タイムスロット10には、メインのタスク及びサブのタスクに関して、対応付けがなされていないことを示している。スケジューラ111は、タイムスロット管理テーブルに基づき、各タスクのスケジューリングを行なう。
(3−2)タイムスロット割当処理について
スケジューラ111によるタスクのスケジューリングについて、さらに詳しく説明する。スケジューラ111は、各タイムスロットに相当する時間(100μs)が経過する度に、タイムスロット割当処理を実行する。ここでは、タイムスロット割当処理について、図4に記載のフローチャートを用いて説明する。
S205では、スケジューラ111は、CPUの実行権が付与されているタスク、つまり、動作中のタスクの有無についてチェックし、動作中のタスクが有る場合には(S205:Yes)、このタスクを停止させる(S210)。
続いて、スケジューラ111は、タイムスロット管理テーブルに基づき、タスクへの割り当てを行なうタイムスロットを特定する(S215)。尚、スケジューラ111は、番号の若いタイムスロットから順に対応するタスクへの割り当てを行い、タイムスロット10についての割り当てを行なった後は、再度、タイムスロット1から順に割り当てを行なう。
そして、スケジューラ111は、タイムスロット管理テーブルに基づき、特定したタイムスロットを割り当てるメインのタスクの有無を判定する(S220)。そして、タイムスロット1〜9のように、タイムスロットを割り当てるメインのタスクが有る場合には(S220:Yes)、スケジューラ111は、このメインのタスクにタイムスロットを割り当てる(S225)。また、タイムスロット10のように、タイムスロットを割り当てるメインのタスクが無い場合には(S220:No)、タイムスロットの割り当てを行うことなく本処理を終了する。
続いて、スケジューラ111は、タイムスロットを割り当てたメインのタスクがVMである場合(S230:Yes)、このVMに対応する割込み要求フラグがセットされているか否かを判定する(S235)。そして、このVMに対応する割込み要求フラグがセットされている場合(S235:Yes)、スケジューラ111は、CPU11に、このVMにおける、この割込み要求フラグに対応する割込み処理を実行させる(S240)。そして、この割込み処理の実行が終了すると、スケジューラ111は、上記割込み要求フラグをクリアし、本処理を終了する。そして、以後、タイムスロットが割り当てられたVMにおける、割込み処理以外の他の処理が実行される。
また、タイムスロットを割り当てたメインのタスクがVMでない場合や(S230:No)、このVMに対応する割込み要求フラグがセットされていない場合(S235:No)には、スケジューラ111は、本処理を終了する。そして、以後、タイムスロットが割り当てられたタスクが実行される。
尚、割込み処理とは、VMに対応する統合前のECUの制御プログラムにて用いられていた割込みハンドラに相当するサブルーチンであり、周辺デバイスからの割込み要求に応じてCPU11から直接コールされる割込みハンドラとは異なる処理であることを念のため付言しておく。
(3−3)サブのタスク開始処理について
また、上述したように、第一のVM120及び第二のVM130は、自発的に終了する場合があるが、タイムスロットを割り当てられたメインのタスクが自発的に終了すると、スケジューラ111は、サブのタスク開始処理を実行する。ここでは、サブのタスク開始処理について、図5に記載のフローチャートを用いて説明する。
S305では、スケジューラ111は、タイムスロット管理テーブルに基づき、終了したメインのタスクに対応するタイムスロットに、サブのタスクが登録されているか判定する。タイムスロット1,2,6,7のように、サブのタスクが登録されている場合には(S305:Yes)、S310に処理を移行する。また、サブのタスクが登録されていない場合には(S305:No)、本処理を終了する。
S310では、スケジューラ111は、サブのタスクにタイムスロットの残り時間を割り当て、S315に処理を移行する。
続いて、スケジューラ111は、タイムスロットを割り当てたサブのタスクがVMである場合(S315:Yes)、このVMに対応する割込み要求フラグがセットされているか否かを判定する(S320)。そして、このVMに対応する割込み要求フラグがセットされている場合(S320:Yes)、スケジューラ111は、CPU11に、このVMにおける、この割込み要求フラグに対応する割込み処理を実行させる(S325)。そして、この割込み処理の実行が終了すると、スケジューラ111は、上記割込み要求フラグをクリアし、本処理を終了する。そして、以後、タイムスロットが割り当てられたVMにおける、割込み処理以外の他の処理が実行される。
また、タイムスロットを割り当てたサブのタスクがVMでない場合や(S315:No)、このVMに対応する割込み要求フラグがセットされていない場合(S320:No)には、スケジューラ111は、本処理を終了する。そして、以後、タイムスロットが割り当てられたタスクが実行される。
(3−4)割込み発生処理について
既に述べたが、統合ECU10は、第一〜第三のECUを統合したECUであり、第一〜第三のECUが備える機能を有している。また、第一〜第三のVMは、それぞれ、第一〜第三のECUのプログラムの一部を変更して作成されたプログラムである。そして、第一〜第三のECUのプログラムでは、周辺デバイスからの割込み要求が発生した際にCPUから直接コールされる割込みハンドラが用いられているが、第一〜第三のVMでは、この割込みハンドラに対応するサブルーチンが用いられている。
統合ECU10では、周辺デバイスからCPU11に対して割込み要求が発生すると、割込みハンドラが実行される。この割込みハンドラでは、発生した割込み要求がどのVMに対応するものであるか特定し、対応するVMに対しての割込み要求フラグをセットすることにより、対応するVMに対して割込み要求を通知する。ここでは、周辺デバイスからの割込み要求が発生し、対応するVMに対しての割込み要求の通知がなされた直後にスケジューラ111が行なう処理である割込み発生処理について、図6に記載のフローチャートを用いて説明する。尚、周辺デバイスからCPU11に対して割込み要求が発生した際に統合制御プログラム100にて行われる処理については、後述する。
S405では、スケジューラ111は、第一〜第三のVMのうちのいずれかに対してタイムスロットが割り当てられているか判定する。そして、いずれかのVMにタイムスロットが割り当てられている場合には(S405:Yes)、S410に処理を移行し、いずれのVMにもタイムスロットが割り当てられていない場合には(S405:No)、本処理を終了する。尚、現在タイムスロットが割り当てられているVMのことを、実行中のVMとも記載する。
S410では、スケジューラ111は、実行中のVMは、タイムスロット管理テーブルにサブのタスクとして登録されているか判定する(尚、以後、タイムスロット管理テーブルにメインのタスクとして登録されているVMをメインのVMとも記載し、サブのタスクとして登録されているVMをサブのVMとも記載する)。そして、実行中のVMがサブのタスクとして登録されている場合には(S410:Yes)、発生した割込み要求が、実行中のサブのVMに対応するメインのVMに対応しているか判定する(S415)。発生した割込み要求がこのメインのVMに対応している場合には(S415:Yes)、スケジューラ111は、S420に処理を移行する。また、実行中のVMがサブのタスクでない場合や(S410:No)、発生した割込み要求が上記メインのVMに対応していない場合には(S415:No)、スケジューラ111は、S435に処理を移行する。
S420では、スケジューラ111は、実行中のサブのVMに替えて、このサブのVMに対応するメインのVMにタイムスロットの残り時間を割り当て、このメインのVMにおける、発生した割込み要求に対応する割込み処理を実行する(S425)。そして、この割込み処理の実行が終了すると、対応する割込み要求フラグをクリアし、メインのVMに替えて、このメインのVMに対応するサブのVMにタイムスロットの残り時間を割り当てる(S430)。そして、S435に処理を移行する。
S435では、スケジューラ111は、発生した割込み要求が、実行中のVMに対応しているか判定する。発生した割込み要求が実行中のVMに対応している場合(S435:Yes)、実行中のVMにおける対応する割込み処理を実行する(S440)。そして、この割込み処理の実行が終了すると、対応する割込み要求フラグをクリアし、本処理を終了する。発生した割込みが実行中のVMに対応していない場合(S435:No)、本処理を終了する。
(4)タイムスロットの利用状況について
次に、上述したタイムスロット割当処理やサブのタスク開始処理によりタイムスロットの割り当てを行った場合のタイムスロットの利用状況について説明する。尚、スケジューラ111は、図3に記載のタイムスロット管理テーブルに従いタイムスロットの割り当てを行うものとする。また、ここでは、わかりやすく説明するため、タイムスロット1〜3の利用状況については、図7に記載の説明図を用いて特に詳しく説明する。
図7に記載されているように、タイムスロット1は、最初、メインのタスクである第一のVM120に割り当てられる。そして、タイムスロット1が割り当てられた後、100μsが経過する前に第一のVM120が自発的に停止すると、タイムスロット1の残り時間がサブのタスクである第三のVM140に割り当てられる。尚、第一のVM120が自発的に停止しなかった場合には、第三のVM140へのタイムスロット1の残り時間の割り当ては行なわれず、タイムスロット1は、全て、第一のVM120により消費される。
タイムスロット1が全て消費されると(換言すれば、タイムスロット1が第一のVM120に割り当てられた後100μsが経過すると)、タイムスロット2についての割り当てが行なわれる。タイムスロット2は、最初、メインのタスクである第二のVM130に割り当てられる。そして、タイムスロット2が割り当てられた後、100μsが経過する前に第二のVM130が自発的に停止すると、タイムスロット2の残り時間がサブのタスクである第三のVM140に割り当てられる。尚、第二のVM130が自発的に停止しなかった場合には、第三のVM140へのタイムスロット2の残り時間の割り当ては行なわれず、タイムスロット2は、全て、第二のVM130により消費される。
タイムスロット2が全て消費されると(換言すれば、タイムスロット2が第二のVM130に割り当てられた後100μsが経過すると)、タイムスロット3についての割り当てが行なわれる。タイムスロット3は、メインのタスクである第三のVM140に割り当てられる。第三のVM140は、自発的に停止することはないため、タイムスロット3は、全て第三のVM140により消費される。
そして、タイムスロット4〜8に関しても、同様にして対応するタスクへの割り当てが行なわれる。
尚、タイムスロット9に関しては、後述する仮想デバイス150に割り当てられ、この仮想デバイス150により全て消費される。
また、タイムスロット管理テーブルにおいて、タイムスロット10に対応するタスクは登録されていないため、タイムスロット10の割り当てを行なうタイミングが到来しても、タイムスロット10の割り当ては行なわれない(つまり、どのタスクも実行されない)。そして、タイムスロット10の割り当てを行なうタイミングが到来した後、タイムスロット10に相当する時間(100μs)が経過すると、再度、タイムスロット1の割り当てが行なわれる。
(5)割込み処理の実行状況について
次に、割込み処理の実行状況について、図8に記載の説明図を用いて説明する。尚、スケジューラ111は、図3に記載のタイムスロット管理テーブルに従いタイムスロットの割り当てを行うものとする。また、この説明では、例としてA割込み,B割込み,C割込みが発生するものとしているが、A割込み,B割込みに関しては、第一〜第三のVMがそれぞれ対応する割込み処理を有しており、C割込みに関しては、第二,第三のVMがそれぞれ対応する割込み処理を有している。
タイムスロット10に対応する期間においてA割込みが発生し、タイムスロット1がメインのタスクである第一のVM120に割り当てられると、最初に第一のVM120におけるA割込みに対応する割込み処理が実行され、次に、この割込み処理以外の他の処理が実行される。そして、第一のVM120が終了し、タイムスロット1の残り時間がサブのタスクである第三のVM140に割り当てられると、最初に第三のVM140におけるA割込みに対応する割込み処理が実行され、次に、この割込み処理以外の他の処理が実行される。
続いてタイムスロット2がメインのタスクである第二のVM130に割り当てられると、最初に第二のVM130におけるA割込みに対応する割込み処理が実行され、次に、この割込み処理以外の他の処理が実行される。この割込み処理の実行によりA割込みに対応する割込み処理は全て実行済となり、A割込みに対応する割込み要求フラグは全てクリアされる。
また、タイムスロット2がメインのタスクである第二のVM130に割り当てられている間にB割込みが発生すると、第二のVM130におけるB割込みに対応する割込み処理が実行される。この割込み処理が終了すると、第二のVM130におけるこの割込み処理以外の他の処理が実行される。そして、第二のVM130の実行が終了し、タイムスロット2の残り時間がサブのタスクである第三のVM140に割り当てられると、最初に第三のVM140におけるB割込みに対応する割込み処理が実行され、次に、この割込み処理以外の他の処理が実行される。
続いてタイムスロット3〜5は、それぞれ、第三のVM140に割り当てられる。尚、第三のVM140はB割込みに対応している。しかし、第三のVM140におけるB割込みに対応する割込み処理はタイムスロット2が割り当てられている間に既に実行されたため、タイムスロット3〜5が第三のVM140に割り当てられている間に、この割込み処理が実行されることはない。
そして、タイムスロット6がメインのタスクである第一のVM120に割り当てられると、最初に第一のVM120におけるB割込みに対応する割込み処理が実行され、次に、この割込み処理以外の他の処理が実行される。この割込み処理の実行により、B割込みに対応する割込み処理は全て実行済となり、B割込みに対応する割込み要求フラグは全てクリアされる。そして、第一のVM120が終了すると、タイムスロット6の残り時間がサブのタスクである第三のVM140に割り当てられる。
続いてタイムスロット7は、メインのタスクである第二のVM130に割り当てられる。その後、第二のVM130が終了すると、タイムスロット7の残り時間がサブのタスクである第三のVM140に割り当てられる。サブのタスクである第三のVM140を実行中にC割込みが発生すると、第三のVM140に替えて、メインのタスクである第二のVM130にタイムスロットの残り時間が割り当てられ、第二のVM130におけるC割込みに対応する割込み処理が実行される。そして、この割込み処理の実行が終了すると、タイムスロット7の残り時間が再び第三のVM140に割り当てられ、第三のVM140におけるC割込みに対応する割込み処理が実行される。この割込み処理の実行により、C割込みに対応する割込み処理は全て実行済となり、C割込みに対応する割込み要求フラグは全てクリアされる。C割込みに対応する割込み処理が終了すると、第三のVM140における他の処理が実行される。
そして、タイムスロット8は、メインのタスクである第三のVM130に割り当てられ、タイムスロット9,10に関しては、第一〜第三のVMへの割り当ては行なわれない。また、タイムスロット1は、再び第一のVM120に割り当てられる。
(6)仮想デバイスについて
次に、スケジューラ111におけるタスクの一つである仮想デバイス150について説明する。上述したように、この仮想デバイス150は、第一〜第三のVMと、統合ECU10におけるCPU11の周辺デバイスへとのI/Fとなる部位である。また、この仮想デバイス150は、図3に記載のタイムスロット管理テーブルでは、タイムスロット9に対応するメインのタスクとして設定されている。ここでは、一例として、仮想デバイス150におけるCANコントローラ14に対応する機能について説明する。
第一のECU及び第二のECUはCANによる通信機能を有している。これらのECUのプログラムは、CANによる通信を制御するためのCANドライバを有しており、このCANドライバでは、統合前のECUにおけるCANコントローラを制御するためのレジスタへのIOアクセスが行われる。第一のVM120,第二のVM130は、統合前のプログラムにおけるCANドライバを流用した第一のCANドライバ122,第二のCANドライバ132をそれぞれ有している。仮想デバイス150は、第一のCANドライバ122や第二のCANドライバ132からCANコントローラ14への指令を受け付け、このCANコントローラ14を制御する機能を有している。
図9に記載のブロック図には仮想デバイス150の構成が記載されているが、仮想デバイス150は、第一の仮想CANドライバ151と、第二の仮想CANドライバ152と、デバイス調停機構153とを有している。
第一の仮想CANドライバ151は、第一のVM120がCAN20による他のECUとの通信を行う際に、第一のCANドライバ122から、CANコントローラ14への指令を受け付ける部位である。
また、第二の仮想CANドライバ152は、第二のVM130がCAN20による他のECUとの通信を行う際に、第二のCANドライバ132から、CANコントローラ14への指令を受け付ける部位である。
また、デバイス調停機構153は、第一のCANドライバ122や第二のCANドライバ132からの指令に従い、CANコントローラ14を制御する部位である。
(6−2)データ送信処理について
次に、第一のVM120または第二のVM130が、CAN20を介して接続されている他のECUにデータを送信する場合の動作について、図10に記載のシーケンス図を用いて説明する。
第一のVM120では、CAN20を介してデータ送信を行う場合には、第一のCANドライバ122がコールされる(S505)。
第一のCANドライバ122は、第一のECUにおけるCPUの周辺デバイスであるCANコントローラに対応する形式で、CAN20を介しての送信要求と送信データの設定を行なう。このとき、第一のCANドライバ122から、仮想デバイス150における第一の仮想CANドライバ151がサブルーチンとしてコールされる(S510)。そして、第一の仮想CANドライバ151が、第一のECUにおけるCANコントローラに対応する形式でCAN20を介しての送信要求等を受け付けるのである。
このようにしてCAN20を介しての送信要求等を受け付けることにより、第一のECUにおけるプログラムを流用して第一のCANドライバ122とする際の変更規模を抑えることが可能となる。また、このとき、第一の仮想CANドライバ151は、例えば、第一のECUにおけるCANコントローラと同様にして、第一のCANドライバ122に対して応答を行っても良い。こうすることにより、第一のCANドライバ122は、第一のECUと同一の形式でCAN20を介してのデータ送信を行うことが可能となる。したがって、第一のECUにおけるプログラムを流用して第一のCANドライバ122とする際の変更規模をより抑えることが可能となる。
そして、第一の仮想CANドライバ151では、デバイス調停機構153に属するサブルーチンがコールされ(S515)、このサブルーチンにて、第一のCANドライバ122から受け付けた送信データがバッファされる。
第二のVM130においても、同様にしてCAN20を介してのデータ送信要求が行なわれる。第二のVM130では、CAN20を介してのデータ送信を行う場合には、第二のCANドライバ132がコールされる(S520)。
第二のCANドライバ132は、第二のECUにおけるCANコントローラに対応する形式で、CAN20を介しての送信要求と送信データの設定を行なう。このとき、第二のCANドライバ132から、仮想デバイス150における第二の仮想CANドライバ152がサブルーチンとしてコールされる(S525)。そして、第二の仮想CANドライバ152が、第二のECUにおけるCANコントローラに対応する形式でCAN20を介しての送信要求等を受け付けるのである。また、このとき、第二の仮想CANドライバ152は、例えば、第二のECUにおけるCANコントローラと同様にして、第二のCANドライバ132に対して応答を行っても良い。
そして、第二の仮想CANドライバ152では、デバイス調停機構153に属するサブルーチンがコールされ(S530)、このサブルーチンにて、第二のCANドライバ132から受け付けた送信データがバッファされる。
次に、タイムスロット9が仮想デバイス150に割り当てられ、仮想デバイス150の実行が開始されると、デバイス調停機構に属するサブルーチンがコールされる(S535)。このサブルーチンは、CANコントローラ14に対し、このCANコントローラ14に対応する形式で、第一のCANドライバ122等から受け取った送信データの送信を指示する。具体的には、CANコントローラ14にIOアクセスを行い(S540)、バッファされている送信データをCANコントローラ14の送信バッファにセットし、送信を指示する。
(6−2)データ受信時の動作について
次に、統合ECU10がCAN20を介して接続されている他のECUからデータを受信する場合の仮想デバイス150等の動作について、図11に記載のシーケンス図を用いて説明する。
統合ECU10がCAN20を介して他のECUからデータを受信すると、CANコントローラ14は、CPU11に対して割込み要求を通知し(S605)、この割込み要求に対応する割込みハンドラ(以後、CAN受信割込みハンドラとも記載)がコールされる(S610)。尚、このCAN受信割込みハンドラは、仮想デバイス150におけるデバイス調停機構153に属するものである。
このCAN受信割込みハンドラでは、CANコントローラ14から受信データが取得される。そして、受信データが第一のVM120宛のデータである場合には、第一のCANドライバ122に属するサブルーチンがコールされる(S615)。このサブルーチンでは、第一のVM120に対してのCAN受信割込み要求フラグがセットされ、第一のECUにおけるCANコントローラと同様の形式で、第一のVM120に対してのデータ受信の通知や、受信データのバッファが行なわれる。また、受信したデータが第二のVM130宛のデータである場合にも同様に、第二のCANドライバ132に属するサブルーチンがコールされる(S620)。このサブルーチンでも、第二のVM130に対してのCAN受信割込み要求フラグがセットされ、第二のECUにおけるCANコントローラと同様の形式で、第二のVM130に対してのデータ受信の通知や、受信データのバッファが行なわれる。
[効果]
本実施形態の統合制御プログラム100におけるスケジューラ111では、タイムスロット1,6に対応付けて、リアルタイム性が要求される第一のVM120がメインのタスクとして登録されていると共に、リアルタイム性が要求されない第三のVM140がサブのタスクとして登録されている。また、タイムスロット2,7に対応付けて、リアルタイム性が要求される第二のVM130がメインのタスクとして登録されていると共に、第三のVM140がサブのタスクとして登録されている。そして、メインのタスクとして登録されている第一のVM120或いは第二のVM130が、自身に割り当てられたタイムスロットを全て消費することなく処理を終了した場合には、サブのタスクである第三のVM140に、このタイムスロットの残り時間が割り当てられる(S310)。したがって、スケジューラ111によれば、リアルタイム性が要求されない第三のVM140により実現される処理の停滞を抑えつつ、第一〜第三のVMをCPUに並行して実行させることができる。
また、スケジューラ111では、実行中のVMに対応する割込み要求が発生した場合には、このVMにおける、発生した割込み要求に対応する割込み処理が実行される(S440)。したがって、VMが有している割込み処理を確実に実行することができる。このため、統合前のECUの制御プログラムに割込みハンドラが用いられている場合であっても、この割込みハンドラが流用されたVMを処理単位とすることができる。このため、複数のECUの制御プログラムを一つに統合する際の変更規模の増加を抑えることができる。
尚、この割込み処理の実行に関しては、例外が存在する。具体的には、サブのVMを実行中に、このサブのVMに対応するメインのVMに対しての割込み要求が発生した場合には、サブのVMの実行を中断し、メインのVMにおける、上記割込み要求に対応する割込み処理が実行される(S425)。そして、この割込み要求がサブのVMに対応している場合には、メインのVMにおける割込み処理が終了した後に、サブのVMにおける割込み処理が実行されるのである(S440)。このため、優先的にメインのVMにおける割込み処理を実行することができる。したがって、メインのVMをサブのVMに対してより優先的に実行することができ、メインのVMのリアルタイム性をより確実なものとすることができる。
また、スケジューラ111では、割込み要求が発生した状態で、この割込み要求に対応するVMにタイムスロットが割り当てられると、最初に、このVMにおける、この割込み要求に対応する割込み処理が実行される(S240,S325)。したがって、発生した割込み要求に対応する割込み処理を速やかに実行することができる。
また、本実施形態の統合制御プログラム100では、仮想デバイス150は、第一のVM120から、統合前のECUである第一のECUと同様の形式でCANコントローラ14への指示を受け付ける第一の仮想CANドライバ151を有していると共に、第二のVM130から、統合前のECUである第二のECUと同様の形式でCANコントローラ14への指示を受け付ける第二の仮想CANドライバ152を有している。また、統合制御プログラム100では、第一のVM120に対し、第一のECUと同様の形式で、CANコントローラ14が受信したデータの提供が行なわれると共に、第二のVM130に対し、第二のECUと同様の形式で、CANコントローラ14が受信したデータの提供が行なわれる。このため、第一のECUの制御プログラムに基づき第一のVM120を作成する際、第一のECUの制御プログラムにおけるCANドライバを流用することが可能となる。また、同様にして、第二のECUの制御プログラムに基づき第二のVM130を作成する際、第二のECUの制御プログラムにおけるCANドライバを流用することが可能となる。つまり、第一のECUの制御プログラムや第二のECUの制御プログラムを統合する際の変更規模の増加を抑えることができるのである。
[他の実施形態]
(1)本実施形態では、第一〜第三のVMと、仮想デバイス150とがスケジューラ111の四つがタスクとして登録されているが、スケジューラ111に登録されるタスクの数は四つに限定されるものではない。また、本実施形態では、仮想デバイス150は、メインのタスクとしてタイムスロット9に割り当てられているが、サブのタスクとしてタイムスロットに割り当てられていても良い。また、VM等に替えて、例えば、外部装置を制御するためのアプリケーション等をタスクとしても良い。このような構成を有する場合であっても、同様の効果を得ることができる。
(2)本実施形態のスケジューラ111では、一つのタイムスロットに対し、第一〜第三のVMのうちのいずれか一つがサブのタスクとして登録されている。しかし、一つのタイムスロットに対し、第一〜第三のVM、或いは仮想デバイス150のうちの複数をサブのタスクとして登録可能とし、この複数のVM等に優先順位を設定しても良い。そして、メインのタスクの実行が終了すると、サブのタスクとして登録されている複数のVM等のうち、優先順位の高いVM等から順に、タイムスロットの残り時間を割り当てても良い。このような構成を有する場合であっても、リアルタイム性が要求されないタスクにより実現される処理の停滞を抑えつつ、リアルタイム性が要求されるタスクとリアルタイム性が要求されないタスクをCPUに並行して実行させることができる。
[特許請求の範囲との対応]
上記実施形態の説明で用いた用語と、特許請求の範囲の記載に用いた用語との対応を示す。
保護機能付きRTOS110及び仮想デバイス150が基本プログラムに相当する。また、保護機能付きRTOS110によるスケジューリングの対象となるタスクが処理単位に相当する。また、第一のVM120,第二のVM130が、それぞれ、リアルタイム処理単位に相当し、第三のVM140が非リアルタイム処理単位に相当する。また、第一のVM120,第二のVM130,第三のVM140が、それぞれ、割込み対応処理単位に相当する。また、タイムスロット管理テーブルがタイムスロットデータに相当する。
また、統合ECU10が制御装置に相当し、第一〜第三のECUが、それぞれ、他の装置に相当する。また、統合ECU10におけるCANコントローラ14が自装置の周辺デバイスに、第一,第二のECUにおけるCANコントローラが、それぞれ、他の装置の周辺デバイスに相当する。
また、タイムスロット割当処理におけるS225が第一のステップに、S240が第八のステップにそれぞれ相当する。また、サブのタスク開始処理におけるS310が第二のステップに、S325が第八のステップにそれぞれ相当する。また、割込み発生処理のS440が第七のステップに、S425が第九のステップにそれぞれ相当する。
また、図10に記載のシーケンス図におけるS510及びS515,S525及びS530が、それぞれ、第三のステップに相当し、S535が第四のステップに相当する。また、図11に記載のシーケンス図におけるS610が第五のステップに相当し、S615,S620が、それぞれ、第六のステップに相当する。
10…統合ECU、11…CPU、12…ROM、13…RAM、14…CANコントローラ、15…内部バス、20…CAN、100…統合制御プログラム、110…保護機能付きRTOS、111…スケジューラ、120…第一のVM、121…AUTOSAR、122…第一のCANドライバ、130…第二のVM、131…OSEK、132…第二のCANドライバ、140…第三のVM、141…Linux、150…仮想デバイス、151…第一の仮想CANドライバ、152…第二の仮想CANドライバ、153…デバイス調停機構。

Claims (7)

  1. 複数の処理単位のうちのいずれかに対して予め設定されたタイミングでタイムスロットを割り当てることにより、これらの前記処理単位をCPUに並行して実行させる基本プログラムであって、
    前記処理単位として、外部からの入力に対し予め設定された時間内での応答が可能であるという性質であるリアルタイム性が要求されるリアルタイム処理単位と、前記リアルタイム性が要求されない非リアルタイム処理単位とが存在し、前記非リアルタイム処理単位は、いずれかの前記リアルタイム処理単位に対応付けられており、
    前記処理単位として、所定の割込みに対応する割込み処理を有している割込み対応処理単位が存在し、
    前記基本プログラムは、前記処理単位に対して前記タイムスロットを割り当てるタイミングを示すデータであるタイムスロットデータを有しており、
    前記基本プログラムは、
    前記タイムスロットデータに基づき、前記リアルタイム処理単位に前記タイムスロットを割り当てる第一のステップと、
    前記第一のステップにて割り当てられた前記タイムスロットを使い切ることなく、前記リアルタイム処理単位が終了した場合には、該リアルタイム処理単位に替えて、該リアルタイム処理単位に対応付けられている前記非リアルタイム処理単位に、該タイムスロットの残り時間を割り当てる第二のステップと、
    前記タイムスロットに前記リアルタイム処理単位が割り当てられて当該リアルタイム処理単位が実行中、または、前記タイムスロットの前記残り時間に前記非リアルタイム処理単位が割り当てられて当該非リアルタイム処理単位が実行中に、前記割込み対応処理単位に対応する前記所定の割込みが発生すると、該所定の割込みに対応する前記割込み処理を優先して実行する第七のステップと、
    を有することを特徴とする基本プログラム。
  2. 請求項1に記載の基本プログラムにおいて、
    前記リアルタイム処理単位は、複数の前記非リアルタイム処理単位に対応付けられており、該リアルタイム処理単位に対応する前記非リアルタイム処理単位には、優先順位が設定されており、
    前記第二のステップにおいて、前記リアルタイム処理単位に対応する前記非リアルタイム処理単位のうち、優先順位の高い前記非リアルタイム処理単位から順に前記タイムスロットの残り時間を割り当てること、
    を特徴とする基本プログラム。
  3. 請求項1または請求項2に記載の基本プログラムにおいて、
    前記処理単位のうちの少なくとも二つは、前記基本プログラムが搭載される装置とは異なる他の装置の制御プログラムに基づく処理単位であるVM(Virtual Machine Programの略)であること、
    を特徴とする基本プログラム。
  4. 請求項3に記載の基本プログラムにおいて、
    前記VMは、前記他の装置におけるCPUの周辺デバイスであって、前記基本プログラムが搭載される装置におけるCPUにおける周辺デバイスである自装置の周辺デバイスと同一の用途にて用いられる周辺デバイスである他の装置の周辺デバイスを制御するための処理を有しており、
    前記自装置の周辺デバイスには、前記他の装置の周辺デバイスとは異なる形式で指示を行う必要があり、
    前記基本プログラムは、
    それぞれの前記VMから、前記他の装置の周辺デバイスへの指示と同様の形式で、前記自装置の周辺デバイスに対しての指示を受け付ける第三のステップと、
    前記第三のステップにて受け付けた指示を、前記自装置の周辺デバイスに対応する形式に変換し、該自装置の周辺デバイスに対しての制御を行う第四のステップと、
    をさらに有すること、
    を特徴とする基本プログラム。
  5. 請求項4に記載の基本プログラムにおいて、
    前記基本プログラムは、
    前記自装置の周辺デバイスから提供されるデータを取得する第五のステップと、
    前記第五のステップにて取得したデータを、該自装置の周辺デバイスに対応する前記他の装置の周辺デバイスを制御する処理を有する前記VMに対し、該他の装置の周辺デバイスに対応する形式で提供する第六のステップと、
    をさらに有すること、
    を特徴とする基本プログラム。
  6. 請求項1から請求項5のうちのいずれか1項に記載の基本プログラムにおいて、
    前記割込み対応処理単位が有する前記割込み処理に対応する前記所定の割込みとは、CANを介してデータを受信した際に発生する割り込みであり、該割込み処理では、該データを受信するための処理が行われること、
    を特徴とする基本プログラム。
  7. 請求項1から請求項6のうちのいずれか1項に記載の基本プログラムに従い処理を行うコンピュータを備える制御装置。
JP2009012055A 2009-01-22 2009-01-22 プログラム、及び制御装置 Active JP4985662B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009012055A JP4985662B2 (ja) 2009-01-22 2009-01-22 プログラム、及び制御装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009012055A JP4985662B2 (ja) 2009-01-22 2009-01-22 プログラム、及び制御装置

Publications (2)

Publication Number Publication Date
JP2010170320A JP2010170320A (ja) 2010-08-05
JP4985662B2 true JP4985662B2 (ja) 2012-07-25

Family

ID=42702419

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009012055A Active JP4985662B2 (ja) 2009-01-22 2009-01-22 プログラム、及び制御装置

Country Status (1)

Country Link
JP (1) JP4985662B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107656855A (zh) * 2016-07-26 2018-02-02 佛山市顺德区顺达电脑厂有限公司 提醒用户放错cpu的系统及其方法

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5423635B2 (ja) 2009-11-09 2014-02-19 株式会社デンソー スケジューリング方法,スケジューリングプログラム,スケジューリング装置
WO2015045151A1 (ja) 2013-09-30 2015-04-02 三菱電機株式会社 受信装置および通信装置
CN118312196A (zh) 2015-09-14 2024-07-09 松下电器(美国)知识产权公司 网关装置、车载网络系统以及固件更新方法
DE112019007432B4 (de) * 2019-06-27 2024-02-08 Mitsubishi Electric Corporation Elektronische steuereinheit und programm
JP7468308B2 (ja) * 2020-11-13 2024-04-16 住友電装株式会社 車載ecu、プログラム、及び情報処理方法
JP2022144140A (ja) * 2021-03-18 2022-10-03 株式会社オートネットワーク技術研究所 車載装置、情報処理方法、及びコンピュータプログラム
JP2024047740A (ja) * 2022-09-27 2024-04-08 日立Astemo株式会社 電子制御装置、車両制御システム、及びタスクの制御方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3659062B2 (ja) * 1999-05-21 2005-06-15 株式会社日立製作所 計算機システム
JP3813930B2 (ja) * 2002-01-09 2006-08-23 松下電器産業株式会社 プロセッサ及びプログラム実行方法
CN1922576A (zh) * 2003-09-30 2007-02-28 扎鲁纳股份有限公司 操作系统
JP4728083B2 (ja) * 2005-10-14 2011-07-20 パナソニック株式会社 メディア処理装置
JP2008262419A (ja) * 2007-04-12 2008-10-30 Toyota Motor Corp 情報処理装置、オペレーティングシステム選択方法、プログラム。

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107656855A (zh) * 2016-07-26 2018-02-02 佛山市顺德区顺达电脑厂有限公司 提醒用户放错cpu的系统及其方法
CN107656855B (zh) * 2016-07-26 2020-06-30 佛山市顺德区顺达电脑厂有限公司 提醒用户放错cpu的系统及其方法

Also Published As

Publication number Publication date
JP2010170320A (ja) 2010-08-05

Similar Documents

Publication Publication Date Title
JP4985662B2 (ja) プログラム、及び制御装置
JP2011028559A (ja) 中継プログラムおよび電子制御装置
JP5324934B2 (ja) 情報処理装置および情報処理方法
US8856196B2 (en) System and method for transferring tasks in a multi-core processor based on trial execution and core node
US9858115B2 (en) Task scheduling method for dispatching tasks based on computing power of different processor cores in heterogeneous multi-core processor system and related non-transitory computer readable medium
US11416293B2 (en) Control unit having a scheduler for scheduling a plurality of virtual machines, and methods for scheduling a plurality of virtual machines
US20150121387A1 (en) Task scheduling method for dispatching tasks based on computing power of different processor cores in heterogeneous multi-core system and related non-transitory computer readable medium
Masrur et al. VM-based real-time services for automotive control applications
JP2020135214A (ja) タスク管理装置
US9367349B2 (en) Multi-core system and scheduling method
JP5533789B2 (ja) 車載電子制御装置
Li et al. Multi-mode virtualization for soft real-time systems
CN112817762A (zh) 一种基于自适应汽车开放系统架构标准的调度系统及其调度方法
US10853133B2 (en) Method and apparatus for scheduling tasks to a cyclic schedule
Pöhnl et al. A middleware journey from microcontrollers to microprocessors
JP2013152636A (ja) 情報処理装置、タスクスケジューリング方法
JP2011170619A (ja) マルチスレッド処理装置
Munk et al. Position paper: Real-time task migration on many-core processors
US8095695B2 (en) Control apparatus for process input-output device
CN111831406A (zh) 一种基于车载嵌入式系统的多任务调度方法及装置
Mishra et al. Dynamic task scheduling on multicore automotive ECUs
JP3893136B2 (ja) 組込みコンピュータ制御プログラム、そのプログラムを記録した記録媒体、及び組込みシステム
Dasari et al. Applying Reservation-based Scheduling to a μC-based Hypervisor: An industrial case study
Böhm et al. Multi-core processors in the automotive domain: An AUTOSAR case study
WO2025065274A1 (en) Dynamic time partitioning for computation-communication chains

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100603

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110826

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110906

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111031

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

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

R151 Written notification of patent or utility model registration

Ref document number: 4985662

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

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