IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社アプリの特許一覧

特開2023-55358マイクロコンピュータ制御プログラムのシミュレーション方法及びそのためのシミュレーションシステム
<>
  • 特開-マイクロコンピュータ制御プログラムのシミュレーション方法及びそのためのシミュレーションシステム 図1
  • 特開-マイクロコンピュータ制御プログラムのシミュレーション方法及びそのためのシミュレーションシステム 図2
  • 特開-マイクロコンピュータ制御プログラムのシミュレーション方法及びそのためのシミュレーションシステム 図3
  • 特開-マイクロコンピュータ制御プログラムのシミュレーション方法及びそのためのシミュレーションシステム 図4
  • 特開-マイクロコンピュータ制御プログラムのシミュレーション方法及びそのためのシミュレーションシステム 図5
  • 特開-マイクロコンピュータ制御プログラムのシミュレーション方法及びそのためのシミュレーションシステム 図6
  • 特開-マイクロコンピュータ制御プログラムのシミュレーション方法及びそのためのシミュレーションシステム 図7
  • 特開-マイクロコンピュータ制御プログラムのシミュレーション方法及びそのためのシミュレーションシステム 図8
  • 特開-マイクロコンピュータ制御プログラムのシミュレーション方法及びそのためのシミュレーションシステム 図9
  • 特開-マイクロコンピュータ制御プログラムのシミュレーション方法及びそのためのシミュレーションシステム 図10
  • 特開-マイクロコンピュータ制御プログラムのシミュレーション方法及びそのためのシミュレーションシステム 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023055358
(43)【公開日】2023-04-18
(54)【発明の名称】マイクロコンピュータ制御プログラムのシミュレーション方法及びそのためのシミュレーションシステム
(51)【国際特許分類】
   G06F 9/455 20180101AFI20230411BHJP
   G06F 8/41 20180101ALI20230411BHJP
