IP Library Granted Patent US 12,222,842
Granted Patent B2
US 12,222,842 · App. 17/409,516 · Granted Feb 11, 2025

Virtual machine for developing and testing target code for hardware designs

Inventor: Jonathan Nicholas Hotra (Maryland Heights, MO)
Assignee: The Boeing Company
G06F11/3664G06F9/45508G06F2009/45591
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,222,842
App. No.
17/409,516
Granted
Feb 11, 2025
Kind
B2
Abstract

A host computer includes a memory storing a proxy VM, and a host CPU. The proxy VM emulates target hardware having an incomplete design. The proxy VM includes a virtual processor for emulating a target processor. The proxy VM includes an emulated memory coupled to the virtual processor over a virtual memory bus. The emulated memory includes at least one portion storing the target code. The host CPU is configured to execute the proxy VM to emulate the target hardware. The proxy VM, upon execution by the host CPU, is configured to execute, by the virtual processor, the target code.

Claims (76)

1. A host computer comprising:

a memory configured to store a proxy virtual machine (VM) for emulating target hardware having an incomplete design, the proxy VM including:

an emulated Ethernet controller;

a virtual processor for emulating a target processor; and

emulated memory in communication with the virtual processor via a virtual memory bus, the emulated memory including at least one portion storing target code; and

a host central processing unit (CPU) configured to:

execute the proxy VM to emulate the target hardware, wherein the proxy VM, upon execution by the host CPU, is configured to execute, by the virtual processor, the target code to interact with at least the emulated Ethernet controller; and

update the proxy VM to omit the emulated Ethernet controller and to include a target hardware I/O device, wherein the updated proxy VM is reconfigured to execute, by the virtual processor, the target code to interact with at least the target hardware I/O device.

2. The host computer of claim 1 , wherein the proxy VM, upon execution by the host CPU, is further configured to execute at least one target code development tool.

3. The host computer of claim 1 , wherein the target code comprises at least one functional application that interacts with at least one peripheral hardware abstraction layer, and does not interact with corresponding peripheral hardware omitted from the incomplete design.

4. The host computer of claim 1 , further comprising a peripheral hardware device included in the target hardware, wherein the proxy VM further includes a hardware abstraction layer corresponding to the peripheral hardware device and configured to use host drivers for the peripheral hardware device upon execution of the target code by the proxy VM.

5. The host computer of claim 1 , wherein the proxy VM includes a virtualized peripheral hardware device corresponding to peripheral hardware that is not included in a complete design of the target hardware.

6. The host computer of claim 1 , wherein the proxy VM further comprises a virtual peripheral bus coupling the proxy VM emulated I/O devices and physical host I/O devices.

7. The host computer of claim 1 , wherein the emulated memory further includes a portion storing an operating system (OS) and a board support package (BSP).

8. The host computer of claim 1 , wherein the emulated Ethernet controller is coupled to an emulated peripheral bus, wherein the emulated memory further includes a portion storing test input data, and wherein the proxy VM, upon execution by the host CPU, is further configured to:

execute, by the virtual processor, the target code to operate on the test input data; and

write-out test output data over the emulated Ethernet controller in response to execution of the target code.

9. A method of executing target code for target hardware having an incomplete design, the method comprising:

executing a proxy virtual machine (VM) for emulating the target hardware for the incomplete design, the proxy VM including a virtual processor, an emulated memory, and a virtual communication interface comprising an emulated Ethernet controller;

executing, within the proxy VM, the target code stored in the emulated memory to interact with at least the emulated Ethernet controller;

gaining access to input data within the proxy VM;

operating, by the target code, on the input data;

writing output data over the virtual communication interface in response to execution of the target code;

updating the virtual communication interface to omit the emulated Ethernet controller and to include a target hardware I/O device; and

executing, within the proxy VM, the target code in the emulated memory to interact with at least the target hardware I/O device.

10. The method of claim 9 further comprising gaining access, by a host processor, to output data over a virtual bus within the proxy VM.

11. The method of claim 9 , further comprising executing, within the proxy VM, an operating system (OS) stored in the emulated memory.

12. The method of claim 11 , wherein the proxy VM further includes a bootloader coupled to the virtual processor and configured to load the OS and a board support package (BSP) from a portion of the emulated memory at startup of the proxy VM.

