説明

車両制御装置、データ通信方法

【課題】統合前のソフトウェアの修正を抑制して複数のECUが統合された車両制御装置等を提供すること。
【解決手段】第1のコアが実行する第1のアプリと第2のコアが実行する第2のアプリがそれぞれ外部にデータを送信する車両制御装置100であって、バス39を介して外部の機器と通信するため通信手段36と、第1のコアと第2のコアの間でデータ通信する内部通信手段37と、第2のアプリの第1の送信データを通信手段でなく内部通信手段に出力する出力先変更手段34(2)と、内部通信手段から取得した第1の送信データを第1のアプリ又は前記通信手段のどちらに出力するかを、前記第1の送信データの送信先情報が登録されたリストテーブルに従い制御するデータ送信先制御手段34(1)と、を有することを特徴とする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、車載装置を制御するECUに関し、特に、複数のECUが統合された統合ECUに関する。
【背景技術】
【0002】
車載されるECU(electronic control unit)の数を低減することでECUの開発費を抑制することができるが、この場合、それまでは別々のECUに搭載されていたアプリを1つのECUに搭載する必要が生じる。
【0003】
図1(a)は、ECUの統合により生じる不都合を説明する図の一例である。ECUαはマイコン上でアプリAを、ECUβはマイコン上でアプリBをそれぞれ実行している。アプリAとアプリBの下部のRTE(Runtime Environment)はアプリA、Bが利用する共通の機能を提供したり、アプリ間でデータやイベントを受け渡すレイヤである。
【0004】
RTEの下のレイヤはCAN通信の通信内容に対応した通信モジュールであり、COM、NM及びDiagCANが図示されている。COMは一般のデータを通信するモジュールであり、NMはネットワークマネージメント機能を司るモジュールであり、DiagCANはサービスツール(ディーラーの工場などでCANバスに外部から接続される診断ツール)からのダイアグ情報の要求に対しアプリからダイアグ情報を取得するモジュールである。なお、MCAL(Microcontroller Abstraction Layer)は各種のドライバの集合でありソフトウェア側からハードウェアを隠蔽している。
【0005】
図1(b)は、ECUαとECUβが1つのECUに統合されたECUγの構成例を示す。アプリA側のMCAL及びアプリB側のMCALは、COM、NM又はDiagCANのいずれかの要求に応じて、CANバスにフレームを出力する。図1(b)のようにECUの統合のためECUγにチャネルを2つ以上設けておけば、2つのMCALはそれぞれCANバスにCANフレームを出力できるが、現実には制約が多い。例えば、ECUαやβのNMは機能の一つとして、CANバス上の他のECUにNMフレームを定期的に送信する機能を有する。これにより、ECUγからNMフレームを受信できなかった他のECUは、ECUγが故障していることを検出できる。このため、規格や社内規定において、NMメッセージは1つのECUから1つしかCANバスに出力してはいけないと定められることがある。
【0006】
この不都合を回避するため、統合時に例えばECUβのNMだけを開発者が削除することが考えらえる。しかし、アプリAやアプリBは、元々、NMに対しスリープしてよい状態であることを通知する機能を有しており、逆にNMは(他のECUのNMからNMメッセージを受信して)アプリA、Bに対し起床を要求する必要がある。このことは、アプリA,BはNMのAPI(Application Programming Interface)がないと動作できないことを意味しており、NMだけを削除することが困難であることを意味している(NMを削除するとアプリA,Bの修正が必要になる)。
【0007】
ここで、既存のソフトウェアの修正を行うことなく又は修正を抑制して、ソフトウェアの移植性を高める技術が考案されている(例えば、特許文献1参照。)。特許文献1には、シングルプロセッサ用の複数のプログラムを複数のプロセッサに分散した場合に、各プロセッサに各プログラムの疑似部を設け、異なるプロセッサに分散したプログラムと疑似部を介して通信するプロセッサ間通信方式が開示されている。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開平5−324574号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかしながら、特許文献1に開示されたプロセッサ間通信方式を採用すると、開発者は、元のシングルプロセッサが実行していたプログラムの数だけ疑似部を作成する必要があり、プログラムの数が多くなるほど開発コストが大きくなるという問題が解消されない。また、新しいプログラムを統合することが考慮されておらず、新しいプログラムを統合する場合に、すでに存在するプログラムの疑似部との関係を構築するための開発コストが多大になるおそれがある。
【0010】
本発明は、上記課題に鑑み、統合前のソフトウェアの修正を抑制して複数のECUが統合された車両制御装置等を提供することを目的とする。
【課題を解決するための手段】
【0011】
本発明は、第1のコアが実行する第1のアプリと第2のコアが実行する第2のアプリがそれぞれ外部にデータを送信する車両制御装置であって、バスを介して外部の機器と通信するため通信手段と、前記第1のコアと前記第2のコアの間でデータ通信する内部通信手段と、前記第2のアプリの第1の送信データを前記通信手段でなく前記内部通信手段に出力する出力先変更手段と、前記内部通信手段から取得した前記第1の送信データを前記第1のアプリ又は前記通信手段のどちらに出力するかを、前記第1の送信データの送信先情報が登録されたリストテーブルに従い制御するデータ送信先制御手段と、を有することを特徴とする。
【発明の効果】
【0012】
統合前のソフトウェアの修正を抑制して複数のECUが統合された車両制御装置等を提供することができる。
【図面の簡単な説明】
【0013】
【図1】ECUの統合により生じる不都合を説明する図の一例である。
【図2】統合ECUに統合されたアプリの通信方法を説明する図の一例である。
【図3】統合ECUのハードウェア構成図の一例である。
【図4】2つのECUα、βが統合された1つの統合ECUの機能ブロック図の一例である。
【図5】PDUルータが呼び出すドライバとデータの宛先の関係が登録されたドライバテーブルの一例である。
【図6】PDUルータ1とPDUルータ2がデータを送信又は受信する手順を示すフローチャート図の一例である。
【図7】アプリA〜CがRTEを介して通信する場合のECUの構成例を示す図の一例である。
【図8】2つのECUα、βが統合された1つの統合ECUの機能ブロック図の一例である(実施例2)。
【図9】IPC-IF/IPCドライバが通信する手順を模式的に示す図の一例である。
【図10】PDUルータ1とPDUルータ2がデータを送信又は受信する手順を示すフローチャート図の一例である(実施例2)。
【図11】データフローを説明する図の一例である。
【図12】マルチマイコンの機能ブロック図の一例である。
【図13】マルチマイコンの機能ブロック図の一例である。
【図14】PDUルータ1とPDUルータ2がデータを送信又は受信する手順を示すフローチャート図の一例である(実施例3)。
【発明を実施するための形態】
【0014】
以下、本発明を実施するための形態について図面を参照しながら説明する。
図2は統合ECU100に統合されたコア同士の通信方法を説明する図の一例である。図2の統合ECU(electronic control unit)100では、COM、NM及びDiagCAN(これらを通信モジュール33という場合がある)のレイヤとMCAL35(区別する場合MCAL1,2という)のレイヤの間に、PDUルータ(Protocol Data Unit Router)34が設けられている。PDUルータ(区別する場合PDUルータ1,2という)は、通信データのルーティングを行うレイヤである。
【0015】
また、MCAL35にはDMAコントローラ37に通信を要求するDMAドライバ38(区別する場合DMAドライバ1,2という)が配置されている。DMAドライバ38は従来のMCALにも備えられているが、図2のDMAドライバ38は統合ECU100においてアプリ31(区別する場合アプリA、Bという)間でデータ通信が可能になるように設計されている。
【0016】
例えば通信モジュール33がPDUルータ2に通信データの送信を要求すると、PDUルータ2は送信先がアプリAであることから、DMAドライバ2を呼び出す。すなわち、CANドライバでなくDMAドライバ2を呼び出すことで、DMAコントローラ37がデータを転送し、コア36(区別する場合コア1,2という)が他方のコア36と通信することができるようになる。コア2から見ると、CANバス39の代わりに実際には存在しない仮想CANバス40に通信データを出力する態様になる。
【0017】
アプリA側のDMAドライバ1はDMAコントローラ37の割込み等によりデータを受信したことを検出して、データをPDUルータ1に送信する。PDUルータ1は送信先がアプリAであることから、RTE32(区別する場合RTE1,2という)を経由してアプリAにデータを送信する。
【0018】
また、例えば、アプリBのデータの宛先が他のECUである場合、アプリA側のDMAドライバ1がデータをPDUルータ1に送信すると、PDUルータ1は宛先が他のECUであることからCANドライバを呼び出す。CANドライバを呼び出すことで、CANコントローラ29は、CANバス39にデータを出力することができる。
【0019】
このように、統合した2つのアプリ側にPDUルータ1,2及びDMAドライバ1,2をそれぞれ設けDMAコントローラ37を利用することで、アプリA,Bや通信モジュール33を修正することなく、アプリA、B間で通信することができる。また、例えば、アプリB側のNM2が出力するNMメッセージはCANバス39から出力されないので、1つのECUからNMメッセージは1つしか出力されないようにすることができる。
【0020】
〔構成〕
図3は、統合ECU100のハードウェア構成図の一例を示す。統合ECU100は、マルチレイヤバス14を介して接続されたプロセッサ11、DMAコントローラ37、SDRAM12、CANコントローラ29、I/O16及びROM13を有する。プロセッサ11は、2つのCPU(以下、区別する場合CPU1、2という)15を有するが、CPU15の数は2つ以上であれば4つ以上でもよい。各CPU1、2は、コア36、コア間通信部21、及び、ローカルRAM36を有する。各CPU1、2の機能を区別するため、CPU内の各機能にCPU1、2と同じ番号を付す。
【0021】
コア1、2は、PC(プログラムカウンタ)、命令バッファ、IFU(Instruction Fetch Unit)、DEC(DECoder)、RF(Register Fetch)、REG(REGister)、SH(Shifter)、ALU、MUL及びFPU等の演算回路、汎用レジスタ、及び、ロード/ストアユニット等を有する。これらが1クロック毎に命令実行段階の各ステージを実行することでいわゆるパイプライン制御が実現されている。
【0022】
ROM13にはアプリA〜C及びPF(Plat Form)24が記憶されている。アプリA、Bは2つのECUα、βが統合される前の一方のECUαに搭載されていたアプリであり、アプリCは他方のECUβに搭載されていたアプリである。PF24は、ハードウェアの違いを吸収してアプリA〜Cをコア1,2が実行するための実行環境を提供する。本実施例では、AUTOSAR(AUTomotive Open System Architecture)で標準化されている基本ソフトウェアを例にして説明するが、ハードウェアの違いを隠蔽可能であれば単純なOSとすることもできる。
【0023】
PF24は、上層から、RTE、サービス層、ECU抽象化層、及び、MCAL(マイクロコントローラ抽象化層)等の各レイヤによって構成される。サービス層は、ハードウェアから独立した、様々なサービスを提供する層であり、OS(例えば、OSEK(Open system together with interfaces for automotive electronics)やその他、組み込み用OS、リアルタイムOS等)、システムサービス(診断ソフト、メモリ管理ソフト等)、メモリサービス、通信サービス(車載LANの通信のためのネットワーク管理ソフト(CAN、FlexRay,LIN等))を有する。上記のCOM、NM及びDiagCANの通信モジュール33はサービス層に含まれる。
【0024】
ECU抽象化層は、搭載機器、メモリハードウェア、通信ハードウェア、及び、I/Oハードウェア等、ECUの全ての基本コンポーネントを抽象化する。最下層のMCALは、ECUのマイコンの全ての機能と周辺機器を抽象化する層である。MCALより上位のレイヤはマイコンのハードウェアから独立している。MCALは、上記のDMAドライバ38の他、例えば、メモリドライバ、通信ドライバ及びI/Oドライバを有する。
【0025】
図ではPF24は1つとしたが、統合前のコアやマイコンの種類が異なっている場合、統合前のPF24も異なっている場合があるので、その場合はそれぞれのPF24をROM13に記憶しておく。
【0026】
コア1は、ROM13に記憶されたPF24、アプリA,Bを実行し、コア2は、ROM13に記憶されたPF24、アプリCを実行する。ローカルRAM1はコア1に専用のメモリ(一次キャッシュ)であり、ローカルRAM2はコア2に専用のメモリである。SDRAM12は、コア1、2にプログラム又はデータを提供するためのメモリ(二次キャッシュ)である。SDRAM12の少なくとも一部はコア1、2により共有される。
【0027】
コア間通信部1、2は、コア通信バス16を介してコア1、2が相互に割り込んだり、通信することを可能にする。コア1、2は、コア間通信部1、2により、他のコアの異常の有無を監視したり、ローカルRAM1,2を介してデータを相互に通信することができる。なお、コア1〜3は、マルチレイヤバス14を経由して互いに通信することもできる。
【0028】
マルチレイヤバス14はCPU1用、CPU2用、及び、DMAコントローラ37の読み書き用の計4層のレイヤを備える。DMAコントローラ37はマルチレイヤバス14に接続された各ブロックからのSDRAM12へのアクセス要求を調停すると共に、SDRAM12からローカルRAM1、2へ(又は、ローカルRAM1、2からSDRAM)へ、I/O16からSDRAM12へ(又はSDRAMからI/Oへ)、コア1,2を介在することなくデータを転送する。DMAコントローラ37は転送終了によりコア1、2に適宜割込みをかけることできる。
【0029】
CANコントローラ29はCANプロトコルに従って通信処理を行う通信コントローラであり、この他、FlexRayやLIN用の通信コントローラを有していてもよい。I/O16はマイコンと外部の機器を接続するインタフェースであり、各種のセンサ、アクチュエータ等が接続される。
【実施例1】
【0030】
図4は、2つのECUα、βが統合された1つの統合ECU100の機能ブロック図の一例である。
【0031】
アプリAとアプリBは、一方が他方の演算結果を利用するようなアプリでもよいし、アプリBは単なるアイドルタスクのようにアプリAとBの結びつきが弱くてもよい。前者の場合、アプリA又はBがRTE32を介してイベントやデータを通知することで、互いに呼び出して実行される。アプリCは、ECUβに特有のアプリであるが、アプリA、Bがボデー系ならアプリCもボデー系のように結びつきの強いアプリであってもよいし、関連のないアプリでもよい。
【0032】
通信モジュール33はCOM、NM及びDiagCANを有し、図1において説明したとおり、COMは一般のデータを、NMはネットワークマネージメント機能のためのデータを、DiagCANはサービスツールに必要なデータを、それぞれ送受信するモジュールである。これら通信モジュールは、プロトコルに応じた(例えばCAN、FlexRay、Lin)通信の処理を行う。そして、さらに通信モジュールは、COM、NM、DiagCANなど、通信モジュールに定められたフォーマットでCANフレーム等を作成する。また、受信時には、CANIDに基づき受信すべきデータを選択的に受信する。COM、NM及びDiagCANのどの通信モジュールが処理すべきかはCANIDから判定される。
【0033】
なお、NMはOSEK/VDX―NM(Network Management)の規定に基づく通信を行うモジュールである。OSEK−NMでは、1つの車載LANに接続された各ECUが、自身のスリープ可否を判別して、そのスリープ可否を示すNM(Network Management)メッセージを定期的にネットワークバスへ送信するように規定されている。なお、NMメッセージはCANのメッセージの一表現に過ぎず、フォーマットや送信手順はCANプロトコルに従うが、周期的に送信されるなどの特徴があるのでOSEK−NMに基づくメッセージをNMメッセージという。
【0034】
NM1,2は、予め定められた周期毎に、アプリA、B又はCがスリープ可能か否かの判定を行い、スリープ可否を示すNMメッセージを、決まった順番で他のECUに送信する。各ECUは、NMメッセージを受信すると、他の各ECUがスリープ可否を記憶しておき、車載LANに接続された全てのECUがスリープ可になると、スリープモードへ移行する処理を開始する。したがって、スリープモードに入っていないのに、自身が受信すべき他のECUからNMメッセージを受信しないことで、他のECUに異常があることを検出できる。
【0035】
なお、NMはNMメッセージの他にNS(Network Status)メッセージを送信することもがあるが、NMメッセージと同様に取り扱うことができるので省略する。
【0036】
PDUルータ34は、データの送信先を制御する。CANコントローラ29を制御することができるコア1のPDUルータ1と、直接はCANコントローラ29を制御できないコア2のPDUルータ2とで機能が異なる。
【0037】
データの送信時、PDUルータ2は、CANドライバ38を呼び出せないので、全てのCANフレームを機械的にPDUルータ1に転送する必要がある。PDUルータ2はCOM、NM及びDiagCANのいずれの通信モジュールから通信を要求されても、DMAドライバ2を呼び出す。
【0038】
PDUルータ2がDMAドライバ2からデータを受信した場合は、宛先は通信モジュール33のいずれかであるので、通信モジュール33にデータを転送する。
【0039】
なお、コア2が4つめのアプリDを実行する場合も、コア2はCANコントローラ37を制御できないので、PDUルータ2の機能は同様である。
【0040】
次にPDUルータ1について説明する。
・PDUルータ1の送信時
PDUルータ1がCOM、NM及びDiagCANのいずれかの通信モジュール33からデータの送信を要求された場合、CANバス39に出力するだけでは、ECUβが受信していたデータをコア2が受信できない。このため、PDUルータ1は、データの送信時、CANドライバ1とDMAドライバ1の両方を呼び出す。データを受信するか否かは、コア2の通信モジュール33が判定すればよい。
【0041】
また、統合前のECUβが受信していたCANIDをリストアップしておき、PDUルータ1がそのCANIDのデータの送信を受け付けた場合には、DMAドライバ1を呼び出すようにしてもよい。
・PDUルータ1の受信時
PDUルータ1がデータを受信するのはCANドライバ経由とDMAドライバ1経由の場合がある。CANドライバ経由でデータを受信した場合、統合前と同様に、CANフレームは受信バッファなどに記憶され、COM、NM及びDiagCAN等の通信モジュール33が受信すべきか否かを判定する。したがって、PDUルータ1はCANドライバ経由で受信した全てのデータを通信モジュール33に出力する。
【0042】
また、通信モジュール33に出力するだけでは、統合前にECUβがECUαから受信していたデータをコア2が受信できない。このため、PDUルータ1は、CANドライバ経由でデータを受信した際、DMAドライバ1にデータを出力する。データを受信するか否かは、コア2の通信モジュール33が判定すればよい。この場合も、統合前のECUβが受信していたCANIDをリストアップしておき、PDUルータ1がそのCANIDのデータの送信を受け付けた場合にだけ、DMAドライバ1を呼び出すようにしてもよい。
【0043】
DMAドライバ1経由でデータを受信した場合、PDUルータ1は少なくともNMメッセージをCANバスに出力することを禁止する。このため、開発者などが予めCANバスに転送してよいCANフレーム(又は転送してはいけないCANフレーム)を転送リストテーブルに登録しておく。
【0044】
図5は、転送リストテーブルの一例を示す。転送リストテーブルには、転送してはいけないCANIDが登録されている。このCANIDにはNMメッセージのCANIDが含まれることになる。PDUルータ1は、DMAドライバ1経由でデータを受信した際、転送リストテーブルにより転送が禁止されていないデータのみCANドライバを呼び出してCANバス39に転送する。
【0045】
また、CANバス39に出力するだけでは、統合前にECUαがECUβから受信していたデータをコア1が受信できない。このため、PDUルータ1は、DMAドライバ1経由でデータを受信した際、通信モジュール33にデータを出力する。データを受信するか否かは、コア1の通信モジュール33が判定すればよい。
【0046】
CANドライバは統合前と変更がない。CANドライバは、ハードウェアであるCANコントローラ29から独立したインターフェイスであり、CANコントローラ29の初期化、CANメッセージの送信・受信、などの基本的な機能を提供する。
【0047】
DMAドライバ1,2は、ハードウェアであるDMAコントローラ37から独立したインターフェイスであり、DMAコントローラ37にデータの送信を実行させ、DMAコントローラ37が転送したデータを受信する。
【0048】
DMAドライバ1は、通信モジュールから取得したデータをローカルRAM1に記憶している。したがって、このデータをローカルRAM2に送信すれば、コア1からコア2にデータを転送したことになる。DMAドライバ2の場合はこの逆になる。ローカルRAM1,2のいずれも、CANフレームを送信する送信バッファ、及び、受信バッファのアドレスは予め定められている。送信バッファ及び受信バッファはいずれもFIFO形式のバッファである。
【0049】
DMAドライバ38は、PDUルータ34から呼び出された際に、SDRAM12を介してローカルRAM1からローカルRAM2へ(又は、その逆に)データを転送できるように修正されている。
【0050】
DMAドライバ1は、ローカルRAM1の送信バッファの先頭アドレスを、DMAコントローラ37の転送元アドレスレジスタに、データ長などから必要な転送回数をDMAコントローラ37の転送回数レジスタに(又は転送終了アドレスレジスタにCANフレームの最後のアドレスを設定してもよい)、SDRAM12の共有領域の先頭アドレスを、DMAコントローラ37の転送先アドレスレジスタに、それぞれ設定し、DMAコントローラ37に送信させる。
【0051】
DMAコントローラ37は転送が終了すると、コア2に割り込みして通知するので、コア2のDMAドライバ2は、SDRAM12の共有領域からCANフレームを読み出すことができる。
【0052】
DMAドライバ2の場合も同様である。DMAドライバ2は、PDUルータ2から取得したCANフレームをローカルRAM2に記憶している。DMAドライバ2は、ローカルRAM2の送信バッファの先頭アドレスを、DMAコントローラ37の転送元アドレスレジスタに、データ長などから必要な転送回数をDMAコントローラ37の転送回数レジスタに、SDRAM12の共有領域の先頭アドレスを、DMAコントローラ37の転送先アドレスレジスタに、それぞれ設定し、送信させる。
【0053】
DMAコントローラ37は転送が終了すると、コア2に割り込みして通知するので、コア2のDMAドライバ2は、SDRAM12の共有領域からCANフレームを読み出すことができる。
【0054】
なお、SDRAM12を経由することなく、ローカルRAM1、2間でデータを転送してもよい。この場合、DMAドライバ38の代わりに、コア間通信部21のドライバを使用するなど、コア間通信に必要なドライバを用いればよい。
【0055】
以上のように、PDUルータ1,2とDMAドライバ38を修正するだけで、アプリA,Bの可搬性や損なうことなく、2つのECUα、βを統合することができる。
【0056】
<動作手順>
図6は、PDUルータ1とPDUルータ2がデータを送信又は受信する手順を示すフローチャート図の一例である。図6の手順はPDUルータ1又はPDUルータ2がデータを取得するとスタートする。
【0057】
PDUルータ1から説明する。まず、PDUルータ1がデータを取得する(S10)。データを取得する場合には、アプリA又はアプリBから送信用のデータを取得する場合と、CANドライバ1又はDMAドライバ1から受信用のデータを取得する場合がある。送信時か受信時かは、PDUルータ1がアプリ側又はドライバ側のどちらからデータを取得したかにより判定される。
【0058】
データの受信時(S20のYes)、PDUルータ1はDMAドライバ1からデータを取得したか否かを判定する(S30)。
【0059】
DMAドライバ1からデータを取得した場合(S30のYes)、PDUルータ1はNMメッセージの転送を禁止するため、転送リストテーブルを参照し、送信禁止のデータを除き、CANドライバを呼び出してCANバスに転送する(S40)。
【0060】
続いて、PDUルータ1は、DMAドライバ1から取得したかCANドライバから取得したかに関係なく、データを通信モジュール33に出力する(S50)。通信モジュール33は、CANIDに基づき受信が必要か否かを判定し、必要な場合はRTE32を介してアプリA又はアプリBに出力する。
【0061】
また、PDUルータ1がCANドライバから取得したデータはアプリC宛の可能性もあるので、PDUルータ1はDMAドライバ1を呼び出す(S60)。これにより、DMAドライバ1がDMAコントローラ37を用いてDMAドライバ2にデータを送信する。
【0062】
データの送信時(S20のNo)、PDUルータ1は、CANドライバを呼び出す(S70)。これにより、CANドライバ1がCANコントローラ29を用いてCANバス39にデータを送信する。
【0063】
また、PDUルータ1が取得した送信用のデータがアプリC宛の可能性があるので、PDUルータ1はDMAドライバ1を呼び出す(S80)。これにより、DMAドライバ1がDMAコントローラ37を用いてDMAドライバ2にデータを送信する。
【0064】
次に、PDUルータ2について説明する。まず、PDUルータ2がデータを取得する(S110)。PDUルータ2がデータを取得する場合には、アプリCから送信用のデータを取得する場合と、DMAドライバ2から受信用のデータを取得する場合がある。送信時か受信時かは、PDUルータ2がアプリ側又はドライバ側のどちらからデータを取得したかにより判定される。
【0065】
データの受信時(S110のYes)、PDUルータ2はデータを通信モジュール33に出力する(S120)。通信モジュール33は、CANIDに基づき受信が必要か否かを判定する。
【0066】
データの送信時(S110のNo)、PDUルータ2はDMAドライバ2を呼び出す(S130)。これにより、DMAドライバ2がDMAコントローラ37を用いてDMAドライバ1にデータを送信する。
【0067】
<効果>
以上のような統合ECU100によれば、アプリCが送信したNMメッセージはアプリA又はアプリBには送信されても、CANバス39には出力されないので1つのECUから出力されるNMメッセージを1つにすることができる。
【0068】
また、アプリA〜Cを修正する必要がなく、修正の対象をDMAドライバ1,2やPDUルータ1、2に限定することができる。したがって、アプリA〜Cの可搬性を保つことができる。
【0069】
また、この他の効果としてCPU15の利用効率が低下しにくいという効果がある。
図7(a)はアプリA〜CがRTE32を介して通信する場合の統合ECUの構成例を示す図の一例である。RTE32にはイベントやデータをアプリ間で送受信する機能があるので、図示するようにDMAドライバ1,2を用いることなく、2つのECUを統合することも可能である。
【0070】
アプリAはアプリBと、アプリAはアプリCとRTEを介して通信することができる。また、CANバス39から通信モジュール(COM)が受信したデータは、通信モジュールがRTE32を介してアプリCに送信することもできる。しかしながら、RTE32で統合による全ての影響を吸収する方法を採用した場合、アプリA、Bがコア2のローカルRAM2に、アプリCがコア1のローカルRAM1にアクセスすることを意味しており、アプリA〜Cに排他制御が必要であることを意味する。排他されたアプリは実行されない(処理を進行できない)ので、CPU15の利用効率が低下する。これに対し、本実施例の統合ECU100ではこのような不都合をもたらすことがない。
【0071】
また、統合ECU100の消費電力の低消費電力化が図れるという効果がある。
図7(b)は4つのコア1〜4とアプリA〜Hの関係を模式的に示す図の一例である。コア1はアプリA、Bを、コア2はアプリC、Dを、コア3はアプリE、Fを、コア4はアプリG、Hを、それぞれ実行する。例えば、アプリDはアプリE,Fとしか通信せず、アプリCはアプリFとしか通信しない場合(外部とも通信しない)、コア2とコア3の中で通信が完結する。このため、アプリC、D、E、Fでスリープ条件が成立した場合、コア2,3を停止させることができ、低消費電力化を達成しやすい。より具体的には図7(a)のようにRTE32がアプリC、D、E、F間の通信を担うと、アプリC、D、E、Fがスリープ条件を満たしても、通信のためにRTE32は起動しておく必要があるので、コア2,3を停止させることができず、低消費電力化が図れない。本実施例ではコア単位でRTE32も停止しておくことができるので、統合ECU100の消費電力を低減することが容易になる。
【実施例2】
【0072】
実施例1ではDMAドライバ1,2によりコア間通信を行うことで統合ECU100を構成した。本実施例では、IPC-IF41/IPCドライバ42によりコア間通信を統合ECU100について説明する。
【0073】
図8は、2つのECUα、βを統合して得られた1つの統合ECU100の機能ブロック図の一例である。図8において図4と同一部の説明は省略する。図8ではDMAドライバ1の代わりにIPC-IF(InterProcess Communication Inter Face)1/IPC((InterProcess Communication)ドライバ1が、DMAドライバ2の代わりにIPC-IF2/IPCドライバ2が、配置されている。
【0074】
また、DMAコントローラ37の代わりにローカルRAM1が配置されている。図8の構成ではコア1とコア2は、FIFO形式の送信キュー、受信キュー、及び、ローカルRAM1を介して通信する。
【0075】
IPC-IF41は送信キュー43へのデータの登録機能と受信キューにデータが届いた場合にアプリ側に受信完了通知を出力する。
IPCドライバ42は、
・送信キューにストックされたデータをローカルRAM1に登録する。
・共有RAMにストックされたデータを受信キューに書き込む。
【0076】
図9は、IPC-IF1/IPCドライバ1とIPC-IF2/IPCドライバ2とが通信する手順を模式的に示す図の一例である。図9はNMの周期的な通信を例にしている。図9(a)はコア1からコア2への送信手順を、図9(b)はコア2からコア1への送信手順をそれぞれ示す。
【0077】
図9(a)に基づき説明する。
(1)まず、NM1からPDUルータ1に送信登録するとPDUルータ内で静的に設定されたCANIDのルーティング情報を元にIPC-IF1側にデータを登録する。
(2)コア1のPDUルータ1はIPCドライバ1を起床させる。
(3)IPCドライバ1は送信キュー43のデータを読み出しローカルRAM1に記憶する。
(4)コア2のPDUルータ2はIPCドライバ2を起床させる。
(5)IPCドライバ2はローカルRAM1のデータを読み出し、PDUルータ2にデータを登録する。PDUルータ側では静的に設定されたCANIDのルーティング情報を元にIPC-IF2の受信キュー44に登録する。
(6)PDUルータ2は、NM2に受信完了通知を通知する。
【0078】
図9(b)は手順が逆になるだけなので説明を省略する。図9(a)と(b)のいずれもローカルRAM1を共有RAMとして使用しているので、なんらかの排他制御が必要になるが。本実施例では、例えばセマフォを利用し、IPCドライバ1,2のうちセマフォを取得した方がローカルRAM1の使用権を得るようになっている。
【0079】
図10は、PDUルータ1とPDUルータ2がデータを送信又は受信する手順を示すフローチャート図の一例である。図10の手順は図6の手順とほぼ同じであり、PDUルータ34がDMAドライバ38を呼び出すか、IPC-IF41/IPCドライバ42を呼び出すかが異なるだけである。
【0080】
このように、アプリ間(プロセス間)の通信を可能にするドライバであれば、DMAコントローラ37を用いる必要はなく、実施例1と同様にアプリ間の通信が可能な統合ECU100を実現することができる。
【0081】
図11は、データフローを説明する図の一例である。図11では通信モジュール33のCOMが通信する手順を例にしている。
・アプリB→アプリA
(A1)アプリCが送信すべきデータdata_aを生成したため、RTE32を介してCOMに送信する。なお、「共通CS(Communication Stack)」は各コアで共通の、COMやIPC-IF41、IPCドライバ42を使用した通信処理を行う機能(ソフトウェア)である。
(A2)COMはメッセージを生成し、PDUルータ2に送信する。
(A3)PDUルータ2は、メッセージをIPC-IF2の送信キュー43に登録する。
(A4)IPCドライバ2は送信キュー43からメッセージを読み出してローカルRAM1に書き込む。
(A5)IPCドライバ1はローカルRAM1からメッセージを読み出し、IPC-IF1の受信キュー44に登録する。
(A6)IPC-IF1は受信完了通知とメッセージをPDUルータ1に通知する。PDUルータはデータを振り分けることができるが、図では通信モジュール33のCOM側にデータを出力している。
(A7)COM1はデータをアプリAに出力する。
・アプリA→CANバス
(B1)アプリAが送信すべきデータdata_bを生成した場合、RTE1を介してCOM1に送信する。
(B2)COM1はメッセージを生成し、PDUルータ1に出力する。
(B3)PDUルータ1は、メッセージBをCAN I/F45とIPC-IF1に出力する。図では、IPC−IF1側への出力は省略した。なお、CAN
I/F45は、送信キューへのデータの登録機能と受信キューにデータが届いた場合にPDUルータ1側に受信完了通知を出力する
(B4)CAN I/F45はCANドライバにメッセージBを出力する。
(B5)CANドライバは、CANコントローラ29を使用してフレームBをCANバス39に出力する。
【0082】
以上のように、DMAコントローラ37を用いなくても、IPC-IF41/IPCドライバ42を用いることで、実施例1と同様に、1つのECUから出力されるNMメッセージを1つにすることができ、アプリA〜Cの可搬性を保つことができる。また、CPU15の利用効率を低下させることがなく、消費電力も低減しやすい。
【実施例3】
【0083】
実施例1,2では複数のECUを、マルチコア型のプロセッサを備えた1つマイコンに統合して1つの統合ECU100を実現した。本実施例では、複数のマイコンを1つのECUに統合した統合ECU100について説明する。マイコンという枠組みを残したままの統合ECU100には2つの構成がある。
【0084】
図12は、マルチマイコンの機能ブロック図の一例である。図12において図4と同一部の説明は省略する。図12では、統合ECU100にマイコン51(区別する場合マイコン1,2という)が搭載されたので、最下層にマイコン1,2が配置されている。マイコン1,2はDMAコントローラ37により通信するものとするが、マイコン1,2が通信可能であれば共有メモリ(IPC-IF41/IPCドライバ42)、専用の通信線などを介して通信してもよい。図12のようなマルチマイコンの場合の通信手順は実施例1と同様なので説明は省略する。
【0085】
図13は、マルチマイコンの機能ブロック図の一例である。図13において図4と同一部の説明は省略する。1つのマイコン51は、通常、複数個のチャネルを有するので、マイコン2側のチャネルの1つをDMAコントローラ37に割り当てても、チェネルが余る。また、NMメッセージ以外は、1つのECUが複数個出力しても問題がない。そこで、マイコン2のもう1つのチェネルをCANコントローラ29に割り当てる。こうすることで、マイコン1と2は、NMメッセージだけを統合ECU100内で処理すればよいことになる。
【0086】
すなわち、PDUルータ2は、CANIDからNMメッセージと判定される場合、又は、通信モジュール33からデータを受け付けた場合、DMAドライバ2を呼び出し、それ以外の場合はCANドライバ2を呼び出す。PDUルータ1のDMAドライバ1は、実施例1と同様にデータを受信してPDUルータ1に出力する。PDUルータ1はNMメッセージであるのでCANバス39に出力することなく、通信モジュール33にだけデータを出力する。こうすることで、2つのマイコン1,2を有する統合ECU100でも、複数のNMメッセージをCANバス39に出力することを防止できる。
【0087】
また、マイコン1及び2の双方がCANコントローラ29を有するので、PDUルータ1は、DMAドライバ1により内部的にマイコン2と通信することも、CANバス39を介してマイコン2と通信することもできる。マイコン2との通信を、統合前と同様にCANバス39を使用するように設計すれば、PDUルータ1、2が必要なCANフレームの振り分けをさらに少なくできる。
【0088】
図14は、PDUルータ1とPDUルータ2がデータを送信又は受信する手順を示すフローチャート図の一例である。図14の手順のうち図6の手順と異なるステップを説明する。
【0089】
まず、実施例1と同様に、データの受信時、PDUルータ1はDMAドライバ1からデータを取得した場合(S30のYes)、PDUルータ1はNMメッセージの転送を禁止するため、転送リストテーブルを参照し、送信禁止のデータを除き、CANドライバを呼び出してCANバス39に転送する(S40)。
【0090】
また、PDUルータ1は、DMAドライバ1から取得したかCANドライバから取得したかに関係なく、データを通信モジュール33に出力する(S50)。この後、実施例1と異なり、マイコン2がCANコントローラ2を有しているので、アプリC宛のデータはマイコン2が直接受信する。このため、PDUルータ1がDMAドライバ1を呼び出す必要はない。
【0091】
データの送信時(S20のNo)も同様で、PDUルータ1はCANドライバを呼び出すが(S80)、アプリC宛のデータはCANバス経由でマイコン2に送信すればよいので、PDUルータ1がDMAドライバ1を呼び出す必要がない。
【0092】
PDUルータ2の場合、データの受信時(S120のYes)、PDUルータ2はデータを通信モジュール33に出力する(S130)ので、受信時に変更はない。
【0093】
データの送信時(S120のNo)、PDUルータ2はMNデータをDMAドライバ2に振り分けるため、データがNMメッセージか否かを判定する(S125)。そして、PDUルータ2はMNメッセージの場合だけ、DMAドライバ2を呼び出す(S140)。また、PDUルータ2はMNメッセージ以外のデータの場合、CANドライバ2を呼び出す(S150)。これにより、マイコン2はNMメッセージだけを内部的にマイコン1に送信することができる。
【0094】
このように、マルチマイコンの場合、実施例1,2と同様に統合後のアプリが通信することもできるし、実施例1,2よりも容易にアプリの通信を実現することもできる。
【符号の説明】
【0095】
11 プロセッサ 22 ローカルRAM 29 CANコントローラ
31 アプリ 32 RTE 33 通信モジュール
34 PDUルータ 35 MCAL 36 コア
37 DMAコントローラ 38 DMAドライバ
39 CANバス 40 仮想CANバス 51 マイコン
100 統合ECU

【特許請求の範囲】
【請求項1】
第1のコアが実行する第1のアプリと第2のコアが実行する第2のアプリがそれぞれ外部にデータを送信する車両制御装置であって、
バスを介して外部の機器と通信するため通信手段と、
前記第1のコアと前記第2のコアの間で通信する内部通信手段と、
前記第2のアプリの第1の送信データを前記通信手段でなく前記内部通信手段に出力する出力先変更手段と、
前記内部通信手段から取得した前記第1の送信データを前記第1のアプリ又は前記通信手段のどちらに出力するかを、前記第1の送信データの送信先情報が登録されたリストテーブルに従い制御するデータ送信先制御手段と、
を有する車両制御装置。
【請求項2】
前記データ送信先制御手段は、前記第1のアプリから取得した第2の送信データを前記通信手段及び前記内部通信手段に出力し、
前記通信手段は前記第2の送信データを外部に送信し、前記内部通信手段は前記第2の送信データを前記第2のコアに送信する、
ことを特徴とする請求項1記載の車両制御装置。
【請求項3】
前記通信手段が外部から受信データを受信した際、
前記データ送信先制御手段は、前記受信データを前記第1のアプリに出力すると共に、前記内部通信手段に出力し、
前記内部通信手段は前記受信データを前記第2のコアに送信する、
ことを特徴とする請求項1又は2記載の車両制御装置。
【請求項4】
前記内部通信手段は、DMAコントローラと共有メモリを使用して、又は、内部通信用のドライバと前記第1又は第2のコアのローカルRAMを使用して、前記第1のコアと前記第2のコアの間で通信する、
ことを特徴とする請求項1〜3いずれか1項記載の車両制御装置。
【請求項5】
前記リストテーブルには、前記通信手段へ出力を禁止する前記第1の送信データとしてOSEK/VDX―NM(Network Management)の規定に基づくNMメッセージが登録されており、
前記データ送信先制御手段は、NMメッセージを前記通信手段に出力せず、前記第1のアプリにのみ出力する、
ことを特徴とする請求項1〜4いずれか1項記載の車両制御装置。
【請求項6】
当該車両制御装置は、複数のコアを備えるプロセッサが1つのマイコン内に配置された電子制御ユニットである、
ことを特徴とする請求項1〜5いずれか1項記載の車両制御装置。
【請求項7】
当該車両制御装置は、マイコン内に1つ以上のコアを有するプロセッサが配置された複数個のマイコンを備える電子制御ユニットであり、
第1のマイコンと第2のマイコンがそれぞれ別々の前記通信手段と接続されており、
前記出力先変更手段は、前記第1の送信データが予め定められた所定の送信データの場合にのみ前記内部通信手段に出力し、所定の送信データ以外の前記第1の送信データを、前記第2のマイコンに接続された前記通信手段に出力する、
ことを特徴とする請求項1項記載の車両制御装置。
【請求項8】
前記データ送信先制御手段は、前記第1のアプリから取得した第2の送信データを前記第1のマイコンに接続された前記通信手段にのみ出力し、
前記第2のアプリは、前記第2のマイコンに接続された前記通信手段を介して前記第2のデータを受信する、
ことを特徴とする請求項7記載の車両制御装置。
【請求項9】
電子制御装置の1のコアが実行する第1のアプリと第2のコアが実行する第2のアプリがそれぞれ外部とデータ通信するデータ通信方法であって、
前記第2のアプリが第1の送信データを生成するステップと、
出力先変更手段が前記第1の送信データを前記通信手段でなく前記内部通信手段に出力するステップと、
前記内部通信手段が前記第1の送信データを前記第1のコアに送信するステップと、
データ送信先制御手段が、前記第1の送信データを前記第1のアプリ又は前記通信手段のどちらに出力するかを、前記第1の送信データの送信先情報が登録されたリストテーブルに従い制御するステップと、
を有するデータ通信方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate


【公開番号】特開2012−128788(P2012−128788A)
【公開日】平成24年7月5日(2012.7.5)
【国際特許分類】
【出願番号】特願2010−281720(P2010−281720)
【出願日】平成22年12月17日(2010.12.17)
【出願人】(000003207)トヨタ自動車株式会社 (59,920)
【Fターム(参考)】