(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2025-03-11
(45)【発行日】2025-03-19
(54)【発明の名称】車両モデルのシミュレーション性能の最適化方法及びシステム、記憶媒体、並びに電子装置
(51)【国際特許分類】
G06F 9/54 20060101AFI20250312BHJP
G06F 9/48 20060101ALI20250312BHJP
【FI】
G06F9/54 A
G06F9/48 300B
(21)【出願番号】P 2023203443
(22)【出願日】2023-11-30
【審査請求日】2023-11-30
(31)【優先権主張番号】202311405199.1
(32)【優先日】2023-10-26
(33)【優先権主張国・地域又は機関】CN
(32)【優先日】2023-10-13
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】522308967
【氏名又は名称】シャンハイ トサン テクノロジー リミテッド
【氏名又は名称原語表記】Shanghai TOSUN Technology Ltd.
(74)【代理人】
【識別番号】100104226
【氏名又は名称】須原 誠
(72)【発明者】
【氏名】リィゥ チュ
(72)【発明者】
【氏名】シェ ユェイン
(72)【発明者】
【氏名】ムォ マン
【審査官】田中 幸雄
(56)【参考文献】
【文献】中国特許出願公開第113110108(CN,A)
【文献】中国特許出願公開第111381980(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/54
G06F 9/48
(57)【特許請求の範囲】
【請求項1】
車両モデルのシミュレーション性能の最適化方法であって、
車両モデルのリアルタイムシミュレーションタスクを実行するためのリアルタイムカーネルプログラムを作成するステップ1と、
リアルタイムカーネルプログラムとホストソフトウェアが、共有メモリの方式によりプロセス間通信を実現し、前記ホストソフトウェアを介して車両シミュレーション信号を読み書きし、コードプログラムを介してリアルタイムカーネルプログラムを自動的に制御してシミュレーションコマンドを実行し、リアルタイムカーネルプログラムからフィードバックされたシミュレーションデータを記録するステップ2と、
リアルタイムカーネルプログラムが前記ホストソフトウェアのデーモンプロセスとして構成された後、コードプログラムによってリアルタイムカーネルプログラムを自動的に制御してシミュレーションコマンドを実行するステップ3とを含み、
前記ステップ3は、
ホストソフトウェアが、コマンドデータを用意して共有メモリに格納し、且つコードプログラムによってデーモンプロセスにシミュレーションイベントを送信し、直ちにコードプログラムはシミュレーションイベントをモニタリングする状態に入ること、
デーモンプロセスが、シミュレーションイベントを取得した後
、共有メモリから該シミュレーションイベントに対応するコマンドデータを取得して対応するコマンドを実行し、且つコマンドの実行完了状況をホストソフトウェアにフィードバックして、シミュレーションイベント
をモニタリングし続けること、及び、
コードプログラムが、デーモンプロセスから戻されたシミュレーションイベントを取得した後、共有メモリから対応するコマンド実行結果を取得することを含む、
ことを特徴とする車両モデルのシミュレーション性能の最適化方法。
【請求項2】
リアルタイムカーネルプログラムが前記ホストソフトウェアのデーモンプロセスとして構成された後、前記ホストソフトウェアを介して車両シミュレーション信号を読み取る方法は、
32ビットの整数型シミュレーション信号に対する読み取りを含み、該読み取りは、
InterlockedIncrement関数を呼び出し、整数型シミュレーション信号の共有メモリのアドレスと、付加される数値0とをパラメータとして導入し、関数の戻り値を読み取ることによって、整数型シミュレーション信号に対する読み取りを実現することを含むことを特徴とする請求項1に記載の車両モデルのシミュレーション性能の最適化方法。
【請求項3】
リアルタイムカーネルプログラムが前記ホストソフトウェアのデーモンプロセスとして構成された後、前記ホストソフトウェアを介して車両シミュレーション信号を読み取る方法は、
32ビットの浮動小数点型シミュレーション信号に対する読み取りを含み、該読み取りは、
InterlockedIncrement関数を呼び出し、浮動小数点型シミュレーション信号の共有メモリのアドレスと、付加される数値0とをパラメータとして導入し、関数戻り値を読み取った後に関数戻り値を32ビット浮動小数点値に変換することによって、浮動小数点型シミュレーション信号に対する読み取りを実現することを含むことを特徴とする請求項1に記載の車両モデルのシミュレーション性能の最適化方法。
【請求項4】
関数戻り値を32ビット浮動小数点値に変換することが、
関数戻り値の先頭アドレス以降の4つのバイトを32ビット浮動小数点値とすることを含むことを特徴とする請求項3に記載の車両モデルのシミュレーション性能の最適化方法。
【請求項5】
リアルタイムカーネルプログラムが前記ホストソフトウェアのデーモンプロセスとして構成された後、前記ホストソフトウェアを介して車両シミュレーション信号を読み取る方法は、
64ビットの整数型シミュレーション信号の読み取りを含み、該読み取りは、
InterlockedIncrement64関数を呼び出し、整数型シミュレーション信号の共有メモリのアドレスと、付加される数値0とをパラメータとして導入し、関数の戻り値を読み取ることによって、整数型シミュレーション信号に対する読み取りを実現することを含むを特徴とする請求項1に記載の車両モデルのシミュレーション性能の最適化方法。
【請求項6】
リアルタイムカーネルプログラムが上記ホストソフトウェアのデーモンプロセスとして構成された後、前記ホストソフトウェアを介して車両シミュレーション信号を読み取る方法は、
64ビットの浮動小数点型シミュレーション信号の読み取りを含み、該読み取りは、
InterlockedIncrement64関数を呼び出し、且つ浮動小数点型シミュレーション信号の共有メモリのアドレスと、付加される数値0とをパラメータとして導入し、関数戻り値を読み取った後に関数戻り値を64ビット浮動小数点値に変換することによって、浮動小数点型シミュレーション信号に対する読み取りを実現することを含むことを特徴とする請求項1に記載の車両モデルのシミュレーション性能の最適化方法。
【請求項7】
関数戻り値を64ビット浮動小数点値に変換することは、
関数戻り値の先頭アドレス以降の8つのバイトを、64ビット浮動小数点値とすることを含むことを特徴とする請求項6に記載の車両モデルのシミュレーション性能の最適化方法。
【請求項8】
リアルタイムカーネルプログラムが前記ホストソフトウェアのデーモンプロセスとして構成された後、前記ホストソフトウェアを介して車両シミュレーション信号を書き込む方法は、
32ビットの整数型シミュレーション信号の書き込みを含み、該書き込みは、
InterlockedExchange関数を呼び出し、整数型シミュレーション信号の共有メモリのアドレスと、書き込むべき値とをパラメータとして導入することを含むことを特徴とする請求項1に記載の車両モデルのシミュレーション性能の最適化方法。
【請求項9】
リアルタイムカーネルプログラムが上記ホストソフトウェアのデーモンプロセスとして構成された後、前記ホストソフトウェアを介して車両シミュレーション信号を書き込む方法は、
32ビットの浮動小数点型シミュレーション信号の書き込みを含み、該書き込みは、
書き込み待ち浮動小数点型値を、関数パラメータに必要な整数型値に変換し、
InterlockedExchange関数を呼び出し、浮動小数点型シミュレーション信号の共有メモリのアドレスと、変換された整数型値とをパラメータとして導入することを含むことを特徴とする請求項1に記載の車両モデルのシミュレーション性能の最適化方法。
【請求項10】
書き込み待ち浮動小数点型値を、関数パラメータに必要な整数型値に変換することは、
浮動小数点型値の先頭アドレス以降の4つのバイトを、32ビット整数型値とすることを含むことを特徴とする請求項9に記載の車両モデルのシミュレーション性能の最適化方法。
【請求項11】
リアルタイムカーネルプログラムが上記ホストソフトウェアのデーモンプロセスとして構成された後、前記ホストソフトウェアを介して車両シミュレーション信号を書き込む方法は、
64ビットの整数型シミュレーション信号の書き込みを含み、該書き込みは、
InterlockedExchange64関数を呼び出し、整数型シミュレーション信号の共有メモリのアドレスと、書き込むべき値とをパラメータとして導入することを含むことを特徴とする請求項1に記載の車両モデルのシミュレーション性能の最適化方法。
【請求項12】
リアルタイムカーネルプログラムが前記ホストソフトウェアのデーモンプロセスとして構成された後、前記ホストソフトウェアを介して車両シミュレーション信号を書き込む方法は、
64ビットの浮動小数点型シミュレーション信号の書き込みを含み、該書き込みは、
書き込み待ち浮動小数点型値を、関数パラメータに必要な整数型値に変換し、
InterlockedExchange64関数を呼び出し、浮動小数点型シミュレーション信号の共有メモリのアドレスと、変換された整数型値とをパラメータとして導入することを含むことを特徴とする請求項1に記載の車両モデルのシミュレーション性能の最適化方法。
【請求項13】
書き込み待ち浮動小数点型値を、関数パラメータに必要な整数型値に変換することは、
浮動小数点型値の先頭アドレス以降の8つのバイトを、64ビット整数型値とすることを含むことを特徴とする請求項12に記載の車両モデルのシミュレーション性能の最適化方法。
【請求項14】
コンピュータ読み取り可能な記憶媒体であって、
コンピュータ読み取り可能なコマンドが記憶され、少なくとも一つのプロセッサにより実行されると、請求項1~13のいずれか一項に記載の車両モデルのシミュレーション性能の最適化方法を実行させることを特徴とするコンピュータの読み取り可能な記憶媒体。
【請求項15】
電子装置であって、
プロセッサ、コンピュータ読み取り可能な記憶媒体、通信バス及び通信インターフェースを含み、前記プロセッサ、前記読み取り可能な記憶媒体及び前記通信インターフェースは、前記通信バスを介して相互間の通信を実現し、
前記読み取り可能な記憶媒体は、請求項1~13のいずれか一項に記載の車両モデルのシミュレーション性能の最適化方法を実行するためのプログラムを記憶するように構成され、前記プロセッサは、前記車両モデルのシミュレーション性能の最適化方法のプログラムを実行するように構成されることを特徴とする電子装置。
【請求項16】
車両モデルのシミュレーション性能の最適化システムであって、コンピュータ装置を含み、
上記コンピュータ装置は、リアルタイムカーネルプログラムとホストソフトウェアを実行するように構成され、
リアルタイムカーネルプログラムは、ホストソフトウェアのデーモンプロセスとして構成され、車両モデルのリアルタイムシミュレーションタスクを実行し、
ホストソフトウェアは、リアルタイムカーネルプログラムと共有メモリの方式によりプロセス間通信を実現するように構成され、車両シミュレーション信号を読み書きし、またコードプログラムを介してリアルタイムカーネルプログラムを自動的に制御してシミュレーションコマンドを実行し、リアルタイムカーネルプログラムからフィードバックされたシミュレーションデータを記録し、
リアルタイムカーネルプログラムが前記ホストソフトウェアのデーモンプロセスとして構成された後、コードプログラムによってリアルタイムカーネルプログラムを自動的に制御してシミュレーションコマンドを実行し、
当該実行する過程において、
ホストソフトウェアはコマンドデータを用意して共有メモリに格納し、且つコードプログラムによってデーモンプロセスにシミュレーションイベントを送信し、直ちにコードプログラムがシミュレーションイベントをモニタリングする状態に入り、
デーモンプロセスは、シミュレーションイベントを取得した後、共有メモリから該シミュレーションイベントに対応するコマンドデータを取得して対応するコマンドを実行し、且つコマンドの実行完了状況をホストソフトウェアにフィードバックして、シミュレーションイベント
をモニタリングし続け、
コードプログラムは、デーモンプロセスから戻されたシミュレーションイベントを取得した後、共有メモリから対応するコマンド実行結果を取得することを特徴とする車両モデルのシミュレーション性能の最適化システム。
【請求項17】
車両モデルのシミュレーション性能の最適化システムであって、コンピュータ装置を含み、
上記コンピュータ装置は、リアルタイムカーネルプログラムとホストソフトウェアを実行するように構成され、
リアルタイムカーネルプログラムは、ホストソフトウェアのデーモンプロセスとして構成され、車両モデルのリアルタイムシミュレーションタスクを実行し、
ホストソフトウェアは、リアルタイムカーネルプログラムと共有メモリの方式によりプロセス間通信を実現するように構成され、車両シミュレーション信号を読み書きし、またコードプログラムを介してリアルタイムカーネルプログラムを自動的に制御してシミュレーションコマンドを実行し、リアルタイムカーネルプログラムからフィードバックされたシミュレーションデータを記録し、
リアルタイムカーネルプログラムが前記ホストソフトウェアのデーモンプロセスとして構成された後、コードプログラムによってリアルタイムカーネルプログラムを自動的に制御してシミュレーションコマンドを実行し、
当該実行する過程において、
ホストソフトウェアはコマンドデータを用意して共有メモリに格納し、且つコードプログラムによってデーモンプロセスにシミュレーションイベントを送信し、直ちにコードプログラムがシミュレーションイベントをモニタリングする状態に入り、
デーモンプロセスは、シミュレーションイベントを取得した後、共有メモリから該シミュレーションイベントに対応するコマンドデータを取得して対応するコマンドを実行し、且つコマンドの実行完了状況をホストソフトウェアにフィードバックして、シミュレーションイベントをモニタリングし続け、
コードプログラムは、デーモンプロセスから戻されたシミュレーションイベントを取得した後、共有メモリから対応するコマンド実行結果を取得し、
前記コンピュータ装置は、請求項
1~13のいずれか一項に記載の車両モデルのシミュレーション性能の最適化方法によってリアルタイムカーネルプログラム及びホストソフトウェアを実行するように構成されることを
特徴とする車両モデルのシミュレーション性能の最適化システム。
【請求項18】
コンピュータ装置に、請求項1~13のいずれか一項に記載の車両モデルのシミュレーション性能の最適化方
法を実行させる
ためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、2023年10月26日に出願された中国特許出願第202311405199.1号、及び、2023年10月13日に出願された米国特許出願第18/379,696号に基づき優先権を主張しており、その全内容は参照により本明細書に組み込まれる。本発明は車両用ソフトウェア開発技術分野に属し、具体的には車両モデルのシミュレーション性能の最適化方法及びシステムに関する。
【0002】
リアルタイム制御、リアルタイムシミュレーション、ハードウェアインザループシミュレーション、協調シミュレーションなどのリアルタイム性に対する要求が高い場合、プログラムの性能が重要である。現在同類のソフトウェアの多くは、本ソフトウェアを最適化することにより性能向上を実現している。例えばマルチスレッドを用いてシングルスレッドを代替し、ルックアップ表を用いて時間を空間に変換し、バッファを用いて繰り返し計算を回避する等の方式によりプログラム性能を最適化する。プログラム性能をいかに高性能レベルに最適化するかは難題であり、それはプログラムの性能が設計フレーム、言語の制限により最適化を継続できないことが多いためである。多くのソフトウェアが最適化を試み続けても、より高い性能レベルに達しないことをもたらす。
【発明の概要】
【0003】
本発明は車両モデルのシミュレーション性能の最適化方法に関する。この方法は
車両モデルのリアルタイムシミュレーションタスクを実行するためのリアルタイムカーネルプログラム(real-time kernel program)を作成するステップ1と、
リアルタイムカーネルプログラムとホストソフトウェアが共有メモリ(memory sharing)の方式によりプロセス間通信(inter-process communication)を実現し、上記ホストソフトウェアを介して車両シミュレーション信号を読み書きし、またコードプログラムを介してリアルタイムカーネルプログラムを自動的に制御してシミュレーションコマンドを実行し、またリアルタイムカーネルプログラムからフィードバックされたシミュレーションデータを記録するステップ2とを含む。
【0004】
第二態様では、本発明はさらにコンピュータ読み取り可能な記憶媒体を提供する。この記憶媒体には、コンピュータ読み取り可能なコマンドが記憶され、少なくとも一つのプロセッサで実行されるとき、上記車両モデルのシミュレーション性能の最適化方法を実行させる。
【0005】
第三態様では、本発明はさらに電子装置を提供する。この電子装置はプロセッサ、読み取り可能な記憶媒体、通信バス、及び通信インターフェースを含む。ここで上記プロセッサ、上記読み取り可能な記憶媒体及び上記通信インターフェースは上記通信バスを介して相互間の通信を実現する。
【0006】
上記読み取り可能な記憶媒体は、上記車両モデルのシミュレーション性能の最適化方法を実行するプログラムを記憶するように構成され、上記プロセッサは、上記車両モデルのシミュレーション性能の最適化方法のプログラムを実行するように構成される。
【0007】
第四態様では、本発明はさらに車両モデルのシミュレーション性能の最適化システムを提供する。このシステムはコンピュータ装置を含む。上記コンピュータ装置はリアルタイムカーネルプログラムとホストソフトウェアを実行するように構成される。
リアルタイムカーネルプログラムは、ホストソフトウェアのデーモンプロセス(daemon process)として構成され、車両モデルのリアルタイムシミュレーションタスクを実行する。
ホストソフトウェアは、リアルタイムカーネルプログラムと共有メモリの方式によりプロセス間通信を実現するように構成され、車両シミュレーション信号を読み書きし、またコードプログラムを介してリアルタイムカーネルプログラムを自動的に制御してシミュレーションコマンドを実行し、またリアルタイムカーネルプログラムからフィードバックされたシミュレーションデータを記録する。
リアルタイムカーネルプログラムが上記ホストソフトウェアのデーモンプロセスとして構成された後、コードプログラムによってリアルタイムカーネルプログラムを自動的に制御してシミュレーションコマンドを実行する方法は以下を含む。
ホストソフトウェアはコマンドデータを用意して共有メモリに格納し、且つコードプログラムによってデーモンプロセスにシミュレーションイベントを送信し、直ちにコードプログラムはシミュレーションイベントをモニタリングする状態に入る。
デーモンプロセスは、シミュレーションイベントを取得した後、共有メモリから該シミュレーションイベントに対応するコマンドデータを取得して対応するコマンドを実行し、且つコマンドの実行完了状況をホストソフトウェアにフィードバックして、シミュレーションイベントを戻す。
コードプログラムが、デーモンプロセスから戻されたシミュレーションイベントを取得した後、共有メモリから対応するコマンド実行結果を取得する。
【0008】
第五態様では、本発明はさらにコンピュータプログラム製品を提供する。この誠品はコンピュータ読み取り可能な記憶媒体を含み、それにコンピュータ読み取り可能なプログラムコードが記憶され、該コンピュータ読み取り可能なプログラムコードはコマンドを含み、これらのコマンドは少なくとも一つのプロセッサ又は少なくとも一つのコンピュータ装置に、上記車両モデルのシミュレーション性能の最適化方法を実行させる。
【0009】
本発明の他の特徴及び利点は以下の明細書に記載され、且つ、一部は明細書から明らかになり、又は本発明を実施することによって理解される。本発明の目的及び他の利点は明細書及び図面に特に指摘された構造によって実現及び取得される。
本発明の上記目的、特徴及び利点をより分かりやすくするために、以下は好適な実施例を挙げ、且つ添付図面と合わせ、詳細に説明する。
【0010】
本発明の具体的な実施形態又は先行技術の技術的解決手段をより明確に説明するために、以下では、具体的な実施形態又は先行技術の説明に使用する必要がある図面を簡単に説明する。以下の説明に記載された図面は本発明の一部の実施形態であり、当業者にとって創造的な労力を払うことなく、これらの図面から他の図面を得ることができることは明白である。
【図面の簡単な説明】
【0011】
【
図1】
図1は、いくつかの実施形態に係る車両モデルのシミュレーション性能の最適化方法のステップ図を示す。
【
図2】
図2は、いくつかの実施形態に係る車両モデルのシミュレーション性能の最適化システムにおけるコンピュータ装置の原理ブロック図である。
【
図3】
図3は、いくつかの実施形態に係る電子装置の原理ブロック図を示す。
【発明を実施するための形態】
【0012】
本発明の実施例の目的、技術的態様及び利点をより明確にするために、以下に添付図面と関連して本発明の技術的態様を明確かつ完全に説明するが、説明された実施例は本発明の一部の実施例であり、全ての実施例ではないことは明らかである。発明の実施例に基づいて、当業者が創作的な労働を行わないことを前提として取得した他のすべての実施例は、発明の保護の範囲に属する。
【0013】
自動車部品に対して機能テストを行うときに、まず該部品を正常に運転させる必要があり、これは該部品の運転が依存する車両を準備する必要があり、完全な電気環境、ネットワーク通信環境、車両運転状態フィードバック等の情報を提供する。同時に車両及び部品の運転中に、部品をリアルタイムに制御してそれに対応する機能を発生させるようにトリガする必要があり、この過程における部品の挙動は車両自体のフィードバック情報及び他の関連部品のフィードバック情報に依存する。
【0014】
各部品に対して一台の車及び他の全ての依存部品を準備して環境を作る方法は非常に非現実的であり、同時に特殊な動作状況例えば緊急ブレーキ、車両安定性テスト過程において、テスト方法自体は車両破壊及び人員死傷を引き起こす可能性がある。したがって通常の場合、部品に対する機能テストは仮想的な方法により、すなわち車両モデルソフトウェアを用いて実際の車両、センサ及び他の部品などのハードウェアシステムを代替してシミュレーションを行う必要があり、コストを低減させ、検証効率を向上させ、人員の安全を保障する。シミュレーションのリアルタイム性はシステムプログラムのシミュレーション性能に対してより高い要求を課している。
【0015】
したがって、少なくとも一つの実施例は車両モデルのシミュレーション性能の最適化方法を提供する。この方法は以下を含む。車両モデルのリアルタイムシミュレーションタスクを実行するためのリアルタイムカーネルプログラムを作成する。リアルタイムカーネルプログラムとホストソフトウェアは共有メモリの方式によりプロセス間通信を実現し、上記ホストソフトウェアを介して車両シミュレーション信号を読み書きし、またコードプログラムを介してリアルタイムカーネルプログラムを自動的に制御してシミュレーションコマンドを実行し、またリアルタイムカーネルプログラムからフィードバックされたシミュレーションデータを記録する。
【0016】
いくつかの実施例の車両モデルのシミュレーション性能の最適化方法は、一つの独立した動作するリアルタイムカーネルプログラムを導入してホストソフトウェアのデーモンプロセスとし、ホストソフトウェアにおける性能に関連する操作を全てリアルタイムカーネルプログラムに移行し、それによりホストソフトウェアの最適化オーバーヘッドを低減させ、さらにシミュレーション性能を最適化するという目的を達成する。
【0017】
本開示の実施例の様々な非限定的な実施形態が、図面に関連して以下に詳細に説明される。
図1に示すように、いくつかの実施例は車両モデルのシミュレーション性能の最適化方法を提供する。この方法は以下を含む。
車両モデルのリアルタイムシミュレーションタスクを実行するためのリアルタイムカーネルプログラムを作成する(ステップ1)。
リアルタイムカーネルプログラムとホストソフトウェアが共有メモリの方式によりプロセス間通信を実現し、上記ホストソフトウェアを介して車両シミュレーション信号を読み書きし、コードプログラムを介してリアルタイムカーネルプログラムを自動的に制御してシミュレーションコマンドを実行し、リアルタイムカーネルプログラムからフィードバックされたシミュレーションデータを記録する(ステップ2)。
【0018】
いくつかの実施例において、上記リアルタイムカーネルプログラムは、リアルタイムシミュレーションタスクを実行するために専用のカーネルプログラムを指し、作成方法は例えば開発環境によって開発されることである。限定されないが、開発環境は例えばVisual Studioである。上記ホストソフトウェアは、ユーザのシミュレーション及びテスト需要を直接サービスするために用いられ且つリアルタイムカーネルプログラムを使用するプログラムを指す。上記コードプログラムはホストソフトウェア内で動作するユーザスクリプトプログラムであり、ホストソフトウェアのリソースにアクセスすることができ、その動作はホストソフトウェア自体に依存する。ホストソフトウェアはシミュレーションデータをローカルコンピュータに記録することができ、データ再生及び分析に用いられ、シミュレーションデータを記録することはシミュレーション結果を評価することに用いられ、シミュレーション過程における問題を検索しやすい。
【0019】
いくつかの実施例において、上記リアルタイムカーネルプログラムは、上記ホストソフトウェアのデーモンプロセスとして構成される。
上記デーモンプロセスは、自己プロセス優先度及びシミュレーションスレッド優先度を自己制御することができ、それによりシミュレーション性能を最適化することができ、且つホストソフトウェアプログラムの影響を受けずホストソフトウェアプログラムに影響を与えない。また上記デーモンプロセスは任意のアーキテクチャのホストソフトウェアプログラムとインターフェースすることができ、例えば32ビットのホストソフトウェアプログラムをサポートし、また64ビットのホストソフトウェアプログラムをサポートする。
【0020】
いくつかの実施例の好ましい実施形態として、リアルタイムカーネルプログラムが上記ホストソフトウェアのデーモンプロセスとして構成された後、コードプログラムによってリアルタイムカーネルプログラムを自動的に制御してシミュレーションコマンドを実行する(ステップ3)。ステップ3は以下を含む。
ホストソフトウェアがコマンドデータを用意して共有メモリに格納し、且つコードプログラムによってデーモンプロセスにシミュレーションイベントを送信し、直ちにコードプログラムはシミュレーションイベントをモニタリングする状態に入ること、
シミュレーションイベントを取得した後、デーモンプロセスが、共有メモリから該シミュレーションイベントに対応するコマンドデータを取得して対応するコマンドを実行し、且つコマンドの実行完了状況をホストソフトウェアにフィードバックして、シミュレーションイベントを戻すこと、及び、
コードプログラムが、デーモンプロセスから戻されたシミュレーションイベントを取得した後、共有メモリから対応するコマンド実行結果を取得すること、である。
【0021】
仮にWindowsプラットフォームで設計されて実行するホストソフトウェアで、車両動力学シミュレーションエンジンCarSimを呼び出して車両モデルのシミュレーションを実現することを例とする。
いくつかの実施例の方法によれば、リアルタイムカーネルプログラムCSControllerをホストソフトウェアのデーモンプロセスとして設計し、該リアルタイムカーネルプログラムが起動時にWindowsのAPI関数“SetPriorityClass”を呼び出して本デーモンプロセスの優先度を向上させ、同時に該リアルタイムカーネルプログラムはシミュレーションスレッド(本ケースではシミュレーションスレッドはCarSimを呼び出すスレッドを指す)の起動時にWindowsのAPI関数“SetThreadPriority”を呼び出して該スレッドの優先度を向上させる。これにより、上記デーモンプロセスは自身デーモンプロセス性能とシミュレーションスレッド性能を単独で最適化することができ、該最適化プロセスはホストソフトウェアプログラムに影響を与えず、ホストソフトウェアプログラムの影響を受けず、それによりホストソフトウェアプログラムの最適化オーバーヘッドを減少させ、さらにシミュレーション性能を最適化するという目的を達成する。
【0022】
デーモンプロセスCSControllerが起動した後に、シミュレーションコマンドを実行するための共有メモリを起動し、且つイベント名CmdTxをモニタリングし、ホストソフトウェアがシミュレーションが起動するとき、この共有メモリを開くことを試み、開くことに失敗するとシミュレーションを停止し、且つエラーを報告する。
【0023】
ホストソフトウェアは共有メモリを開くことに成功した後、シミュレーション段階に入る。シミュレーションコマンドは、複数種類の操作を含む。ここではシミュレーションコマンドを起動することを例とする。シミュレーション起動コマンドのデータを01に設定し、ホストソフトウェアは共有メモリの最初のバイトデータを01に設定した後、イベントCmdTxを設定してデーモンプロセスにシミュレーション起動コマンドを送信する。続いてホストソフトウェアはイベント名CmdRxをモニタリングし、デーモンプロセスのコマンド実行完了を待つ。
【0024】
デーモンプロセスはイベント名CmdTxを取得した後、共有メモリにおける最初のバイトデータを読み取り、どのタイプのシミュレーションコマンドであるかを判定し、最初のバイトデータが01であると読み取るとき、デーモンプロセスがシミュレーションを起動する。シミュレーションの起動は成功する可能性があり、失敗する可能性がある。成功の返り値を0、失敗の返り値を1とする。デーモンプロセスは、シミュレーションを起動する戻り値を共有メモリの最初のバイトに書き込み、且つイベントCmdRxを設定してホストソフトウェアにシミュレーションコマンドの実行結果をフィードバックする。続いてデーモンプロセスはイベント名CmdTxをモニタリングし続け、ホストソフトウェアからの次のコマンドを待つ。
【0025】
ホストソフトウェアはイベント名CmdRxを取得した後、共有メモリの最初のバイトを読み取り、1つ前のコマンドの実行結果を判定し、読み取られたバイトデータが0である場合にシミュレーションの起動に成功したことを示し、読み取られたバイトデータが1である場合にシミュレーションの起動に失敗したことを示す。ホストソフトウェアは次のステップに実行する必要がある内容に基づいてイベント名CmdTxを再設定し、デーモンプロセスがシミュレーションコマンドを実行し続けることを制御する。
【0026】
いくつかの実施例の上記デーモンプロセスは、任意のアーキテクチャのホストソフトウェアプログラムとインターフェースすることができ、32ビットのホストソフトウェアプログラムをサポートするだけでなく、64ビットのホストソフトウェアプログラムもサポートする。以下はいずれも32ビットのホストソフトウェアプログラムを例としてリアルタイムカーネルプログラムが上記ホストソフトウェアのデーモンプロセスとして構成された後、車両シミュレーション信号を読み書く方法を詳細に説明する。
【0027】
いくつかの実施例において、リアルタイムカーネルプログラムが上記ホストソフトウェアのデーモンプロセスとして構成された後、前記ホストソフトウェアを介して車両シミュレーション信号を読み取る方法は以下を含む。
32ビットの整数型シミュレーション信号(32-bit shaped simulation signal)の読み取りに対し、該読み取り方法は以下を含む。
InterlockedIncrement関数を呼び出し、且つ整数型シミュレーション信号の共有メモリのアドレスと、付加される数値0とをパラメータとして導入し、関数の戻り値(function return value)を読み取ることによって、整数型シミュレーション信号に対する読み取りを実現する。
【0028】
以下では、ケースに関連して詳細に説明する。
32ビット整数型ギア信号Gearの値を、32ビット整数型変数“v”に読み取ることを例とする。InterlockedIncrement関数を呼び出すコードは以下のとおりである。
v=InterlockedIncrement(&Gear,0);
ここで、&Gearは整数型ギア信号Gearの共有メモリのアドレスであり、0は付加される数値である。上記コードを実行して関数戻り値を得て、該関数戻り値を読み取ると、32ビット整数型ギア信号Gearの読み取りを実現する。
【0029】
いくつかの実施例において、リアルタイムカーネルプログラムが上記ホストソフトウェアのデーモンプロセスとして構成された後、前記ホストソフトウェアを介して車両シミュレーション信号を読み取る方法は以下を含む。
32ビットの浮動小数点型シミュレーション信号の読み取りに対し、該読み取り方法は以下を含む。
InterlockedIncrement関数を呼び出し、浮動小数点型シミュレーション信号の共有メモリのアドレスと、付加される数値0とをパラメータとして導入し、関数戻り値を読み取った後に関数戻り値を32ビット浮動小数点値(floating-point value)に変換することによって、浮動小数点型シミュレーション信号に対する読み取りを実現する。
【0030】
関数戻り値を32ビット浮動小数点値に変換する方法は以下を含む。関数戻り値の先頭アドレス以降の4つのバイトを32ビット浮動小数点型の数値とする。
以下では、ケースに関連して詳細に説明する。
32ビット浮動小数点信号Vxの値を32ビット浮動小数点変数“v”に読み取ることを例に、InterlockedIncrement関数を呼び出すコードは以下のとおりである。
*(int32*)(&v)=InterlockedIncrement(&Vx,0);
ここで、&Vxは浮動小数点信号Vxの共有メモリのアドレスであり、0は付加される数値であり、&vは関数戻り値の先頭アドレスであり、*(int32*)は関数戻り値の先頭アドレス以降の4つのバイトを取ることを示し、上記コードを実行して実行結果を読み取ると、32ビット浮動小数点信号Vxの読み取りを実現する。
【0031】
いくつかの実施例において、リアルタイムカーネルプログラムが上記ホストソフトウェアのデーモンプロセスとして構成された後、前記ホストソフトウェアを介して車両シミュレーション信号を読み取る方法は以下を含む。
64ビットの整数型シミュレーション信号の読み取りに対し、該読み取り方法は以下を含む。
InterlockedIncrement64関数を呼び出し、且つ整数型シミュレーション信号の共有メモリのアドレスと、付加される数値0とをパラメータとして導入し、関数の戻り値を読み取ることによって、整数型シミュレーション信号に対する読み取りを実現する。
以下では、ケースに関連して詳細に説明する。
64ビット整数型時間信号TimeUsの値を、64ビット整数型変数“v”に読み取ることを例とし、InterlockedIncrement64関数を呼び出すコードは以下のとおりである。
v=InterlockedIncrement64(&TimeUs,0);
ここで、&TimeUsは整数型時間信号TimeUsの共有メモリのアドレスであり、0は付加される数値である。上記コードを実行して関数戻り値を得て、該関数戻り値を読み取ると、64ビット整数型時間信号TimeUsの読み取りを実現する。
【0032】
いくつかの実施例において、リアルタイムカーネルプログラムが上記ホストソフトウェアのデーモンプロセスとして構成された後、前記ホストソフトウェアを介して車両シミュレーション信号を読み取る方法は以下を含む。
64ビットの浮動小数点型シミュレーション信号(64-bit floating-point simulation signal)の読み取りに対し、該読み取り方法は以下を含む。
InterlockedIncrement64関数を呼び出し、且つ浮動小数点型シミュレーション信号の共有メモリのアドレスと、付加される数値0とをパラメータとして導入し、関数戻り値を読み取った後に関数戻り値を64ビット浮動小数点値に変換することによって、浮動小数点型シミュレーション信号に対する読み取りを実現する。
関数戻り値を64ビット浮動小数点値に変換する方法は以下を含む。
関数戻り値の先頭アドレス以降の8つのバイトを、64ビット浮動小数点値とする。
【0033】
以下では、ケースに関連して詳細に説明する。
64ビット浮動小数点信号EngForceの値を、64ビット浮動小数点変数“v”に読み取ることを例とし、InterlockedIncrement64関数を呼び出すコードは以下のとおりである。
*(int64*)(&v)=InterlockedIncrement64(&EngForce,0);
ここで、&EngForceは浮動小数点信号EngForceの共有メモリのアドレスであり、0は付加される数値である。&vは関数戻り値の先頭アドレスであり、*(int64*)は関数戻り値の先頭アドレス以降の8つのバイトを取ることを示し、上記コードを実行して実行結果を読み取ると、64ビット浮動小数点信号EngForceの読み取りを実現する。
【0034】
いくつかの実施例において、リアルタイムカーネルプログラムが上記ホストソフトウェアのデーモンプロセスとして構成された後、車両シミュレーション信号を書き込む方法は以下を含む。
32ビットの整数型シミュレーション信号を書き込み、該書き込み方法は以下を含む。
InterlockedExchange関数を呼び出し、且つ整数型シミュレーション信号の共有メモリのアドレスと、書き込むべき値とをパラメータとして導入する。
【0035】
以下では、ケースに関連して詳細に説明する。
32ビット整数型信号xの値を32ビット整数型ギア信号Gearに書き込むことを例とし、InterlockedExchange関数を呼び出すコードは以下のとおりである。
InterlockedExchange(&Gear,x);
ここで、&Gearは整数型ギア信号Gearの共有メモリのアドレスであり、xは書き込むべき値であり、上記コードを実行し、すなわち32ビット整数型ギア信号Gearに32ビット整数型信号xの値を書き込むことを実現する。
【0036】
いくつかの実施例において、リアルタイムカーネルプログラムが上記ホストソフトウェアのデーモンプロセスとして構成された後、車両シミュレーション信号を書き込む方法は以下を含む。
32ビットの浮動小数点型シミュレーション信号を書き込み、該書き込み方法は以下を含む。
書き込み待ち浮動小数点型値(to-be-written floating-point value)を、関数パラメータに必要な整数型値(shaping value desired by a function parameter)に変換する。
InterlockedExchange関数を呼び出し、且つ浮動小数点型シミュレーション信号の共有メモリのアドレスと、変換された整数型値とをパラメータとして導入する。
書き込み待ち浮動小数点型値を、関数パラメータに必要な整数型値に変換する方法は以下を含む。
浮動小数点型の値の先頭アドレス以降の4つのバイトを、32ビット整数型値とする。
【0037】
以下では、ケースに関連して詳細に説明する。
32ビット浮動小数点信号xの値を、32ビット浮動小数点信号Vxに書き込むことを例とし、InterlockedExchange関数を呼び出すコードは以下のとおりである。
InterlockedExchange(&Vx,*(int32*)(&x));
ここで、&Vxは浮動小数点信号Vxの共有メモリのアドレスであり、&xは浮動小数点信号x値の先頭アドレスであり、*(int32*)は浮動小数点信号x値の先頭アドレス以降の4つのバイトを取ることを示す。上記コードを実行して32ビット浮動小数点信号Vxへの32ビット浮動小数点信号xの値の書き込みが実現される。
【0038】
いくつかの実施例において、リアルタイムカーネルプログラムが上記ホストソフトウェアのデーモンプロセスとして構成された後、車両シミュレーション信号を書き込む方法は以下を含む。
64ビットの整数型シミュレーション信号を書き込み、該書き込み方法は以下を含む。
InterlockedExchange64関数を呼び出し、且つ整数型シミュレーション信号の共有メモリのアドレスと、書き込むべき値とをパラメータとして導入する。
【0039】
以下では、ケースに関連して詳細に説明する。
64ビット整数型信号xの値を、64ビット整数型信号TimeUsに書き込むことを例とし、InterlockedExchange64関数を呼び出すコードは以下のとおりである。
InterlockedExchange64(&TimeUs,x);
ここで、&TimeUsは整数型信号TimeUsの共有メモリのアドレスであり、xは書き込むべき値であり、上記コードを実行して64ビット整数型信号xの値を、64ビット整数型信号TimeUsに書き込むことを実現する。
【0040】
いくつかの実施例において、リアルタイムカーネルプログラムが上記ホストソフトウェアのデーモンプロセスとして構成された後、車両シミュレーション信号を書き込む方法は以下を含む。
64ビットの浮動小数点型シミュレーション信号を書き込み、該書き込み方法は以下を含む。
書き込み待ち浮動小数点型値を、関数パラメータに必要な整数型値に変換する。
InterlockedExchange64関数を呼び出し、且つ浮動小数点型シミュレーション信号の共有メモリのアドレスと、変換された整数型値とをパラメータとして導入する。
書き込み待ち浮動小数点型値を、関数パラメータに必要な整数型値に変換する方法は以下を含む。
浮動小数点型の値の先頭アドレス以降の8つのバイトを、64ビット整数型値とする。
【0041】
以下では、ケースに関連して詳細に説明する。
64ビット浮動小数点信号xの値を、64ビット浮動小数点信号EngForceに書き込むことを例とし、InterlockedExchange64関数を呼び出すコードは以下のとおりである。
InterlockedExchange64(&EngForce, *(int64*)(&x));
ここで、&EngForceは浮動小数点信号EngForceの共有メモリのアドレスであり、&xは浮動小数点信号x値の先頭アドレスであり、*(int64*)は浮動小数点信号x値の先頭アドレス以降の8つのバイトを取ることを示す。上記コードを実行して64ビット浮動小数点信号EngForceへの64ビット浮動小数点信号xの値の書き込みが実現される。
【0042】
図2に示すように、いくつかの実施例はさらに車両モデルのシミュレーション性能の最適化システムを提供し、リアルタイムカーネルプログラム及びホストソフトウェアを実行するコンピュータ装置を含む。
リアルタイムカーネルプログラムは、ホストソフトウェアのデーモンプロセスとして構成され、車両モデルのリアルタイムシミュレーションタスクを実行する。
ホストソフトウェアは、リアルタイムカーネルプログラムと共有メモリの方式によりプロセス間通信を実現するように構成され、車両シミュレーション信号を読み書きし、またコードプログラムを介してリアルタイムカーネルプログラムを制御してシミュレーションコマンドを実行し、またリアルタイムカーネルプログラムからフィードバックされたシミュレーションデータを記録する。
【0043】
具体的には、リアルタイムカーネルプログラム、ホストソフトウェアの具体的な動作方法については、上記車両モデルのシミュレーション性能の最適化方法の内容を参照し、ここで説明を省略する。
以下はハードウェア処理の角度からいくつかの実施例における電子装置を説明する。
いくつかの実施例は電子装置の具体的な実現を限定しない。
【0044】
図3に示すように、本電子装置は、プロセッサ、可読記憶媒体、通信バス及び通信インターフェースを含む。ここで上記プロセッサ、上記可読記憶媒体及び上記通信インターフェースは、上記通信バスを介して相互間の通信を実現する。上記可読記憶媒体は、上記車両モデルのシミュレーション性能の最適化方法を実行するプログラムを記憶するように構成され、上記プロセッサは、上記車両モデルのシミュレーション性能の最適化方法のプログラムを実行するように構成される。
【0045】
他の実施例において、コンピュータ装置、工業用コンピュータも電子装置の一種とすることができる。
【0046】
なお、
図3に示す構成は、電子機器を限定するものではなく、図示よりも少ない構成要素又はより多い構成要素を含むことができ、いくつかの構成要素を組み合わせることができ、または異なる構成要素を配置したものであってもよい。
【0047】
いくつかの実施例において、通信インターフェースは、RS232、RS485、USBポート、及びTYPEポートなど、外部バスアダプタに接続可能な通信インターフェースであってもよい。有線又は無線ネットワークインターフェースも含まれてもよく、ネットワークインターフェースは、任意選択的に、該コンピュータ装置と他の電子デバイスとの間の通信接続を確立するために典型的に使用される有線及び/又は無線インターフェース(例えば、WI-FIインターフェース、Bluetooth(登録商標)インターフェースなど)を含んでもよい。
記憶モジュール、読み取り可能な記憶媒体又はコンピュータ読み取り可能な記憶媒体は少なくとも一種のメモリを含む。メモリは、フラッシュメモリ、ハードディスク、マルチメディアカード、カード型メモリ(例えば、SD又はDXメモリなど)、磁気メモリ、磁気ディスク、光ディスクなどを含む。いくつかの実施例において、それは、コンピュータ装置のハードディスクなどのコンピュータ装置の内部記憶ユニットであってもよい。メモリは、他の実施例では、コンピュータ装置の外部記憶装置、例えば、コンピュータ装置に装備されたプラグインハードディスク、スマートメディア(登録商標)カード(Smart Media Card,SMC)、セキュアデジタルカード(Secure Digital,SD)、フラッシュカード(Flash Card)などであってもよい。さらに、メモリは、コンピュータ装置の内部記憶ユニット及び外部記憶デバイスの両方を含んでもよい。メモリは、コンピュータ装置にインストールされたアプリケーションソフトやコンピュータプログラムのコード等の各種データを格納する他、出力されたデータや出力されるべきデータを一時的に格納するために使用される。
【0048】
いくつかの実施例において、プロセッサは、メモリに記憶されたプログラムコードを実行し、又はデータを処理し、例えばコンピュータプログラムを実行するための中央処理装置(Central Processing Unit,CPU)、コントローラ、マイクロコントローラ、マイクロプロセッサ、又は他のデータ処理チップであってもよい。
【0049】
いくつかの実施例において、通信バスは、外部コンポーネント相互接続標準 (Peripheral Component Interconnect,略称PCI)バス又は拡張業界標準構造(Enhanced Industry Standard Architecture,略称EISA)バスなどであり得る入出力バスであってもよい。このバスは、アドレスバス、データバス、コントロールバスなどに分けることができる。
【0050】
任意選択的に、コンピュータ装置は、ユーザーインターフェースをさらに備えてもよい。 ユーザーインターフェースは、ディスプレイ(Display)、キーボード(Keyboard)などの入力ユニットを含むことができ、任意選択的に、ユーザーインターフェースは、標準的な有線インターフェース、無線インターフェースを含むこともできる。任意選択的に、いくつかの実施例において、ディスプレイ又は表示モジュールはLEDディスプレイ、液晶ディスプレイ、タッチ式液晶ディスプレイ及びOLED(Organic Light-Emitting Diode,有機発光ダイオード)タッチ器等であってもよい。この場合、ディスプレイ又は表示モジュールは、コンピュータ装置内で処理された情報を表示するため、及び視覚化されたユーザーインターフェースを表示するため、ディスプレイスクリーン又はディスプレイユニットとも呼ばれる。
【0051】
上記プロセッサは、上記プログラムを実行する時に上記
図1に示す車両モデルのシミュレーション性能の最適化方法の実施例におけるステップを実現し、例えば
図1に示すステップS101、S102である。或いは、プロセッサはコンピュータプログラムを実行する時に、上記各装置の実施例における各モジュール又はユニットの機能を実現する。
【0052】
いくつかの実施例において、プロセッサは具体的に以下のステップを実現するために用いる。
車両モデルのリアルタイムシミュレーションタスクを実行するためのリアルタイムカーネルプログラムを作成する。
リアルタイムカーネルプログラムとホストソフトウェアは、共有メモリの方式によりプロセス間通信を実現し、上記ホストソフトウェアを介して車両シミュレーション信号を読み書きし、またコードプログラムを介してリアルタイムカーネルプログラムを制御してシミュレーションコマンドを実行し、またリアルタイムカーネルプログラムからフィードバックされたシミュレーションデータを記録する。
【0053】
選択的に、可能な実施形態として、プロセッサはさらに以下のステップを実現するために用いることができる。
上記リアルタイムカーネルプログラムが上記ホストソフトウェアのデーモンプロセスとして構成される。
【0054】
選択的に、可能な実施形態として、プロセッサはさらに以下のステップを実現するために用いることができる。
リアルタイムカーネルプログラムが上記ホストソフトウェアのデーモンプロセスとして構成された後、コードプログラムによってリアルタイムカーネルプログラムを自動的に制御してシミュレーションコマンドを実行する方法は以下を含む。
ホストソフトウェアはコマンドデータを用意して共有メモリに格納し、且つコードプログラムによってデーモンプロセスにシミュレーションイベントを送信し、直ちにコードプログラムはシミュレーションイベントをモニタリングする状態に入る。
デーモンプロセスは、シミュレーションイベントを取得した後、共有メモリから該シミュレーションイベントに対応するコマンドデータを取得して対応するコマンドを実行し、且つコマンドの実行完了状況をホストソフトウェアにフィードバックして、シミュレーションイベントを戻す。
コードプログラムは、デーモンプロセスから戻されたシミュレーションイベントを取得した後、共有メモリから対応するコマンド実行結果を取得する。
【0055】
選択的に、可能な実施形態として、プロセッサはさらに以下のステップを実現するために用いることができる。
リアルタイムカーネルプログラムが上記ホストソフトウェアのデーモンプロセスとして構成された後、前記ホストソフトウェアを介して車両シミュレーション信号を読み取る方法は以下を含む。
32ビットの整数型シミュレーション信号の読み取りに対し、該読み取り方法は以下を含む。
InterlockedIncrement関数を呼び出し、且つ整数型シミュレーション信号の共有メモリのアドレスと、付加される数値0とをパラメータとして導入し、関数戻り値を読み取る、すなわち整数型シミュレーション信号に対する読み取りを実現する。
【0056】
選択的に、可能な実施形態として、プロセッサはさらに以下のステップを実現するために用いることができる。
リアルタイムカーネルプログラムが上記ホストソフトウェアのデーモンプロセスとして構成された後、前記ホストソフトウェアを介して車両シミュレーション信号を読み取る方法は以下を含む。
32ビットの浮動小数点型シミュレーション信号の読み取りに対し、該読み取り方法は以下を含む。
InterlockedIncrement関数を呼び出し、且つ浮動小数点型シミュレーション信号の共有メモリのアドレスと、付加される数値0とをパラメータとして導入し、関数戻り値を読み取った後に関数戻り値を32ビット浮動小数点値に変換することによって、浮動小数点型シミュレーション信号に対する読み取りを実現する。
【0057】
選択的に、可能な実施形態として、プロセッサはさらに以下のステップを実現するために用いることができる。
関数戻り値を32ビット浮動小数点値に変換する方法は以下を含む。
関数戻り値の先頭アドレス以降の4つのバイトを32ビット浮動小数点型の数値とする。
【0058】
選択的に、可能な実施形態として、プロセッサはさらに以下のステップを実現するために用いることができる。
リアルタイムカーネルプログラムが上記ホストソフトウェアのデーモンプロセスとして構成された後、前記ホストソフトウェアを介して車両シミュレーション信号を読み取る方法は以下を含む。
64ビットの整数型シミュレーション信号の読み取りに対し、該読み取り方法は以下を含む。
InterlockedIncrement64関数を呼び出し、且つ整数型シミュレーション信号の共有メモリのアドレスと、付加される数値0とをパラメータとして導入し、関数の戻り値を読み取ることによって、整数型シミュレーション信号に対する読み取りを実現する。
【0059】
選択的に、可能な実施形態として、プロセッサはさらに以下のステップを実現するために用いることができる。
リアルタイムカーネルプログラムが上記ホストソフトウェアのデーモンプロセスとして構成された後、前記ホストソフトウェアを介して車両シミュレーション信号を読み取る方法は以下を含む。
64ビットの浮動小数点型シミュレーション信号の読み取りに対し、該読み取り方法は以下を含む。
InterlockedIncrement64関数を呼び出し、且つ浮動小数点型シミュレーション信号の共有メモリのアドレスと、付加される数値0とをパラメータとして導入し、関数戻り値を読み取った後に関数戻り値を64ビット浮動小数点値に変換することによって、浮動小数点型シミュレーション信号に対する読み取りを実現する。
【0060】
選択的に、可能な実施形態として、プロセッサはさらに以下のステップを実現するために用いることができる。
関数戻り値を64ビット浮動小数点値に変換する方法は以下を含む。
関数戻り値の先頭アドレス以降の8つのバイトを、64ビット浮動小数点値とする。
【0061】
選択的に、可能な実施形態として、プロセッサはさらに以下のステップを実現するために用いることができる。
リアルタイムカーネルプログラムが上記ホストソフトウェアのデーモンプロセスとして構成された後、車両シミュレーション信号を書き込む方法は以下を含む。
32ビットの整数型シミュレーション信号を書き込み、該書き込み方法は以下を含む。
InterlockedExchange関数を呼び出し、且つ整数型シミュレーション信号の共有メモリのアドレスと、書き込むべき値とをパラメータとして導入する。
【0062】
選択的に、可能な実施形態として、プロセッサはさらに以下のステップを実現するために用いることができる。
リアルタイムカーネルプログラムが上記ホストソフトウェアのデーモンプロセスとして構成された後、車両シミュレーション信号を書き込む方法は以下を含む。
32ビットの浮動小数点型シミュレーション信号を書き込み、該書き込み方法は以下を含む。
書き込み待ち浮動小数点型値を、関数パラメータに必要な整数型値に変換する。
InterlockedExchange関数を呼び出し、且つ浮動小数点型シミュレーション信号の共有メモリのアドレスと、変換された整数型値とをパラメータとして導入する。
【0063】
選択的に、可能な実施形態として、プロセッサはさらに以下のステップを実現するために用いることができる。
書き込み待ち浮動小数点型値を、関数パラメータに必要な整数型値に変換する方法は以下を含む。
浮動小数点型値の先頭アドレス以降の4つのバイトを、32ビット整数型値とする。
【0064】
選択的に、可能な実施形態として、プロセッサはさらに以下のステップを実現するために用いることができる。
リアルタイムカーネルプログラムが上記ホストソフトウェアのデーモンプロセスとして構成された後、車両シミュレーション信号を書き込む方法は以下を含む。
64ビットの整数型シミュレーション信号を書き込み、該書き込み方法は以下を含む。
InterlockedExchange64関数を呼び出し、且つ整数型シミュレーション信号の共有メモリのアドレスと、書き込むべき値とをパラメータとして導入する。
【0065】
選択的に、可能な実施形態として、プロセッサはさらに以下のステップを実現するために用いることができる。
リアルタイムカーネルプログラムが上記ホストソフトウェアのデーモンプロセスとして構成された後、車両シミュレーション信号を書き込む方法は以下を含む。
64ビットの浮動小数点型シミュレーション信号を書き込み、該書き込み方法は以下を含む。
書き込み待ち浮動小数点型値を、関数パラメータに必要な整数型値に変換する。
InterlockedExchange64関数を呼び出し、且つ浮動小数点型シミュレーション信号の共有メモリのアドレスと、変換された整数型値とをパラメータとして導入する。
【0066】
選択的に、可能な実施形態として、プロセッサはさらに以下のステップを実現するために用いることができる。
書き込み待ち浮動小数点型値を、関数パラメータに必要な整数型値に変換する方法は以下を含む。
浮動小数点型値の先頭アドレス以降の8つのバイトを、64ビット整数型値とする。
【0067】
いくつかの実施例は、コンピュータプログラム製品を提供し、コンピュータ読み取り可能な記憶媒体を含み、それにコンピュータ読み取り可能なプログラムコードが記憶され、該コンピュータ読み取り可能なプログラムコードはコマンドを含み、これらのコマンドは少なくとも一つのプロセッサ又は少なくとも一つのコンピュータ装置に、上記いずれかの可能な車両モデルのシミュレーション性能の最適化方法を実行させる。
【0068】
いくつかの実施例は、コンピュータ読み取り可能な記憶媒体を提供し、コンピュータ読み取り可能なコマンドが記憶され、少なくとも一つのプロセッサにより実行されると、上述の実施例の車両モデルのシミュレーション性能の最適化方法を実行させる。
【0069】
本発明の提供するいくつかの実施例において、当然のことながら、開示された装置及び方法は、他の方式によって実現することもできる。上記で説明した装置の実施形態は単なる例示であり、例えば、図面におけるフローチャート及びブロック図は本発明の複数の実施例による装置、方法及びコンピュータプログラム製品の実現可能なアーキテクチャ、機能及び操作を示す。これに関して、フローチャート又はブロック図における各ブロックは、モジュール、プログラムセグメント、又はコードの一部を表すことができる。上記モジュール、上記プログラムセグメント又は上記コードの一部は、一つ又は複数の所定の論理機能を実現するための実行可能な命令を含む。なお、いくつかの代替的な実現方式において、ブロックに表記された機能は図面に表記された順序と異なる順序で発生してもよい。例えば、二つの連続するブロックは、実際には実質的に並行して実行することができ、関連する機能に応じて、時には逆の順序で実行することもできる。また、ブロック図及び/又はフローチャートの各ブロック、並びにブロック図及び/又はフローチャートのブロックの組み合わせは、所定の機能又は動作を実行する専用のハードウェアベースのシステムで実現されてもよく、又は専用のハードウェアとコンピュータ命令との組み合わせで実現されてもよいことに留意されたい。
【0070】
また、本発明の各実施例における各機能モジュールは一体に集積して一つの独立した部分を形成してもよく、各モジュールが単独で存在してもよく、二つ又は二つ以上のモジュールを集積して一つの独立した部分を形成してもよい。
【0071】
上記機能はソフトウェア機能モジュールの形式で実現し且つ独立した製品として販売又は使用する場合、一つのコンピュータ読み取り可能な記憶媒体に記憶することができる。このような理解に基づき、本発明の技術的解決手段は本質的に又は従来技術に寄与する部分又は該技術的解決手段の部分は、ソフトウェア製品の形式で表すことができる。該コンピュータソフトウェア製品は記憶媒体に記憶され、複数の命令を含んでコンピュータ装置(パーソナルコンピュータ、サーバ、又はネットワーク装置等であってもよい)に本発明の各実施例に記載の方法の全部又は一部のステップを実行させる。
【0072】
上述した本発明による好ましい実施例を啓発して、上述した説明内容から、当業者は本発明の技術的思想を逸脱しない範囲内で多様な変更及び修正を行うことができる。本発明の技術的範囲は明細書の内容に限定されず、特許請求の範囲に基づいてその技術的範囲を確定しなければならない。
【要約】
【課題】本発明は車両用ソフトウェア開発技術分野に属し、具体的には車両モデルのシミュレーション性能の最適化方法に関する。
【解決手段】上記車両モデルのシミュレーション性能の最適化方法は以下を含む。車両モデルのリアルタイムシミュレーションタスクを実行するためのリアルタイムカーネルプログラムを作成する。リアルタイムカーネルプログラムとホストソフトウェアは共有メモリの方式によりプロセス間通信を実現し、上記ホストソフトウェアを介して車両シミュレーション信号を読み書きし、またコードプログラムを介してリアルタイムカーネルプログラムを自動的に制御してシミュレーションコマンドを実行し、またリアルタイムカーネルプログラムからフィードバックされたシミュレーションデータを記録する。
【選択図】
図1