JP2022040001A - ハードウェア設計用のターゲットコードを開発及びテストするための仮想マシン - Google Patents

ハードウェア設計用のターゲットコードを開発及びテストするための仮想マシン Download PDF

Info

Publication number
JP2022040001A
JP2022040001A JP2021129684A JP2021129684A JP2022040001A JP 2022040001 A JP2022040001 A JP 2022040001A JP 2021129684 A JP2021129684 A JP 2021129684A JP 2021129684 A JP2021129684 A JP 2021129684A JP 2022040001 A JP2022040001 A JP 2022040001A
Authority
JP
Japan
Prior art keywords
proxy
target
virtual machine
hardware
memory
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.)
Pending
Application number
JP2021129684A
Other languages
English (en)
Inventor
ニコラス ホトラ ジョナサン
Nicholas Hotra Jonathan
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.)
Boeing Co
Original Assignee
Boeing Co
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 Boeing Co filed Critical Boeing Co
Publication of JP2022040001A publication Critical patent/JP2022040001A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3696Methods or tools to render software testable
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45545Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】ハードウェア設計用のターゲットコードを開発及びテストするための仮想マシンを提供する。【解決手段】ホストコンピュータ400は、プロキシVMを格納するメモリと、ホストCPUと、を含む。プロキシVMは、設計が未完成のターゲットハードウェアをエミュレートし、ターゲットプロセッサをエミュレートするための仮想プロセッサ及び仮想メモリバスを介して仮想プロセッサに接続された、エミュレートされたメモリを含む。エミュレートされたメモリは、ターゲットコードを格納する少なくとも1つの部分を有する。ホストCPUは、プロキシVMを実行することによって設計が未完成のターゲットハードウェアをエミュレートする。プロキシVMは、ホストCPUによって実行されると、仮想プロセッサによって前記ターゲットコードを実行する。【選択図】図4

Description

