(57)【要約】【課題】電子制御装置の機能検証の効率を向上させる。【解決手段】自動車に搭載される電子制御装置は、制御プログラムを任意の機能ごとに分割した複数のモジュールを格納するＲＯＭ１３０（不揮発性メモリ）と、制御プログラムうち少なくとも１つのモジュールの処理内容を変更した変更モジュールを格納するＲＡＭ１４０（揮発性メモリ）と、を有する。ＲＯＭ１３０に格納されたモジュールには、切替要求の有無に応じて、所定の演算などを行う演算命令と、モジュールに関連付けられた変更モジュールをコールするコール命令と、を切り替える処理が組み込まれている。そして、電子制御装置が外部から切替要求を受信すると、モジュールから変更モジュールがコールされ、モジュールに代えて変更モジュールが実行される。【選択図】図１０
2014063350.tif 000002
【特許請求の範囲】
【請求項１】
制御プログラムを格納する不揮発性メモリと、前記制御プログラムの機能の一部を分割したモジュールを格納する揮発性メモリと、を有する自動車用電子制御装置であって、
外部からの指示に応答して、前記不揮発性メモリに格納された制御プログラムの機能の一部の代わりに、前記揮発性メモリに格納されたモジュールを実行することを特徴とする自動車用電子制御装置。
【請求項２】
前記実行されるモジュールは、外部から指定可能であることを特徴とする請求項１に記載の自動車用電子制御装置。
【請求項３】
外部からモジュールを受信した場合に、前記揮発性メモリに前記モジュールを展開することを特徴とする請求項１又は請求項２に記載の自動車用電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、自動車に搭載された電子制御装置に関する。
【背景技術】
【０００２】
自動車に搭載される電子制御装置では、各種機能を分割したモジュール単位で、制御プログラムが開発されている。制御プログラムの検証段階においては、例えば、新規な制御を追加する、制御対象のアクチュエータが変更になるなど、電子制御装置の不揮発性メモリに格納されているモジュールの一部を変更する場合がある。この場合、モジュールの変更を容易にするために、特開２０１０−１７３６３３号公報（特許文献１）に記載されるように、電子制御装置と接続されたツールにおいて、電子制御装置から変数を受け取り、その変数を用いた演算を行い、その演算結果を電子制御装置に返す技術が提案されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−１７３６３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来技術においては、電子制御装置とツールとの間で変数又は演算結果の通信を頻繁に行う必要があるため、電子制御装置の通信速度が一般的に遅いことと相俟って通信負荷が増大してしまうおそれがあった。通信負荷の増大は、レスポンスを低下するため、電子制御装置の機能検証に要する時間を長くする要因となってしまう。
【０００５】
そこで、本発明は、機能検証の効率を向上させた、自動車用電子制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
自動車用電子制御装置は、制御プログラムを格納する不揮発性メモリと、制御プログラムの機能の一部を分割したモジュールを格納する揮発性メモリと、を有する。そして、自動車用電子制御装置は、外部からの指示に応答して、不揮発性メモリに格納された制御プログラムの機能の一部の代わりに、揮発性メモリに格納されたモジュールを実行する。
【発明の効果】
【０００７】
かかる自動車用電子制御装置によれば、電子制御装置の機能検証の効率を向上させることができる。
【図面の簡単な説明】
【０００８】
【図１】電子制御装置の検証システムの一例を示す全体構成図である。
【図２】電子制御装置の一例を示す内部構造図である。
【図３】ツールの一例を示す内部構造図である。
【図４】制御プログラムのモジュールに組み込まれた処理の説明図である。
【図５】電子制御装置の機能を検証する手順の概要図である。
【図６】ツールにおける初期化処理の一例を示すフローチャートである。
【図７】電子制御装置における初期化処理の一例を示すフローチャートである。
【図８】電子制御装置のＲＡＭ（Random Access Memory）に展開される変更モジュールの一例の説明図である。
【図９】電子制御装置におけるモジュール実行処理の一例を示すフローチャートである。
【図１０】電子制御装置のＲＯＭ（Read Only Memory）及びＲＡＭに格納されるモジュール及び変更モジュールの具体的事例の説明図である。
【図１１】切替要求がない場合のモジュール実行過程の説明図である。
【図１２】切替要求がある場合のモジュール実行過程の説明図である。
【図１３】制御プログラムのモジュールに組み込まれた処理の他の例を示し、（Ａ）は組み込み処理の概要図、（Ｂ）は１回目のコール時の動作の説明図、（Ｃ）は２回目以降のコール時の動作の説明図である。
【発明を実施するための形態】
【０００９】
以下、添付された図面を参照し、本発明を実施するための実施形態について詳述する。
図１は、自動車に搭載された電子制御装置（ＥＣＵ：Electronic Control Unit）の検証システムの一例を示す。
【００１０】
検証対象となるＥＣＵ１００は、ＣＡＮ（Controller Area Network），シリアル通信，ＦｌｅｘＲａｙ（登録商標）などのネットワークケーブル２００を介して、作業者がＥＣＵ１００の検証作業を行う、ツール３００（検証装置）に着脱可能に接続される。
【００１１】
ＥＣＵ１００は、自動車に搭載された各種機器、例えば、燃料噴射弁，変速機，電動ブレーキシステム，ＡＢＳ（Antilock Brake System），可変バルブタイミング機構，ブラシレスモータなどを制御する電子機器であって、マイクロコンピュータを内蔵している。具体的には、ＥＣＵ１００は、図２に示すように、ＣＰＵ（Central Processing Unit）などのプロセッサ１１０と、ネットワークに接続するための通信回路１２０と、不揮発性メモリの一例としてのＲＯＭ１３０と、揮発性メモリの一例としてのＲＡＭ１４０と、プロセッサ１１０，通信回路１２０，ＲＯＭ１３０及びＲＡＭ１４０を相互に接続するバス１５０と、を有している。ここで、通信回路１２０は、ネットワークケーブル２００を着脱可能に接続するコネクタ（図示せず）を含む。また、ＲＯＭ１３０には、制御対象の車載機器を制御するための制御プログラムとして、各種機能を任意の単位（例えば、関数ごと）で分割したモジュールのすべてが格納されている。制御プログラムをモジュール化すると、一部のモジュールのみを書き換えることで、制御プログラムを変更できるので好都合である。なお、不揮発メモリとして、電気的にデータを消去及び書換可能なフラッシュＲＯＭを使用することもできる。
【００１２】
ツール３００は、作業者がＥＣＵ１００の検証作業を行う電子機器であって、例えば、パーソナルコンピュータなどのコンピュータから構成される。具体的には、ツール３００は、図３に示すように、ＣＰＵなどのプロセッサ３１０と、ネットワークに接続するための通信回路３２０と、ハードディスク装置，ＳＳＤ（Solid State Drive）などのストレージ３３０と、作業者へのインターフェースとなる入出力装置３４０と、を有している。ここで、通信回路３２０は、ネットワークケーブル２００を着脱可能に接続するコネクタ（図示せず）を含む。また、入出力装置３４０は、ＬＣＤ（Liquid Crystal Display）などのディスプレイと、キーボードと、マウスなどのポインティングデバイスと、を含む。なお、ストレージ３３０は、例えば、図示しないネットワークに接続されたＮＡＳ（Network Attached Storage），サーバのストレージなどであってもよい。
【００１３】
ストレージ３３０には、ＥＣＵ１００のＲＯＭ１３０に格納された制御プログラムのうち、少なくとも一部の機能を変更したモジュール（以下「変更モジュール」という）１〜Ｎが格納されている。変更モジュール１〜Ｎは、例えば、制御プログラムを開発するシステムで作成され、図示しないネットワークを介してツール３００のストレージ３３０に格納される。なお、ストレージ３３０には、変更モジュールが少なくとも１つ格納されていればよい。
【００１４】
ＥＣＵ１００において、ＲＯＭ１３０に格納された制御プログラムのモジュールに代えて、任意の変更モジュールを実行可能なように、次のような工夫がなされている。即ち、ＲＯＭ１３０に格納された制御プログラムのモジュールの一例として、図４に示すように、外部、例えば、ツール３００からの切替要求の有無に応じて、所定の演算を行う演算命令と、変更モジュールのコール命令と、を切り替える処理が組み込まれている。図示のモジュールでは、関数ｆ（）について、切替要求がない場合には、Ｘ＝Ａ＊Ｂ，Ｙ＝Ａ−Ｂという演算を行う一方、切替要求がある場合には、変更モジュールの関数ｆ’（）をコールすることが記述されている。なお、Ａ，Ｂ，Ｘ及びＹは、広域変数である。
【００１５】
図５は、変更モジュールを使用して、ＥＣＵ１００の機能を検証する手順の概要を示す。
ステップ１（図では「Ｓ１」と略記する。以下同様。）では、作業者が、ネットワークケーブル２００及び電源ケーブル（図示せず）を介して、ツール３００にＥＣＵ１００を接続する。ツール３００にＥＣＵ１００が接続されると、ＥＣＵ１００への電源供給が開始され、例えば、ブートローダにより、ＲＯＭ１３０に格納された制御プログラムの実行が開始される。
【００１６】
ステップ２では、ツール３００を操作する作業者の指示に応答して、ツール３００が、作業者が選択した少なくとも１つの変更モジュールをＥＣＵ１００へ送信する「初期化」を実行する。
【００１７】
ステップ３では、ツール３００を操作する作業者の指示に応答して、ツール３００が、ＥＣＵ１００の機能検証を行う。ツール３００は、例えば、ＥＣＵ１００から送信された車両情報，外部から入力された他の情報，作業者により入力された他の情報などを使用して、シミュレーションなどによって車両を代用し、ＥＣＵ１００が所望の機能を実現しているか否かを診断する機能検証を行う。なお、ＥＣＵ１００の機能検証作業においては、ツール３００を操作する作業者は、対話型形式で作業を進めることができる。
【００１８】
ステップ４では、ツール３００が、作業者により終了指示が入力されたか否かを介して、ＥＣＵ１００の機能検証が終了したか否かを判定する。そして、ツール３００は、ＥＣＵ１００の機能検証が終了したと判定すれば処理をステップ５へと進める一方（Ｙｅｓ）、ＥＣＵ１００の機能検証が終了していないと判定すれば処理をステップ２へと戻す（Ｎｏ）。なお、この判定処理は、作業者が行うようにしてもよい。
【００１９】
ステップ５では、作業者が、ＥＣＵ１００からネットワークケーブル２００及び電源ケーブルを取り外すことで、ツール３００からＥＣＵ１００を取り外す。なお、ツール３００からＥＣＵ１００を取り外す前に、ツール３００からＥＣＵ１００へとシャットダウン指令を送信し、ＥＣＵ１００を前もって停止させるようにしてもよい。
【００２０】
図６は、ツール３００を操作する作業者が変更モジュールを選択し、例えば、「初期化実行」ボタンを押したことを契機として、ツール３００のプロセッサ３１０が実行する初期化処理の一例を示す。ここで、変更モジュールの選択は、例えば、ツール３００の入出力装置３４０を用いた対話型形式で行うようにしてもよい。なお、ツール３００のプロセッサ３１０は、変更モジュールを列挙した初期化指令を受けた場合に、初期化処理を実行するようにしてもよい。
【００２１】
ステップ１１では、プロセッサ３１０が、作業者により選択された少なくとも１つの変更モジュールをＥＣＵ１００へと送信する。
ステップ１２では、プロセッサ３１０が、ＥＣＵ１００から展開完了通知、即ち、ＥＣＵ１００が変更モジュールをＲＡＭ１４０に展開したことを示す通知があったか否かを判定する。そして、プロセッサ３１０は、ＥＣＵ１００から展開完了通知があったと判定すれば処理をステップ１３へと進める一方（Ｙｅｓ）、ＥＣＵ１００から展開完了通知がないと判定すれば処理をステップ１２へと戻す（Ｎｏ）。要するに、プロセッサ１３０は、ＥＣＵ１００に変更モジュールを送信してからその応答があるまで待機する。
【００２２】
ステップ１３では、プロセッサ３１０が、ＥＣＵ１００に切替要求、即ち、ＥＣＵ１００のＲＯＭ１３０に格納されている制御プログラムのモジュールに代えて、変更モジュールを実行すべき旨の要求を送信する。切替要求を受信したＥＣＵ１００は、例えば、フラグを使用して、切替要求があったことを保持する。
【００２３】
なお、ＥＣＵ１００への切替要求の送信は、ツール３００を操作する作業者の指示に応答して行うようにしてもよい。このようにすれば、ＥＣＵ１００に変更モジュールを送信した後、任意のタイミングでモジュールを切り替えることができる。
【００２４】
図７は、ＥＣＵ１００が変更モジュールを受信したことを契機として、ＥＣＵ１００のプロセッサ１１０が実行する初期化処理の一例を示す。
ステップ２１では、プロセッサ１１０が、ツール３００から送信されてきたすべての変更モジュールをＲＡＭ１４０に展開する。このとき、ＲＡＭ１４０の各変更モジュール、例えば、変更モジュール１には、図８に示すように、変更モジュール１内でのみ使用（参照）する変数Ａ，Ｂ，Ｘ及びＹ（専用変数）を格納する専用領域が確保されている。また、ＲＡＭ１４０には、ＲＯＭ１３０に格納されている制御プログラムの各モジュールが共用して使用（参照）する、変数Ａ，Ｂ，Ｘ及びＹ（共用変数）を格納する共用領域が確保されている。なお、変更モジュールに識別子の一例としてのＩＤを付し、このＩＤを使用して制御プログラムのモジュールとの関連付けを行う。
【００２５】
ステップ２２では、プロセッサ１１０が、展開完了通知をツール３００に送信する。
かかる初期化処理によれば、ツール３００において作業者が変更モジュールを選択して初期化実行を指示すると、ツール３００からＥＣＵ１００へと変更モジュールが送信される。そして、変更モジュールを受信したＥＣＵ１００では、変更モジュールの実行を可能とすべく、変更モジュールがＲＡＭ１４０に展開される。このため、ＥＣＵ１００のＲＯＭ１３０に格納された制御プログラムのモジュールに代えて、任意の変更モジュールを実行する準備を行うことができる。
【００２６】
図９は、制御プログラムの実行が開始されたことを契機として、ＥＣＵ１００のプロセッサ１１０が所定時間（例えば、１００ｍｓ）ごとに実行するモジュール実行処理の一例を示す。なお、モジュール実行処理は、制御対象の制御内容に応じたモジュールの順番で順次実行される。
【００２７】
ステップ３１では、プロセッサ１１０が、ツール３００から切替要求があったか否かを判定する。そして、プロセッサ１１０は、ツール３００から切替要求があったと判定すれば処理をステップ３２へと進める一方（Ｙｅｓ）、ツール３００から切替要求がなかったと判定すれば処理をステップ３５へと進める（Ｎｏ）。
【００２８】
ステップ３２では、プロセッサ１１０が、ＩＤを使用して実行対象のモジュールに関連付けられている変更モジュールを特定し、ＲＡＭ１４０の共用領域に格納されている変数を変更モジュールの専用領域にコピーする。
【００２９】
ステップ３３では、プロセッサ１１０が、実行対象のモジュールを実行する。実行対象のモジュールを実行すると、ツール３００から切替要求があることから、そのモジュールから変更モジュールがコールされる。そして、変更モジュールは、その専用領域に格納されている変数を使用して所定の演算などを行い、その演算結果を専用領域に格納する。
【００３０】
ステップ３４では、プロセッサ１１０が、専用モジュールの専用領域に格納されている変数をＲＡＭ１４０の共用領域にコピーする。これにより、制御プログラムの他のモジュールが、共用領域に格納された変数を使用して各処理を行うことができる。
【００３１】
ステップ３５では、プロセッサ１１０が、実行対象のモジュールを実行する。実行対象のモジュールを実行すると、そのモジュールは共用領域に格納されている変数を使用して所定の演算などを行い、その演算結果を共用領域に格納する。
【００３２】
かかるモジュール実行処理によれば、ツール３００から切替要求がない場合には、実行対象のモジュールが実行される。
一方、ツール３００から切替要求がある場合には、ＲＡＭ１４０の共用領域に格納されている変数を、実行対象のモジュールに関連付けられている変更モジュールの専用領域にコピーした後、モジュールが実行される。即ち、変更モジュールは、制御プログラムが使用する共用領域のアドレスを知り得ないため、変更モジュールを実行する前に、共用領域の変数を専用領域にコピーすることで、変数を使用できるようになる。そして、実行対象のモジュールが実行されると、そのモジュールに関連付けられている変更モジュールがコールされ、変更モジュールの専用領域に格納されている変数を使用して所定の演算などが行われ、その演算結果が専用領域に格納される。その後、変更モジュールの専用領域に格納された変数がＲＡＭ１４０の共用領域にコピーされ、他のモジュールから使用できるようになる。
【００３３】
従って、ＥＣＵ１００が外部からの切替要求を受信することで、制御プログラムのモジュールに代えて、そのモジュールに関連付けられている変更モジュールを実行することができる。このとき、ツール３００からＥＣＵ１００へと切替要求を一度送信すればよく、ネットワークの通信速度よりも高速な、ＥＣＵ１００の内部処理においてモジュールの切り替えが行われる。このため、通信負荷の増大の抑制を通してレスポンスが向上し、ＥＣＵ１００の機能検証の効率を向上させることができる。
【００３４】
ここで、かかるモジュール実行処理の理解を容易ならしめるために、具体的な事例を想定して説明する。その前提条件として、図１０に示すように、ＥＣＵ１００のＲＯＭ１３０には、前述したモジュール１が格納されていると共に、ＥＣＵ１００のＲＡＭ１４０には、ＲＯＭ１３０のモジュール１に関連付けられている変更モジュール１が格納されているものとする。ＲＡＭ１４０に格納されている変更モジュール１は、関数ｆ’（）として、Ｘ＝Ａ＋Ｂ，Ｙ＝Ｘ＊Ｂを演算する。そして、ＲＡＭ１４０の共用領域には、変数Ａ，Ｂ，Ｘ及びＹの一例として、３，７，−及び−が夫々格納されているものとする。ここで、変数Ｘ及びＹの値「−」は、値が不定であることを示している。
【００３５】
切替要求がない場合には、図１１に示すように、共用領域に格納されている変数を使用して、ＲＯＭ１３０に格納されているモジュール１の演算が実行される。モジュール１では、変数Ａと変数Ｂとを乗算した値を変数Ｘに代入すると共に、変数Ｘから変数Ｂを減算した値を変数Ｙに代入する。この演算により、共用領域の変数Ｘ及びＹは、夫々、２１及び１４に更新される。
【００３６】
一方、切替要求がある場合には、図１２に示すように、共用領域に格納されている変数が変更モジュール１の専用領域にコピーされ、ＲＯＭ１３０に格納されているモジュール１が実行される。このとき、モジュール１から変更モジュール１がコールされ、その専用領域に格納されている変数を使用した演算が実行される。変更モジュール１では、変数Ａと変数Ｂとを加算した値を変数Ｘに代入すると共に、変数Ｘと変数Ｂとを乗算した値を変数Ｙに代入する。この演算により、専用領域の変数Ｘ及びＹは、夫々、１０及び７０に更新される。その後、変更モジュール１の専用領域に格納された変数がＲＡＭ１４０の共用領域にコピーされる。
【００３７】
ＥＣＵ１００のＲＯＭ１３０に格納されたモジュールは、図１３（Ａ）に示すようにしてもよい。即ち、関数ｆ（）の処理として、同図の（１）には、関数ｆ（）の１回目のコールでは何もせず、２回目以降のコールでは変更モジュールをコールした後、関数ｆ（）の終了アドレスへとジャンプする命令を記述する。また、同図の（２）には、関数ｆ（）の１回目のコールでは関数ｆ（）の終了アドレスを記憶し、２回目以降のコールでは何もしない命令を記述する。
【００３８】
このようにすれば、関数ｆ（）の１回目のコールでは、図１３（Ｂ）に示すように、（１）では何もせず、（２）では関数ｆ（）の終了アドレスが記憶される。また、関数ｆ（）の２回目以降のコールでは、図１３（Ｃ）に示すように、（１）では変更モジュールのコール後、１回目のコールで記憶された終了アドレスにジャンプし、（２）では何もしない。従って、モジュールから任意の変更モジュールをコールすることができる。
【００３９】
ここで、前記実施形態から把握し得る請求項以外の実施形態について、以下に効果と共に記載する。
（イ）前記不揮発性メモリに格納されている制御プログラムには、外部からの指示の有無に応じて、所定の演算を行う命令と、前記モジュールをコールする命令と、を切り替える処理が組み込まれていることを特徴とする請求項１〜請求項３のいずれか１つに記載の自動車用電子制御装置。
かかる構成によれば、外部から指示を与えることで、制御プログラムからモジュールがコールされるので、制御プログラムの機能の一部に代えてモジュールを実行することができる。
【００４０】
（ロ）前記制御プログラムの機能の一部と前記モジュールとは、識別子により関連付けられていることを特徴とする請求項１〜請求項３、（イ）のいずれか１つに記載の自動車用電子制御装置。
かかる構成によれば、制御プログラムの機能の一部に代えて実行するモジュールを容易に特定することができる。
【００４１】
（ハ）前記揮発性メモリに格納されたモジュールを実行するに先立って、前記制御プログラムで使用する共用変数を、前記モジュールのみが使用する専用変数にコピーし、前記モジュールの実行後に、前記専用変数を前記共用変数にコピーすることを特徴とする請求項１〜請求項３、（イ）、（ロ）のいずれか１つに記載の自動車用電子制御装置。
【００４２】
かかる構成によれば、制御プログラムの共用変数のアドレスが分からなくても、モジュールの実行前に、共用変数を専用変数にコピーすることで、共用変数に格納された値を使用した演算などを行うことができる。また、モジュールの実行結果である専用変数に格納された値が、モジュールの実行後に共用変数にコピーされるので、その値を制御プログラムが使用できるようになる。
【００４３】
（ニ）前記専用変数は、前記モジュールに確保された領域に格納されることを特徴とする（ハ）に記載の自動車用電子制御装置。
かかる構成によれば、モジュールと専用変数とを容易に関連付けることができる。
【００４４】
（ホ）前記制御プログラムは、所定規則で分割された複数のモジュールから構成されていることを特徴とする請求項１〜請求項３、（イ）〜（ニ）のいずれか１つに記載の自動車用電子制御装置。
かかる構成によれば、制御プログラムの一部を変更したい場合に、該当するモジュールを置き換えることで容易に対応することができる。
【符号の説明】
【００４５】
１００  ＥＣＵ
１１０  プロセッサ
１３０  ＲＯＭ
１４０  ＲＡＭ
【図１】
2014063350.tif 000003
【図２】
2014063350.tif 000004
【図３】
2014063350.tif 000005
【図４】
2014063350.tif 000006
【図５】
2014063350.tif 000007
【図６】
2014063350.tif 000008
【図７】
2014063350.tif 000009
【図８】
2014063350.tif 000010
【図９】
2014063350.tif 000011
【図１０】
2014063350.tif 000012
【図１１】
2014063350.tif 000013
【図１２】
2014063350.tif 000014
【図１３】
2014063350.tif 000015