13. The method of claim 9 , further comprising executing at least one target code development tool coupled to the proxy VM over the virtual communication interface.

14. The method of claim 9 , wherein executing the target code comprises executing, within the proxy VM, at least one functional application that interacts with at least one peripheral hardware abstraction layer, and does not interact with corresponding peripheral hardware omitted from the incomplete design.

15. A non-transitory computer-readable memory storing a proxy virtual machine (VM) for emulating target hardware having an incomplete design, the proxy VM including:

a virtual processor for emulating a target processor;

emulated memory coupled to the virtual processor over a virtual memory bus, the emulated memory including at least one portion storing a board support package (BSP) and target code; and

a virtual communication interface coupled to virtual processor via an emulated peripheral bus, wherein the virtual communication interface comprises an emulated Ethernet controller;

wherein the proxy VM, upon execution by a host central processing unit (CPU), is configured to:

execute the target code stored in the emulated memory to interact with at least the emulated Ethernet controller;

gain access to input data within the proxy VM;

operate, by the target code, on the input data;

write output data over the virtual communication interface in response to execution of the target code;

update the virtual communication interface to omit the emulated Ethernet controller and to include a target hardware I/O device; and

execute the target code in the emulated memory to interact with at least the target hardware I/O device.

16. The non-transitory computer-readable memory of claim 15 , wherein the emulated memory of the proxy VM includes:

virtual random access memory (RAM) coupled to the virtual processor over the virtual memory bus; and

virtual non-volatile memory coupled to the virtual memory bus and storing the BSP and the target code.

17. The non-transitory computer-readable memory of claim 16 , wherein the proxy VM further includes a bootloader coupled to the virtual processor and configured to load an operating system (OS) and the BSP from the virtual non-volatile memory at startup.

18. The non-transitory computer-readable memory of claim 15 , wherein the target hardware and the proxy VM each do not include device drivers for peripheral hardware.

19. The non-transitory computer-readable memory of claim 15 , wherein the target processor and an operating system (OS) form the incomplete design.

20. The computer-readable memory of claim 15 , wherein the proxy VM includes a virtualized peripheral hardware device corresponding to peripheral hardware that is not included in a complete design of the target hardware.

21. A host computer comprising:

a memory configured to store a proxy virtual machine (VM) for emulating target hardware, the proxy VM including:

a virtual communication interface comprising an emulated Ethernet controller;

a virtual processor for emulating a target processor; and

emulated memory coupled to the virtual processor over a virtual memory bus, the emulated memory including at least one portion storing target code; and

a host central processing unit (CPU) configured to:

execute the proxy VM to emulate the target hardware, wherein the proxy VM, upon execution by the host CPU, is configured to execute, by the virtual processor, the target code to interact with at least the emulated Ethernet controller; and

update the virtual communication interface to omit the emulated Ethernet controller, wherein the updated proxy VM is reconfigured to execute the target code to interact with at least a target hardware I/O device.

22. A trainer system for a target hardware device, the trainer system comprising:

a user interface configured to receive input data from a user;

a host computer coupled to the user interface, the host computer comprising:

a memory configured to store a proxy virtual machine (VM) for emulating the target hardware device, the proxy VM including:

an emulated Ethernet controller;

a virtual processor for emulating a target processor; and

emulated memory coupled to the virtual processor over a virtual memory bus, the emulated memory including at least one portion storing target code; and

a host central processing unit (CPU) configured to:

execute the proxy VM to emulate the target hardware, wherein the proxy VM, upon execution by the host CPU, is configured to execute, by the virtual processor, the target code to interact with at least the emulated Ethernet controller; and

update the proxy VM to omit the emulated Ethernet controller and to include a target hardware I/O device, wherein the updated proxy VM is reconfigured to execute the target code to interact with at least the target hardware I/O device.

23. A test bench for an embedded system, the test bench comprising:

a host computer comprising:

a host communication interface configured to receive input test data;

a memory configured to store a proxy virtual machine (VM) for emulating a target hardware device having an incomplete design, the proxy VM including:

an emulated Ethernet controller;

a virtual processor for emulating a target processor; and

emulated memory coupled to the virtual processor over a virtual memory bus, the emulated memory including at least one portion storing target code; and

a host central processing unit (CPU) configured to:

