(57)【要約】      （修正有）【課題】技術的システムのオペレーティングソフトウェアとそのハードウェア依存性のソフトウェア部分とをシミュレートできる簡単かつ低コストの手段を提供する。【解決手段】機器を開ループ制御または閉ループ制御するための制御ユニットのオペレーティングソフトウェア２０において、ハードウェア依存性のソフトウェア部分を実行する代わりにハードウェア依存性のソフトウェア部分の機能的挙動を等価関数２３によってシミュレートする。かかる変更のために、ハードウェア依存性のソフトウェア部分を自動的に同定し、等価関数を自動的に生成する。変更されたオペレーティングソフトウェアは、適切なシミュレーション環境２００上にて実行されるときに、技術的システムの実ソフトウェアに依存せずに技術的システムをシミュレートする。【選択図】図３
2018041450.tif 000002
【特許請求の範囲】
【請求項１】
技術的システムのオペレーティングソフトウェア（１０）、特に少なくとも１つの技術的機器を開ループ制御または閉ループ制御するための制御ユニットのオペレーティングソフトウェア（１０）を変更する方法であって、
前記技術的システム上にて直接実行可能なオペレーティングソフトウェア（１０）を準備するステップ（Ｓ０）を有する方法において、
さらに、
実行が前記技術的システムのハードウェア（１００）に依存する、前記オペレーティングソフトウェア（１０）のソフトウェア部分（１７）を自動的に同定するステップ（Ｓ１）と、
同定されたハードウェア依存性の前記ソフトウェア部分（１７）を、実行が前記技術的システムの前記ハードウェア（１００）に依存しない等価関数（２３）と置換するステップ（Ｓ２）と
を有し、
前記置換により変更された前記オペレーティングソフトウェア（２０）は、シミュレーション環境（２００）上における実行時に前記技術的システムを当該技術的システムの前記ハードウェア（１００）に依存せずにシミュレートする（Ｓ３）
ことを特徴とする方法。
【請求項２】
前記オペレーティングソフトウェア（１０）を、前記技術的システム上にて実行可能なバイナリコードの形態で準備し、
インタフェース仕様（４０）を用いて、前記オペレーティングソフトウェア（１０）の前記バイナリコードにおいて、前記ハードウェア依存性のソフトウェア部分（１７）を同定する（Ｓ１）、
請求項１記載の方法。
【請求項３】
前記インタフェース仕様（４０）は、前記技術的システムのハードウェア（１００）に固有のバイナリコードパターンを指定するものである、
請求項２記載の方法。
【請求項４】
前記オペレーティングソフトウェア（１０）のソースコードを前記バイナリコードに翻訳する際に（Ｓ０）、前記インタフェース仕様（４０）を使用して、前記オペレーティングソフトウェア（１０）における前記ハードウェア依存性のソフトウェア部分（１７）へのアクセスを提供するバイナリインタフェース（１６）の実装を生成し、
前記バイナリコードパターンを、前記バイナリインタフェース（１６）から、かつ／または前記バイナリインタフェース（１６）の実装から導出する、
請求項３記載の方法。
【請求項５】
前記オペレーティングソフトウェア（１０）は、前記技術的システムの前記ハードウェア（１００）に依存するインタフェース層（１５）であって、当該オペレーティングソフトウェア（１０）における前記ハードウェア依存性のソフトウェア部分（１７）へのアクセス（１６）を提供するインタフェース層（１５）を備えており、
ハードウェア依存性の前記インタフェース層（１５）を、前記等価関数（２３）の関数呼び出し（２２）を含む等価インタフェース層（２１）と置換する、
請求項１から４までのいずれか１項記載の方法。
【請求項６】
前記等価関数（２３）が前記シミュレーション環境（２００）上にて実行されるときに前記ハードウェア依存性のソフトウェア部分（１７）の機能がシミュレートされるように、前記等価関数（２３）を自動的に求め、
前記等価インタフェース層（１５）に、求められた前記等価関数（２３）を実行するための関数呼び出し（２２）を装備する、
請求項５記載の方法。
【請求項７】
マッピング規則（４１）を用いて前記等価関数（２３）を求め、
前記等価関数（２３）が前記シミュレーション環境（２００）上にて実行されるときに前記ハードウェア依存性のソフトウェア部分（１７）の機能がシミュレートされるように、前記等価関数（２３）を前記ハードウェア依存性のソフトウェア部分（１７）に対応付け、
前記等価インタフェース層（２１）に、求められた前記等価関数（２３）を実行するための関数呼び出し（２２）を装備する、
請求項５または６記載の方法。
【請求項８】
前記マッピング規則（４１）を用いて前記等価関数（２３）を求める際に、前記ハードウェア依存性のソフトウェア部分（１７）の機能記述を考慮し、
前記技術的システムのプロセッサ（１００）の命令セットをシミュレートする、前記シミュレーション環境（２００）の命令セットシミュレータ（２０２）を用いて、前記機能記述を使用して、前記ハードウェア依存性のソフトウェア部分（１７）の機能をシミュレートする、
請求項７記載の方法。
【請求項９】
前記等価インタフェース層（２１）は、前記バイナリインタフェース（１６）の実装を含み、
前記オペレーティングソフトウェア（１０，２０）の、前記等価インタフェース層（２１）外にあるソフトウェア部分（１４）が、特に前記等価インタフェース層（２１）を用いて、前記等価関数（２３）を呼び出せるように、前記関数呼び出し（２２）を前記バイナリインタフェース（１６）の前記実装に組み込む、
請求項５から８までのいずれか１項および請求項４記載の方法。
【請求項１０】
前記インタフェース仕様（４０）および／または前記インタフェース層（１５）は標準規格に準拠したものであり、有利にはＡＵＴＯＳＡＲ規格に準拠したものである、
請求項２から９までのいずれか１項記載の方法。
【請求項１１】
前記ハードウェア依存性のソフトウェア部分（１７）は、前記オペレーティングソフトウェア（１０，２０）外にある等価関数（２３）であって、前記シミュレーション環境（２００）によって前記オペレーティングソフトウェア（１０）に依存せずに実行される（Ｓ３）等価関数（２３）と置換される、
請求項１から１０までのいずれか１項記載の方法。
【請求項１２】
前記ハードウェア依存性のソフトウェア部分（１７）を、バイナリコードの形態および／または前記シミュレーション環境（２００）により実行可能なコードの形態の等価関数（２３）と置換する、
請求項１から１１までのいずれか１項記載の方法。
【請求項１３】
技術的システムを、特に少なくとも１つの技術的機器を開ループ制御または閉ループ制御するための制御ユニットを、シミュレーション環境（２００）上においてシミュレートする方法であって、
請求項１から１２までに記載の一方法により前記技術的システムのオペレーティングソフトウェア（１０）を変更し（Ｓ１，Ｓ２）、
前記技術的システムをシミュレートするように、変更された前記オペレーティングソフトウェア（２０）を前記シミュレーション環境（２００）上において実行する（Ｓ３）
方法。
【請求項１４】
技術的システムのシミュレータ（２０２）、特に少なくとも１つの技術的機器を開ループ制御または閉ループ制御するための制御ユニットのシミュレータ（２０２）を備えたシミュレーション環境（２００）であって、
前記シミュレータ（２０２）は、前記技術的システムをシミュレートすべく、請求項１から１２までのいずれか１項記載の方法により変更された、前記技術的システムのオペレーティングソフトウェア（２０）を実行するように構成されている、
シミュレーション環境（２００）。
【請求項１５】
シミュレーション環境（２００）上における実行時に技術的システムをシミュレートするように、請求項１から１２までに記載の一方法により変更された、当該技術的システムの変更されたオペレーティングソフトウェア（２０）、特に、少なくとも１つの技術的機器を開ループ制御または閉ループ制御するための制御ユニットの変更されたオペレーティングソフトウェア（２０）。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、技術的システムのオペレーティングソフトウェアの変更と、当該変更がなされたオペレーティングソフトウェアとに関する。本発明はさらに、オペレーティングソフトウェアのシミュレーションと、対応するシミュレーション環境とに関する。とりわけ本発明は、たとえば車両エンジン等の他の技術的機器を開ループ制御または閉ループ制御する制御ユニット（「Electronic Control Unit」、ＥＣＵ）のオペレーティングソフトウェアの変更およびシミュレーションに関する。
【０００２】
技術的システムおよびそのオペレーティングソフトウェアのコンピュータ支援による開発および試験においては、しばしば、実際の技術的システムを仮想システムによりシミュレートし、ソフトウェアモデルとして、適切な開発シミュレーション環境においてシミュレートすることが多い。かかるソフトウェアモデルを用いて、技術的システムのオペレーティングソフトウェアと、技術的システムのハードウェアとの双方を、モデリングすることができる。制御ユニットのソフトウェアモデルは、通常は「仮想制御ユニット」または「仮想電子制御ユニット（Virtual Electronic Control Unit、仮想ＥＣＵ）」と称される。制御ユニットの試験の際には、たとえばソースコードとなっているオペレーティングソフトウェアを、特定のシミュレーション環境に対して翻訳（コンパイル）し、ここでシミュレートし、テストし、場合によっては開発を継続する。
【０００３】
しかし、個別にコンパイルされたオペレーティングソフトウェアに基づいて技術的システムないしは制御ユニットをシミュレートすることは、しばしば問題となることが多い。というのも、技術的システムのオペレーティングソフトウェアとハードウェアとの協働により生じる、ハードウェアに依存する技術的現象は、シミュレーション環境に対して翻訳されたオペレーティングソフトウェアによっては、通常は十分な精度でシミュレートできないからである。その結果、実システムの挙動と当該実システムのシミュレーションとの間に不所望の偏差が存在することになる。かかる現象はたとえば、当該マイクロコントローラまたはプロセッサの特性と、その固有の命令セットの特性とが、各個別に異なることに起因するものである。少なくとも１つのプロセッサと付加的な周辺装置とを含むマイクロコントローラはしばしば、特に組み込みシステムの分野、たとえば制御ユニットの分野では、シミュレート対象の技術的システムの中心的な構成要素であることが多い。マイクロコントローラの周辺装置は他の問題を引き起こす。というのも、周辺装置とオペレーティングソフトウェアとの技術的な相互作用も、容易にはシミュレートしにくいからである。そうでなくとも、オペレーティングソフトウェアは実際には、全くソースコードになっていないことが多いので、その理由だけで既に、上述のシミュレーション手法に代わる代替手法が必要になる。
【０００４】
コスト上の理由から好適でない１つの代替的手段は、ハードウェアに依存する全てのソフトウェア部分をオペレーティングソフトウェアから完全に排除し、その後、他の可能な限り標準化された類似のハードウェアを用いて、または「ラピッドコントロールプロトタイピング」（ＲＣＰ）によって、ハードウェア相互作用をシミュレートすることである。しかし、このことは労力かつコストを要し、特に、この回避ソリューションと変更されたオペレーティングソフトウェアとの協働の正確性の観点において、労力かつコストを要する。他のアプローチとして、ハードウェアに依存する個々の機能の実行を回避して、その機能を他の態様で提供することを目指したアプローチがある。このアプローチも、該当のハードウェアと、オペレーティングソフトウェアのハードウェア依存性のソフトウェア部分との双方についての特殊な知識を有する開発エンジニアの手動の介入を要する。従来、完全自動化されたアプローチは、オペレーティングソフトウェアのハードウェア依存性のソフトウェア部分を完全かつ正確に同定することに既に失敗している。また、ハードウェアのシミュレーションまたはエミュレーションをベースとするソリューションも同様に、技術的な労力と、これに付随するコスト上の理由により、既に失敗している。というのも、そのシミュレーション環境ないしはエミュレーション環境は、演算性能に非常に高い要求を課すからである。
【０００５】
上記点に鑑みて、本発明の課題は、技術的システムのオペレーティングソフトウェアとそのハードウェア依存性のソフトウェア部分とをシミュレートできる簡単かつ低コストの手段を実現することである。
【０００６】
前記課題は、独立請求項に記載の、オペレーティングソフトウェアを変更して、変更されたオペレーティングソフトウェアを用いて技術的システムをシミュレートする方法と、シミュレーション環境と、変更されたオペレーティングソフトウェアとによって解決される。独立請求項を引用する請求項に、本発明の有利な実施形態、発展形態が記載されている。
【０００７】
本発明では、技術的システムの提供されたオペレーティングソフトウェアにおいて、最初に、実行が当該技術的システムのハードウェアに依存するソフトウェア部分を自動的に同定する。この自動同定は、シミュレート対象の技術的システムのハードウェアと相互作用するソフトウェア部分に係るものである。次に、この同定されたハードウェア依存性のソフトウェア部分について、実行が技術的システムのハードウェアとの相互作用を要しない、固有の等価関数を求める。この等価関数は技術的システムの実ハードウェアに依存しないので、シミュレーション環境において実行することができる。最後に、ハードウェア依存性のソフトウェア部分が作用を発揮しなくなるように、かつ等価関数が、オペレーティングソフトウェアに必要な、ハードウェア依存性のソフトウェア部分の技術的効果を可能な限り正確にシミュレートするように、ハードウェア依存性のソフトウェア部分をオペレーティングソフトウェアにおいて、当該ハードウェア非依存性の等価関数に置換する。その結果、技術的システムは、変更されたオペレーティングソフトウェアが適切なシミュレーション環境上にてそのハードウェアに依存せずに実行されることにより、シミュレートされることとなる。
【０００８】
変更されたオペレーティングソフトウェアにおいてハードウェア依存性のソフトウェア部分が作用を発揮しなくなるようにこれを置換することは、ハードウェア依存性のソフトウェア部分を該当の等価関数によって完全に置換することによって達成することができる。この場合、変更されたオペレーティングソフトウェアにはハードウェア依存性のソフトウェア部分は残らなくなり、この変更されたオペレーティングソフトウェアにおいては等価関数が、ほぼ１対１でその代わりとなる。なおかつ、変更されたオペレーティングソフトウェアにおいてハードウェア依存性のソフトウェア部分の各部分の代わりに等価関数が呼び出されるように、ハードウェア依存性のソフトウェア部分の呼び出し、呼び出される関数および／またはインタフェース実装のみを変更することも可能である（かつこのことは好適である）。この場合、ハードウェア依存性のソフトウェア部分のバイナリコードの少なくとも一部は、変更されたオペレーティングソフトウェアに残るが、ハードウェアに依存しない機能が、変更されたオペレーティングソフトウェアにおいて、適切に変更された関数、呼び出しおよび／またはインタフェース実装を介して等価関数を呼び出す。
【０００９】
オペレーティングソフトウェアの本発明の変更は、少なくとも、ハードウェア依存性のソフトウェア部分が手動のインタラクション無しで同定される限りにおいて自動化されて実施される。さらに、ハードウェアに依存しない等価関数は自動的に生成または算出され、ハードウェア依存性のソフトウェア部分は自動的にこの等価関数に置換されることも有利である。
【００１０】
オペレーティングソフトウェアは技術的システム上にて直接実行可能なものである。すなわち、オペレーティングソフトウェアは実行可能なバイナリコード等になっている。オペレーティングソフトウェアのハードウェア依存性のソフトウェア部分は、技術的システムのハードウェアに、たとえば制御ユニットのマイクロコントローラに、一般的にはマイクロコントローラの周辺装置に、直接アクセスする。かかるアクセスは特に、機械語で命令セットを使用してマイクロコントローラの周辺のレジスタに直接行うことができる。
【００１１】
有利には、本発明による変更対象であるオペレーティングソフトウェアは、車両における他の技術的システムを開ループ制御および／または閉ループ制御する電子制御ユニット（ＥＣＵ）上にインストールされる。オペレーティングソフトウェアのハードウェア依存性のソフトウェア部分は、制御ユニット上にあるマイクロコントローラ、その周辺装置、場合によっては他のハードウェアコンポーネントとインタラクションする。よって、オペレーティングソフトウェアは階層構造の複数のソフトウェア層を含み、たとえばアプリケーション層、サービス層（「ミドルウェア（middleware）」）、オペレーティングシステムおよび／またはハードウェア抽象化層を含む。サービス層およびハードウェア抽象化層の具体的な特徴は、ＡＵＴＯＳＡＲ規格のランタイム環境（「run time environment」、ＲＴＥ）およびハードウェア依存性のベースソフトウェア層（「microcontroler abstraction layer」、ＭＣＡＬ）である。本発明では、ハードウェア依存性のベースソフトウェア層に存在するハードウェア依存性のソフトウェア部分が、ハードウェアに依存しない等価関数と置換される。
【００１２】
対応するシミュレーション環境は、当該技術的システムないしは制御ユニットのシミュレータを備えており、これは、本発明により変更されたオペレーティングソフトウェアを実行し、この実行により、技術的システムないしは制御ユニットのハードウェアにアクセスすることなく技術的システムないしは制御ユニットをシミュレートするために適したものである。本発明のシミュレーション方法では、本発明により変更されたオペレーティングソフトウェアをシミュレーション環境上で実行することにより、当該技術的システムないしは制御ユニットをシミュレートする。
【００１３】
シミュレーション環境では、ハードウェア依存性のソフトウェア部分を実行するのではなく、機能等価の等価関数を実行する。この等価関数は、変更されたオペレーティングソフトウェアに組込み構成要素として組み込まれるか、または有利には、シミュレーション環境によって直接実行可能な形態となって、変更されたオペレーティングソフトウェア外に存在して、当該変更されたオペレーティングソフトウェア内にて現在呼び出し側となっている関数へ結果と戻り値を返すことができる。かかる場合、等価関数はたとえば、等価関数を有する関数ライブラリ内に、または等価関数を有する追加関数モジュール内に存在し、オペレーティングソフトウェアのハードウェア非依存性のソフトウェア部分がハードウェア依存性のソフトウェア部分の機能を必要とする場合、直ちにこの関数ライブラリまたは追加関数モジュールの等価関数が呼び出される。これは、オペレーティングソフトウェアの変更された部分を介して提供される。
【００１４】
既に述べたように、オペレーティングソフトウェアは有利には、技術的システムないしは制御ユニットのマイクロコントローラによって直接解釈可能または実行可能なバイナリコードとなっている。ハードウェア依存性のソフトウェア部分はこのバイナリコードにおいて、有利には、少なくとも置換対象のハードウェア依存性のソフトウェア部分を呼び出すためのバイナリインタフェースを指定するインタフェース仕様によって同定される。このインタフェース仕様から、技術的システムのハードウェア依存性のソフトウェア部分に固有である、該当のバイナリインタフェースを特徴付けるバイナリコードパターンを導出することができ、特に自動的にも導出することができる。マッピング規則を使用して、変更対象のオペレーティングソフトウェアにおいて、このバイナリコードパターンの元であるハードウェア依存性のソフトウェア部分の実装を自動的に発見することができる。このインタフェース仕様は、権利保護されているものとすることができるが、有利には、関連の工業規格準拠のもの、たとえば自動車産業分野におけるＡＵＴＯＳＡＲ規格に準拠したものである。
【００１５】
インタフェース仕様は、オペレーティングソフトウェアのソースコードをバイナリコードに翻訳してバイナリインタフェースの実装を生成する際に使用される。このソースコードのレベルにおいてインタフェース仕様は、ハードウェア依存性のソフトウェア部分へのアクセスを提供する、アプリケーションプログラミングのためのインタフェース、いわゆるプログラミングインタフェース（「application programming interfaces」、ＡＰＩ）を記述する。このプログラミングインタフェースはバイナリコードのレベルでは、ハードウェア非依存性のソフトウェア部分とハードウェア依存性のソフトウェア部分との間のバイナリインタフェースに相当する。オペレーティングソフトウェアのバイナリコードにおいて該当のバイナリコードパターンを特定することにより、ハードウェア依存性のソフトウェア部分が自動的に同定される。
【００１６】
有利にはオペレーティングソフトウェアのバイナリコードは、オペレーティングソフトウェアのハードウェア依存性のソフトウェア部分を包含しているのでオペレーティングソフトウェアの唯一の層として技術的システムのハードウェアに依存する別個のインタフェース層を含むように編成されており、ないしは翻訳される。インタフェース層は、オペレーティングソフトウェアの他の層からハードウェア依存性のソフトウェア部分を呼び出すためのバイナリインタフェースと、ハードウェア依存性のソフトウェア部分自体との双方を含む。かかるインタフェース層を準備するベースも、標準規格となることができ、たとえばＡＵＴＯＳＡＲ規格となることができる。
【００１７】
同定されたハードウェア依存性のソフトウェア部分を適切な等価関数と置換するステップでは、有利にはインタフェース層のみを変更し、オペレーティングソフトウェアの他の全ての構成要素は変化しないままとすることができる。個々のハードウェア依存性のソフトウェア部分の変更および／またはそのバイナリインタフェース実装の変更を行う代わりに、インタフェース層全体を等価インタフェース層ないしは等価層と置換することができる。これは、変更されたオペレーティングソフトウェアがシミュレーション環境において実行されるときに、ハードウェア依存性のソフトウェア部分に代えて等価関数の関数呼び出しまたはインタフェース層の全部の機能を含む機能を提供するものである。
【００１８】
ハードウェア依存性のソフトウェア部分を置換するためには、シミュレーション環境の実行時にハードウェア依存性のソフトウェア部分の機能をシミュレートする等価関数を求める。よって、これに対応する関数呼び出しは等価層において、インタフェース層のハードウェア依存性のソフトウェア部分の呼び出し、ないしは、該当するバイナリインタフェース実装と置換される。
【００１９】
本発明の有利な一実施形態では、等価関数は、既に挙げたインタフェース仕様および／またはマッピング規則に基づいて求められる。後者は基本的に、ハードウェア依存性のソフトウェア部分および／または該当のバイナリインタフェースの機能記述を表現するものであり、これは、ソースコードからオペレーティングソフトウェアのバイナリコードを翻訳ないしは生成する際に用いられる。よって、マッピング規則は等価関数の機能も指定する。この機能記述は、シミュレーション環境を用いてハードウェア依存性のソフトウェア部分の機能をシミュレートするために用いられる。これはたとえば、シミュレーション環境の命令セットシミュレータを用いて行うことができる。この命令セットシミュレータは、技術的システムのプロセッサまたはマイクロコントローラの命令セットをシミュレートするものである。
【００２０】
等価関数は有利には、等価関数ライブラリ内において編纂されている。この等価関数ライブラリは、使用されるシミュレーション環境によってサポートされ、等価層における関数呼び出しはこの等価関数ライブラリの等価関数をポインティングする。この場合、オペレーティングソフトウェアの変更は基本的に、等価層に、適切な等価関数の関数呼び出しを装備すること、またはバイナリインタフェース実装に、対応する関数呼び出しを装備することとなる。よって、たとえば等価関数が等価層に組み込まれる場合には、等価関数はバイナリコードとなっているか、またはシミュレーション環境によって他の態様により実行可能なフォーマットとなっている。
【００２１】
添付の図面を参照した、以下の本発明の実施例の説明および他の代替的な実施態様から、本発明の他の特徴および利点が明らかである。
【図面の簡単な説明】
【００２２】
【図１】本発明の方法のフローチャートである。
【図２】オペレーティングソフトウェアの構成（図２ａ）、および本発明により変更されたオペレーティングソフトウェアの構成（図２ｂ）を示す図である。
【図３】本発明の他の実施形態を示す図である。
【００２３】
図２ａに、制御ユニット（図示されていない）のマイクロコントローラ１００上で実行可能である、制御ユニットのオペレーティングソフトウェア１０の構成を概略的に示している。オペレーティングソフトウェア１０はバイナリコードの形態、たとえば機械語となっており、制御ユニット上ないしはマイクロコントローラ１００上で直接実行することができる。
【００２４】
オペレーティングソフトウェア１０は複数のコンポーネントおよび層を有し、その中にはハードウェア依存性の層１５が含まれる。これは、オペレーティングソフトウェア１０のハードウェアに依存しない部分が制御ユニットのハードウェアに、具体的にはたとえばマイクロコントローラ１００の周辺装置にアクセスできるようにするものである。オペレーティングソフトウェア１０のうちハードウェアに依存しない部分は特に、アプリケーション層１１に存在する。これは通常、アプリケーションエンジニアによって作成され、オペレーティングソフトウェアの重要な機能を果たすものである。アプリケーション層１１は場合によっては、適切なランタイム環境（図示されていない）を介して、オペレーティングソフトウェア１０の、ハードウェアに近い下位のコンポーネントおよび層とインタラクションすることがある。ＡＵＴＯＳＡＲ規格では、たとえばＡＵＴＯＳＡＲランタイム環境が、アプリケーション層１１とそれより下位の規格準拠層１２，１３，１４との間を仲介する。
【００２５】
オペレーティングシステムコンポーネント１２およびドライバコンポーネント１３はマイクロコントローラ１００に直接アクセスすることができるのに対し、抽象化層１４からはインタフェース層１５を介して、ハードウェアに依存するアクセスが実行される。抽象化層１４は制御ユニット固有の機能を提供し、この機能は、標準化されたインタフェース１６を介して、マイクロコントローラ１００への本来的なハードウェアアクセス１８を行うハードウェア依存性の機能１７を呼び出すことにより、制御ユニットのマイクロコントローラ１００にアクセスするものである。オペレーティングソフトウェア１０の抽象化層１４のハードウェア非依存性の部分と、当該オペレーティングソフトウェア１０のインタフェース層１５のハードウェア依存性の部分との間のインタフェース１６は、バイナリインタフェース（「application binary interfaces」、ＡＢＩ）であり、これは、仕様を用いて導出できるものである。このハードウェアおよび／またはソフトウェアを記述する仕様は、標準規格に準拠するものとなり得る。
【００２６】
図１に、制御ユニットのマイクロコントローラ１００上に実装される図２ａのオペレーティングソフトウェア１０を、シミュレーション環境２００上にて実行可能である変更後のオペレーティングソフトウェア２０によって変更する本発明の方法を示す。この変更後のオペレーティングソフトウェア２０は、制御ユニットおよびマイクロコントローラ１００のハードウェアに依存しない。同図では最初に、オペレーティングソフトウェア１０のハードウェア依存性のソフトウェア部分ないしは機能１７を特定し（ステップＳ１）、次に、最終的にオペレーティングソフトウェア１０の機能的挙動の態様が、シミュレーション環境２００上において変更後のオペレーティングソフトウェア２０のシミュレーションによって再現できるように（ステップＳ３）、機能等価の等価関数２３に置換する（ステップＳ２）。図１のステップＳ１およびＳ２が、図２ａのオペレーティングソフトウェア１０から図２ｂの変更されたオペレーティングソフトウェア２０への移行を引き起こす。
【００２７】
図２ｂに、シミュレーション環境２００における変更されたオペレーティングソフトウェア２０を示す。シミュレーション環境２００は特に、ハードウェア依存性のソフトウェア部分の必要な機能を変換する本来的なシミュレータ２０１と、命令セットシミュレータ２０２とから構成される。ステップＳ１およびＳ２に従ってオペレーティングソフトウェア１０を変更するとき、ハードウェア依存性の機能１７を有するインタフェース層１５は、実ハードウェアに依存しないインタフェース層２１に変換され、そのハードウェア非依存性の等価関数２３が、ハードウェア依存性の機能１７の機能を提供することとなる。よって、このハードウェアに依存しない新規のインタフェース層２１が、元のハードウェア依存性のインタフェース層１５に代わるものとなるので、前者はここでは「等価インタフェース層」または単に「等価層」とも称される。等価インタフェース層２１の全ての機能、およびその技術的効果は、マイクロコントローラ１００と、その周辺装置とに大きく依存しなくなる。というのも、マイクロコントローラ１００や周辺装置は、代わりにシミュレーション環境２００とインタラクションするからである。特定のプロセッサアーキテクチャまたは具体的なプロセッサの命令セットに対する依存性は、シミュレーション時に、適切な命令セットシミュレータ２０２の選択によって考慮される。
【００２８】
このようにして等価関数２３によりシミュレートされた、ハードウェア依存性の機能１７の機能および効果は、変更されたオペレーティングソフトウェア２０の他のハードウェア非依存性の部分に対して、たとえば抽象化層１４に対してトランスペアレントである。というのも、等価関数２３のインタフェース、引数および戻し値は、各対応するハードウェア依存性の機能１７と同一であるか、または少なくとも互換性であるからである。とりわけ、図２ｂの変更されたオペレーティングソフトウェア２０のバイナリインタフェース１６は、図２ａの未変更のオペレーティングソフトウェア１０のバイナリインタフェースと同様の態様で使用することができる。
【００２９】
変更されたオペレーティングソフトウェア２０ではバイナリインタフェース１６を介して、等価関数２３を参照する関数呼び出し２２が実行され、その後、等価関数２３はシミュレーション環境２００へのアクセス２４を行う。これにより等価インタフェース層２１は、ハードウェア依存性のソフトウェア部分の所要の機能的挙動を該当の等価関数２３によってシミュレートすべく、マイクロコントローラ１００の周辺装置を含めたマイクロコントローラ１００へのオペレーティングソフトウェア１０のハードウェアアクセス１８が、シミュレータ２０１へのシミュレータアクセス２４に置換されるように、ハードウェア依存性のインタフェース層１５の機能的挙動をシミュレートする。
【００３０】
こうするためには、ステップＳ１でインタフェース層１５において、まずハードウェア依存性のソフトウェア部分ないしは機能１７を自動的に、すなわちオペレータによる手動介入無しで特定し、その後、ステップＳ２においてこのハードウェア依存性のソフトウェア部分ないしは機能１７を、機能等価のハードウェア非依存性の等価関数２３に置換する。ハードウェアに依存しない機能、たとえば抽象化層１４の機能が、バイナリインタフェース１６を介してこの等価関数２３の機能を変更無しで要求することができるように、等価関数２３は等価インタフェース層２１において関数呼び出し２２およびシミュレータアクセス２４を用いて組み込まれる。
【００３１】
ハードウェア依存性の機能１７は図２の実施例では、バイナリコードパターンに基づいて同定される。このバイナリコードパターンは、オペレーティングソフトウェア１０のバイナリコードにおいてバイナリインタフェース１６を示唆するもの、ないしはバイナリインタフェース１６の実装の構成要素である。ターゲットのバイナリコードパターンは、ＡＵＴＯＳＡＲ規格または他の関連規格のインタフェース仕様から得られる。このインタフェース仕様は、ハードウェア依存性の機能１７のプログラミングのためのプログラミングインタフェース（ＡＰＩ）をソースコードレベルで指定するものであり、このプログラミングインタフェース（ＡＰＩ）を用いて、対応するバイナリインタフェース１６を導出することができる。図３の実施例を参照して、これについて詳細に説明する。
【００３２】
オペレーティングソフトウェア１０のバイナリコード内のバイナリコードパターンは、より高水準のプログラミング言語では関数シグネチャと同等のものである。このバイナリコードパターンは、インタフェース仕様に基づいて求められる。すなわち、インタフェース層１５内のバイナリインタフェース１６の、たとえばＵＭＬモデル（「統一モデリング言語（Unified Modeling Language）」）等の形態の形式記述に基づいて求められる。よってバイナリコードパターンは、ハードウェア依存性のソフトウェア部分を同定する際に（ステップＳ１）、オペレーティングソフトウェア１０のバイナリコードにおけるパターンマッチングプロセスのターゲットパターンとして機能する。このインタフェース仕様により、該当のバイナリインタフェース１６を介してバイナリコードでのハードウェア依存性のソフトウェア部分１７の呼び出しについての示唆が得られる。規格に基づいてはインタフェース仕様を知ることができない場合には、手動で作成された再利用可能なコンフィギュレーションファイルの形態でインタフェース仕様を調達することもできる。
【００３３】
ステップＳ２において、置換対象のハードウェア依存性の機能１７の機能記述を使用することにより、ハードウェア依存性の機能１７を等価関数２３に置換する。この機能記述を用いて、機能等価の等価関数２３が自動的に算出または生成される。機能記述はここでは、ハードウェア依存性の機能１７を等価関数２３にマッピングするマッピング規則の一部である。その後、等価関数２３は等価インタフェース層２１においてハードウェア依存性の機能１７と置き換わり、または等価インタフェース層２１に組み込まれる。後者の場合、ハードウェア依存性の機能１７は、変更されたオペレーティングソフトウェアに依然として存在することができるが、呼び出されなくなる。というのも、変更後のオペレーティングソフトウェア２０では、バイナリインタフェース１６を介しての関数呼び出し２２による呼び出し先が、等価関数２３に変更されるからである。
【００３４】
図３の実施形態は、本発明を改めて、オペレーティングソフトウェア１０のソースコード３０およびバイナリコードと、同様に実行可能なコードの形態となっている変更後のオペレーティングソフトウェア２０との関係に基づいて示している。図３では最初に、ステップＳ１およびＳ２より前のステップＳ０において、ソースコード３０をバイナリコード１０に翻訳（コンパイル）する。この翻訳では、ソースコード３０となっているハードウェア非依存性の機能３１であって、実行時には、提供されたプログラミングインタフェース３２を介してマイクロコントローラ１００とのインタラクションを要求するハードウェア非依存性の機能３１が、ハードウェア非依存性のバイナリ関数１９に翻訳される。さらにバイナリコード１０では、バイナリインタフェース１６とハードウェア非依存性のバイナリ関数１７とを有するインタフェース層１５が形成される。
【００３５】
ここではバイナリインタフェース１６の実装は、プログラミングインタフェース３２とＡＵＴＯＳＡＲインタフェース仕様４０とに基づいて生成され、このＡＵＴＯＳＡＲインタフェース仕様４０からはとりわけ、バイナリインタフェース１６の構成と、これに含まれるバイナリコードパターンとを導出することができ、これはステップＳ１において、バイナリコード１０でハードウェア依存性の機能１７を同定するために使用される。インタフェース仕様４０はプログラミングインタフェース３２の機能記述を表現するものであり、翻訳ステップＳ０によってこの機能記述から、バイナリインタフェース１６および該当のバイナリコードパターンの形態のバイナリインタフェースバイナリ記述が生成される。その他、インタフェース仕様４０は、ソースコード３０で呼び出し可能な機能も指定し、この機能がハードウェア依存性であるか、たとえばハードウェア依存性の機能１７であるか、またはハードウェア非依存性であるかを宣言する。
【００３６】
変更されたオペレーティングソフトウェア２０を生成する際には、ステップＳ１に従ってオペレーティングソフトウェア１０のバイナリコードにおいてハードウェア依存性の機能１７を同定するため、インタフェース仕様４０を使用する。その他、図３の実施例では、たとえばマッピングファイル（「map file」）の形態等であるマッピング規則４１も使用する。マッピング規則４１はステップＳ２との関係で、同定されたハードウェア依存性の機能１７に対し、マイクロコントローラ１００のハードウェアとのインタラクションにおいて当該ハードウェア依存性の機能１７となる機能と等価である機能を、シミュレーション環境２００における実行時に果たす等価関数２３を対応付けるために使用される。
【００３７】
マッピング規則４１はこの対応付けのために、置換対象のハードウェア依存性の機能１７の機能記述を含み、この機能記述に基づいて、適切な等価関数２３が算出または生成される。後者の場合、置換対象のハードウェア依存性の機能１７の機能はシミュレーション環境２００においてこの機能記述に基づいて、場合によっては命令セットシミュレータ２０２を用いてシミュレートされる。マッピング規則４１はさらに、バイナリコード１０においてハードウェア依存性の機能を同定する際にも用いることができる。というのも、マッピング規則４１は上述の機能記述を用いて、ソースコード３０において使用される関数と、バイナリコードに存在するハードウェア依存性の機能１７との対応関係も形成するからである。
【００３８】
図２ｂの実施形態とは異なり、等価関数２３は図３の実施形態では等価インタフェース層２１に組み込まれず、バイナリインタフェース１６の該当の実装に関数アクセス２２のみが組み込まれる。この関数アクセス２２は、存在するハードウェア依存性の機能１７を回避して、その代わりに等価関数２３をポインティングするものである。ハードウェア依存性のバイナリ関数１７は、バイナリインタフェース１６を介して呼び出すことができなくなるので、機能不能となる。等価関数２３は等価インタフェース層２１外の関数ライブラリ２６内に存在し、最終的には、シミュレータアクセス２４を介してシミュレーション環境２００とインタラクションすることとなる。
【００３９】
バイナリインタフェース１６の実装はハードウェア依存性の機能１７の置換の過程で、等価関数２３を呼び出すように、すなわち対応する関数呼び出し２２が装備されるように変更される。その際にはバイナリインタフェース１６は、特により上位の層に対しては変化しないままとなる。
【図１】
2018041450.tif 000003
【図２】
2018041450.tif 000004
【図３】
2018041450.tif 000005
【外国語明細書】
2018041450.tif 000006
2018041450.tif 000007
2018041450.tif 000008
2018041450.tif 000009
2018041450.tif 000010
2018041450.tif 000011
2018041450.tif 000012
2018041450.tif 000013
2018041450.tif 000014
2018041450.tif 000015
2018041450.tif 000016
2018041450.tif 000017
2018041450.tif 000018
2018041450.tif 000019
2018041450.tif 000020
2018041450.tif 000021
2018041450.tif 000022
2018041450.tif 000023
2018041450.tif 000024
2018041450.tif 000025
2018041450.tif 000026
2018041450.tif 000027
2018041450.tif 000028
2018041450.tif 000029
2018041450.tif 000030