本開示は、ハードウェア設計用のターゲットコードを開発及びテストするための仮想マシンに関する。
新たな組み込みシステムの設計に際し、最終ターゲットであるハードウェア設計や当該ハードウェア上で動作する組み込みソフトウェアの詳細は、初期段階では十分に明確でない。典型的には、ハードウェア設計の完成度が高まると、これと並行してソフトウェアの開発も進み、開発及びテストが何度も繰り返し行われる。開発及びテストは、最終ターゲットであるハードウェアとは別のハードウェア上で行われることが一般的であり、例えば、商用オペレーティングシステム(OS)を実行するパーソナルコンピュータ(PC)上で実現される統合開発環境(IDE)で行われる。したがって、ハードウェア設計が未完成の段階で実施されうる少なくともいくつかのテストにおいては、テストの忠実度(fidelity)に「ギャップ」がある可能性がある。また、アプリケーションソフトウェアのリホストによれば、ターゲットハードウェアソフトウェアスタックのうち、リホストされたアプリケーションソフトウェアはPC上で動作させることができるが、リアルタイムOSなどの他の要素についてはPC上で動作させることができず、忠実度のギャップは、このような手法によっても生じることがある。このようなギャップがあると、ターゲットソフトウェア及びターゲットハードウェアを完全な忠実度でテストすることが遅れる可能性があり、結果として、問題の発見が遅れ、組み込みシステムの開発の完成間近になって開発及びテストをさらに何度も繰り返すような状況が生じうる。
本セクションは、後述され、及び/又は、請求の範囲に含まれうる本開示の様々な態様について、関連する従来技術の様々な側面を読み手に提示することを目的とする。本セクションの記載は、本開示の様々な態様を読み手が理解する上で助けとなる背景知識を提供するために有用であると考えられる。よって、本セクションの記載は、その観点で読まれるべきであって、先行技術を自認するものであると解釈されるべきではない。
一実施例は、ターゲットコードを開発し、テストし、実行するためのホストコンピュータに関する。当該ホストコンピュータは、プロキシ仮想マシンを格納するメモリと、ホスト中央処理装置と、を含む。前記プロキシ仮想マシンは、設計が未完成のターゲットハードウェアをエミュレートする。前記プロキシ仮想マシンは、ターゲットプロセッサをエミュレートするための仮想プロセッサを含む。前記プロキシ仮想マシンは、仮想メモリバスを介して前記仮想プロセッサに接続された、エミュレートされたメモリを含む。前記エミュレートされたメモリは、ターゲットコードを格納する少なくとも1つの部分を有する。前記ホスト中央処理装置は、前記プロキシ仮想マシンを実行することによって前記ターゲットハードウェアをエミュレートするよう構成されている。前記プロキシ仮想マシンは、前記ホスト中央処理装置によって実行されると、前記仮想プロセッサによって前記ターゲットコードを実行するよう構成されている。
上述の態様に関連して記載した特徴は、様々な改変が可能である。また、上述の態様に、さらに追加の特徴を組み入れることが可能である。そのような改変及び追加の特徴は、個別に存在することも、或いは、任意の組み合わせで存在することもありうる。例えば、後述する例示的な実施例に関連して記載する様々な特徴は、上述した態様のうち任意の態様に単独又は組み合わせで組み入れることが可能である。
例示的なアビオニクス装置を示すブロック図である。 図1に示すアビオニクス装置をエミュレートするための例示的なホストコンピュータを示すブロック図である。 図1に示すアビオニクス装置をエミュレートするための例示的な仮想マシンを示すブロック図である。 例示的なホストコンピュータを示すブロック図である。 図1に示すアビオニクス装置をエミュレートする仮想マシン上で実行されるターゲットコード中でグラフィクス関数呼び出しを実行する例示的な方法を示すフロー図である。
添付図面では、同様の部分は、複数の図面を通じて同様の参照符号を用いて示している。なお、様々な実施例における特定の特徴が、ある図面には示されているのに他の図面には示されていない場合があるが、これはあくまでも便宜上の理由によるものである。いずれの図面におけるいずれの特徴も、他の図面に示されている特徴と組み合わせて参照し、及び/又は、請求の範囲に記載することが可能である。
本明細書に記載の実施例は、仮想マシン(VM:virtual machine)上で仮想化されたハードウェアを利用して、開発サイクルの初期の段階で行われる少なくともいくつかのテストを提供する。仮想化とは、ハイパーバイザを介してローカル或いはホストのコンピュータ上で動作する例えばVMなどのソフトウェアプログラムによって所与のハードウェア部分を模倣する、つまり、エミュレートすることを指す。仮想化によれば、大規模な或いは複雑なシステムの開発においては高コストで高需要であると想定される、リホストによるソフトウェアの変更や、完全なハードウェアテストベンチ(hardware test bench)を必要とすることなく、ターゲットソフトウェアをテストすることが可能になる。例えば、シングルボードコンピュータ(SBC)又は通信バスコントローラなどのターゲットハードウェアを仮想化する場合、現実のターゲットハードウェアと同等の機能を有するハードウェアを模倣又はエミュレートするVMを構築するためには、一般的には、特定のターゲットハードウェア及びファームウェアの詳細な情報が必要となる。本明細書において、ターゲットハードウェアとは、VMによって仮想化された組み込みシステム又はデータ処理システム用の現実のハードウェア部分を指す。
本明細書に記載の実施例は、ターゲットハードウェアに非常に近いVMであって、ターゲットハードウェア又はターゲットソフトウェアの初期の開発及びテストに利用可能なVMを提供する。これにより、ハードウェア設計の開発段階において仮想化を活用することが可能になる。
本開示の便宜上、「仮想化」及び「エミュレーション」なる用語は、ターゲットハードウェアの任意の仕様(aspect)をエミュレートするVMに言及するものとして同義に用いられる。ただし、ターゲットハードウェアの1つ又は複数の他の仕様は、ホストコンピュータに組み込まれてもよい。
本開示のホストコンピュータは、組み込みシステム用の未完成ハードウェア設計のためのターゲットソフトウェア又はターゲットコードを開発及びテストするためのプロキシVMを提供する。より具体的には、プロキシVMには、設計の初期段階で明確になっているハードウェア設計に係る中核的な仕様のみが含まれる。例えば、プロセッサの種類とOSは、一般的に設計の初期段階、即ちハードウェア設計が未完成の段階で決定される。フィールドプログラマブルゲートアレイ(FPGA)及び特定用途向け集積回路(ASIC)用のファームウェアや入出力(I/O)装置の設計などのその他の仕様は、ハードウェアの設計プロセスがかなり先の段階に進むまで決定されないことが一般的であり、ハードウェア設計の中核的な仕様の決定から数か月から数年を要する場合もある。このため、組み込みシステム用のターゲットハードウェアの要件、設計、インターフェース、入出力データの定義など、多くの仕様は、開発の過程で変更される可能性がある。
プロキシVMは、少なくともターゲットプロセッサ及びターゲットOSのエミュレーションを含んでおり、プロキシVMによれば、当該ターゲットOS、又は、これと同じか非常に近い他の既存のOS用のIDE、コンパイラ、及び、他の開発ツールを用いて、アプリケーションソフトウェアの初期の開発及びテストを行うことが可能になる。本開示の便宜上、「開発ツール」なる用語は、開発中のソフトウェアの開発、テスト、又は、実行、或いは、ターゲットハードウェアの開発又はテストに使用可能な任意のソフトウェアモジュール、プログラム、ライブラリ、又は、他のアプリケーションを指す。例えば、プロキシVM用のOSは、ターゲットOSと同じか非常に近いスタックを使用する。代替的な実施例においては、プロキシVM用のOSは、ターゲットOSと類似のものである必要はない。ただし、類似のOSには、例えば、ターゲットOS用の一組の開発ツールの開発及びテストを効率的に行えるという利点がある。他の代替的な実施例においては、プロキシVMは、ターゲットOSを含まない「ベアメタル(bare metal)型」であってもよい。そのような実施例では、ベアメタル実装用のIDE、コンパイラ、デバッガ、又は、他の開発ツールを用いて、開発及びテストを行うことができる。初期段階のアプリケーションソフトウェアは、最小限レベルの機能(atomic-level functionality)、アプリケーションプログラミングインターフェース(API)、及び(ターゲットI/O装置の設計後であれば)デバイスドライバを含むことが多い。このような初期段階のソフトウェアコンポーネントには「ホワイトボックス」テストが適用されるため、通常は、これらのソフトウェアコンポーネントが組み込みシステムのハードウェア要素と直接やり取りする必要はない。加えて、初期段階の繰り返しにおけるターゲットハードウェア及びデバイスドライバは、エミュレーションによって、ハードウェア設計の選択肢をテストし、評価することが可能である。このように初期段階において仮想化を活用することで、典型的な開発者用PCで実行されるOS及びIDEにおける相違に起因して後の開発段階で発生しがちな再作業やリホスト作業をなくすことができる。「リホストされた」環境である開発環境とターゲット環境との間の相違は、しばしば、開発の後期においてハードウェア設計が完成した後に解決される。
図1は、組み込みシステム100用のターゲットハードウェアの例を示すブロック図である。組み込みシステム100は、例えば、飛行管理コンピュータ(FMC)又は飛行制御コンピュータ(FCC)などのアビオニクスシステムである。なお、本開示のシステム及び方法は、アビオニクスの用語を用いて説明されているが、本開示のシステム及び方法は、開発サイクルの短縮が利益となるものであれば、例えば、陸上車両、船舶、又は、宇宙船用など、任意の他のコンピュータシステムに利用可能である。
図1に示す組み込みシステム100の設計は、完成した設計の例である。組み込みシステム100は、例えばレベル1キャッシュ又はレベル2キャッシュなどのメモリキャッシュ104に直接接続されたプロセッサ102を含む。組み込みシステム100は、例えばフロントサイドバスを介してプロセッサ102に直接接続されたホストブリッジ106をさらに含む。ホストブリッジ106は、例えば、Xバスなどのメモリバス108、又は、I/O又はペリフェラル(peripheral)バス110を介したプロセッサ102との通信を制御するものである。ペリフェラルバスとしては、例えばペリフェラルコンポーネントインターコネクト(PCI)バス、PCIエクスプレス、PCI-X、インテグレーティド・ドライブ・エレクトロニクス(IDE)バス、シリアル・アドバンスト・テクノロジー・アタッチメント(SATA)バス、或いは、I/O装置112をプロセッサ102に接続するための任意の他の適当な通信媒体が挙げられる。ホストブリッジ106は、ASIC又はFPGAなどの処理チップに実装可能であり、例えば割り込みコントローラなどの追加機能を含んでもよい。I/O装置112は、例えば、センサ、通信インターフェース、ペリフェラルインターフェース、又は、他の周辺(peripheral)ハードウェア機器を含み、これらは、PCIメザニンカード(PMC)114に実装可能である。組み込みシステム100は、例えば、VERSAモジュールユーロカード(VME)バスコントローラ116などの付加的なバスブリッジを含む。組み込みシステム100は、通信バスを介して送受信を行うための通信インターフェースとして、少なくともイーサネットコントローラ118とシリアルコントローラ128の2つを含む。特定の実施例において、I/O装置は、例えば、オーディオ又はビデオインターフェース(audio or video interconnects)などのペリフェラルインターフェースを含む。
メモリバス108は、ホストブリッジ106を介して様々なメモリデバイスをプロセッサ102に接続する。メモリデバイスは、例えば、一般的には、プロセッサ102によってのみ利用可能なシンクロナスダイナミックRAM(SDRAM)120などのランダムアクセスメモリ(RAM)を含みうる。組み込みシステム100は、プロセッサ102だけでなく他のデバイスからもアクセス可能な付加的なメモリデバイスとホストブリッジ106との間のメモリバス108上に、ダイレクトメモリアクセス(DMA)バッファ122を含む。例えば、組み込みシステム100は、大容量の不揮発性RAM(NVRAM)126用のメモリ124と、PCI-Xバスなどの高速バス130に接続されたシリアルバスコントローラ128と、を含む。DMAバッファ122は、プロセッサ102の処理サイクルを使わずにメモリ124及びNVRAM126にアクセスすることを可能にする。
メモリ124は、例えば、組み込みシステム100用のOS132及びボードサポートパッケージ(BSP)134を格納する。メモリ124は、組み込みシステム100用の他のアプリケーションソフトウェア及びデータも格納することができる。NVRAM126の容量は、一般的に、基本入出力システム(BIOS)136又は「ブートローダ」などの下位のコンフィグレーションデータ用に確保されているメモリ容量よりも著しく小さい。
図2は、組み込みシステム100用のハードウェアの未完成のハードウェア設計の例を示すブロック図である。開発の初期段階においてハードウェア設計が「未完成」な状態では、例えばプロセッサ102とOS132など、当該ハードウェア設計の中核的な仕様だけが分かっている。未完成のハードウェア設計には、要件によって指定される様々な仕様は含まれるが、これらの仕様に対応するハードウェア機器については、設計又は選択が未定であったり、変更の可能性があったりする。これに対し、完成後のハードウェア設計では、すべてのハードウェア機器が選択されており、且つ、すべてのハードウェア設計仕様が完成している。ハードウェア設計が進むにつれて、未完成のハードウェア設計の完成度が上がり、通信インターフェース138などの具体的なI/O装置112が盛り込まれる場合がある。通信インターフェース138は、例えば、ARINC429又はMIL-STD-1553PCIメザニンカードを含みうる。また、通信インターフェース138は、イーサネットコントローラ118と同じ又は類似のイーサネットコントローラであってもよい。幾つかの実施例において、通信インターフェース138に含まれるイーサネットコントローラは、標準イーサネットプロトコルを十分にサポートしていれば、最終ターゲットであるイーサネットコントローラ118と類似でないものも許容される。未完成のハードウェア設計には、一般的に、他のI/O装置、完全に実装されたメモリバス又はペリフェラルバス、或いは、完全に実装されたASIC又はFPGA用ファームウェアは含まれない。
図3は、デスクトップテスト環境のための高忠実度のソフトウェアテストアーキテクチャ300の例を示すブロック図である。アーキテクチャ300は、現実のターゲットハードウェアを含むハードウェアテストベンチではなく、例えば、PCなどのデスクトップコンピュータ、即ち、「ホストコンピュータ」上に実装される。アーキテクチャ300は、PC仮想マシン又はサーバを用いたクラウドコンピュータプラットフォーム上に実装することも可能である。特定の実施例においては、アーキテクチャ300は、例えば、タブレットコンピュータやスマートフォンなどのモバイルコンピュータ上に実装される。アーキテクチャ300は、図2に示す組み込みシステム100用の未完成のハードウェア設計における中核的な仕様をエミュレートするプロキシVM302を含む。プロキシVM302は、ホストコンピュータ用のOS304とハードウェア抽象化レイヤにおいて実行され、或いは、動作する。本開示の便宜上、ハードウェア抽象化レイヤは全体として、例えばOS304と対話する(interacting)ためのプロセス間通信機構(例えば、共有メモリ又はソケット)などのインターフェースを含むAPI306を指す。特定の実施例において、API306は、プロキシVM302の動作を調整するハイパーバイザをさらに含むことができる。ホストコンピュータは、通常、ホスト中央処理装置(CPU)308、及び、様々なホストI/O装置310を含む。ホストI/O装置310は、例えば、グラフィックスインターフェースを含む。グラフィックスインターフェースの例としては、グラフィックス・プロセッシング・ユニット(GPU)、オーディオ周辺機器、ネットワークインターフェースコントローラ(NIC)、キーボード、マウス、及び、他の周辺機器が挙げられる。特定の実施例において、アーキテクチャ300は、ホストI/O装置310にターゲットハードウェアを含んでもよい。アーキテクチャ300は、ホストI/O装置310の間の対話を行うデバイスドライバ312、OS304、API306、及び、実行されるとホストI/O装置310と対話する任意のアプリケーションソフトウェアを含む。例えば、プロキシVM302は、API306、OS304、及び、デバイスドライバ312を介して、ホストI/O装置310と対話する。
プロセッサ102がホストコンピュータ用のプロセッサと一致しない場合は、プロキシVM302は、組み込みシステム100のプロセッサ102をエミュレートする仮想プロセッサ314を含む。一方、ターゲットプロセッサ102がホストコンピュータのプロセッサと一致する場合には、プロキシVM302は、仮想プロセッサ314を含まなくてもよい。プロキシVM302は、さらに、エミュレートされたハードウェアとOS316の組み合わせに対応するOS316及びBSP318を含む。OS316及びBSP318は、エミュレートされたメモリにおける1つ又は複数のセクションに格納されており、このエミュレートされたメモリは、仮想メモリバスを介して仮想プロセッサ314に接続されている。特定の実施例において、このような仮想メモリバスは、仮想化レイヤに実装された概念的なメモリバス又はメモリ構造であって、メモリマップの構築、及び、VMとホストハードウェアとの間のデータ転送を可能にするものである。OS316は、組み込みシステム100のOS132と同じか非常に近いOSである。BSP318は、仮想プロセッサ314がOS316を実行するためのコンフィグレーション情報を含み、この情報には、例えば、メモリマッピング及び割込マッピングが含まれる。なお、組み込みシステム100の開発の初期段階においてハードウェア設計が未完成の状態では、プロキシVM302は、一般的に、組み込みシステム100のターゲットハードウェアI/O装置112に対応する、完全にエミュレートされたI/O装置320、又は、完全にエミュレートされたペリフェラルバスを含まない。よって、ターゲットコードは、一般的に、エミュレートされたI/O装置320又はエミュレートされたペリフェラルバスに対応するデバイスドライバ322を含まない。ただし、繰り返しの後期においては、これらの仮想化コンポーネントの設計の完成度が高まるので、最終的には、これらの仮想化コンポーネントがプロキシVM302に組み込まれる。
アーキテクチャ300は、OS316を実行するIDE326で開発されることが一般的なターゲットコード324を含む。前述のように、開発の初期段階では、ターゲットコード324は、典型的には最小限レベルの機能についてのアプリケーションソフトウェアのみを含む。開発が進んで、ターゲットI/O装置が設計され、エミュレートされたI/O装置320が利用可能になると、ターゲットコード324の開発も進み、ハードウェア抽象化レイヤ、即ち、API328及びデバイスドライバ322が盛り込まれる。ターゲットコード324の開発及びテストは、一般的に、IDE326又は他のテスト環境において基本的なテストデータ330を用いて行われる。テストデータ330は、通常はホストメモリに格納されるが、「ホワイトボックステスト」を目的として、ターゲットコード324とともにプロキシVM302に格納することもできる。
一般的に、ターゲットコード324における低レベル機能は、エミュレートされたI/O装置320と、少なくとも直接的に対話することはない。ターゲットコード324は、一般的に、API328を介してエミュレートされたI/O装置320と対話する。ハードウェア設計及び組み込みソフトウェアの両方の完成度が高まるにつれて、ターゲットコード324がAPI328を使用することが可能になり、次いでデバイスドライバ322及びエミュレートされたI/O装置320を使用することが可能になる。
エミュレートされたI/O装置320は、組み込みシステム100のターゲットハードウェアとは異なる仮想ハードウェアや、完成後のターゲットハードウェアには含まれない仮想ハードウェアを含むことができる。例えば、プロキシVM302は、組み込みシステム用のターゲットハードウェアの設計が進んで通信用のターゲットハードウェアが決まるまでの間、テスト及び開発中の通信を制御する、エミュレートされたイーサネットコントローラを含んでもよい。例えば、アビオニクスシステムでは、しばしばARINC429又はMIL-STD-1553バスのような標準化された通信バスが使用されるが、当該ARINC429又はMIL-STD-1553バスについてのターゲットハードウェアPCIメザニンカードが設計又は選択されるまでは、エミュレートされたイーサネットコントローラによって通信が可能である。また、エミュレートされたイーサネットコントローラ又はエミュレートされたI/O装置320は、組み込みシステム100の設計の後期の段階でプロキシVM302から削除することができる。特定の実施例において、プロキシVM302は、物理的なホストI/O装置などのホストハードウェアにプロキシVM302を接続又は連結する他の仮想ペリフェラルバスを含んでもよい。これにより、VMは、物理的なペリフェラルバスに仮想化レイヤにおいて接続された仮想ペリフェラルバスを介して、物理的なホストの外部装置と通信することが可能になる。
ターゲットコード324は、プロキシVM302上で開発及びテストを行うことができる。仮想プロセッサ314は、OS316を実行する。また、ホストOS304は、IDE326又は他のターゲットコード開発ツールをOS316で実行する。仮想プロセッサ314は、エミュレートされたイーサネットコントローラを例とする仮想通信インターフェースなどのエミュレートされたI/O装置320を介して、ターゲットコード324及びテストデータ330を、具体的にはテスト入力データを読み込む。特定の実施例において、例えば、組み込みシステム100の開発が進んでいないなどの理由によって、プロキシVM302におけるI/O装置320が利用可能でない場合には、ターゲットコード324及びテストデータ330は、プロキシVM302内のエミュレートされたメモリに直接ロードされる。ロードされたコード及びデータは、プロキシVM302においてターゲットコード324が起動されれば、使用可能である。次いで、仮想プロセッサ314は、ターゲットコード324を実行してテスト入力データを処理し、ターゲットコード324の実行に対応して、仮想通信インターフェースを介してテスト出力データを書き出す。例えば、プロキシVM302において通信インターフェースが利用可能でない場合は、テスト出力データは、プロキシVM302内のエミュレートされたメモリに書き出され、その後、検証と妥当性確認を行うための処理が実行される。
ハードウェア設計がさらに進んで新たなターゲットハードウェアが利用可能になると、当該ターゲットハードウェアは、ホストコンピュータにおけるホストI/O装置310に組み込まれる。これに応じて、プロキシVM302には、当該ターゲットハードウェアに対応するAPI328及びデバイスドライバ322が組み込まれる。これらのコンポーネントは、ホストコンピュータに組み込まれたターゲットハードウェア用のAPI306及びデバイスドライバ312にマッピングされているので、ターゲットコード324は、これらのコンポーネントを介して対話を行うことが可能である。
図4は、図1に示す組み込みシステム100用のターゲットハードウェアをエミュレートするためのホストコンピュータ400の例を示すブロック図である。ホストコンピュータ400の例としては、デスクトップPC、サーバPC、クラウトコンピュティングプラットフォーム(例えば、VM)、モバイルコンピューティングデバイス(例えば、タブレットコンピュータ又はスマートフォン)、トレーニングシステム、又は、他の適当なコンピューティングシステムを含むことができる。ホストコンピュータ400は、ホストCPU308を含み、当該CPUは、1つ又は複数のメモリバス、通信バス、又は、ペリフェラルバスを含む物理的なバス406を介してRAM402及びホストメモリ404に接続されている。ホストメモリ404は、コンピュータ読み取り可能なメモリであって、プロキシVM302を格納するセクションと、OS304を格納するセクションと、API306を格納するセクションと、デバイスドライバ312を格納するセクションと、ターゲットコード324を格納するセクションと、を含む。代替的な実施例においては、ホストメモリ404の1つ又は複数のセクションを省略することができ、この場合、対応するデータは、リモートに格納することができる。例えば、特定の実施例において、ターゲットコード324は、サーバ又は大容量記憶装置にリモートで格納され、ネットワークを介してホストCPU308及びプロキシVM302に提供される構成でもよい。
ホストコンピュータ400は、さらに、ホストI/O装置310を含み、ホストI/O装置の例としては、イーサネットコントローラ408などの通信インターフェース、又は、ペリフェラルリンク412を介してホスト周辺装置410と通信するためのペリフェラルインターフェースを含みうる。ホストI/O装置310は、例えば、表示リンクを介して表示機器を操作するためのGPUを含む。
特定の実施例において、ホストコンピュータ400は、設計及び選択が完了又はほぼ完了した組み込みシステム100のターゲットハードウェア用のターゲットI/O装置414を含みうる。例えば、一実施例において、ホストコンピュータ400、より具体的には、ターゲットI/O装置414は、組み込みシステム100用のターゲットハードウェアと同じであるか、実質的に類似するARINC429メザニンカード又はMIL-STD-1553PCIメザニンカードを含みうる。また、そのような実施例において、ホストコンピュータ400は、これらのターゲットI/O装置414に対応するデバイスドライバ312を含む。ホストコンピュータ400は、エミュレートされたターゲットI/O装置414と、ホストコンピュータ400に含まれる物理的なターゲットI/O装置414と、を対応付けるマッピング情報を(例えば、API又はハイパーバイザに含まれる)仮想化レイヤに含むことができる。
図5は、設計が未完成のターゲットハードウェア用のターゲットコードをテストするための方法500の実施例を示すフロー図である。ターゲットハードウェアの例としては、図1に示す組み込みシステム100用のターゲットハードウェアがある。方法500は、例えば、図4に示すホストコンピュータ400により実施されてもよい。ホストコンピュータ400は、502において、プロキシVM302を実行してターゲットハードウェアをエミュレートする。図3に示すように、プロキシVM302は、仮想プロセッサ314、エミュレートされたメモリ、及び、I/O装置320を含む。当該I/O装置は、特定の実施例において、仮想イーサネットコントローラなどの仮想通信インターフェースを含むことが多い。ホストコンピュータ400は、504において、エミュレートされたメモリに格納されているOS304をプロキシVM302上で実行する。ホストコンピュータ400、より具体的には、プロキシVM302は、506において、仮想通信インターフェースを介してターゲットコード324及びテスト入力データ330を読み込む。次いで、508において、プロキシVM302上でターゲットコード324が実行されて、テスト入力データ330が処理される。508におけるターゲットコード324の実行に対応して、510においてテスト出力データが仮想通信インターフェースを介して書き出される。代替的な実施例において、テスト入力データ330がターゲットコード324とともに、プロキシVM302に格納されており、読み出し506を行うことなく利用可能な構成でもよい。同様に、特定の実施例において、テスト出力データは、仮想通信インターフェースを介した書き出し510の代わりに、エミュレートされたメモリに書き出されてもよい。
プロキシVM302は、さらに、仮想プロセッサ314に接続されたBIOS又はブートローダを含んでもよい。ブートローダは、プロキシVM302の起動時に、エミュレートされたメモリの該当部分からOS316及びBSP318をロードする。ホストコンピュータ400は、ホストOS304上で実行される、例えばIDE326などの1つ又は複数の開発ツールを含む。特定の実施例では、OS316が省略されており、BSP318及びターゲットコード324は、エミュレートされたベアメタル上で実行される。また、そのような実施例においては、IDE326などの1つ又は複数の開発ツールは、OS316を介さずに実行される。
特定の実施例において、ターゲットコード324を実行すること508は、例えばAPI328などの少なくとも1つの周辺ハードウェア抽象化レイヤと対話し、例えばI/O装置320などの周辺ハードウェアとは直接に対話しない少なくとも1つの機能アプリケーション(functional application)をプロキシVM302上で実行することを含む。そのようなI/O装置は、組み込みシステム100のターゲットハードウェアの未完成なハードウェア設計には含まれていないことが一般的である。本開示の便宜上、「機能アプリケーション」なる用語は、周辺ハードウェアと直接に対話しないプログラムコードの任意の部分を指す。周辺ハードウェアは、一般的に、データバス(例えば、メモリバス、通信バス、ペリフェラルバス)を介してプロセッサ102と通信する任意のハードウェア部分を含むものであって、プロセッサ102に組み込まれているもの、或いは、フロントサイドバスを介してプロセッサ102と通信するものではない。例えば、図1の組み込みシステム100を参照して説明すると、周辺ハードウェア機器は、メモリバス108及びペリフェラルバス110を介し、ホストブリッジ106を通じてプロセッサ102と通信する。プロキシVM302では、プロキシVM302自体をテストするために、ターゲットコード以外の付加的なコードも実行される。
本開示の方法、システム、及び装置の技術的効果としては、例えば、以下のうちの少なくとも1つが含まれる。(a)組み込みシステムのハードウェアをターゲットとするプロキシVMを、当該組み込みシステムの開発の初期段階で提供することができ、通常は、当該ターゲットハードウェアの完成前の段階で提供することができる。(b)ターゲットハードウェアと同一又は非常に近いOS及びBSPにおいて動作するプロキシVM上で開発及びテストを行うことができ、また、ターゲットハードウェアと同一のエミュレートされたプロセッサ上で実行することができる。(c)リホスティングを必要とせず、また、ターゲットハードウェアの完全な仮想化を必要としないので、ターゲットハードウェア及びターゲットコードのテスト及び開発を早期に行うことができる。(d)プロキシVM上で忠実度の高い開発テストを早期に行うことができるので、組み込みシステムの開発後期における欠陥を低減することができる。(e)ターゲットハードウェアと同じか或いは非常に近いOS及びBSPにおいて動作するプロキシVM上でユーザトレーナー(例えば、メンテナンス又はオペレータのトレーニングシステム)を実現することができ、また、ターゲットハードウェアと同一のエミュレートされたプロセッサ上で実行することができる。
幾つかの実施例において、1つ又は複数の電子プロセッサ装置又はコンピュータ装置が使用される。本明細書に用いられる「プロセッサ」及び「コンピュータ」なる用語、及び、例えば、「プロセッサ装置」、「コンピュータ装置」、及び「コントローラ」などの関連用語は、当該技術分野において集積回路と呼ばれるものに限定されない。これらの用語は、プロセッサ、プロセッサ装置、コントローラ、汎用中央処理装置(CPU)、グラフィックス・プロセッシング・ユニット(GPU)、マイクロコントローラ、マイクロコンピュータ、プログラマブルロジックコントローラ(PLC)、縮小命令セットコンピュータ(RISC)プロセッサ、フィールドプログラマブルゲートアレイ(FPGA)、デジタルシグナルプロセッサ(DSP)装置、特定用途向け集積回路(ASIC)及び、本明細書に記載の機能を実行可能な他のプログラマグル回路又はプロセッサ装置を含む広義の用語であり、これらの用語は、いずれも同義に用いられる。これらのプロセッサ装置は、概して、プログラミング又はプログラミングされることにより、或いは、実行用の命令を提供することにより、所定の機能を実行するよう構成されている。上述の例は、プロセッサ、プロセッサ装置、及び、その関連用語の定義又は意味を何ら限定することを意図していない。
本明細書に記載の実施例において、メモリは、限定するものではないが例えば、コンピュータ読み取り可能な非一時的媒体を含み、その例としては、フラッシュメモリ、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、消去可能なプログラマブルリードオンリーメモリ(EPROM)、電気的に消去可能なリードオンリーメモリ(EEPROM)、不揮発性RAM(NVRAM)などが挙げられる。本明細書に用いられる「コンピュータ読み取り可能な非一時的媒体」なる用語は、限定するものではないが例えばコンピュータ読み取り可能な非一時的な記憶装置を含む、コンピュータ読み取り可能な任意の有形媒体を表すことを意図しており、限定するものではないが例えば、揮発性媒体及び不揮発性媒体、取り外し可能な又は固定された媒体を含み、例えば、ファームウェア、物理的な記憶媒体及び仮想の記憶媒体、CD―ROM、DVD、及び、ネットワーク又はインターネットなどの他の適当なデジタルソース、加えて、今後開発されるデジタル手段を含むものであって、唯一、一時的な搬送波信号が除外される。或いは、フロッピーディスク、コンパクトディスク、例えばリードオンリーメモリ(CD-ROM)、光磁気ディスク(MOD)、デジタル多用途ディスク(DVD)、又は、他の任意のコンピュータベースのデバイスであって、コンピュータで読み取り可能な命令、データ構造、プログラムモジュール及びサブモジュール、又は他の任意のデータなどの情報を短期的又は長期的に記憶するための方法又は技術で実装されたものも利用可能である。したがって、本明細書に記載の方法は、実行可能形式の命令としてコード化して、例えば、非一時的なコンピュータ可読媒体における「ソフトウェア」及び「ファームウェア」として実装することができる。さらに、本明細書において、「ソフトウェア」及び「ファームウェア」なる用語は互いに同義に用いられており、加えて、これらの用語は、メモリに格納されて、パーソナルコンピュータ、ワークステーション、クライアント装置及びサーバ装置によって実行される任意のコンピュータプログラムを含む。これらの命令は、プロセッサによって実行されると、本明細書に記載の方法の少なくとも一部を当該プロセッサに実行させる。
また、本明細書に記載の実施例において、追加の入力チャネルとして、限定するものではないが例えば、マウス及びキーボードなど、オペレータインターフェースに関連付けられたコンピュータ周辺機器を使用可能である。或いは、限定するものではないが例えば、スキャナなどの他のコンピュータ周辺機器も使用可能である。さらに、幾つかの実施例では、追加の出力チャネルとして、限定するものではないが例えば、オペレータインターフェースモニタを使用可能である。
本明細書に記載のシステム及び方法は、上述した特定の実施例に限定されるものではなく、当該システムの要素及び/又は当該方法のステップは、本明細書に記載の他の要素及び/又はステップとは独立して別個に用いることも可能である。
なお、本開示の様々な実施例における特定の特徴が、ある図面には示されているのに、他の図面には示されていない場合があるが、これはあくまでも便宜上の理由によるものである。本開示の原理にしたがって、いずれの図面に示したいずれの特徴も、他の図面に示した特徴と組み合わせて参照し、及び/又は、請求の範囲に記載することが可能である。
本明細書において、単数形で記載されている要素又はステップは、特段の記載がない限り、複数の要素又はステップを必ずしも排除するものではない。加えて、本発明の「一実施例」又は「例示的な実施例」に言及することは、その実施例に記載した特徴を取り入れた別の実施例の存在を排除することを意図するものではない。
本明細書の記載は、例を用いることで、ベストモードを含む様々な実施例を開示して、任意の装置又はシステムの作製及び使用、並びに、組み入れられた方法の実行を含む様々な例を当業者が実施できるようにするものである。本開示における特許可能な範囲は、特許請求の範囲によって規定されるものであり、当業者が想定しうる他の例を含みうる。そのような他の例は、それらが、特許請求の範囲の文言と相違のない構成要素を有する場合、又は、特許請求の範囲の文言に対して本質的でない相違を有するだけの均等な構成要素を含む場合、特許請求の範囲に包含されると考えられるべきである。
本開示の例示的な実施例は、すべてを網羅するものではないが、以下の付記に記載されるものもさらに含む。
本開示の一実施例によるホストコンピュータは、設計が未完成のターゲットハードウェアをエミュレートするプロキシ仮想マシン(VM)を格納するメモリと、前記プロキシ仮想マシンを実行することによって前記ターゲットハードウェアをエミュレートするよう構成されたホスト中央処理装置(CPU)と、を具備している。前記プロキシ仮想マシンは、ターゲットプロセッサをエミュレートするための仮想プロセッサ、及び、仮想メモリバスを介して前記仮想プロセッサと通信するとともに、ターゲットコードを格納する少なくとも1つの部分を有する、エミュレートされたメモリを含む。前記プロキシ仮想マシンは、前記ホスト中央処理装置によって実行されると、前記仮想プロセッサによって前記ターゲットコードを実行するよう構成されている。
上述の付記による前記ホストコンピュータの選択的な構成において、前記プロキシ仮想マシンは、前記ホスト中央処理装置によって実行されると、さらに、少なくとも1つのターゲットコード開発ツールを実行するよう構成されている。
上述の付記のいずれかによる前記ホストコンピュータの選択的な構成において、前記ターゲットコードは、少なくとも1つの周辺ハードウェア抽象化レイヤと対話するが前記未完成の設計において省略されている周辺ハードウェアとは対話しない、少なくとも1つの機能アプリケーションを含む。
上述の付記のいずれかによる前記ホストコンピュータは、選択的な構成において、さらに、前記ターゲットハードウェアに含まれる周辺ハードウェア装置を含んでおり、前記プロキシ仮想マシンは、さらに、前記周辺ハードウェア装置に対応するハードウェア抽象化レイヤであって、前記ターゲットコードが前記プロキシ仮想マシンによって実行されると、前記周辺ハードウェア装置用のホストドライバを使用するよう構成されたハードウェア抽象化レイヤを含む。
上述の付記のいずれかによる前記ホストコンピュータの選択的な構成において、前記プロキシ仮想マシンは、前記ターゲットハードウェアの完成した設計には含まれない周辺ハードウェアに対応する仮想化周辺ハードウェア装置を含む。
上述の付記のいずれかによる前記ホストコンピュータの選択的な構成において、前記プロキシ仮想マシンは、さらに、前記プロキシ仮想マシンのエミュレートされた入出力装置と物理ホスト入出力装置とを接続する仮想ペリフェラルバスを含む。
上述の付記のいずれかによる前記ホストコンピュータの選択的な構成において、前記エミュレートされたメモリは、さらに、オペレーティングシステム(OS)及びボードサポートパッケージ(BSP)を格納する部分を有する。
上述の付記のいずれかによる前記ホストコンピュータは、選択的な構成において、さらに、エミュレートされたペリフェラルバスに接続された仮想通信インターフェースを含んでおり、前記エミュレートされたメモリは、さらに、テスト入力データを格納する部分を有しており、前記プロキシ仮想マシンは、前記ホスト中央処理装置によって実行されると、さらに、前記仮想プロセッサによって前記ターゲットコードを実行して前記テスト入力データを処理し、前記ターゲットコードの実行に対応して、前記仮想通信インターフェースを介してテスト出力データを書き出すよう構成されている。
本開示の一実施例は、設計が未完成のターゲットハードウェア用のターゲットコードを実行する方法に関する。当該方法は、前記設計が未完成のターゲットハードウェアをエミュレートするためのプロキシ仮想マシン(VM)であって、仮想プロセッサ、エミュレートされたメモリ、及び、仮想通信インターフェースを含むプロキシ仮想マシンを実行することと、前記エミュレートされたメモリに格納された前記ターゲットコードを前記プロキシ仮想マシン上で実行することと、前記プロキシ仮想マシン上で入力データにアクセスすることと、前記ターゲットコードによって前記入力データを処理することと、前記ターゲットコードの実行に対応して、前記仮想通信インターフェースを介して出力データを書き出すことと、を含む。
上述の付記による前記方法は、選択的な構成において、さらに、ホストプロセッサによって、前記プロキシ仮想マシン上で仮想バスを介して出力データにアクセスすることを含む。
上述の付記による前記方法は、選択的な構成において、さらに、前記エミュレートされたメモリに格納されたオペレーティングシステム(OS)を前記プロキシ仮想マシン上で実行することを含む。
上述の付記による前記方法の選択的な構成において、前記プロキシ仮想マシンは、さらに、前記仮想プロセッサに接続されたブートローダであって、前記プロキシ仮想マシンの起動時に、前記エミュレートされたメモリの一部から前記オペレーティングシステム及びボードサポートパッケージ(BSP)をロードするよう構成されたブートローダを含むものである。
上述の付記のいずれかによる前記方法は、選択的な構成において、さらに、前記仮想通信インターフェースを介して前記プロキシ仮想マシンに接続された少なくとも1つのターゲットコード開発ツールを実行することを含む。
上述の付記のいずれかによる前記方法の選択的な構成において、前記ターゲットコードを実行することは、少なくとも1つの周辺ハードウェア抽象化レイヤと対話するが前記未完成の設計において省略されている周辺ハードウェアとは対話しない少なくとも1つの機能アプリケーションを前記プロキシ仮想マシン上で実行することを含む。
本開示の一実施例は、ターゲットハードウェアをエミュレートするプロキシ仮想マシン(VM)を格納する、コンピュータ読み取り可能なメモリに関し、前記プロキシ仮想マシンは、ターゲットプロセッサをエミュレートするための仮想プロセッサと、仮想メモリバスを介して前記仮想プロセッサに接続されているとともに、ボードサポートパッケージ(BSP)及びターゲットコードを格納する少なくとも1つの部分を有している、エミュレートされたメモリと、エミュレートされたペリフェラルバスを介して仮想プロセッサに接続された仮想通信インターフェースと、を含む。前記プロキシ仮想マシンは、ホスト中央処理装置(CPU)によって実行されると、前記エミュレートされたメモリに格納された前記ターゲットコードを実行し、前記プロキシ仮想マシン上で入力データにアクセスし、前記ターゲットコードによって前記入力データを処理し、前記ターゲットコードの実行に対応して、前記仮想通信インターフェースを介して出力データを書き出すよう構成されている。
上述の付記による前記コンピュータ読み取り可能なメモリの選択的な構成において、前記プロキシ仮想マシンの前記エミュレートされたメモリは、前記仮想メモリバスを介して前記仮想プロセッサに接続された仮想ランダムアクセスメモリ(RAM)と、前記仮想メモリバスに接続されているとともに、前記ボードサポートパッケージ及び前記ターゲットコードを格納する仮想不揮発性メモリと、を含む。
上述の付記による前記コンピュータ読み取り可能なメモリの選択的な構成において、前記プロキシ仮想マシンは、前記仮想プロセッサに接続されているとともに、起動時に、前記仮想不揮発性メモリからオペレーティングシステム(OS)及び前記ボードサポートパッケージをロードするよう構成されたブートローダを含む。
上述の付記のいずれかによる前記コンピュータ読み取り可能なメモリの選択的な構成において、前記ターゲットハードウェア及び前記プロキシ仮想マシンの各々は、周辺機器用のデバイスドライバを含まない。
上述の付記のいずれかによる前記コンピュータ読み取り可能なメモリの選択的な構成において、前記ターゲットハードウェア及び前記プロキシ仮想マシンは、未完成な設計からのものである。
上述の付記のいずれかによる前記コンピュータ読み取り可能なメモリの選択的な構成において、前記プロキシ仮想マシンは、前記ターゲットハードウェアの完成した設計には含まれない周辺ハードウェアに対応する仮想化周辺ハードウェア装置を含む。
本開示の一実施例は、ホストコンピュータに関し、当該ホストコンピュータは、ターゲットハードウェアをエミュレートするプロキシ仮想マシン(VM)を格納するメモリと、前記プロキシ仮想マシンを実行することによって前記ターゲットハードウェアをエミュレートするよう構成されたホスト中央処理装置(CPU)と、を具備している。前記プロキシ仮想マシンは、ターゲットプロセッサをエミュレートするための仮想プロセッサ、及び、仮想メモリバスを介して前記仮想プロセッサに接続されているとともに、ターゲットコードを格納する少なくとも1つの部分を有する、エミュレートされたメモリを含む。前記プロキシ仮想マシンは、前記ホスト中央処理装置によって実行されると、前記仮想プロセッサによって前記ターゲットコードを実行するよう構成されている。
本開示の一実施例は、ターゲットハードウェア装置用のトレーナーシステム(trainer system)に関する。当該トレーナーシステムは、ユーザから入力データを受け取るよう構成されたユーザインターフェースと、前記ユーザインターフェースに接続されたホストコンピュータと、ホスト中央処理装置(CPU)と、を具備している。前記ホストコンピュータは、前記ターゲットハードウェア装置をエミュレートするプロキシ仮想マシン(VM)を格納するメモリを含み、当該プロキシ仮想マシンは、ターゲットプロセッサをエミュレートするための仮想プロセッサと、仮想メモリバスを介して前記仮想プロセッサに接続されているとともに、ターゲットコードを格納する少なくとも1つの部分を有する、エミュレートされたメモリと、を含む。前記ホスト中央処理装置は、前記プロキシ仮想マシンを実行することによって前記ターゲットハードウェアをエミュレートするよう構成されている。前記プロキシ仮想マシンは、前記ホスト中央処理装置によって実行されると、前記仮想プロセッサによって前記ターゲットコードを実行するよう構成されている。
本開示の一実施例は、組み込みシステム用のテストベンチであって、ホストコンピュータを具備する。前記ホストコンピュータは、入力テストデータを受け取るためのホスト通信インターフェースと、設計が未完成のターゲットハードウェア装置をエミュレートするプロキシ仮想マシン(VM)を格納するメモリと、前記プロキシ仮想マシンを実行することによって前記ターゲットハードウェアをエミュレートするよう構成されたホスト中央処理装置と、を具備している。前記プロキシ仮想マシンは、ターゲットプロセッサをエミュレートするための仮想プロセッサ、及び、仮想メモリバスを介して前記仮想プロセッサに接続されているとともに、ターゲットコードを格納する少なくとも1つの部分を有する、エミュレートされたメモリを含む。前記プロキシ仮想マシンは、前記ホスト中央処理装置によって実行されると、前記仮想プロセッサによって前記ターゲットコードを実行して前記入力テストデータを実行するよう構成されている。

