JPWO2020017264A1 - シミュレーション装置、及びその方法、並びにecu装置 - Google Patents

シミュレーション装置、及びその方法、並びにecu装置 Download PDF

Info

Publication number
JPWO2020017264A1
JPWO2020017264A1 JP2020531204A JP2020531204A JPWO2020017264A1 JP WO2020017264 A1 JPWO2020017264 A1 JP WO2020017264A1 JP 2020531204 A JP2020531204 A JP 2020531204A JP 2020531204 A JP2020531204 A JP 2020531204A JP WO2020017264 A1 JPWO2020017264 A1 JP WO2020017264A1
Authority
JP
Japan
Prior art keywords
function
processing
timing
ecu
time
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.)
Granted
Application number
JP2020531204A
Other languages
English (en)
Other versions
JP7045458B2 (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.)
Hitachi Astemo Ltd
Original Assignee
Hitachi Astemo Ltd
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 Hitachi Astemo Ltd filed Critical Hitachi Astemo Ltd
Publication of JPWO2020017264A1 publication Critical patent/JPWO2020017264A1/ja
Application granted granted Critical
Publication of JP7045458B2 publication Critical patent/JP7045458B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/10Geometric CAD
    • G06F30/15Vehicle, aircraft or watercraft design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2119/00Details relating to the type or aim of the analysis or the optimisation
    • G06F2119/12Timing analysis or timing optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Geometry (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Automation & Control Theory (AREA)
  • Aviation & Aerospace Engineering (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

簡便な手法によりPCシミュレーション環境の実行タイミングを実ECUに近づけることができるシミュレーション装置、及びその方法、並びにECU装置を提供する事を目的とする。第1の計算機でアプリケーションソフトを実行したときの第1の処理タイミングを得る第1の性能測定機能と、第1の処理タイミングと第2の計算機でアプリケーションソフトを実行したときの第2の処理タイミングの間の時間差をもとに、第1の計算機におけるアプリケーションソフトの実行時刻のタイミング調整を行うタイミング調整機能を備える第1の計算機で構成されたことを特徴とするシミュレーション装置。

Description

本発明は、実行タイミングを合わせる機能を備えるシミュレーション装置、及びその方法、並びにECU装置に係り、例えば自動車の電子制御装置(ECU:Electronic Control Unit)のソフトウェア開発時に開発者が使用するシミュレーション装置、及びその方法、並びにECU装置に関する。
ECU向けソフトウェアの開発において、開発初期段階でハードウェア試作機が出来ているケースは少ない。このため、最初にパソコンPC上で設計した後、PC環境(シミュレーション環境)で動作確認を行い、PC環境で検証したソフトをハードウェア試作機である実ECU環境へ移植し、動作確認を行う流れが一般的である。
またハードウェア試作機が出来た後でもソフト開発者に対して割り当てられるハードウェア試作機の数は少ないことがよくあり、例えば、1台のハードウェア試作機を10人のソフト開発者が共用することもある。
このような場合、ハードウェア試作機である実ECU環境とPC環境の両方でソフトウェアSWなどの動作確認を行う形になる。
この開発の流れにおいて、パソコンPCとECUのHW(ハードウェア)性能差に起因し、PC環境と実ECU環境でアプリケーションソフトの動作結果に差が出てしまう事が良く発生する。
PC環境と実ECU環境でアプリケーションソフトの実行タイミングに差が出る事により、どちらか片方の環境でのみ発生するような不具合が出てくる。
またPC環境と実ECU環境の違いだけではなく、開発で使用するパソコンPCのスペックが開発者ごとに異なることが多く、このことに起因して実ECUと特定のPCでのみ発生するような状況も発生する。
PCシミュレータが使用されるソフトウェア開発の上流工程でソフトウェアの品質を高める為には、使用するパソコンPC毎にPCシミュレーション環境での処理タイミングを実ECU処理タイミングに近づける事が重要となっている。
これらの点に関連して、特許文献1の請求項2には、「シミュレーション開発環境が開発マシンのマイクロプロセッサユニットを実際に使用した時間だけを測定対象にしたクロック割込みのシミュレーションが可能であり、」という記載がある。
特開平5−282160号公報
特許文献1では、クロック割込みによる処理開始タイミングを合わせることは出来るが、それ以降の処理タイミングについては調整できない為、HW性能による差が出てしまう。
例えば、マルチタスクオペレーティングシステム上で複数アプリを動作させる場合、タスク間で共有する変数の更新タイミングが、シミュレーション環境と実ECU環境で差が出てしまう事がある。この結果として、変数を参照するタイミングが変わる事によりアプリケーションソフトの動作に差が出てしまう事がある。
またPCシミュレータでの再現性を高めるために、タイミング調整を取る為の仕組みがあったとしても、開発者が使用するパソコンPC毎に性能(クロック周波数等)の違いがあり、タイミング調整用パラメータはパソコンPC毎に個別調整する必要がある。
然るに、タイミング調整用パラメータを決める為の情報として、CPUクロック比があるが、外部メモリアクセス性能の違いや、パソコンPC上で動作しているほかプロセスの影響などの要因もあり、固定の計算式のみで有効なパラメータを算出する事は難しい。
そこで本発明では、簡便な手法によりPCシミュレーション環境の実行タイミングを実ECUに近づけることができるシミュレーション装置、及びその方法、並びにECU装置を提供する事を目的とする。
以上のことから本発明においては「第1の計算機でアプリケーションソフトを実行したときの第1の処理タイミングを得る第1の性能測定機能と、第1の処理タイミングと第2の計算機でアプリケーションソフトを実行したときの第2の処理タイミングの間の時間差をもとに、第1の計算機におけるアプリケーションソフトの実行時刻のタイミング調整を行うタイミング調整機能を備える第1の計算機で構成されたことを特徴とするシミュレーション装置」としたものである。
また本発明においては「第1の計算機でアプリケーションソフトを実行したときの第1の処理タイミングを得る第1の性能測定機能と、第1の処理タイミングと第2の計算機でアプリケーションソフトを実行したときの第2の処理タイミングの間の時間差をもとに、第1の計算機におけるアプリケーションソフトの実行時刻のタイミング調整を行うタイミング調整機能を備える第1の計算機と、アプリケーションソフトを実行したときの処理タイミングを第2の処理タイミングとして得る第2の性能測定機能を備える第2の計算機と、第1の計算機と第2の計算機を接続する通信装置を備えることを特徴とするシミュレーション装置」としたものである。
また本発明においては「アプリケーションソフトを実行したときに第2の処理タイミングを入手するための性能測定機能と、第2の処理タイミングを記憶する測定結果記憶部と、第2の処理タイミングを外部に送信するための通信装置を備えることを特徴とするECU装置」としたものである。
また本発明においては「第1の計算機でアプリケーションソフトを実行したときの第1の処理タイミングと、第2の計算機でアプリケーションソフトを実行したときの第2の処理タイミングの間の時間差をもとに、前記第1の計算機における前記アプリケーションソフトの実行時刻のタイミング調整を行うことを特徴とするシミュレーション方法」としたものである。
本発明によれば、PCシミュレーション環境での実行タイミングを実ECUへ近づけることができる。PC毎にタイミングの調整を行えるため、開発者のPC環境ごとに遅延量を調整することが出来る。
さらに本発明の実施例によれば、開発途中の実ECU試作機の台数が少ない状態でも実ECUでの処理タイミングに近い環境でソフトウェアを検証することができ、より上流工程でのソフトウェアの品質確保に寄与することが出来る。
本発明のシミュレーション装置における実ECU環境とPC環境の構成例を示す図。 シミュレーション装置を構成するパソコンPCの特に遅延注入機能Sw11についてのハードウェア構成並びに主な処理機能について示す図。 シミュレーション装置を用いて、ECU装置に移植するソフトウェアを作成するまでの生成過程を示す図。 本発明の実施例2に係るアプリ開発第一段階に関わる処理を示す図。 本発明で使用するC言語プログラム例を示す図。 遅延パラメータファイルFi3のテーブル設定例を示す図。 実ECUと、タイミング調整が無い場合と、タイミング調整を実施した場合のシミュレータでの実行タイミング例を示す図。 ECUの処理速度がパソコンの処理速度よりも早い場合のタイミング例を示す図。 実ECUのCPUクロック数とシミュレータが動作するパソコンPCのクロック数の比率を示す図。 実ECUで実行した場合の処理タイミングと、PCシミュレータで実行した場合の処理タイミングを示す図。 タスクAとBのタスクの優先度の関係を示す図。 マルチタスクにおける割り込み処理の場合におけるタイミング調整の考え方を示す図。 シミュレーション装置を構成するパソコンPC及び実環境機Sの遅延量決定、調整機能についての処理の流れについて示す図。 遅延量決定、調整機能についての考え方を示した図。 本発明で使用するC言語プログラム例を示す図。 遅延量決定及びタイミング調整のために実行されるパソコンPC、及び実環境機Sにおける処理内容を示す概略フローチャート。 ECU測定結果ファイルFi1、PC測定結果ファイルFi2の構成例を示す図。 タイミング調整前後の時間関係を示す図。 遅延パラメータファイルFi3更新の具体的な処理フローを示す図。 性能比較前の初期状態における遅延パラメータテーブルの一例を示す図。 図20の初期状態の遅延パラメータテーブルに子関数ごとの遅延量を反映させた遅延パラメータテーブルを示す図。 マルチタスクのコンテキスト切り替えが発生した場合の実行タイミング例を示す図。 各タスクが記憶した開始、終了時刻の一例を示す図。
以下本発明に係るシミュレーション装置について、図面を参照して詳細に説明する。なお、本発明の実施例は多岐にわたることから、実施例1ではシミュレーション装置の特にハードウェア構成を主体に説明し、実施例2から実施例5ではPCシミュレーション環境の実行タイミングを実ECUに近づける為の遅延処理を実行することについて説明し、実施例6以降ではパソコンPC毎にPCシミュレーション環境の実行タイミングを実ECUに近づける為の遅延量を決定し、PCシミュレーション環境での実行時に所定の位置で遅延処理を実行しながらタイミング調整することについて説明する。
実施例1ではシミュレーション装置の特にハードウェア構成を主体に説明する。図1は、本発明のシミュレーション装置における実ECU環境とPC環境の構成例を表している。
図1の右側には実ECU環境を実現する実環境機S、左側にはPC環境を実現するパソコンPCの構成例が示されている。実環境機Sと複数のパソコンPC(PCa、PCb・・・PCn)は、通信装置180を介して外部システム・バス181に接続されている。なおパソコンPCは基本的に同じ構成、機能のものであるので、以下においてはパソコンPCaを代表例として説明する。
実環境機SおよびパソコンPCは、いずれも計算機システムにより構成されているので、そのハードウェア構成はよく知られているように、システム・バス101上に、CPU102、主記憶装置(RAM)103、ハードディスクドライブ(HDD)104あるいはROM108等を接続して構成されている。またパソコンPCには、開発者がシミュレーション操作やシミュレーション結果の検証を実行するためのキーボード105、マウス106、ディスプレイ107が接続されている。
実環境機SおよびパソコンPCのハードウェア構成は、上記のようであるが、ハードディスクドライブ104あるいはROM108にはここで実現される主要な機能が搭載されている。
まずPC環境を実現するパソコンPCのハードディスクドライブ104には、PCシミュレーション環境で動作するソフトウェアSwとして、ECUアプリケーションソフトSw1と、性能比較ソフトSw2と、ECUとの通信を行う通信ソフトSw3が格納されている。なおECUアプリケーションソフトSw1には、遅延注入機能Sw11と性能測定機能Sw12を備え、性能比較ソフトSw2には測定結果比較・遅延パラメータ設定部Sw21、比較結果表示部Sw22を備え、通信ソフトSw3には測定結果受信部Sw31を備えている。なおECUアプリケーションソフトSw1は、パソコンPCにおけるシミュレーションソフト(PCシミュレーションソフト)を表している。
またPC環境を実現するパソコンPCのハードディスクドライブ104には、PCシミュレーション環境で動作するときに使用する各種のデータについてのデータファイルFiとして、ECUでの測定結果を保存したECU測定結果ファイルFi1、PC測定結果を保存したPC測定結果ファイルFi2、両測定結果の内容を比較し、決定した遅延パラメータを保存した遅延パラメータファイルFi3が格納されている。
他方、実ECU環境を実現する実環境機SのROM108には、ECUアプリケーションソフトSw4が格納されている。ECUアプリケーションソフトSw4は、性能測定機能Sw41と測定結果送信部Sw42を持つ。また実ECU環境を実現する実環境機Sの主記憶装置(RAM)103には、実ECU環境で動作するときに使用する各種のデータについてのデータファイルFiとして、ECUでの測定結果を保存したECU測定結果ファイルFi4が格納されている。
なお、図1で説明する構成と処理は、一実施例として説明するものであり、本発明の技術的範囲をこの実施例に限定して解釈する意図はない事を理解されたい。
図1を用いて説明した各種の処理のうち、パソコンPCのハードディスクドライブ104におけるECUアプリケーションソフトSw1における遅延注入機能Sw11は、PCシミュレーション環境の実行タイミングを実ECUに近づける為の遅延処理を実行することに係るものであり、実施例2から実施例5において説明する。また図1におけるその他の処理機能は、パソコンPC毎にPCシミュレーション環境の実行タイミングを実ECUに近づける為の遅延量を決定し、PCシミュレーション環境での実行時に所定の位置で遅延処理を実行しながらタイミング調整することに係るものであり、実施例6以降において説明する。
本発明の実施例2から実施例5の説明では、シミュレーション装置を構成するパソコンPCの特に遅延注入機能Sw11についてのハードウェア構成、並びに主な処理機能について説明する。またシミュレーション装置を用いて、ECU装置に移植するソフトウェアを作成するまでの生成過程について説明する。
まず、シミュレーション装置を構成するパソコンPCの特に遅延注入機能Sw11についてのハードウェア構成並びに主な処理機能について図2を用いて説明する。
図1で述べたように、図2のシミュレーション装置は、一般的なパソコンPCで構成されており、そのハードウェア構成としては、パソコンPCのシステム・バス101上に、CPU102、主記憶装置(RAM)103、ハードディスクドライブ(HDD)104、キーボード105、マウス106、ディスプレイ107などが接続されている。
図2のシミュレーション装置は、図1の遅延注入機能Sw11を具体的に機能展開したものであり、ハードディスクドライブ104内に形成される各種機能或は生成物として表すことができる。遅延注入機能Sw11は、具体的には、ECUアプリケーションソフトについてのECUソースコード111、実ECU向けの実行ファイルを生成する為のクロスコンパイラ112、PCシミュレーション用の実行ファイルを生成する為のコンパイラ113、クロスコンパイラ112を使用してアプリケーションソフト111をビルドする事により生成された実ECU用実行ファイル114、コンパイラ113を使用してアプリケーションソフト111をビルドする事により生成されたPCシミュレータ用実行ファイル115が保持され、あるいは形成されたものとして表現することができる。
図2によれば、ECUアプリケーションソフトのソースコード111からPCシミュレータ用実行ファイル115を形成する処理フローF1と、ECUアプリケーションソフトのソースコード111から実ECU用実行ファイル114を形成する処理フローF2が存在するが、これらの処理フローF1、F2は、図3に示し後述する手順で実行されている。
なおECUソースコード111には、実ECUとPCシミュレータ両方で動作するECUアプリケーションソフト121と、PCシミュレータ環境のみで動作する遅延注入用関数122を持つ。
また、パソコンPCのハードディスクドライブ104には、PCシミュレータ環境のみで使用される遅延情報を保存した遅延パラメータファイルFi3が格納されている。
またPCシミュレータ用コンパイラ113には、遅延注入用機能呼び出し処理をECUソフト内にフッキングする為のコンパイルオプション131を持つ。ECUソースコード111をコンパイラ113でコンパイルオプション131を指定してコンパイルすると、PCシミュレータ用実行ファイル115内に、遅延注入用実行コード141が含まれる。遅延注入用実行コード141は、遅延パラメータファイルFi3に記載された遅延量分の遅延処理を実行する機能を持つ。
なお処理フローF1でのコンパイル処理により、PCシミュレータ用実行ファイル115内にはECUアプリケーション実行コード142と遅延注入用実行コード141が生成記憶され、処理フローF2でのコンパイル処理により、実ECU用実行ファイル114内にはECUアプリケーション実行コード143が生成記憶される。
なお、ここで説明する構成と処理は、一実施例として説明するものである、本発明の技術的範囲をこの実施例に限定して解釈する意図はない事を理解されたい。
図3は、シミュレーション装置を用いて、ECUに移植するソフトウェアを作成するまでの従来における生成過程を示す図である。
図3の(a)は、アプリ開発第一段階を表しており、例えばECUにおけるブレーキ操作についてのECUアプリケーションソフト121が、PCシミュレータ用コンパイラ113により変換されて、PCシミュレータ用実行ファイル115内にECUアプリケーション実行コード142を生成する。この処理の流れが処理フローF1で示されている。
またこの段階では、ECUアプリケーション実行コード142を用いた各種のシミュレーションがパソコンPC内で実行され、その結果が適宜ディスプレイ107などに表示されている。開発者Mは、ディスプレイ107に表示されたシミュレーションの結果を受けてマウス106、キーボード105などの入力手段を用いてECUアプリケーションソフト121を適宜改変し、最終的にアプリケーションソフト121Aを得る。また最終的にECUアプリケーション実行ファイルコード142A(図示せず)を得る。
図3の(b)は、アプリ開発第二段階を表しており、アプリ開発第一段階で最終的に生成したECUアプリケーションソフト121Aを、実ECU用クロスコンパイラ112により変換して、実ECU用実行ファイル114内にECUアプリケーション実行コード143を生成する。この処理の流れが処理フローF2で示されている。
図3の(c)は、ECU確認段階を表しており、アプリ開発第二段階において最終的に得られたECUアプリケーション実行コード143をECUに移植し、実機による各種の検査などを実行する。
図3に示す上記の手順は、シミュレーション装置を用いて、ECUに移植するソフトウェアを作成するまでの従来における生成過程を示しているが、この場合の問題点がシミュレーション装置を構成する第1の計算機であるパソコンPCと、ECUを構成する第2の計算機との間のHW性能差(ハードウェア性能差)に起因し、パソコンPC環境とECU環境でアプリケーションソフトの動作結果に差が出てしまうという事であった。
なお第1の計算機と、第2の計算機との間のHW性能差として、以下の例ではクロック周波数の差を例にとり説明するものとする。なお実施例2ではECUのクロック周波数feが1000Hz、パソコンPCのクロック周波数fpが3000Hzであり、パソコンPCの方がECUよりも高性能な事例を示している。また実施例3ではECUの方がパソコンPCよりも高性能な事例を示している。
本発明の実施例2は、図3の(a)アプリ開発第一段階に関わる処理を改善したものである。図4は、本発明の実施例2に係るアプリ開発第一段階に関わる処理を示している。
図4のアプリ開発第一段階では、図3の(a)アプリ開発第一段階にさらに以下の機能や処理が追加されている。これらは、ECUソースコード111に追加された遅延注入用関数122、パソコンPC上に作成された遅延パラメータファイルFi3、PCシミュレータ用コンパイラ113に追加された関数結合オプション131、PCシミュレータ用実行ファイル115に追加された遅延注入用実行コード141である。
なお図4の構成によれば、コンパイルオプションの指定の有無により実行タイミング調整処理を着脱する構成のものとする事が出来る。
これらの追加された機能は、要するに最終的に形成されるプログラム(PCシミュレータ用実行ファイル115に生成されたECUアプリケーション実行コード142)中に、「予め定めたタイミングに予め定めた遅延時間を設定する」ものであり、このため本発明の計算機におけるプログラミング言語はC言語、C++言語、JAVA(登録商標)を採用するのがよい。なお、これらの言語は以下単にC言語と略称する。
図5は、本発明で使用するC言語プログラム例を示す図である。C言語プログラムでは、図5に例示するようにMain関数の中でfunc1関数を呼び出し、func1関数終了後にMain関数の残りを実行する単純なプログラムである。なお、Main関数の中では、複数のfunc関数を呼び出して処理を行わせることができる。なおMain関数を親関数、func関数を子関数と呼ぶことがある。
図2のECUソースコード111に追加された遅延注入用関数122は、C言語のfunc関数のうち、「予め定めたタイミングに予め定めた遅延時間を設定する」機能を果たすための関数であり、プログラムの先頭位置に遅延時間を設定する目的で使用するのがprologue関数であり、プログラムの後尾に遅延時間を設定する目的で使用するのがepilogue関数である。
なお、ECUは車両に組み込まれて使用される、いわゆる制御用計算機である。このため例えばシングルタスクのECUは10(ms)周期で起動され、起動の都度Main関数に記述された一連の処理をこの期間内で余裕をもって処理完了するように運用される。従って、シミュレーション装置であるパソコンPCも同様に制御用計算機として取り扱うことを前提として、構成運用されている。なおマルチタスクのECUの場合には、例えば5(ms)周期で起動される別体系の制御周期を有し、適宜の優先順位で運用されるものとされる。
図6には、図2で規定した遅延パラメータファイルFi3の本実施例でのテーブル設定例を記している。ここでは、Main関数、func1関数、Defaultについて、遅延時間設定位置の区別、呼び出し元関数名、遅延量、備考としての要件などを記述している。図6のテーブルは、遅延量の設定を終えた後の状態を表している。本テーブルで設定されている遅延量Δt4〜Δt7については、図7のタイミング例で図示する。
例えば、Main関数についての行201では、Main関数のPrologue関数(以下この関数による処理をプロローグ処理という)で実行する遅延量としてΔt4が設定されている。
func1関数についての行202では、func1関数のEpilogue関数(以下この関数による処理をエピローグ処理という)における遅延量としてΔt7を設定している。 なおDefaultとは、Main関数あるいはfunc関数などで定義していない部分について標準的に設定を行う事を意味している。本例では、記載されていない関数のプロローグ処理及びエピローグ処理では実行する遅延量として0(遅延処理を行わない)としている。
図6に記載の調整グループ203については、実施例7で後述する。
図7は、実ECUでの実行タイミングと、タイミング調整が無い場合のPCシミュレータでの実行タイミングと、タイミング調整を実施した場合のPCシミュレータでの実行タイミング例を記している。
まず図7左側のECUでの実行タイミングについて説明する。先にも述べたように、このタイミング処理は、ECUの10(ms)の制御周期、かつ1000Hzのクロック周波数の下で実行された場合のタイミングである。ここでは時刻t0において、10(ms)の制御周期が開始されたものとする。
この例では、プログラムはMain関数の前段処理にΔtE1時間、func1関数の処理にΔtE2時間、Main関数の後段処理にΔtE3時間を要し、かつこの合計時間はECUの10(ms)の制御周期内で十分な余裕をもって完了される。なお、Main関数の前段処理完了時刻をt1、func1関数の処理完了時刻をt2、Main関数の後段処理完了時刻をt3として表記している。
これに対し、パソコンPCを用いたシミュレーション装置の内部では、ECUでの実行タイミングと同じタイミングを実現できるものであることが望まれる。
この点に関し、図3で示した時間調整を実行しない従来方式(図7中央)によれば、実行開始時点は、実ECUもPCシミュレーション環境でも同じ時刻t0であるとしているが、パソコンPCのクロック周波数が3000Hzであることもあり、短時間で一連の処理を完了してしまう。具体的には、Main関数の前段処理にΔt1時間、func1関数の処理にΔt2時間、Main関数の後段処理にΔt3時間を要しているが、これらの時間は実ECUの各時間よりも十分に早いものであるために、実行タイミングが実ECUのそれとはまったく異なるものになっている。本発明では、実ECUとPCシミュレーション環境での実行時間の差から図6で説明した遅延パラメータファイルFi3の遅延量を計算して設定する。遅延量の計算は実施例6以降で説明する。
本発明では、関数の前後に適宜遅延時間を設定することで、図7左側のECUでの実行タイミングに近いものを実現する。なお図7右側のタイミング調整有の事例において、他の場合と同様に制御周期の開始時点はt0である。
このとき、プログラムはMain関数から開始する。最初に図6の遅延パラメータファイルFi3を参照して、行201のMain関数のプロローグ処理を実行する。Main関数のプロローグ処理における遅延量がΔt4の為、遅延時間Δt4の経過後にfunc1関数の処理を実行する。main関数を実行していくと、Δt1時間後にfunc1関数が呼ばれる。Main関数プロローグ処理の遅延量が適切であれば、func1関数呼び出しのタイミングが実ECUに近づく。
プログラムは次に、図6の遅延パラメータファイルFi3を参照して、行203のfunc1関数のプロローグ処理を実行するが、ここでは遅延量としてΔt5が設定されているので、遅延時間Δt5の経過後にfunc1関数の処理を実行する。
func1関数の実行時間は、タイミング調整なしのケースと同じΔt2である。図6の遅延パラメータファイルFi3での設定により、func1関数のエピローグ調整処理として遅延量Δt6が設定されており、Δt6分の遅延処理を実行する事により、main関数の後段処理開始時刻を、ECUにおけるmain関数の処理開始時刻t2に合わせることができる。
同様に図6の遅延パラメータファイルFi3での設定により、main関数のエピローグ調整処理として遅延量Δt7係数3が設定されており、Δt7分の遅延処理を実行することにより、main関数の後段処理終了時刻を、ECUにおけるmain関数の後段処理終了時刻t3に合わせることができる。
なお、各関数での遅延時間の設定に当たり、これを絶対時刻(例えば制御周期の開始時刻)からの時間で設定するか、前回イベント(例えば各関数の開始、終了時刻)の発生時刻からの時間で設定するかは適宜採用可能である。
このように本発明では、PCシミュレーション環境においてのみ動作する遅延処理を実装、追加できる仕組みを実現する事により、PCシミュレーション環境での処理タイミングを実ECUに使づけることができる。
また遅延処理を入れる場所は「関数の開始時に呼び出されるプロローグ処理」または「関数の終了時に呼び出されるエピローグ処理」とする。どちらか一方で遅延処理を実装する事も出来るし、両方で遅延処理を入れることも可能である。
さらに遅延注入関数の呼び出し処理はコンパイルオプションの追加で実施することができる。GCCの”−finstrument−functions”オプションのような、プロローグとエピローグ時に動作する関数を指定できる機能を使用するのがよい。PCシミュレーション環境でのテスト用にアプリケーションソフト内でテストコードを呼び出す処理を追加する事は不要である。
以上述べたように本発明は、アプリケーションソフトを実行コードに変換して検証し、検証後の実行コードを他の計算機装置に移植するためのシミュレーション装置であって、アプリケーションのソースコードの関数単位で関数開始時、または終了時に時刻調整処理を行い、前記他の計算機装置における実行タイミングを調整することを特徴とするシミュレーション装置としたものである。
実施例2においては、ECUの処理速度がパソコンの処理速度よりも遅いことを前提にして、各関数の前或は後に遅延時間を設定することで、ECUとの間のタイミングを合致させたものである。つまり時刻調整処理として遅延処理を行ったものである。
これに対しECUの処理速度がパソコンの処理速度よりも早い場合がある。図8はECUの処理速度がパソコンの処理速度よりも早い場合のタイミング例を示す図である。この場合における対応を示したものであり、例えばMain関数の処理にECUがΔtE1かかるところ、パソコンではそれ以上の時間を要してしまうことが想定される。この場合には、パソコンでのMain関数の処理に要した時間に適宜の係数を乗じてECUにおける処理時間ΔtE1にすべく、調整するのがよい。これは時刻調整処理として時間短縮化処理を行ったものである。
実施例4もまた、ECUの処理速度がパソコンPCの処理速度よりも早い場合の対応策を想定している。
実施例4について、図9、及び図10を使用し、シミュレーション速度を実ECU環境よりも下げて実行する場合の例を説明する。実ECUとシミュレータが動作するパソコンPCを比較し、実ECUの方が高速な場合のタイミング調整機能を適用した場合の実施例を説明する。
図5に記したmain関数を周期的に実行する実施例で説明する。実ECUのCPUクロック数とシミュレータが動作するパソコンPCのクロック数の比率を図9に記す。本例は、実ECUの方がパソコンPCよりも2倍性能がよい環境を例にしている。
図10に、実ECUで実行した場合の処理タイミングと、PCシミュレータで実行した場合の処理タイミングを記す。
周期処理タイマイベント601、602が発生し、main関数を開始することで周期処理を開始する。Main関数の中からfunc1関数がコールされる(603、604)。Func1関数実行後にmain関数へ戻り、main関数終了時点で周期処理が完了する(605、606)。次の周期処理タイマイベント発行(607、608)を受け、次回の周期処理がmain関数から開始されるが、本実施例の場合、PCシミュレータ環境では、CPU性能が低いことに起因して、前回分の周期処理が終わっていないことが、606、608のタイミングが入れ替わっていることから確認できる。
PCシミュレータ環境では、等倍速で実行した場合に、ECUと同じタイミングで処理することが出来ないため、CPU比率を元に、1/2倍速することによりPCシミュレーション環境でのタイマイベントの発生間隔を2倍にすることにより、PCシミュレーション環境での処理タイミングを実ECUに近い形で実行する事が可能となる。
図10の右側に、PCシミュレーション環境で1/2倍速実行したときの処理タイミングを記す。タイマイベントの発生(609)、func1関数の実行開始(610)、main関数の終了(611)は、PCシミュレーション環境での等倍速再生時の実行タイミングと変わらないが、次の周期処理タイマイベント発生タイミング(612)が等倍速再生時よりも2倍後になることにより、PCシミュレーション環境での周期処理を周期内に収めることが出来ている。なお、関数のPCでの実行時間がECUでの実行時間の2倍より短い場合の、プロローグ・エピローグでの補正方法は、実施例1と同様である。
タイマイベントを発生させる周期の変更は、プログラム初期化処理などで実行される関数のプロローグ処理またはエピローグ処理において実施する。
本実施例のバリエーションとして、PCでの実時間でなく、仮想的な時刻を備えて、プロローグ・エピローグにおいて、仮想的な時刻をECUにおいてそこに到達する時刻に補正する方式も可能である。この方式では、待ちを挿入する代わりに仮想的な時刻の補正行うため、シミュレーション時間を削減することが出来る。
実施例2から実施例4においては、1つのタスクのみが一つのCPU上で動作するプログラム(いわゆるシングルタスク)に対し、タイミング調整機能を適用した場合の実施例を説明した。これに対し、マルチタスク方式のECUでは、複数のタスクA、Bが一つのCPU上で動作するプログラムに対して、タイミング調整機能を適用する必要がある。
係るマルチタスクの方式では、一方のタスク実行中に優先度の高い他のタスクの処理要求が入り、前者を中断して後者の処理を行い、その処理終了後に再度前者のタスクの残余部分を実行するといった切替処理が発生する。
図11は、タスクAとBのタスクの優先度の関係を示している。タスクAは例えば10(ms)の制御周期で起動され、タスクBは例えば5(ms)の制御周期で起動されるものであり、タスクBの優先度が高くされた事例を示している。
図12は、マルチタスクにおける割り込み処理の場合におけるタイミング調整の考え方を示している。図12において左側は、ECUでの実処理を示しており、タスクAとタスクBは異なる制御周期の下で実行されている。ここではタスクAの周期処理タイマ起動時刻がt0A1、t0A2で、またタスクBの周期処理タイマ起動時刻がt0Bで示されている。またこの例では時刻t0A1、t0A2間がタスクAの制御周期であり、タスクBの割り込む処理により、タスクAの再開時刻がt1、タスクAの終了時刻がt2になったことを表している。
この図12の例では、タスクAが時刻t0A1のタイマイベントを契機に処理を開始する。その後タスクAの処理実行中の時刻t0BにタスクBのタイマイベントが発行された。このとき、優先度の関係からタスクAの実行を中断し、タスクBの処理を開始する事となる。
本例のイベント発生タイミングによれば、実ECUではタスクA実行処理がタスクB開始までに終了せず、タスクBへの切替が発生している。タスクBの処理終了後に、タスクAの実行が再開されている。
一方、図12中央の従来における処理によれば、ECUよりも高速なPCシミュレータ環境であることから、タスクAの実行がタスクB開始までに終了してしまうため、タスク切替は発生していない。つまり従来方式では、マルチタスクにおけるタスク切り替えを再現することができない。この結果として、PCシミュレータ環境では1周期で実行でき、正しく動作していても、実ECU環境に移植して動作確認をした場合に、1周期の期間内に処理が完了しないという問題などもよく発生する。
PCシミュレーション環境で関数のプロローグ、エピローグ処理でタイミング調整を入れた場合の本発明の動作を図12の右側に記述している。この記述例によれば、適宜の遅延時間を加味することで、タスクAの前段処理部分を形成することが可能であり、同様にタスクB、タスクAの後段処理部分を形成することができ、割り込み処理を実現することができる。
このように、実施例2と同様に関数単位で細かくタイミング調整処理が入る為、実ECUとPCシミュレータで同じタイミングでタスクA及びタスクBのタイマイベントが発生した場合に、PCシミュレータ上でもタスクの切替が発生する事となる。つまり、異なる制御周期で動作するマルチタスク方式の場合にシミュレーション装置は、複数のタスクの夫々について時刻調整処理を行い、割り込み処理を再現することができる。
なおマルチタスク方式では、タイミングを調整する為に記憶する実行時間はタスクごとに管理し、タスクが切り替わった後のタイミング調整処理でリソースを奪われたタスクの実行時間のカウントアップを止める処理を実行するのがよい。
本例ではタスクBの周期処理開始時のプロローグ関数でタスクAの実行を止めることになる。タスクB開始時のプロローグ関数でタスクAの処理時間カウントを止め、タスクBの処理終了時のエピローグ関数内でタスクAの実行時間カウントアップを再開する。その後タイミング調整タイミングが来た時に、タスクBにリソースを奪われる前と復帰後の実行時間からタイミング調整時間を計算して、タイミング調整を行う。
実施例6以降では、パソコンPC毎にPCシミュレーション環境の実行タイミングを実ECUに近づける為の遅延量を決定し、PCシミュレーション環境での実行時に所定の位置で遅延処理を実行しながらタイミング調整することについて説明する。
図13は、シミュレーション装置を構成するパソコンPC及び実環境機Sの遅延量決定、タイミング調整機能についての処理の流れについて示す図である。
図13によれば、実環境機S側において実ECU環境におけるハードウェア試作機の性能試験が実行される。これは実ECU環境を実現する実環境機SのROM108内のECUアプリケーションソフトSw4において、性能測定機能Sw41が作動してRAM103内にECUシミュレータでの測定結果を得、ECU測定結果ファイルFi4として保存したものである。
なおその後、ECU測定結果ファイルFi4は、ECUアプリケーションソフトSw4内の測定結果送信部Sw42が作動して、パソコンPC内の通信ソフトである測定結果受信部Sw31を介してパソコンPC内にECU測定結果ファイルFi1として保存される。
図14は、遅延量決定、タイミング調整機能についての考え方を示した図であり、これと図13の処理を対比して示すと、実環境機Sにおける上記処理は、図14の左側のECUにおいてハードウェア試作機の性能試験の結果(ECU測定結果ファイルFi1またはFi4)として、アプリケーションソフト(実ECU)の開始時刻tsEと終了時刻teEを測定したものである。
他方、パソコンPC側においてPC環境におけるシミュレータの性能試験が実行される。これはシミュレータを実現するパソコンPCのハードディスクドライブ104内のECUアプリケーションソフトSw1について、性能測定機能Sw12が作動してハードディスクドライブ104内にシミュレータでの測定結果を得、PC測定結果ファイルFi2として保存したものである。
パソコンPCにおける上記処理は、図14の中央のパソコンPC(調整なし)においてシミュレータの性能試験の結果(PC測定結果ファイルFi2)として、シミュレーション開始時刻tsPと終了時刻tePを測定したものである。なお図14においては、説明の都合上夫々の開始時刻tsE、tsPを同一時刻上に表示している。またこの状態では、本発明による遅延処理に基づくタイミング調整は行われていないものである。
図13に戻り、次に性能比較ソフトSW2内の測定結果比較・遅延パラメータ設定部Sw21が作動し、ECU測定結果ファイルFi1とPC測定結果ファイルFi2についての比較検証を実施する。図14に示すように、測定結果比較・遅延パラメータ設定部Sw21は、測定結果の差分を元に調整時間を算出する。図示の例では、開始時刻tsE、tsPと、終了時刻teE、tePの時間差分が比較検証され、この結果が遅延パラメータファイルFi3に保存される。
その後、保存した遅延パラメータファイルFi3を使用してパソコンPC上でシミュレータの性能試験を再度実行する。これによりPC測定結果ファイルFi2が更新される。
性能比較ソフトSW2内の測定結果比較・遅延パラメータ設定部Sw21が作動し、ECU測定結果ファイルFi1とPC測定結果ファイルFi2についての比較検証を実施する。測定結果の差分を元に調整時間が再算出され、より実機に近い動作をするための遅延パラメータファイルFi3が作成される。
タイミング調整後のシミュレータは、図13の例ではPC測定結果ファイルFi2に反映され、保存されることを示しているが、適宜の場所に保存可能である。なお上記タイミング調整の手順は、測定結果比較・遅延パラメータ設定部Sw21により自動実行されてもよいし、比較結果表示部SW22を介してディスプレイ107に表示し、開発者の判断により具体的なタイミング調整内容が決定され、反映されてもよい。
図14の右側にはタイミング調整後のPCシミュレータにおける開始時刻と、終了時刻の例を示している。この例では、実環境機SにおけるECU実測時間帯(開始時刻tsE、終了時刻teE)に対して、パソコンPCは処理命令を受け付けた時刻tsEから時間ts0遅らせてパソコン処理の開始時刻とし、パソコンPCはその終了時刻から時間te0経過をもって、実環境機SにおけるECU実測時間帯の終了時刻teEと判断する。つまり、開始前時間ts0と終了後時間te0を設定することで、PCシミュレータにおける時刻を実環境機SにおけるECUの時刻に近づけたものである。
以上の流れを図14に整理すると、以下のようである。まず実ECUとパソコンPCでECUアプリケーションソフトSW1、SW4を実行し、測定ポイント(関数の開始、終了)で時間を記録する。実ECUでの測定タイミングを図14の左側に、PCシミュレータでの実行タイミングを図14の中央に記す。パソコンPC上の性能比較ソフトSW2にて、ECUでの測定結果とパソコンPCでの測定結果を比較し、性能差を埋めるための遅延量を計算し、遅延パラメータファイルFi3に遅延量を格納する。
次にPCシミュレータを実行する際は、更新された遅延パラメータ情報を読み込み、関数の開始時と終了時に遅延処理を実行したうえで、ECUアプリケーションソフトSW1を実行する。遅延処理を実行した場合の処理タイミングを図14の右側に記す。ECUでの処理タイミング(図14の左側)とPCシミュレータでの実行時間が近づいていることが分かる。
以上の実施例6において、ECU測定結果ファイルFi1には、実ECUで測定した実行時間、タイミングが記憶されている。ここでECU測定結果ファイルFi1に記憶された実行時間、タイミングは、PC測定結果ファイルFi2に記憶された実行時間、タイミングを合致させるための目標データと言えるものである。実施例6では実環境機Sにおいて目標データを計測してから、パソコンPC側での計測、並びに比較を行うという手順を示しているが、目標データが予め得られ、ECU測定結果ファイルFi1にデータ確保されているのであれば、実環境機Sでの計測を毎回実行する必要がないことは言うまでもない。
また上記実施例では、パソコンPCの方が実環境機Sよりも処理が速い、従ってタイミング調整処理は遅延時間の処理であることを前提として述べているが、実施例3などで述べたように、これはパソコンPCの方が実環境機Sよりも処理が遅い場合であっても対応可能である。これら両者を含む意味合いでは、遅延処理とは、タイミング調整処理というのが適切である。本発明は広い意味ではタイミング調整を行ったものである。
なお本発明におけるタイミング調整は、必ずしもECUに完全合致させることを意図してはいない。例えば90%程度合致させることができれば、シミュレーション上の大きな不利益を生じるものではないといえる。
また本発明の場合に実環境機Sは例えばECUであり、ECUはその内部にアプリケーションソフト実行時にそのタイミングを計測する性能測定機能を備えており、かつ測定結果を記憶するECU測定結果ファイルを保持していることが本発明の特徴である。
実施例7では、図15〜図21を使用し、シングルタスクで動作するプログラムに対し、タイミング調整機能を適用した場合の具体的な処理例を説明する。
図15は、図5に例示したと同じ本発明で使用するC言語プログラム例を示す図である。C言語の詳細説明は割愛するが、図15に記載するC言語プログラムは、10ms周期で処理を行うMain関数171(10ms_func)の中で、小さい処理単位を実行する3組のfunc関数としてfunc1関数172(eeprom_read)、func2関数173(nw_send)、func3関数174(eeprom_write)を実行する単純なプログラムである。これにより、Main関数171で規定する制御周期である10ms内で、eepromからのread処理、nwへのsend処理、eepromへのwrite処理が実行される。なお、C言語プログラムは、その処理開始時刻、終了時刻を記憶する機能を有している。
本発明の実施例におけるパソコンPC、及び実環境機Sにおける処理は、上記したC言語プログラムにより実行される。図16は、遅延量決定及びタイミング調整のために実行されるパソコンPC、及び実環境機Sにおける処理内容を示す概略フローチャートである。
図16の右側にはパソコンPCにおける処理内容、図16の左側には実環境機Sにおける処理内容を例示している。
図16の処理フローでは、最初に実ECU側の処理ステップS141において実行時間計測を行う。プログラム内に記載されている性能測定コードを実行する事により、処理ステップS142において実行タイミングを記録する。処理ステップS143において実ECUで記録した実行タイミングを実ECUの測定結果送信部SW42から同一ネットワーク上につながっているパソコンPC側へ送信する。パソコンPC側では、受信した測定結果をECU測定結果ファイルFi1として保存する。
次にパソコン側では、処理ステップS144においてPCシミュレーション環境でプログラムを実行し、実行タイミングを記録する。パソコンPC内に存在する遅延パラメータファイルFi3の設定値を使用して、プログラム内に記載されている性能測定コードを実行する事により、実行タイミングを記録する。また処理ステップS145においてPCシミュレーション環境で記録した実行タイミングをPC測定結果ファイルFi2に保存する。
図17は、上記処理により作成されたECU測定結果ファイルFi1、PC測定結果ファイルFi2に形成されるデータ構成例を示している。これらのファイルは同一形式で作成されており、ECUとパソコンPCで記録する情報は同じである。
図17のファイルFi1、Fi2の横軸項目としては、時間(301、305)、動作タスク(302、306)、関数名(303、307)、測定タイミング(開始・終了)(304、308)の4つの情報を記録する。C言語プログラムによる測定対象の関数の開始部と終了部に存在する時刻計測コードを使用して、実行時間と動作タスクを記録している。本実施例ではシングルタスクの例を示しており、タスク302、306は一つなので、すべて同じタスクAである。
このECU測定結果ファイルFi1によれば、タスクAについてMain関数171(10ms_func)の開始時刻がt0、func1関数172(eeprom_read)の開始時刻がt2、func1関数172(eeprom_read)の終了時刻がt6、func2関数173(nw_send)の開始時刻がt9、func2関数173(nw_send)の終了時刻がt11、func3関数174(eeprom_write)の開始時刻がt12、func3関数174(eeprom_write)の終了時刻がt13、Main関数171(10ms_func)の終了時刻がt14であり、上記順番にてデータ生成されたことを表している。
同様にPC測定結果ファイルFi2によれば、タスクAについてMain関数171(10ms_func)の開始時刻がt0、func1関数172(eeprom_read)の開始時刻がt1、func1関数172(eeprom_read)の終了時刻がt3、func2関数173(nw_send)の開始時刻がt4、func2関数173(nw_send)の終了時刻がt5、func3関数174(eeprom_write)の開始時刻がt7、func3関数174(eeprom_write)の終了時刻がt8、Main関数171(10ms_func)の終了時刻がt10であり、上記順番にてデータ生成されたことを表している。
図18は、タイミング調整前後の時間関係を示す図である。図18の左側の2列には、図17の時間関係を計測したときの状況が示されている。ECUについてみると、親関数171が規定する10msの中で、子関数172、173、174が順次実行されており、各開始、終了の時刻が左側縦軸に記載されている。またパソコンPCについても親関数171の中で、子関数172、173、174が順次実行されているが、各開始、終了の時刻が記載されているように、実環境機Sに比較して高性能、高速のパソコンPCの場合には、親関数171が規定する10msの時間経過前に一連の子関数の処理を完了してしまっている。
ECUとパソコンPCの測定結果がそろった後で、性能比較ソフトSW2を使用して測定結果の比較を行い、PCシミュレーション環境で注入する遅延量を決定し、遅延パラメータファイルFi3を更新する。この間の処理である遅延パラメータファイルFi3更新の具体的な処理フローを図19に示している。
図19の処理フローの最初の処理である処理ステップS151では、遅延パラメータファイルFi3から遅延量を取得し、処理ステップS152においてPCシミュレーション環境で遅延パラメータファイルFi3を使用した時刻測定を実施し、処理ステップS153において実行結果をPC測定結果ファイルFi2へ格納する。この間の処理フローは図16に記載の内容のとおりである。なお、上記一連の処理は遅延パラメータを変更しながら複数回繰り返し実行されるので、処理ステップS160において実行回数を更新しながら繰り返し回数をカウントする。
処理ステップS154ではECU測定結果とPC測定結果を比較し、性能差を算出するが、この具体的な処理内容について説明する。この場合に、実行時間を比較したいC言語プログラムによる関数(Main関数と、複数のFunc関数)は複数あり、それぞれの関数間で呼び出し関係があることから、性能比較、処理の小さいグループ(他から呼び出されない関数)から実施していく。
図20は、性能比較前の初期状態における遅延パラメータテーブルの一例を示している。この図では、横軸項目として関数名、タスク名、呼び出し元関数名、調整グループ181、開始、終了の区別、遅延量、備考の欄を設けている。関数名は図15の例で言えば、親関数であるMain関数171、子関数であるfunc関数172、173、174であり、開始、終了の区別ごとに行わけして記載している。呼び出し元関数名は、子関数からみたときの親関数を記述しており、性能比較前の初期状態であるため遅延量の欄は0に設定されている。またこの表では、親子の関係毎に調整グループ181が設定されており、親関数側に調整グループ「2」が設定され、子関数側に調整グループ「1」が設定されている。
処理ステップS154における調整の順番は、図20の遅延パラメータテーブルに記載の調整グループ181の小さいものから順に実施していく。本実施例では一番小さい関数として、調整グループ「1」にランク付けされたfunc関数172、173、174である(eeprom_read)、(nw_send)、(eeprom_write)関数が先行して選択され、この順序で実行されていく。
図17、図18に例示した時間関係で説明すると、実ECUでの(eeprom_read)、(nw_send)、(eeprom_write)関数の、開始、終了の実行時間はそれぞれ、(t6−t2)、(t11−t9)、(t13−t12)であり、PCシミュレーション環境での実行時間はそれぞれ(t3−t1)、(t5−t4)、(t8−t7)である。
図19の処理フローの処理ステップS155では、最初に子関数(eeprom_read)について、実ECUとPCシミュレーション環境での実行時間の差が閾値よりも大きいかどうかを判定し、閾値よりも大きい場合、処理ステップS156に移動してPCシミュレーション環境で指定時間分の遅延処理を実行するための遅延量計算処理を行う。子関数(eeprom_read)の場合、実行時間の差は((t6−t2)-(t3−t1))として算出される。
処理ステップS157では、関数ごとに遅延量を更新する。最初に子関数(eeprom_read)について遅延量を更新する。ここではPCシミュレーション環境で実行時間の差分分だけ、遅延処理を入れるものとし、これにより実ECUでの処理時間に近づけられる。遅延量調整は、関数開始時と、関数終了時の2か所で入れるため、実行時間の差を2分割した量が遅延量として遅延パラメータファイルFi3に書き込まれる。
なお、その後の繰り返し処理により求められる(nw_send)、(eeprom_write)関数の実行時間の差はそれぞれ、((t11−t9)-(t5−t4))、((t13−t12)-(t8−t7))である。これらに対しても順次処理ステップS156、処理ステップS157の処理が実行され、子関数ごとの遅延量が定められていく。
図21は、図20の初期状態の遅延パラメータテーブルに子関数ごとの遅延量を反映させた第一段階(step1)での遅延パラメータテーブルを示している。従ってここには、子関数である(eeprom_read)、(nw_send)、(eeprom_write)関数の遅延量の更新データが反映されている。182〜187の6か所に先ほど計算した遅延量が書き込まれている。
なお遅延処理の例としては、タスクをスリープさせるのではなく、遅延させる時間分無駄な演算や、無駄なwhileループの実行などをする処理になる。
次に図19の処理ステップS158では、子関数である(eeprom_read)、(nw_send)、(eeprom_write)関数の調整が終わると、タイミング未調整の関数があるかどうかの判定を行う。
子関数調整終了段階におけるシミュレータ処理の時間関係を仮に図示すると、図18の右から2番目の「Step1」のようになっている。ECUとの関係では、子関数通しは概ね時間関係が合致した状況になっている。子関数調整終了段階では、全体としては431に示す時間長だけECUの実行時間に近づいているが、未だ時間長432の部分で、時間が合致していない。
次の第二段階(step2)では、図20の遅延パラメータテーブルに記載の調整グループ「2」に記述された関数(前述の子関数を呼び出している親関数)である(10ms_func)関数についての、実行タイミング調整を行う。親関数のタイミング調整処理は、図19の処理ステップS158において子関数の全数完了を確認し、処理ステップS159で実施回数を0に初期化した後に開始する。親関数のタイミング調整処理は、子関数の場合と同様に処理ステップS151、S152、S153、S160、S154、S155、S161、S156、S157を順次、必要回数だけ繰り返し実行することで達成される。
図19の処理ステップS151の処理から再度実行し、実ECUとの性能差を再度測定したときの実行タイミングは、図18の右側に「Step2」として記述されるものであり、時間長432の部分が解消された実行タイミングとされている。この実行タイミングは、時間長さ432について、その半分の時間長の分だけ、親関数実行開始タイミングを遅らせたものである。従って、パソコン環境下では、親関数実行終了タイミングから時間長さ432の半分の時間経過後のタイミングが、ECU環境下での終了タイミングに合致するはずである。
図19の一連の処理によれば、最初に子関数について遅延処理を実行し、その後に親関数に遅延処理を実行することで、終了するが、この終了判断は、処理ステップS158においてタイミング未調整の関数がないことを確認することで完結とする。
なお一連の処理では、付随的に以下の処理を行うのがよい。まず処理ステップS161では、関数の遅延処理の繰り返し回数が予め定めた上限(図20の例では、関数数4*開始、終了の2で定まる8)の範囲内での繰り返し処理を許可し、上限以上の繰り返しを行わないものとするのがよい。
また性能比較ソフトSW2を使用しての遅延量調整処理が終わらないケースも想定するのがよい。その時の性能調整フローを図19で説明する。例えば、一関数の実施タイミングが変わった影響で別関数の動作が変わることが考えられる。これまでエラー処理に流れていたものが、正常処理に切り替わる場合などが例として挙げられる。
図19では、処理ステップS155の判定条件で性能差が閾値未満にならずに、処理ステップS161の判定条件がYesの場合(実施回数が上限を超えた場合)、閾値を変更する。図19の処理ステップS162において、許容する性能差を緩和し、遅延量調整を行う。再調整を行い、実施回数が上限に到達し、なお性能差が閾値未満にならない場合(判定条件である処理ステップS163の結果がNoの場合)は、タイミング調整ができないと判定し、図19の処理ステップS164において、遅延パラメータファイルFi3の内容を初期化(遅延注入なし)し、性能調整処理を終了する。
以上により、パソコンPC1台に対するPCシミュレーション環境の遅延量調整処理が終わる。一般には、開発者ごとに使用しているパソコンPCの種類(HW仕様)が異なるが、パソコンPC毎に遅延量調整を行う事により、開発者毎のPCシミュレーション環境での実行タイミングを実ECUに近づけることが可能となる。
実施例7ではシングルタスク環境で遅延量決定、タイミング調整を行うことを説明したが、ECUアプリケーションソフトはマルチタスク環境で動作することが多い。
マルチタスク環境では、タスクの優先順位に基づいたコンテキスト切り替えが発生する。コンテキスト切り替えが発生するかどうかにより関数の終了時間が変わってしまう。
実施例8では、性能比較ソフトSw2での関数の実行時間計算時に、動作タスク情報を考慮することでコンテキスト切り替えが発生した場合でも実際に処理を行った時間を計算することができる。
本実施例で使用する2つのタスクの情報を図22に示し説明する。
図22にはタスクのコンテキスト切り替えが発生した場合の測定結果ファイルの内容と各タスクの実行タイミング例を示している。
この例では、AとBのタスクがあり、A、B共にタイマイベントで起動し、周期的に処理を行うタスクであるが、タスクBの優先度が高く、タスクAの実行中に優先度の高いタスクBが起動される。
時系列的には、タスクAがタイマイベント201を契機に時刻t0から処理を開始する。タスクAの処理実行中に、タスクBのタイマイベント202が時刻t1において発行された場合、優先度の関係からタスクAの実行を中断し、タスクBの処理を開始する。その後時刻t2においてタスクBの処理が終了、タスクAの処理が再開し、最終的にタスクAは時刻t3で終了となる。
このとき、タイミングを調整する為に記憶する開始、終了時間はタスクごとに管理しており、各タスクは上記開始、終了時刻を記憶している。図23は、各タスクが記憶した開始、終了時刻の一例である。マルチタスクの場合には、他タスクが動作している間の時間を関数の実行時間から減算することにより、実際の実行時間を算出する。
例えば、タスクAの関数(func_a)の開始、終了時間をt0、t3、タスクBの関数(func_b)の開始、終了時間をそれぞれt1、t2とした場合、タスクBに割り込まれたタスクAの実行時間は((t3−t0)−(t2−t1))で計算することが出来る。
上記説明の本発明では、ECUソフト内で時間計測機能と遅延注入機能を持たせる。実ECUとPCシミュレーション環境でソフトを実行し、実行タイミング(起動後の経過時間)を記録する。
実ECUとPCシミュレータでの実行タイミングを保存した処理タイミングデータの内容を比較し、処理時間の差からPCシミュレータで注入する遅延量を決定し、ファイルへ保存する機能を備えた性能比較ソフトを用意する。
性能比較ソフトを実行により更新された遅延パラメータファイルの情報を使用してPCシミュレーション環境でECUアプリケーションソフトを再度実行する。PCシミュレーション環境で調整済みの遅延量で遅延処理を行う事でPCシミュレーション環境での実行タイミングを実ECUへ近づけることができる。
時刻測定は、実行タイミングを調整したい関数の開始時と終了時で記録する。また遅延処理を入れる場所は、関数開始時の時刻計測直後と、関数終了直前の時刻計測直前で行う。どちらか一方で遅延処理を実行する事も出来るし、両方で遅延処理を入れることも可能である。
ECUの試作HWが出来ていないタイミングでは、CPUの評価ボードや、開発のベースとなっているECUハードウェアを使用することで、ECUでの実行タイミング情報として保存し、それを実ECUでの実行タイミングとして利用することも可能である。
101:システム・バス
102:CPU
103:主記憶装置
104:HDD
105:キーボード
106:マウス
107:ディスプレイ
108:ROM
S:実環境機
PC(PCa、PCb・・・PCn):パソコン
180:通信装置
181:外部システム・バス
Sw1:ECUアプリケーションソフト
Sw2:性能比較ソフト
Sw3:通信ソフト
SW11:遅延注入機能
SW12:性能測定機能
SW21:測定結果比較・遅延パラメータ設定部
SW22:比較結果表示部
SW31:測定結果受信部
Fi1:ECU測定結果ファイル
Fi2:PC測定結果
Fi3:遅延パラメータファイル
SW4:ECUアプリケーションソフト
SW41:性能測定機能
SW42:測定結果送信部
Fi4:ECU測定結果ファイル

Claims (10)

  1. 第1の計算機でアプリケーションソフトを実行したときの第1の処理タイミングを得る第1の性能測定機能と、前記第1の処理タイミングと第2の計算機でアプリケーションソフトを実行したときの第2の処理タイミングの間の時間差をもとに、前記第1の計算機における前記アプリケーションソフトの実行時刻のタイミング調整を行うタイミング調整機能を備える第1の計算機で構成されたことを特徴とするシミュレーション装置。
  2. 請求項1に記載のシミュレーション装置であって、
    前記第1の計算機は、通信装置を介して前記第2の計算機に接続されており、前記第2の計算機は当該第2の計算機でアプリケーションソフトを実行したときの前記第2の処理タイミングを得る第2の性能測定機能を備えることを特徴とするシミュレーション装置。
  3. 第1の計算機でアプリケーションソフトを実行したときの第1の処理タイミングを得る第1の性能測定機能と、前記第1の処理タイミングと第2の計算機でアプリケーションソフトを実行したときの第2の処理タイミングの間の時間差をもとに、前記第1の計算機における前記アプリケーションソフトの実行時刻のタイミング調整を行うタイミング調整機能を備える第1の計算機と、
    アプリケーションソフトを実行したときの処理タイミングを前記第2の処理タイミングとして得る第2の性能測定機能を備える第2の計算機と、
    前記第1の計算機と前記第2の計算機を接続する通信装置を備えることを特徴とするシミュレーション装置。
  4. 請求項1から請求項3のいずれか1項に記載のシミュレーション装置であって、
    前記タイミング調整機能は、前記第2の処理タイミングを目標タイミングとして前記第1の処理タイミングを合わせることを特徴とするシミュレーション装置。
  5. 請求項1から請求項4のいずれか1項に記載のシミュレーション装置であって、
    前記アプリケーションソフトは、親関数の中で子関数が実行されるとともに親関数並びに子関数の関数開始時刻および関数終了時刻が記録される言語で記述されていることを特徴とするシミュレーション装置。
  6. 請求項5に記載のシミュレーション装置であって、
    前記第1の計算機における前記アプリケーションソフトの実行時刻のタイミング調整は、前記子関数のタイミング調整完了後に、前記親関数のタイミング調整が行われることを特徴とするシミュレーション装置。
  7. 請求項1から請求項6のいずれか1項に記載のシミュレーション装置であって、
    前記第2の計算機は、ECUであることを特徴とするシミュレーション装置。
  8. 請求項1から請求項7のいずれか1項に記載のシミュレーション装置であって、
    複数の前記第1の計算機が、通信装置を介して接続されていることを特徴とするシミュレーション装置。
  9. アプリケーションソフトを実行したときに第2の処理タイミングを入手するための性能測定機能と、前記第2の処理タイミングを記憶する測定結果記憶部と、前記第2の処理タイミングを外部に送信するための通信装置を備えることを特徴とするECU装置。
  10. 第1の計算機でアプリケーションソフトを実行したときの第1の処理タイミングと、第2の計算機でアプリケーションソフトを実行したときの第2の処理タイミングの間の時間差をもとに、前記第1の計算機における前記アプリケーションソフトの実行時刻のタイミング調整を行うことを特徴とするシミュレーション方法。
JP2020531204A 2018-07-19 2019-06-26 シミュレーション装置、及びその方法、並びにecu装置 Active JP7045458B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2018135829 2018-07-19
JP2018135829 2018-07-19
PCT/JP2019/025303 WO2020017264A1 (ja) 2018-07-19 2019-06-26 シミュレーション装置、及びその方法、並びにecu装置

Publications (2)

Publication Number Publication Date
JPWO2020017264A1 true JPWO2020017264A1 (ja) 2021-05-13
JP7045458B2 JP7045458B2 (ja) 2022-03-31

Family

ID=69164715

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020531204A Active JP7045458B2 (ja) 2018-07-19 2019-06-26 シミュレーション装置、及びその方法、並びにecu装置

Country Status (5)

Country Link
US (1) US20210248288A1 (ja)
JP (1) JP7045458B2 (ja)
CN (1) CN112400162A (ja)
DE (1) DE112019002778T5 (ja)
WO (1) WO2020017264A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7072697B1 (ja) * 2021-03-12 2022-05-20 三菱電機株式会社 電子制御装置、電子制御装置の試験装置、及び電子制御装置の試験方法
JP7336775B2 (ja) * 2021-03-19 2023-09-01 パナソニックIpマネジメント株式会社 検証システム、検証方法及びプログラム
CN115202495B (zh) * 2022-09-08 2022-12-16 深圳市湘凡科技有限公司 鼠标硬件的模拟移动方法、装置、设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012203845A (ja) * 2011-03-28 2012-10-22 Denso Wave Inc 携帯機器とプログラム実行装置を有するシステムと、そのシステムに用いられる携帯機器及びプログラム実行装置
JP2015170081A (ja) * 2014-03-06 2015-09-28 三菱電機株式会社 シミュレーション装置及びシミュレーションプログラム

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2182826B (en) * 1985-11-20 1990-08-01 Stc Plc Data transmission system
US20020194618A1 (en) * 2001-04-02 2002-12-19 Matsushita Electric Industrial Co., Ltd. Video reproduction apparatus, video reproduction method, video reproduction program, and package media for digital video content
US7730450B2 (en) * 2004-08-12 2010-06-01 National Instruments Corporation Automatic versioning and data mutation of user-defined data types
EP1788485A4 (en) * 2004-08-23 2012-09-26 Gaia System Solutions Inc SOURCE PROGRAM ANALYSIS DEVICE AND METHOD
JP4728020B2 (ja) * 2005-03-17 2011-07-20 日立オートモティブシステムズ株式会社 車両制御用ソフトウェア及び車両制御装置
JP2008059192A (ja) * 2006-08-30 2008-03-13 Oki Electric Ind Co Ltd ハード・ソフト協調検証用シミュレータ
JP5209059B2 (ja) * 2008-10-24 2013-06-12 インターナショナル・ビジネス・マシーンズ・コーポレーション ソース・コード処理方法、システム、及びプログラム
US8336036B2 (en) * 2008-11-21 2012-12-18 Korea University Industrial & Academic Collaboration Foundation System and method for translating high programming level languages code into hardware description language code
CN102043707B (zh) * 2009-10-16 2014-12-31 腾讯科技(深圳)有限公司 嵌入式应用的性能测试方法、嵌入式终端设备及网络系统
CN101694628B (zh) * 2009-10-21 2012-07-04 中国人民解放军国防科学技术大学 一种串行与并行模拟相结合的并行计算机系统性能模拟方法
CN103154890B (zh) * 2010-10-12 2016-04-13 富士通株式会社 模拟装置、方法以及程序
JP2013109673A (ja) * 2011-11-22 2013-06-06 Fujitsu Semiconductor Ltd シミュレーション装置、シミュレーション方法、およびシミュレーションプログラム
US9368027B2 (en) * 2013-11-01 2016-06-14 Here Global B.V. Traffic data simulator
JP6378128B2 (ja) * 2015-04-28 2018-08-22 ルネサスエレクトロニクス株式会社 性能検証装置、システム、方法、およびコンピュータに当該方法を実行させるためのプログラム
EP3179371A1 (en) * 2015-12-08 2017-06-14 Gilwa GmbH embedded systems Method and device for non-intrusively collecting function trace data
JP2018022317A (ja) * 2016-08-03 2018-02-08 ルネサスエレクトロニクス株式会社 Hilシミュレーションシステム及びその制御方法
EP3285165A1 (de) * 2016-08-18 2018-02-21 dSPACE digital signal processing and control engineering GmbH Modifizieren und simulieren der betriebssoftware eines technischen systems

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012203845A (ja) * 2011-03-28 2012-10-22 Denso Wave Inc 携帯機器とプログラム実行装置を有するシステムと、そのシステムに用いられる携帯機器及びプログラム実行装置
JP2015170081A (ja) * 2014-03-06 2015-09-28 三菱電機株式会社 シミュレーション装置及びシミュレーションプログラム

Also Published As

Publication number Publication date
US20210248288A1 (en) 2021-08-12
JP7045458B2 (ja) 2022-03-31
WO2020017264A1 (ja) 2020-01-23
DE112019002778T5 (de) 2021-05-20
CN112400162A (zh) 2021-02-23

Similar Documents

Publication Publication Date Title
JP7045458B2 (ja) シミュレーション装置、及びその方法、並びにecu装置
Hamann et al. Communication centric design in complex automotive embedded systems
JP5270330B2 (ja) マルチコアマイコンシステムのシミュレーション方法及びシミュレーション装置
EP3364296B1 (en) Simulating execution-time variations and scheduling in a block-oriented simulation system
US20190258460A1 (en) Method and system for generating a software component
CN106980597B (zh) 片上系统验证方法及验证系统
CN108319533B (zh) 可关断地模拟控制装置内部的设备的系统和模拟器
EP3265934A1 (en) Conditional-based duration logic
JP4293562B2 (ja) ハードウェア検証用プログラミング記述生成装置、高位合成装置、ハードウェア検証用プログラミング記述生成方法、ハードウェア検証用プログラム生成方法、制御プログラムおよび可読記録媒体
US8886512B2 (en) Simulation apparatus, computer-readable recording medium, and method
JP5542643B2 (ja) シミュレーション装置及びシミュレーションプログラム
JP7003259B2 (ja) シミュレーション装置
Naderlinger Simulating execution time variations in MATLAB/Simulink
Resmerita et al. Verification of embedded control systems by simulation and program execution control
JPH07253909A (ja) マイクロプログラム検証方法
JP2803090B2 (ja) Mpuシミュレーション方法及びmpuシミュレータ
US20240061984A1 (en) A method for an automatic design and verification of a processor's programming and verification tools
US10901706B1 (en) Partially immutable model
Colnaric State of the art review paper: advances in embedded hard real-time systems design
JP2023087426A (ja) シミュレーション装置及びシミュレーション方法
KR20240009786A (ko) 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 os 가상화 장치 및 방법
Chauhan Modeling the Effects of AUTOSAR Overhead on Automotive Application Software Timing and Schedulability
JP2011008617A (ja) マルチスレッド実行装置、オブジェクトプログラムの生成方法、プログラム
US20070265821A1 (en) Simulation apparatus, simulation method, and computer-readable recording medium storing simulation program
Morelli et al. Automatic generation of controls code from models for real-time Linux platforms

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201029

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211207

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220204

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220318

R150 Certificate of patent or registration of utility model

Ref document number: 7045458

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150