【FI】
G06F9/455
G06F8/41 170
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2021164664
(22)【出願日】2021-10-06
(71)【出願人】
【識別番号】504232354
【氏名又は名称】株式会社アプリ
(74)【代理人】
【識別番号】100121728
【弁理士】
【氏名又は名称】井関 勝守
(74)【代理人】
【識別番号】100165803
【弁理士】
【氏名又は名称】金子 修平
(74)【代理人】
【識別番号】100222885
【弁理士】
【氏名又は名称】早川 康
(72)【発明者】
【氏名】泉屋 浩二
【テーマコード(参考)】
5B081
【Fターム(参考)】
5B081CC41
(57)【要約】
【課題】マイクロコンピュータで実行される制御プログラムのソースコード31を変更することなく、ソースコード31から生成する制御オブジェクトコード33を、マイクロコンピュータと異なる命令セットを有する汎用コンピュータで簡単にシミュレーションする方法を提供する。
【解決手段】制御プログラムのオブジェクトコード33をシミュレーション実行時に汎用コンピュータが備えるメモリ92に読み込み、メモリ92の内部において、マイクロコンピュータ専用関数で記述された動作を汎用コンピュータで実行できるようにマイクロコンピュータ専用関数のオブジェクトコードを汎用コンピュータ用関数のオブジェクトコードに変更し、汎用コンピュータによって、マイクロコンピュータ専用関数のオブジェクトコードが汎用コンピュータ用関数のオブジェクトコードに変更された制御プログラムのオブジェクトコードを実行する。
【選択図】図6
【特許請求の範囲】
【請求項1】
マイクロコンピュータで実行される制御プログラムのソースコードから生成されるオブジェクトコードを、メモリを備え且つ前記マイクロコンピュータと異なる命令セットを有する汎用コンピュータでシミュレーションする方法であって、
前記制御プログラムのオブジェクトコードを前記シミュレーションの実行時に前記メモリに読み込むことと、
前記メモリの内部において、マイクロコンピュータ専用関数で記述された動作を前記汎用コンピュータで実行できるように前記マイクロコンピュータ専用関数のオブジェクトコードを汎用コンピュータ用関数のオブジェクトコードに変更することと、
前記汎用コンピュータによって、前記マイクロコンピュータ専用関数のオブジェクトコードが前記汎用コンピュータ用関数のオブジェクトコードに変更された前記制御プログラムのオブジェクトコードを実行することとを含むことを特徴とする方法。
【請求項2】
請求項1に記載の方法であって、前記変更は、
前記マイクロコンピュータ専用関数が実行されると、前記汎用コンピュータ用関数のオブジェクトコードのアドレスにジャンプして前記汎用コンピュータ用関数のオブジェクトコードを実行するようにすることを特徴とする方法。
【請求項3】
請求項1から2のいずれか1つに記載の方法であって、前記オブジェクトコードは、ダイナミックリンクライブラリ(DLL)を含むことを特徴とする方法。
【請求項4】
請求項3に記載の方法であって、前記オブジェクトコードとともに生成されるデバッグシンボル(PDB)ファイルに基づいて、前記オブジェクトコードの変数にアクセスするための指定シンボル名のポインタ情報を取得するAPIを生成することをさらに含むことを特徴とする方法。
【請求項5】
請求項1から4のいずれか1つに記載の方法であって、前記オブジェクトコードを、実行される関数が無い場合に、前記汎用コンピュータのオペレーティングシステムに制御が戻るようにすることをさらに含むことを特徴とする方法。
【請求項6】
請求項1から5のいずれか1つに記載の方法を実行可能な汎用コンピュータを備えることを特徴とするシミュレーションシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、マイクロコンピュータ制御プログラムのシミュレーション方法であって、特に、ターゲット用マイクロコンピュータで実行される制御プログラムのソースコードから生成するオブジェクトコードをマイクロコンピュータと異なる命令セットを有する汎用コンピュータで実行する方法に関する。
【背景技術】
【0002】
従来より、電化製品や自動車等の所定の製品(ターゲット)に搭載されたマイクロコンピュータの動作等を確認するために、マイクロコンピュータ制御プログラムのオブジェクトコードをソースコードに変換し、該ソースコードをマイクロコンピュータと異なる命令セットを有する汎用コンピュータのオブジェクトコードに変換(クロスコンパイル)することによりシミュレーションするシステムが知られている。例えば、特許文献1に開示されているシステムは、まず、車載マイクロコンピュータ制御プログラムのオブジェクトコードを逆アセンブルしてレジスタ操作コードを抽出する。次に、アセンブラコードを逆コンパイルして、制御プログラムのソースコードに変換する。該ソースコードに抽出したレジスタ操作コードを自動で付加する。最後に、レジスタ操作コード付加後のソースコードを汎用コンピュータのオブジェクトコードにクロスコンパイルする。これにより、車載マイクロコンピュータを含む模擬車両全体のシミュレーションを汎用コンピュータ上で行うことが可能となる。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2010-244377号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかし、特許文献1では、「レジスタ操作コードの付加」をソースコードに行うため、ソースコードを改竄するリスクがある。また、ソースコードを変更するため、「オブジェクトコード→アセンブリコード→コンパイラコード(ソースコード)→オブジェクトコード」といった一連のコード変換を要するので、コード変換手続が煩雑である。
【0005】
本発明は、斯かる点に鑑みてなされたものであり、その目的とするところは、所定の製品に搭載されたマイクロコンピュータで実行される制御プログラムのソースコードを変更することなく、ソースコードから生成するオブジェクトコードを、マイクロコンピュータと異なる命令セットを有する汎用コンピュータで簡単に実行する方法を提供することにある。
【課題を解決するための手段】
【0006】
上記の目的を達成するために、本発明は、マイクロコンピュータ制御プログラムのシミュレーション方法に関し、シミュレーション実行時に、マイクロコンピュータのソースコードから生成するオブジェクトコードを読み込んだメモリ内部において、マイクロコンピュータ専用関数のオブジェクトコードを汎用コンピュータ用関数のオブジェクトコードに変更することにより、マイクロコンピュータ専用関数で記述される動作を汎用コンピュータで実行できるようにすることを特徴とする。
【0007】
具体的には、マイクロコンピュータで実行される制御プログラムのソースコードから生成するオブジェクトコードを、メモリを備え且つ前記マイクロコンピュータと異なる命令セットを有する汎用コンピュータでシミュレーションする方法を対象とし、次のような解決手段を講じた。
【0008】
すなわち、第1の発明では、前記制御プログラムのオブジェクトコードを前記シミュレーションの実行時に前記メモリに読み込むことと、前記メモリの内部において、マイクロコンピュータ専用関数で記述された動作を前記汎用コンピュータで実行できるように前記マイクロコンピュータ専用関数のオブジェクトコードを汎用コンピュータ用関数のオブジェクトコードに変更することと、前記汎用コンピュータによって、前記マイクロコンピュータ専用関数のオブジェクトコードが前記汎用コンピュータ用関数のオブジェクトコードに変更された前記制御プログラムのオブジェクトコードを実行することとを含むことを特徴とする。
【0009】
第2の発明では、第1の発明において、前記変更は、前記マイクロコンピュータ専用関数が実行されると、前記汎用コンピュータ用関数のオブジェクトコードのアドレスにジャンプして前記汎用コンピュータ用関数のオブジェクトコードを実行するようにすることを特徴とする。
【0010】
第3の発明では、第1から第2のいずれか1つの発明において、前記オブジェクトコードは、ダイナミックリンクライブラリ(DLL)を含むことを特徴とする。
【0011】
第4の発明では、第3の発明において、前記オブジェクトコードの生成とともに生成されるデバッグシンボル(PDB)ファイルに基づいて、前記オブジェクトコードの変数にアクセスするための指定シンボル名のポインタ情報を取得するAPI(Application Program Interface)を生成することをさらに含むことを特徴とする。
【0012】
第5の発明では、第1から第4のいずれか1つの発明において、前記オブジェクトコードを、実行される関数が無い場合に、前記汎用コンピュータのオペレーティングシステムに制御が戻るようにすることをさらに含むことを特徴とする。
【0013】
また、本発明は、ソースコードから生成するオブジェクトコードの実行時に、読み込んだメモリ空間において、マイクロコンピュータ専用関数のオブジェクトコードを汎用コンピュータ用関数のオブジェクトコードに変更することにより、マイクロコンピュータ専用関数で記述される動作を汎用コンピュータで実行できるようにするシミュレーションシステムをも対象とし、次のような解決手段を講じた。
【0014】
すなわち、第6の発明では、第1から第5のいずれか1つの発明に記載の方法を実行可能な汎用コンピュータを備えることを特徴とする。
【発明の効果】
【0015】
第1及び第6の発明では、シミュレーションの実行時に、制御プログラムのソースコードから生成するオブジェクトコードを汎用コンピュータが備えるメモリに読み込む。読み込んだメモリの内部において、マイクロコンピュータ専用関数で記述される動作を汎用コンピュータで実行できるようにマイクロコンピュータ専用関数のオブジェクトコードを汎用コンピュータ用関数のオブジェクトコードに変更する。マイクロコンピュータ専用関数のオブジェクトコードが汎用コンピュータ用関数のオブジェクトコードに変更された制御プログラムのオブジェクトコードを汎用コンピュータによって実行する。シミュレーション実行時のメモリにおいてオブジェクトコード内のマイクロコンピュータ専用関数を変更することによって、マイクロコンピュータ専用関数で記述された動作を汎用コンピュータで実行するため、オブジェクトコードの実行時に制御プログラムのソースコードを変更する必要がないので、ソースコードを改竄するリスクが無い。また、煩雑なコード変換の必要もないので、マイクロコンピュータと異なる命令セットを有する汎用コンピュータでオブジェクトコードを簡単に実行できる。
【0016】
第2の発明では、マイクロコンピュータ専用関数のオブジェクトコードの変更は、マイクロコンピュータ専用関数が実行されると、汎用コンピュータ用関数のオブジェクトコードのアドレスにジャンプして汎用コンピュータ用関数を実行するようにする。つまり、マイクロコンピュータ専用関数のオブジェクトコードと汎用コンピュータ用関数のオブジェクトコードとは別個の関数として実装されている。そのため、マイクロコンピュータ専用関数のオブジェクトコードと汎用コンピュータ用関数のオブジェクトコードを分離できるので、オブジェクトコードの保守管理性が高い。
【0017】
第3の発明では、オブジェクトコードは、ダイナミックリンクライブラリ(DLL)を含む。DLLは、メモリへの読み込みの都度、内部変数が初期化されるので、シミュレーションにおいて、ターゲット用マイクロコンピュータの初期化を、DLLのメモリへの読み込みにより、簡単に実現することができる。
【0018】
第4の発明では、オブジェクトコードととともに生成されるデバッグシンボル(PDB)ファイルに基づいて、オブジェクトコードの変数にアクセスするための指定シンボル名のポインタ情報を取得するAPIを生成する。そのため、オブジェクトコードの変数や関数にアクセスするために、該変数及び関数を予めオブジェクトコードにおいて入出力変数等として定義しておく必要がないので、シミュレーション実行時にオブジェクトコードの変数に簡単にアクセスできる。
【0019】
第5の発明では、オブジェクトコードは、実行される関数が無い場合に、汎用コンピュータのオペレーティングシステムに制御が戻るようにされている。このオブジェクトコードにより、シミュレーション実行時に実行される関数が無い場合に汎用コンピュータのオペレーティングシステムに制御が戻るため、シミュレーションがオブジェクトコードの実行時に無限ループに陥り暴走することがないので、動作信頼性を向上させることができる。
【図面の簡単な説明】
【0020】
図1図1は、本発明の一実施形態に係るシミュレーション方法のハードウェア構成について説明する図である。
図2図2は、本発明の一実施形態に係るシミュレーション方法のソフトウェア構成について説明する図である。
図3図3は、図2のマネージ部について説明する図である。
図4図4は、本発明の一実施形態に係るシミュレーション方法における実行フローを示す概略図である。
図5図5は、本発明の一実施形態に係るシミュレーション方法におけるコード注入機能について説明する図である。
図6図6は、本発明の一実施形態に係るシミュレーション方法におけるコード注入機能の動作について説明するフローチャートである。
図7図7は、本発明の一実施形態に係るシミュレーション方法における変数名解決機能について説明する図である。
図8図8は、本発明の一実施形態に係るシミュレーション方法におけるマネージ通知機能について説明する図である。
図9図9は、本発明の一実施形態に係るシミュレーション方法におけるマネージ通知機能の動作について説明する図である。
図10図10は、本発明の一実施形態に係るシミュレーション方法について説明するフローチャートである。
図11図11は、図10に対応する実行フローを示す概略図である。
【発明を実施するための形態】
【0021】
以下、本発明の実施形態を図面に基づいて詳細に説明する。各実施形態では、同一又は対応する部分については同一の符号を付して説明を適宜省略する場合がある。また、図面は本実施形態を説明するために用いるものであり、実際の寸法とは異なる場合がある。尚、以下の好ましい実施形態の説明は、本質的に例示に過ぎない。
【0022】
図1は、本発明の一実施形態に係るシミュレーション方法のハードウェア構成90を示す。ハードウェア構成90は汎用コンピュータであり、例えば一般に市販されているパーソナルコンピュータ(PC)を利用することができる。従って、ハードウェア構成90は、演算装置91と、主記憶装置(メモリ)92と、ディスプレイ装置93と、補助記憶装置94と、入力装置95と、これらを相互に接続するバス96とを有する。演算装置91の命令セットは、一般に、所定の製品に搭載されたターゲット用マイクロコンピュータと異なっている。入力装置95は、例えば、キーボードとマウスである。本実施形態において、以下に説明するシミュレーション方法を実現するためのソフトウェア構成10を補助記憶装置94に格納し、演算装置91がこれを主記憶装置92に読み出して実行する。
【0023】
図2は、本発明の一実施形態に係るシミュレーション方法のソフトウェア構成10を示す。なお、本実施形態では複数のサブシステムから構成されるマイクロコンピュータシステムのシミュレーション方法について説明する。ソフトウェア構成10は、システム全体の構築、実行、及びテスト機能を有するシステム構築部11と、該システムを構成するサブシステムA、B、及びCを模擬するためにそれぞれに対して1プロセス毎に起動される実行ファイルであるAモジュール部12、Bモジュール部13、及びCモジュール部14とを備える。各モジュール部は、モジュール部毎のウィンドウ画面、後述するネイティブ部16の実行順序のオペレーション、及びモジュール部相互の通信機能を構成するマネージ部15と、機器制御ソフトのマイクロコンピュータコードのオブジェクトファイル33及びドライバ並びにマイクロコンピュータの模擬をするシミュレータコード35を含むネイティブ部16とを備える。なお、各モジュール部12、13、14は、例えば、マイクロソフト(登録商標)社の.NET Frameworkで動作するUI(User Interface)を有する実行ファイルである。
【0024】
マネージ部15は、図3を参照して、例えば、マイクロソフト社Visual Studio(登録商標)2019で開発されており、マイクロソフト(登録商標)社が提供するC/C++版APIのDbgHelp.dll36をC♯版にしたSymbolLoader37と、PdbHelp40とを備える。
【0025】
PdbHelp40は、オブジェクトファイル33の読み込み、SymbolLoader37を用いたPDBファイル34の解析を行うようになっている。また、PdbHelp40は、読み込んだオブジェクトファイル33の対象とする変数や関数のシンボル情報をキャッシュメモリ内に格納して、オブジェクトファイル33の他のファイルからシミュレーション動作中にオーバーヘッドや制約を発生させることなく該変数及び関数にアクセスできるよう指定シンボル名のポインタを取得するAPI(指定シンボル名ポインタ取得API)ライブラリ42を生成するようになっている。なお、PDBファイル34は、後述のオブジェクトファイル生成(ビルド)時に合わせて生成されるファイルである(図4の32)。
【0026】
次に、本発明の一実施形態に係るマイクロコンピュータシステムシミュレーション方法の実行フローについて、図4を用いて説明する。
【0027】
まず、ターゲット用マイクロコンピュータのソースコード31内のマイクロコンピュータ専用関数の動作をシミュレーション使用者が把握を行い、シミュレーション仕様を記述するためのシミュレータコード35を作成する。該シミュレータコード35において、ソースコード31内のマイクロコンピュータ専用関数で記述される動作が汎用コンピュータ用関数で実行されるよう記述されている。
【0028】
該シミュレータコード35とソースコード31とから、汎用コンピュータであるシミュレーション用PCのオブジェクトファイルであるDLL33及びPDBファイル34を生成する(32)。
【0029】
次に、DLL33及びPDBファイル34をシミュレーション用PCに読み込む(39)。
【0030】
次に、シミュレータコード35で記述される以下に説明するコード注入機能を実行し、DLL33をシミュレーションする(43、44)。
【0031】
<コード注入機能>
コード注入機能は、図5に示すように、DLL33内のマイクロコンピュータ(マイコン)専用関数Aを、シミュレータコード35に記述されているPC用関数Bのアドレスへのジャンプに変更する機能である。シミュレーション実行時に、DLL33をメモリに読み込んだ後、メモリ内部のマイクロコンピュータ専用関数Aのオブジェクトコードの呼び先を、マイクロコンピュータ専用関数Aで記述される動作を実行するPC用関数Bのオブジェクトコードのアドレスに変更する。つまり、メモリ内部のマイクロコンピュータ専用関数AのオブジェクトコードをPC用関数Bのオブジェクトコードが実行されるように変更する。
【0032】
コード注入機能の動作例を図6に示す。ステップS61で、シミュレーションを起動する。ステップS62で、DLL33をシミュレーション用PCのメモリ92に読み込む。ステップS63において、メモリ92内部のマイクロコンピュータ専用関数Aのオブジェクトコードをシミュレータコード35に記述されているPC用関数Bのオブジェクトコードのアドレスへのジャンプに変更する。ステップS64において、変更されたDLL33を実行する。ステップS65において、変更されたDLL33の実行中にマイクロコンピュータ専用関数Aの呼び出しをYES(有り)と判断すると、ステップS67において、PC用関数Bのオブジェクトコードのアドレスにジャンプする。ステップS68において、PC用関数Bのオブジェクトコードを実行する。ステップS69において、ステップS65でマイクロコンピュータ専用関数Aの呼び出し元アドレスに戻り、ステップS64の実行を継続する。
【0033】
このように、コード注入機能によると、シミュレーション実行時のメモリ92においてマイクロコンピュータ専用関数AのオブジェクトコードがPC用関数Bのオブジェクトコードに変更された制御プログラムのオブジェクトコードを汎用コンピュータによって実行する。マイクロコンピュータで実行される制御プログラムのソースコード31を変更することなく、ソースコード31から生成するオブジェクトコードを、マイクロコンピュータと異なる命令セットを有する汎用コンピュータで実行することができる。
【0034】
また、オブジェクトコードであるDLL33の実行(S64)において、DLL33の他のファイルの変数や関数へのアクセス処理が発生する場合、以下に説明する変数名解決機能を使用することもできる。
【0035】
<変数名解決機能>
変数名解決機能は、図7に示すように、シミュレータコード35にDLL33の変数や関数へのアクセスを記述するための該変数及び関数の構造体定義及び外部公開を不要とする機能である。
【0036】
図7では、上記の指定シンボル名ポインタ取得関数APIライブラリ42を使用することにより、例えば、DLL33内「tagInfo」変数の基となる「構造体定義」を用意、及びexternなどによる該変数の「外部公開」を行うことなく、DLL33内「tagInfo」変数にアクセスできる。つまり、シミュレータコード35にDLL33内の任意の変数及び関数へのアクセスを記述するために、DLL33を生成するマイクロコンピュータのソースコード31を改変する必要がない。
【0037】
さらに、オブジェクトファイル(DLL)生成32において、DLL33が実行時に無限ループに陥ることを防ぐため、以下に説明するマネージ通知機能を使用することもできる。
【0038】
<マネージ通知機能>
マネージ通知機能は、DLL33において実行される関数が無い場合に、シミュレーション用PCのオペレーティングシステムに制御が戻るようにする機能である。該機能は、図8に示すように、特定のキーワードに対して、生成するDLL33の元の処理と、DLL33の実行順序のオペレーションをするマネージ部15に制御を移す処理とを行うように該キーワードの置換を行う。図8では、DLL33を含むネイティブ部16からマネージ部15に制御を移す際に使用するマネージ通知関数APIを使用している。
【0039】
例えば、マイクロコンピュータのDLL33にwhile文が含まれている場合、そのまま実行するとマネージ部15に制御が戻らなくなる。これに対して、図8の例では、オブジェクトファイル(DLL)生成(ビルド)時に
#define while(X) while(マネージ通知関数)
とプリプロセス定義をし、DLL33を生成している。これにより、図9に示すように、「モジュール本体」の起動後、DLL33のwhile文を実行する時に、制御がマネージ部15に移るため、実行される関数の有無をマネージ部15において判断することができる。実行される関数が無い場合、シミュレーション用PCのオペレーティングシステムへ制御を戻すことができるので、DLL33の実行が無限ループに陥ることがない。
【0040】
次に、上記の構成に基づく、コード注入機能、変数名解決機能及びマネージ通知機能を含む場合のシミュレーション方法について、図10及び11を用いて説明する。
【0041】
ステップS11において、マイクロコンピュータのソースコード31に対して、マネージ通知機能を付加するプリプロセス処理と、オブジェクトファイル(DLL)生成をする(図11の32)。これにより、マネージ通知機能が付加された、シミュレーション用PCで実行可能なDLL33を生成する。
【0042】
ステップS12において、シミュレーション用PCのシミュレーションを起動する。ステップS13において、生成されたDLL33をシミュレーション用PCのメモリ92に読み込む(図11の39)。ステップS14において、メモリ92内部のマイクロコンピュータ専用関数のオブジェクトコードをシミュレータコード35に記述されているPC用関数のオブジェクトコードのアドレスへのジャンプに変更する。つまり、メモリ92内部において、シミュレータコード35の記述されるマイクロコンピュータ専用関数のオブジェクトコードを、PC用関数のオブジェクトコードを実行するように変更する。ステップS15において、変更されたDLL33を実行する(図11の43)。
【0043】
ステップS16及びS17において、マイクロコンピュータ専用関数に対してコード注入機能が実行される(図11の44)。ステップS18及びS19において、上記変更されたDLL33の他のファイルの変数や関数へのアクセス処理が発生する場合、指定シンボル名ポインタ取得関数APIライブラリ42を使用してDLL33内の情報にアクセスをする(図11の45)。ステップS15からS19の処理は、シミュレーションが終了するまで、繰り返される。
【0044】
このように、本発明の一実施形態によると、シミュレーションの実行時に、制御プログラムのソースコード31から生成するオブジェクトコード(DLL)33を汎用コンピュータが備えるメモリ92に読み込む。読み込んだメモリ92の内部において、マイクロコンピュータ専用関数で記述される動作を汎用コンピュータで実行できるようにマイクロコンピュータ専用関数のオブジェクトコードを汎用コンピュータ用関数のオブジェクトコードに変更する。マイクロコンピュータ専用関数のオブジェクトコードが汎用コンピュータ用関数のオブジェクトコードに変更された制御プログラムのオブジェクトコードを汎用コンピュータによって実行する。シミュレーション実行時のメモリ92においてオブジェクトコード33内のマイクロコンピュータ専用関数を変更することによって、マイクロコンピュータ専用関数で記述された動作を汎用コンピュータで実行するため、オブジェクトコード33の実行時に制御プログラムのソースコード31を変更する必要がないので、ソースコード31を改竄するリスクが無い。また、煩雑なコード変換の必要もないので、マイクロコンピュータと異なる命令セットを有する汎用コンピュータでオブジェクトコード33を簡単に実行できる。
【0045】
また、マイクロコンピュータ専用関数のオブジェクトコードの変更は、マイクロコンピュータ専用関数が実行されると、汎用コンピュータ用関数のオブジェクトコードのアドレスにジャンプして汎用コンピュータ用関数を実行するようにする。つまり、マイクロコンピュータ専用関数のオブジェクトコードと汎用コンピュータ用関数のオブジェクトコードとは別個の関数として実装される。そのため、マイクロコンピュータ専用関数のオブジェクトコードと汎用コンピュータ用関数のオブジェクトコードを分離配置できるので、オブジェクトコード33の保守管理性が高い。
【0046】
また、オブジェクトコード33は、ダイナミックリンクライブラリ(DLL)である。DLL33は、メモリへの読み込みの都度、内部変数が初期化されるので、シミュレーションにおいて、ターゲット用マイクロコンピュータの初期化を、DLL33のメモリ92への読み込みにより、簡単に実現することができる。
【0047】
また、オブジェクトコード33の生成とともに生成されるデバッグシンボル(PDB)ファイル34に基づいて、オブジェクトコード33の変数にアクセスするための指定シンボル名のポインタ情報を取得するAPIライブラリ42を生成する。そのため、オブジェクトコード33の変数や関数にアクセスするために、該変数及び変数を予めオブジェクトコード33において入出力変数等として定義しておく必要がないので、シミュレーション実行時にオブジェクトコード33の変数に簡単にアクセスできる。
【0048】
また、オブジェクトコード33は、実行される関数が無い場合に、汎用コンピュータのオペレーティングシステムに制御が戻るように生成されている。このオブジェクトコード33により、シミュレーション実行時に実行される関数が無い場合に汎用コンピュータのオペレーティングシステムに制御が戻るため、シミュレーションがオブジェクトコード33の実行時に無限ループに陥り暴走することがないので、動作信頼性を向上させることができる。
【符号の説明】
【0049】
10 ソフトウェア構成
15 マネージ部
16 ネイティブ部
31 マイクロコンピュータ制御プログラムのソースコード
33 オブジェクトコード、オブジェクトファイル(DLL)
34 PDBファイル
35 シミュレータコード
36 DbgHelp.dll
37 SymbolLoader
40 PdbHelp
42 指定シンボル名ポインタ取得関数APIライブラリ
90 ハードウェア構成
91 演算装置
92 主記憶装置(メモリ)
93 ディスプレイ装置
94 補助記憶装置
95 入力装置
96 バス
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11