Claims (15)

  1. 設計が未完成のターゲットハードウェアをエミュレートするプロキシ仮想マシン(VM)を格納するメモリであって、前記プロキシ仮想マシンが、
    ターゲットプロセッサをエミュレートするための仮想プロセッサ、及び、
    仮想メモリバスを介して前記仮想プロセッサと通信するとともに、ターゲットコードを格納する少なくとも1つの部分を有しているエミュレートされたメモリ、を含んでいるメモリと、
    前記プロキシ仮想マシンを実行することによって前記ターゲットハードウェアをエミュレートするよう構成されたホスト中央処理装置(CPU)と、を具備するホストコンピュータであって、前記プロキシ仮想マシンは、前記ホスト中央処理装置によって実行されると、前記仮想プロセッサによって前記ターゲットコードを実行する構成とされている、ホストコンピュータ。
  2. 前記プロキシ仮想マシンは、前記ホスト中央処理装置によって実行されると、さらに、少なくとも1つのターゲットコード開発ツールを実行するよう構成されている、請求項1に記載のホストコンピュータ。
  3. 前記ターゲットコードは、少なくとも1つの周辺ハードウェア抽象化レイヤと対話するが前記未完成の設計において省略されている周辺ハードウェアとは対話しない、少なくとも1つの機能アプリケーションを含む、請求項1又は2に記載のホストコンピュータ。
  4. さらに、前記ターゲットハードウェアに含まれる周辺ハードウェア装置を含んでおり、前記プロキシ仮想マシンは、さらに、前記周辺ハードウェア装置に対応するハードウェア抽象化レイヤであって、前記ターゲットコードが前記プロキシ仮想マシンによって実行されると、前記周辺ハードウェア装置用のホストドライバを使用するよう構成されたハードウェア抽象化レイヤを含む、請求項1~3のいずれか1つに記載のホストコンピュータ。
  5. 前記プロキシ仮想マシンは、前記ターゲットハードウェアの完成した設計には含まれない周辺ハードウェアに対応する仮想化周辺ハードウェア装置を含む、請求項1~4のいずれか1つに記載のホストコンピュータ。
  6. 前記プロキシ仮想マシンは、さらに、前記プロキシ仮想マシンのエミュレートされた入出力装置と物理ホスト入出力装置とを接続する仮想ペリフェラルバスを含む、請求項1~5のいずれか1つに記載のホストコンピュータ。
  7. 前記エミュレートされたメモリは、さらに、オペレーティングシステム(OS)及びボードサポートパッケージ(BSP)を格納する部分を有する、請求項1~6のいずれか1つに記載のホストコンピュータ。
  8. さらに、エミュレートされたペリフェラルバスに接続された仮想通信インターフェースを含んでおり、前記エミュレートされたメモリは、さらに、テスト入力データを格納する部分を有しており、前記プロキシ仮想マシンは、前記ホスト中央処理装置によって実行されると、さらに、
    前記仮想プロセッサによって前記ターゲットコードを実行して前記テスト入力データを処理し、
    前記ターゲットコードの実行に対応して、前記仮想通信インターフェースを介してテスト出力データを書き出すよう構成されている、請求項1~7のいずれか1つに記載のホストコンピュータ。
  9. 設計が未完成のターゲットハードウェア用のターゲットコードを実行する方法であって、
    前記設計が未完成のターゲットハードウェアをエミュレートするためのプロキシ仮想マシン(VM)であって、仮想プロセッサ、エミュレートされたメモリ、及び、仮想通信インターフェースを含むプロキシ仮想マシンを実行することと、
    前記エミュレートされたメモリに格納された前記ターゲットコードを前記プロキシ仮想マシン上で実行することと、
    前記プロキシ仮想マシン上で入力データにアクセスすることと、
    前記ターゲットコードによって前記入力データを処理することと、
    前記ターゲットコードの実行に対応して、前記仮想通信インターフェースを介して出力データを書き出すことと、を含む方法。
  10. さらに、ホストプロセッサによって、前記プロキシ仮想マシン上で仮想バスを介して出力データにアクセスすることを含む、請求項9に記載の方法。
  11. さらに、前記エミュレートされたメモリに格納されたオペレーティングシステム(OS)を前記プロキシ仮想マシン上で実行することを含む、請求項9又は10に記載の方法。
  12. 前記プロキシ仮想マシンが、さらに、前記仮想プロセッサに接続されたブートローダであって、前記プロキシ仮想マシンの起動時に、前記エミュレートされたメモリの一部から前記オペレーティングシステム及びボードサポートパッケージ(BSP)をロードするよう構成されたブートローダを含むものである、請求項11に記載の方法。
  13. さらに、前記仮想通信インターフェースを介して前記プロキシ仮想マシンに接続された少なくとも1つのターゲットコード開発ツールを実行することを含む、請求項9~12のいずれか1つに記載の方法。
  14. 前記ターゲットコードを実行することは、少なくとも1つの周辺ハードウェア抽象化レイヤと対話するが前記未完成の設計において省略されている周辺ハードウェアとは対話しない少なくとも1つの機能アプリケーションを前記プロキシ仮想マシン上で実行することを含む、請求項9~13のいずれか1つに記載の方法。
  15. ターゲットハードウェアをエミュレートするプロキシ仮想マシン(VM)を格納するメモリであって、前記プロキシ仮想マシンが、
    ターゲットプロセッサをエミュレートするための仮想プロセッサ、及び、
    仮想メモリバスを介して前記仮想プロセッサに接続されているとともに、ターゲットコードを格納する少なくとも1つの部分を有しているエミュレートされたメモリ、を含んでいるメモリと、
    前記プロキシ仮想マシンを実行することによって前記ターゲットハードウェアをエミュレートするよう構成されたホスト中央処理装置(CPU)と、を具備するホストコンピュータであって、前記プロキシ仮想マシンは、前記ホスト中央処理装置によって実行されると、前記仮想プロセッサによって前記ターゲットコードを実行する構成とされている、ホストコンピュータ。