execute the proxy VM to emulate the target hardware, wherein the proxy VM, upon execution by the host CPU, is configured to execute, by the virtual processor, the target code to interact with at least the emulated Ethernet controller to operate on the input test data; and

update the proxy VM to omit the emulated Ethernet controller and to include a target hardware I/O device, wherein the updated proxy VM is reconfigured to execute the target code to interact with at least the target hardware I/O device.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 23, 2021
From: HOTRA, JONATHAN NICHOLAS
To: THE BOEING COMPANY
Reel/Frame 057261/0413 →
Continuity (2)
Provisional Application 63070555 · Aug 26, 2020
Related Publication 20220066911A1 · Mar 3, 2022
References Cited (45)
US 5546562A · Patel · 1996 [cited by examiner]
US 8966478B2 · Hotra et al. · 2015 [cited by applicant]
US 9003405B1 · Hotra · 2015 [cited by applicant]
US 9323576B2 · Hotra et al. · 2016 [cited by applicant]
US 9917855B1 · Li · 2018 [cited by examiner]
US 10108445B2 · Hotra · 2018 [cited by applicant]
US 10289442B1 · Hotra · 2019 [cited by applicant]
US 10725890B1 · Goyal · 2020 [cited by examiner]
US 20060004554A1 · Vega et al. · 2006 [cited by applicant]
US 20060146057A1 · Blythe · 2006 [cited by examiner]
US 20070168953A1 · Diez · 2007 [cited by examiner]
US 20090249333A1 · Yamaguchi · 2009 [cited by examiner]
US 20110246171A1 · Cleeton · 2011 [cited by examiner]
US 20140331209A1 · Singh · 2014 [cited by examiner]
US 20150356031A1 · Gintis · 2015 [cited by examiner]
US 20160246341A1 · Burrell · 2016 [cited by examiner]
US 20160371407A1 · Larzul · 2016 [cited by examiner]
US 20170083652A1 · Larzul · 2017 [cited by examiner]
US 20170097842A1 · Bugenhagen · 2017 [cited by examiner]
US 20170116024A1 · Ghosh · 2017 [cited by examiner]
US 20180357150A1 · Chaubey et al. · 2018 [cited by applicant]
US 20190026204A1 · Hotra · 2019 [cited by applicant]
US 20190068456A1 · Lotfi · 2019 [cited by examiner]
US 20190121745A1 · Hoppert · 2019 [cited by examiner]
US 20190303188A1 · Shelton et al. · 2019 [cited by applicant]
US 20200133705A1 · Hotra · 2020 [cited by examiner]
CN 104133378B · 2014 [cited by applicant]
CN 105160957A · 2015 [cited by applicant]
CN 206097684U · 2017 [cited by applicant]
CN 108629837A · 2018 [cited by applicant]
CN 109509243A · 2019 [cited by applicant]
CN 110246227A · 2019 [cited by applicant]
CN 110308997A · 2019 [cited by applicant]
CN 110532300A · 2019 [cited by applicant]
EP 3435229A1 · 2019 [cited by applicant]
EP 364956A1 · 2020 [cited by applicant]
KR 1020170065965A · 2017 [cited by examiner]
WO 2015179603A1 · 2015 [cited by applicant]
Bridges et al., “Virtual-machine-based emulation of future generation high-performance computing systems,” SAGE, 2012, 11pg. (Year: 2012). [cited by examiner]
Eschweiler et al., “Test Driven Development for Device Drivers and Rapid Hardware Prototyping,” IEEE, 2015, 9pg. (Year: 2015). [cited by examiner]
Slater et al., “Real-time emulation for power equipment development. Part 2: The virtual machine,” IEE, 1998, 6pg. (Year: 1998). [cited by examiner]
Li et al., “A Novel Hardware-assisted Virtualization Approach for Network Interface Card,” IEEE, 2009, 4pg. (Year: 2009). [cited by examiner]
Rizzo et al., “VALE, a Switched Ethernet for Virtual Machines,” ACM, 2012, 12pg. (Year: 2012). [cited by examiner]
Willman et al,. “Protection Strategies for Direct Access to Virtualized I/O Devices,” USENIX, 2008, 15pg. (Year: 2008). [cited by examiner]
European Patent Office, Office Action Issued in Application No. 21180257.4, Mar. 21, 2024, Germany, 6 pages. [cited by applicant]
Cited By (1)
US 12,681,833