JP2021129684A 2020-08-26 2021-08-06 ハードウェア設計用のターゲットコードを開発及びテストするための仮想マシン Pending JP2022040001A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US202063070555P 2020-08-26 2020-08-26
US63/070,555 2020-08-26

Publications (1)

Publication Number Publication Date
JP2022040001A true JP2022040001A (ja) 2022-03-10

Family

ID=76522891

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021129684A Pending JP2022040001A (ja) 2020-08-26 2021-08-06 ハードウェア設計用のターゲットコードを開発及びテストするための仮想マシン

Country Status (6)

Country Link
US (1) US20220066911A1 (ja)
EP (1) EP3961389A1 (ja)
JP (1) JP2022040001A (ja)
KR (1) KR20220027027A (ja)
CN (1) CN114116116A (ja)
CA (1) CA3123074A1 (ja)

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5546562A (en) * 1995-02-28 1996-08-13 Patel; Chandresh Method and apparatus to emulate VLSI circuits within a logic simulator
US7580826B2 (en) * 2004-06-30 2009-08-25 Microsoft Corporation Systems and methods for development of emulated devices in a virtual machine environment
US8274518B2 (en) * 2004-12-30 2012-09-25 Microsoft Corporation Systems and methods for virtualizing graphics subsystems
US8490070B2 (en) * 2005-11-16 2013-07-16 Myriad Group Ag Unified mobile platform
JP2009244999A (ja) * 2008-03-28 2009-10-22 Fujitsu Ltd 仮想マシン管理プログラム及び管理サーバ装置
US8612633B2 (en) * 2010-03-31 2013-12-17 Microsoft Corporation Virtual machine fast emulation assist
US8966478B2 (en) * 2011-06-28 2015-02-24 The Boeing Company Methods and systems for executing software applications using hardware abstraction
US20140331209A1 (en) * 2013-05-02 2014-11-06 Amazon Technologies, Inc. Program Testing Service
US9910765B2 (en) * 2014-05-22 2018-03-06 Citrix Systems, Inc. Providing testing environments for software applications using virtualization and a native hardware layer
US9552309B2 (en) * 2014-06-04 2017-01-24 Ixia Methods, systems, and computer readable media for providing precise timing in virtual data network or storage network test environment
US9645625B2 (en) * 2015-02-19 2017-05-09 American Megatrends, Inc. System and method for power management of computing devices in a virtual desktop infrastructure
US9684743B2 (en) * 2015-06-19 2017-06-20 Synopsys, Inc. Isolated debugging in an FPGA based emulation environment
US9569249B1 (en) * 2015-09-08 2017-02-14 International Business Machines Corporation Pattern design for heterogeneous environments
US20170083652A1 (en) * 2015-09-18 2017-03-23 Synopsys, Inc. Saving and restoring an emulation environment
US10078528B2 (en) * 2015-10-06 2018-09-18 Centurylink Intellectual Property Llc Virtual machine-to-port peripheral device driver for implementing communications between virtual machines and client devices
KR102335715B1 (ko) * 2015-12-04 2021-12-06 한국전자기술연구원 가상화 기반의 임베디드 하드웨어 개발 및 검증 프레임워크 구조
US9917855B1 (en) * 2016-03-03 2018-03-13 Trend Micro Incorporated Mixed analysys-based virtual machine sandbox
US20180357150A1 (en) * 2017-06-07 2018-12-13 Embeddetech, Inc. System for development and emulation of embedded systems
US10725890B1 (en) * 2017-07-12 2020-07-28 Amazon Technologies, Inc. Program testing service
US10705933B2 (en) * 2017-07-18 2020-07-07 The Boeing Company System integration using virtualization
US20190121745A1 (en) * 2017-10-20 2019-04-25 Microsoft Technology Licensing, Llc Remapping virtual devices for virtual machines
US11175937B2 (en) * 2018-03-30 2021-11-16 The Boeing Company Virtualized avionics systems for operational environments
US11347531B2 (en) * 2018-10-31 2022-05-31 The Boeing Company Generalized virtualization platform for systems using hardware abstraction software layers

Also Published As

Publication number Publication date
US20220066911A1 (en) 2022-03-03
KR20220027027A (ko) 2022-03-07
EP3961389A1 (en) 2022-03-02
CN114116116A (zh) 2022-03-01
CA3123074A1 (en) 2022-02-26

Similar Documents

Publication Publication Date Title
JP5706036B2 (ja) 複合仮想グラフィクスデバイス
US9921949B2 (en) Software testing
EP3382536B1 (en) Emulation of hardware components
US7581037B2 (en) Effecting a processor operating mode change to execute device code
JP7321839B2 (ja) ハードウェア抽象化ソフトウェアレイヤを使用するシステムのための汎用仮想化プラットフォーム
US9952887B2 (en) Device simulation in a secure mode supported by hardware architectures
CN111353263A (zh) 软硬件设计与验证平台系统
CN114830135A (zh) 算子的层次分区
US10534732B2 (en) Exposing memory-mapped IO devices to drivers by emulating PCI bus and PCI device configuration space
US10467078B2 (en) Crash dump extraction of guest failure
CN113868174B (zh) 验证平台搭建方法、装置及存储介质
CN102054088B (zh) 用于原型制作片上系统设计的虚拟平台
US7016826B2 (en) Apparatus and method of developing software for a multi-processor chip
EP3435229B1 (en) System integration using virtualization
US20040193394A1 (en) Method for CPU simulation using virtual machine extensions
US20050091022A1 (en) Ultra fast multi-processor system simulation using dedicated virtual machines
JP2022040001A (ja) ハードウェア設計用のターゲットコードを開発及びテストするための仮想マシン
AU2017438670B2 (en) Simulation device, simulation method, and simulation program
US7447618B2 (en) Method and system for ASIC simulation
US11620144B2 (en) Qualifying a device driver for a device
JP2019179284A (ja) シミュレーションシステム、及びシミュレーションプログラム
US11620120B1 (en) Configuration of secondary processors
JP2022048996A (ja) グラフィクス関数を仮想化するための仮想マシン
CN116700897A (zh) 计算环境模板的创建方法、装置、计算设备及存储介质
KR20240009779A (ko) 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 디바이스 드라이버 가상화 장치 및 방법