CN114116116A - 针对硬件设计开发和测试目标代码的虚拟机 - Google Patents
针对硬件设计开发和测试目标代码的虚拟机 Download PDFInfo
- Publication number
- CN114116116A CN114116116A CN202110752794.7A CN202110752794A CN114116116A CN 114116116 A CN114116116 A CN 114116116A CN 202110752794 A CN202110752794 A CN 202110752794A CN 114116116 A CN114116116 A CN 114116116A
- Authority
- CN
- China
- Prior art keywords
- proxy
- virtual machine
- target
- hardware
- virtual
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3664—Environments for testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3696—Methods or tools to render software testable
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45545—Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network 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
本发明涉及针对硬件设计开发和测试目标代码的虚拟机。主机计算机包括存储有代理VM的存储器和主机CPU。代理VM对具有不完整设计的目标硬件进行模拟。代理VM包括用于模拟目标处理器的虚拟处理器。代理VM包括通过虚拟存储器总线联接至虚拟处理器的模拟存储器。模拟存储器包括存储有目标代码的至少一部分。主机CPU被配置为执行代理VM,以对目标硬件进行模拟。代理VM在由主机CPU执行时被配置为由虚拟处理器执行目标代码。
Description
技术领域
本发明涉及针对硬件设计开发和测试目标代码的虚拟机。
背景技术
在新的嵌入式系统设计开始时,对最终目标硬件设计或将在该目标硬件上运行的嵌入式软件知之甚少。通常,随着硬件设计的成熟,软件开发会并行进行,从而经历多次迭代开发和测试。开发和测试通常在最终目标硬件以外的硬件上进行,例如,在运行商业操作系统(OS)的个人计算机(PC)上的集成开发环境(IDE)内进行。因此,在硬件设计不完整时,可以进行的至少一些测试的保真度可能存在“差距”。由于诸如应用软件重新托管的技术使得重新托管的应用软件能够在PC而不是目标硬件软件堆栈的其它要素(诸如实时OS)上运行,因此保真度也可能存在差距。这些差距可以导致目标软件和目标硬件的全保真度测试延迟,这可以导致较晚检测出问题,这可以导致嵌入式系统开发接近完成时的另外的迭代开发和测试。
本部分旨在向读者介绍可以与本公开的各方面相关的技术的各方面,下面描述了和/或要求保护了所述方面。该讨论被认为有助于为读者提供背景信息以便于更好地理解本公开的各方面。因此,应理解,这些陈述应根据这一点来阅读,而不是作为对现有技术的承认。
发明内容
一个示例涉及用于开发、测试和执行目标代码的主机计算机,该主机计算机包括存储有代理VM的存储器和主机CPU。代理VM对具有不完整设计的目标硬件进行模拟。代理VM包括用于对目标处理器进行模拟的虚拟处理器。代理VM包括通过虚拟存储器总线联接至虚拟处理器的模拟存储器。模拟存储器包括存储有目标代码的至少一部分。主机CPU被配置为执行代理VM,以对目标硬件进行模拟。代理VM在由主机CPU执行时被配置为由虚拟处理器执行目标代码。
存在关于上述方面记录的特征的各种改进。另外的特征也可以并入上述方面中。这些改进和附加特征可以单独存在或以任何组合存在。例如,以下关于所示示例中的任何示例讨论的各种特征可以单独或以任何组合并入上述方面中的任何方面。
附图说明
图1是示例航空电子设备的框图;
图2是用于模拟图1所示的航空电子设备的示例主机计算机的框图;
图3是用于模拟图1所示的航空电子设备的示例虚拟机的框图;
图4是示例主机计算机的框图;以及
图5是在模拟图1所示的航空电子设备的虚拟机中执行的目标代码中执行图形函数调用的示例方法的流程图。
贯穿附图的多个视图,对应附图标记表示对应部分。尽管可以在一些附图中而不在其它附图中示出各种示例的具体特征,但这仅仅是为了方便。任何附图的任何特征可以与任何其它附图的任何特征结合引用和/或要求保护。
具体实施方式
本文的示例至少提供了一些测试,所述测试可以通过在虚拟机(VM)内使用虚拟硬件在开发周期早期进行。虚拟化是指通过经由管理程序在本地或主机计算机上执行的软件程序(诸如VM)对给定硬件单元进行模仿或模拟。虚拟化使得能够在无需通过软件重新托管进行修改或不需要完整目标硬件测试平台的情况下测试目标软件,这对于大型或复杂的系统开发而言可以是成本高昂且需求量很大的。对目标硬件(例如,如单板计算机(SBC)或通信总线控制器)进行虚拟化通常需要详细了解特定目标硬件和固件,以构建对目标硬件进行模仿或模拟的、功能与真正的目标硬件相当的VM。如本文所使用的,目标硬件是指被VM虚拟化的嵌入式系统或数据处理系统的实际硬件单元。
本文中的示例提供了与可用的目标硬件紧密匹配以执行目标硬件或目标软件的早期开发和测试的VM。因此,在开发硬件设计时利用了虚拟化。
出于本公开的目的,尽管主机计算机可以并入目标硬件的一个或更多个其它方面,但术语“虚拟化”和“模拟”可互换使用以指代正对目标硬件进行模拟的任何方面的VM。
所公开的主机计算机为嵌入式系统的不完整硬件设计提供了用于开发和测试目标软件或目标代码的代理VM。更具体地,代理VM仅包括硬件设计的在设计的早期阶段已知的核心方面。例如,处理器类型和OS通常是在设计的早期阶段(即,在不完整硬件设计中)确定的。其它方面(诸如用于现场可编程门阵列(FPGA)和专用集成电路(ASIC)的固件,或用于输入/输出(I/O)设备的设计)通常是在硬件设计过程的很晚之后(其可以是在确定了硬件设计的核心方面后的数月或数年)才确定的。因此,嵌入式系统的目标硬件的许多方面(包括需求、设计、接口以及输入和输出数据定义)可能会在开发过程中发生变化。
至少包括目标处理器和目标OS的模拟的代理VM使得可以使用IDE、编译器和目标OS或与目标OS相同或非常相似的另一现成OS的其它开发工具对应用软件进行早期开发和测试。出于本公开的目的,术语“开发工具”是指可以用于开发、测试或执行正在开发的软件或用于开发或测试目标硬件的任何软件模块、程序、库或其它应用。例如,代理VM的OS利用与目标OS相同或非常相似的堆栈。在另选示例中,尽管例如在针对用于目标OS的单个开发工具集进行开发和测试时相似的OS有利于提高效率,但OS不需要与目标OS相似。在其它另选示例中,代理VM可以省略目标OS以利用“裸机(bare metal)”进行操作。在这样的示例中,仍然可以使用IDE、编译器、调试器或用于裸机实现的其它开发工具来进行开发和测试。早期的应用软件通常包括原子级(atomic-level)功能、应用编程接口(API)和设备驱动程序(一旦设计了目标I/O设备)。这些早期的软件部件经受了“白盒”测试,并且通常不需要与嵌入式系统的硬件方面直接交互。此外,可以模拟目标硬件和设备驱动程序的早期迭代,以测试和评估硬件设计选项。这种早期利用虚拟化消除了开发后期的返工和重新托管工作,所述返工和重新托管工作通常是由于在典型开发人员的PC上运行的OS与IDE的差异造成的。开发或“重新托管”环境与目标环境之间的差异通常是在开发后期当完整硬件设计可用时解决的。
图1是嵌入式系统100的示例目标硬件的框图。嵌入式系统100可以是航空电子系统(例如,飞行管理计算机(FMC)或飞行控制计算机(FCC))。尽管所公开的系统和方法有时在航空电子方面进行了描述,但是该系统和方法也可以应用于可以受益于缩短的开发周期的任何其它计算系统,例如,用于陆地、海洋或空间载具。
图1例示了嵌入式系统100的示例完整设计。嵌入式系统100包括直接联接至存储器高速缓存部104(诸如1级或2级高速缓存部)的处理器102。嵌入式系统100还包括例如经由前端总线直接联接至处理器102的主机桥(host bridge)106。主机桥106对例如通过存储器总线108(诸如X总线)和I/O或外围总线110(诸如外围部件互连(PCI)总线、PCI express、PCI-X、集成驱动电子(IDE)总线、串行高级技术附接(SATA)总线)或用于将I/O设备112连接至处理器102的任何其它合适的通信介质与处理器102的通信进行控制。主机桥106可以在处理芯片(诸如ASIC或FPGA)上实现,并且可以包括附加功能(例如,如中断控制器)。I/O设备112可以包括例如传感器、通信接口、外围接口或其它外围硬件设备,它们可以在PCI夹层卡(PMC)114上实现。嵌入式系统100包括附加总线桥(包括Versa模块欧洲卡(VME)总线控制器116)。嵌入式系统100包括用于通过通信总线进行发送和接收的至少两个通信接口:以太网控制器118和串行控制器128。在某些示例中,I/O设备可以包括外围接口,诸如音频或视频互连。
存储器总线108通过主机桥106将各种存储器设备连接至处理器102。例如,存储器设备可以包括通常仅对处理器102可用的随机存取存储器(RAM)(诸如同步动态RAM(SDRAM))120。嵌入式系统100在主机桥106与可以由除处理器102之外的其它设备访问的附加存储器设备之间在存储器总线108上包括直接存储器访问(DMA)缓冲器122。例如,嵌入式系统100包括用于大存储、非易失性RAM(NVRAM)126的存储器124,以及联接至高速总线130(诸如PCI-X总线)的串行总线控制器128。DMA缓冲器122使得能够在不消耗处理器102的处理周期的情况下访问存储器124和NVRAM 126。
例如,存储器124为用于嵌入式系统100的OS 132和板级支持包(BSP)134提供存储。存储器124还可以存储用于嵌入式系统100的其它应用软件和数据。NVRAM 126通常是针对低级配置数据(诸如基本输入输出系统(BIOS)136或“引导加载程序”)保留的体积显著较小的存储器。
图2是嵌入式系统100的目标硬件的不完整硬件设计的框图。在开发的早期阶段,当硬件设计“不完整”时,只有硬件设计的核心方面(诸如处理器102和OS 132)是已知的。不完整设计可以包括需求中指定的各方面,但这些方面的设计或硬件设备选择是不确定的并且可以变化。相比之下,完整硬件设计将包括完成的所有硬件设备选择和所有硬件设计方面。随着硬件设计的进展,仍然不完整硬件设计可以演变为包括某些I/O设备112(诸如通信接口138)。例如,通信接口138可以包括ARINC 429或MIL-STD-1553PCI夹层卡。通信接口138也可以是与以太网控制器118相同或相似的以太网控制器。在一些示例中,通信接口138可以包括与最终目标以太网控制器118不相似的所选择的以太网控制器,只要所选择的以太网控制器充分支持标准以太网协议,所选择的以太网控制器就是可接受的。否则,不完整硬件设计通常缺少任何I/O设备、完全实现的存储器或外围总线、或ASIC或FPGA的完全实现的固件。
图3是用于台式测试环境的示例高保真度软件测试架构300的框图。架构300通常嵌入在台式计算机(例如,PC或“主机计算机”)上而不是包括真正目标硬件的硬件测试平台。架构300还可以在利用PC虚拟机或服务器的云计算平台上实现。在某些示例中,架构300可以在诸如平板计算机或智能电话的移动计算设备上实现。架构300包括代理VM 302,该代理VM对图2所示的嵌入式系统100的原本不完整硬件设计的核心方面进行模拟。代理VM 302在主机计算机的OS 304和硬件抽象层之上执行或运行。出于本公开的目的,硬件抽象层通常指API 306,其包括例如用于与OS 304交互(诸如进程间通信机制)的接口(例如,共享存储器或插孔)。在某些示例中,API 306还可以包括用于协调代理VM 302的操作的管理程序。主机计算机通常包括主机中央处理单元(CPU)308和各种主机I/O设备310。主机I/O设备310可以包括例如图形接口(其包括图形处理单元(GPU))、音频外围设备、网络接口控制器(NIC)、键盘和鼠标或其它外围设备。在某些示例中,架构300可以在主机I/O设备310中包括目标硬件。架构300包括设备驱动程序312,该设备驱动程序在主机I/O设备310、OS 304、API306和任何应用软件(被执行与主机I/O设备310交互)当中进行交互。例如,代理VM 302通过API 306、OS 304和设备驱动程序312与主机I/O设备310交互。
代理VM 302通常包括虚拟处理器314,当处理器102与主机计算机的处理器不匹配时,该虚拟处理器对嵌入式系统100的处理器102进行模拟。另选地,如果目标处理器102与主机计算机的处理器相匹配,则代理VM 302可以省略虚拟处理器314。代理VM 302还包括与模拟硬件和OS 316的组合相对应的OS 316和BSP 318。OS 316和BSP 318存储在经由虚拟存储器总线连接至虚拟处理器314的模拟存储器的一个或更多个部分中。在某些示例中,这样的虚拟存储器总线是概念性存储器总线或存储器构造、在虚拟化层中实现,以实现存储器映射的构建以及实现VM与主机硬件之间的数据传输。OS 316与嵌入式系统100的OS 132相同或非常相似。BSP 318包括用于虚拟处理器314运行OS 316的配置信息,包括例如存储器映射和中断映射。值得注意的是,在嵌入式系统100的早期开发阶段,当硬件设计不完整时,代理VM 302通常不包括嵌入式系统100中的目标硬件I/O设备112的完整模拟I/O设备320,或完整模拟外围总线。因此,目标代码通常缺少用于模拟I/O设备320或模拟外围总线的对应设备驱动程序322,尽管代理VM 302的后期迭代可以最终在其设计成熟时并入那些虚拟部件。
架构300包括经常在与OS 316一起操作的IDE 326内开发的目标代码324。同样,在开发的早期阶段,目标代码324通常包括仅用于原子功能的应用软件。随着开发的进行,一旦设计了目标I/O设备并且模拟I/O设备320可用,目标代码324就可以发展以包括硬件抽象层或API 328和设备驱动程序322。通常可以利用IDE 326或其它测试环境机制、利用基本测试数据330开发和测试目标代码324。测试数据330通常存储在主机存储器中,但也可以与目标代码324一起存储在代理VM 302上,以用于“白盒测试”的目的。
目标代码324中的低级功能通常不与模拟I/O设备320交互,并且至少不直接交互。相反,目标代码324通常会通过API 328与模拟I/O设备320交互。随着硬件设计和嵌入式软件的演变,目标代码324可以执行API 328并最终执行设备驱动程序322和模拟I/O设备320。
模拟I/O设备320可以包括不同于嵌入式系统100的目标硬件或将不存在于完整目标硬件中的虚拟硬件。例如,代理VM 302可以包括模拟以太网控制器,以在测试和开发期间进行通信,直到嵌入式系统的目标硬件的设计达到用于这种通信的目标硬件成熟的程度为止。例如,针对经常利用标准化通信总线(诸如ARINC 429或MIL-STD-1553总线)的航空电子系统,模拟以太网控制器实现通信,直到针对ARINC429或MIL-STD-1553总线设计了或选择了目标硬件PCI夹层卡为止。同样,代理VM 302可以在嵌入式系统100的设计的后期阶段省略模拟以太网控制器或其它模拟I/O设备320。在某些示例中,代理VM 302可以包括用于连接或联接代理VM 302以托管硬件(诸如物理主机I/O设备)的另一虚拟外围总线。这使得VM能够通过连接至虚拟化层中的物理外围总线的虚拟外围总线与物理主机外部的设备进行通信。
可以在代理VM 302内开发和测试目标代码324。虚拟处理器314执行OS 316。主机OS 304也可以执行IDE 326或OS 316内的其它目标代码开发工具。虚拟处理器314通过模拟I/O设备320(诸如虚拟通信接口,例如,模拟以太网控制器)读入目标代码324和测试数据330(特别是测试输入数据)。在某些示例中,如果I/O设备320在代理VM 302中不可用(例如因为嵌入式系统100的开发还为时过早),那么目标代码324和测试数据330可以直接加载到代理VM 302中的模拟存储器中,并且当在代理VM 302上启动目标代码324时将是可用的。虚拟处理器314然后执行目标代码324,以对测试输入数据进行操作,并响应于目标代码324的执行,通过虚拟通信接口写出测试输出数据。在通信接口在代理VM 302中不可用的示例中,测试输出数据可以被写入代理VM 302中的模拟存储器,以用于验证和确认的后处理。
随着硬件设计的进一步进展和某些附加目标硬件变得可用,这样的目标硬件可以被并入到主机计算机内的主机I/O设备310中。因此,该目标硬件的对应API 328和设备驱动程序322被并入到代理VM 302中,并且目标代码324可以通过映射至主机计算机中目标硬件的对应API 306和设备驱动程序312的那些部件交互。
图4是用于模拟图1所示的嵌入式系统100的目标硬件的示例主机计算机400的框图。例如,主机计算机400可以包括台式PC、服务器PC、云计算平台(例如,VM)、移动计算设备(例如,平板计算机或智能电话)、训练系统或其它合适的计算系统。主机计算机400包括经由物理总线406联接至RAM 402和主机存储器404的主机CPU 308,该物理总线包括一个或更多个存储器总线、通信总线或外围总线。主机存储器404是计算机可读存储器,其包括存储有代理VM 302的部分、存储有OS 304的部分、存储有API 306的部分、存储有设备驱动程序312的部分和存储有目标代码324的部分。在另选示例中,可以省略主机存储器404的一个或更多个部分,并且远程存储数据。例如,在某些示例中,目标代码324可以远程存储在服务器或大容量存储设备上,并通过网络提供给主机CPU 308和代理VM 302。
主机计算机400还包括主机I/O设备310,例如,该主机I/O设备可以包括诸如以太网控制器408的通信接口,或用于通过外围链路412与主机外围设备410进行通信的外围接口。例如,主机I/O设备310可以包括用于通过显示链路操作显示外围设备的GPU。
在某些示例中,针对嵌入式系统100的目标硬件完成或接近完成I/O设备的设计或选择后,主机计算机400可以包括目标I/O设备414。例如,在一个示例中,主机计算机400并且更具体地目标I/O设备414可以包括与嵌入式系统100的目标硬件设备相同或与目标硬件基本相似的ARINC 429或MIL-STD-1553PCI夹层卡。同样,在这样的示例中,主机计算机400包括与那些目标I/O设备414相对应的设备驱动程序312。主机计算机400可以在虚拟化层中(例如,在API或管理程序内)包括模拟目标I/O设备414到驻留在主机计算机400中的物理目标I/O设备414的映射。
图5是对针对具有不完整设计的目标硬件(诸如图1所示的嵌入式系统100的目标硬件)的目标代码进行测试的示例方法500的流程图。例如,方法500可以体现在图4所示的主机计算机400中。主机计算机400执行502代理VM 302以对目标硬件进行模拟。如图3所示,代理VM 302包括虚拟处理器314、模拟存储器和I/O设备320,在某些示例中,I/O设备经常包括虚拟通信接口(诸如虚拟以太网控制器)。主机计算机400在代理VM 302内执行504存储在模拟存储器中的OS 304。主机计算机400并且更具体地代理VM 302通过虚拟通信接口读入506目标代码324和测试输入数据330。然后在代理VM 302内执行508目标代码324并对测试输入数据330进行操作。然后响应于目标代码324的执行508,通过虚拟通信接口写出510测试输出数据。在另选示例中,测试输入数据330可以与目标代码324一起存储在代理VM 302中并且无需读入506就可用。同样地,在某些示例中,测试输出数据可以写入模拟存储器而不是通过虚拟通信接口写出510。
代理VM 302还可以包括联接至虚拟处理器314的BIOS或引导加载程序。引导加载程序在代理VM 302启动时从模拟存储器的一部分加载OS 316和BSP 318。主机计算机400还可以包括在主机OS 304内执行的一个或更多个开发工具(诸如IDE326)。在某些示例中,OS316被省略并且在模拟裸机上执行BSP 318和目标代码324。同样,在这样的示例中,在没有OS 316的情况下执行一个或更多个开发工具(诸如IDE 326)。
在某些示例中,目标代码324的执行508包括至少一个功能应用,所述至少一个功能应用在代理VM 302内执行与至少一个外围硬件抽象层(诸如API 328)交互并且不直接与通常从嵌入式系统100的目标硬件的不完整硬件设计中省略的对应外围硬件(诸如I/O设备320)交互。出于本公开的目的,术语“功能应用”指的是不直接与外围硬件设备交互的程序代码的任何部分。外围硬件通常包括通过数据总线(例如,存储器总线、通信总线或外围总线)与处理器102进行通信而不是与处理器102集成或经由前端总线与处理器102进行通信的任何硬件单元。例如,参照图1所示的嵌入式系统100,外围硬件设备经由存储器总线108和外围总线110并通过主机桥106与处理器102进行通信。还可以在代理VM 302内执行附加非目标代码,以对代理VM 302本身进行测试。
本文描述的方法、系统和装置的示例技术效果包括以下项中的至少一项:(a)在嵌入式系统的开发早期并且通常在完成嵌入式系统的目标硬件之前为该目标硬件提供代理VM;(b)实现如下代理VM内的开发和测试环境,该代理VM在相同或非常相似的OS和BSP内工作并在与目标硬件相同的模拟处理器上执行操作;(c)无需重新托管且无需完全虚拟化目标硬件即可实现目标硬件和目标代码的早期测试和开发;(d)通过在代理VM上利用高保真度早期开发测试来减少嵌入式系统开发后期的缺陷;以及(e)利用在相同或非常相似的OS和BSP内工作并在与目标硬件相同的模拟处理器上执行操作的代理VM实现用户训练者(例如,维护或操作者训练系统)。
一些示例涉及使用一个或更多个电子处理或计算设备。如本文所使用的,术语“处理器”和“计算机”以及相关术语(例如,“处理设备”、“计算设备”和“控制器”)不仅限于本领域中称为计算机的那些集成电路,而且广义上是指处理器、处理设备、控制器、通用中央处理单元(CPU)、图形处理单元(GPU)、微控制器、微型计算机、可编程逻辑控制器(PLC)、精简指令集计算机(RISC)处理器、现场可编程门阵列(FPGA)、数字信号处理(DSP)设备、专用集成电路(ASIC)以及能够执行本文所述功能的其它可编程电路或处理设备,并且这些术语在本文中是互换地使用的。这些处理设备通常被“配置”为通过编程或被编程或通过提供用于执行的指令来执行功能。以上示例不旨在以任何方式限制术语处理器、处理设备和相关术语的定义或含义。
在本文描述的示例中,存储器可以包括但不限于非暂时性计算机可读介质,诸如闪存、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)和非易失性RAM(NVRAM)。如本文所使用的,术语“非暂时性计算机可读介质”旨在表示任何有形的计算机可读介质,包括但不限于非暂时性计算机存储设备,包括但不限于易失性和非易失性介质以及可移除和不可移除介质,诸如固件、物理和虚拟存储部、CD-ROM、DVD和任何其它数字源(诸如网络或互联网),以及尚未开发的数字手段,唯一的例外是暂时性的传播信号。另选地,也可以使用软盘、光盘-只读存储器(CD-ROM)、磁光盘(MOD)、数字通用盘(DVD)或以任何方法或技术实现的用于信息(诸如计算机可读指令、数据结构、程序模块和子模块或其它数据)的短期和长期存储的任何其它基于计算机的设备。因此,可以将本文描述的方法编码为被嵌入在非暂时性计算机可读介质中的可执行指令(例如,“软件”和“固件”)。此外,如本文所使用的,术语“软件”和“固件”是可互换的,并且包括存储在存储器中以供个人计算机、工作站、客户端和服务器执行的任何计算机程序。这样的指令在由处理器执行时使处理器执行本文描述的方法中的至少一部分。
此外,在本文描述的示例中,附加输入通道可以是但不限于与操作者界面相关联的计算机外围设备,诸如鼠标和键盘。另选地,也可以使用其它计算机外围设备,例如,所述其它计算机外围设备可以包括但不限于扫描仪。此外,在一些示例中,附加输出通道可以包括但不限于操作者界面监视器。
本文描述的系统和方法不限于本文描述的具体示例,而是,可以与本文描述的其它部件和/或步骤独立地和分开地使用系统的部件和/或方法的步骤。
尽管本公开的各种示例的具体特征可以在一些附图中示出而不在其它附图中示出,但这仅仅是为了方便。根据本公开的原理,附图的任何特征可以与任何其它附图的任何特征结合地被引用和/或被要求保护。
如本文所使用的,以单数叙述并以单词“一”或“一个”开头的要素或步骤应理解为不排除复数要素或步骤,除非明确叙述了这种排除。此外,对本发明的“一个示例”或“示例性示例”的引用并不旨在被解释为排除也包含所叙述特征的附加示例的存在。
该书面描述使用示例来公开包括最佳模式的各种示例,以使本领域技术人员能够实践这些示例,包括制作和使用任何设备或系统以及执行任何并入的方法。可专利范围由权利要求限定,并且可以包括本领域技术人员想到的其它示例。如果这些其它示例具有与权利要求的字面语言没有区别的结构要素,或者如果它们包括与权利要求的字面语言没有实质性差异的等效结构要素,则这些其它示例旨在在权利要求的范围内。
在以下段落中描述了根据本公开的另外的例示性和非排他性示例:
在根据本公开的示例中,一种主机计算机包括:
存储器,所述存储器被配置为存储用于对具有不完整设计的目标硬件进行模拟的代理虚拟机(VM),所述代理VM包括:
虚拟处理器,所述虚拟处理器用于对目标处理器进行模拟;以及
模拟存储器,所述模拟存储器经由虚拟存储器总线与所述虚拟处理器进行通信,所述模拟存储器包括存储有目标代码的至少一部分;以及
主机中央处理单元(CPU),所述主机中央处理单元被配置为执行所述代理VM以对所述目标硬件进行模拟,所述代理VM在由所述主机CPU执行时被配置为由所述虚拟处理器执行所述目标代码。
可选地,根据前一段落所述的主机计算机,其中,所述代理VM在由所述主机CPU执行时还被配置为执行至少一个目标代码开发工具。
可选地,根据前述段落中的一项所述的主机计算机,其中,所述目标代码包括至少一个功能应用,所述至少一个功能应用与至少一个外围硬件抽象层交互并且不与从所述不完整设计中省略的对应外围硬件交互。
可选地,根据前述段落中的一项所述的主机计算机,所述主机计算机还包括被包括在所述目标硬件中的外围硬件设备,其中,所述代理VM还包括硬件抽象层,所述硬件抽象层与所述外围硬件设备相对应,并被配置为在所述代理VM执行所述目标代码时将主机驱动程序用于所述外围硬件设备。
可选地,根据前述段落中的一项所述的主机计算机,其中,所述代理VM包括与未被包括在所述目标硬件的完整设计中的外围硬件相对应的虚拟外围硬件设备。
可选地,根据前述段落中的一项所述的主机计算机,其中,所述代理VM还包括联接所述代理VM模拟I/O设备和物理主机I/O设备的虚拟外围总线。
可选地,根据前述段落中的一项所述的主机计算机,其中,所述模拟存储器还包括存储有操作系统(OS)和板级支持包(BSP)的部分。
可选地,根据前述段落中的一项所述的主机计算机,所述主机计算机还包括联接至模拟外围总线的虚拟通信接口,其中,所述模拟存储器还包括存储有测试输入数据的部分,并且其中,所述代理VM在由所述主机CPU执行时还被配置为:
由所述虚拟处理器执行所述目标代码,以对所述测试输入数据进行操作;以及
响应于所述目标代码的执行,通过所述虚拟通信接口写出测试输出数据。
在根据本公开的示例中,提供了一种针对具有不完整设计的目标硬件执行目标代码的方法,所述方法包括以下步骤:
执行代理虚拟机(VM)以对所述不完整设计的所述目标硬件进行模拟,所述代理VM包括虚拟处理器、模拟存储器和虚拟通信接口;
在所述代理VM内执行存储在所述模拟存储器中的所述目标代码;
在所述代理VM内获得对输入数据的访问;
通过所述目标代码对所述输入数据进行操作;以及
响应于所述目标代码的执行,通过所述虚拟通信接口写输出数据。
可选地,根据前一段落所述的方法,所述方法还包括以下步骤:主机处理器通过所述代理VM内的虚拟总线获得对输出数据的访问。
可选地,根据前一段落所述的方法,所述方法还包括以下步骤:在所述代理VM内执行存储在所述模拟存储器中的操作系统(OS)。
可选地,根据前一段落所述的方法,其中,所述代理VM还包括联接至所述虚拟处理器并被配置为在所述代理VM启动时从所述模拟存储器的一部分加载所述OS和板级支持包(BSP)的引导加载程序。
可选地,根据前述段落中的一项所述的方法,所述方法还包括以下步骤:通过所述虚拟通信接口执行联接至所述代理VM的至少一个目标代码开发工具。
可选地,根据前述段落中的一项所述的方法,其中,执行所述目标代码的步骤包括至少一个功能应用,所述至少一个功能应用在所述代理VM内执行与至少一个外围硬件抽象层交互并且不与从所述不完整设计中省略的对应外围硬件交互。
在根据本公开的示例中提供了一种计算机可读存储器,所述计算机可读存储器存储有用于对目标硬件进行模拟的代理虚拟机(VM),所述代理VM包括:
虚拟处理器,所述虚拟处理器用于对目标处理器进行模拟;
模拟存储器,所述模拟存储器通过虚拟存储器总线联接至所述虚拟处理器,所述模拟存储器包括存储有板级支持包(BSP)和目标代码的至少一部分;以及
虚拟通信接口,所述虚拟通信接口经由模拟外围总线联接至虚拟处理器;
其中,所述代理VM在由主机中央处理单元(CPU)执行时被配置为:
执行存储在所述模拟存储器中的所述目标代码;
在所述代理VM内获得对输入数据的访问;
通过所述目标代码对所述输入数据进行操作;以及
响应于所述目标代码的执行,通过所述虚拟通信接口写输出数据。
可选地,根据前一段落所述的计算机可读存储器,其中,所述代理VM的所述模拟存储器包括:
虚拟随机存取存储器(RAM),所述虚拟随机存取存储器通过所述虚拟存储器总线联接至所述虚拟处理器;以及
虚拟非易失性存储器,所述虚拟非易失性存储器联接至所述虚拟存储器总线并存储所述BSP和所述目标代码。
可选地,根据前一段落所述的计算机可读存储器,其中,所述代理VM还包括联接至所述虚拟处理器并被配置为在启动时从所述虚拟非易失性存储器加载操作系统(OS)和所述BSP的引导加载程序。
可选地,根据前述段落中的一项所述的计算机可读存储器,其中,所述目标硬件和所述代理VM均不包括用于外围硬件的设备驱动程序。
可选地,根据前述段落中的一项所述的计算机可读存储器,其中,所述目标硬件和所述代理VM来自所述不完整设计。
可选地,根据前述段落中的一项所述的计算机可读存储器,其中,所述代理VM包括与未被包括在所述目标硬件的完整设计中的外围硬件相对应的虚拟外围硬件设备。
根据本公开的示例提供了一种主机计算机,所述主机计算机包括:
存储器,所述存储器被配置为存储用于对目标硬件进行模拟的代理虚拟机(VM),所述代理VM包括:
虚拟处理器,所述虚拟处理器用于模拟目标处理器;以及
模拟存储器,所述模拟存储器通过虚拟存储器总线联接至所述虚拟处理器,所述模拟存储器包括存储有所述目标代码的至少一部分;以及
主机中央处理单元(CPU),所述主机中央处理单元被配置为执行所述代理VM,以对所述目标硬件进行模拟,所述代理VM在由所述主机CPU执行时被配置为由所述虚拟处理器执行所述目标代码。
根据本公开的示例提供了一种用于目标硬件设备的训练者系统,所述训练者系统包括:
用户接口,所述用户接口被配置为从用户接收输入数据;
主机计算机,所述主机计算机联接至所述用户接口,所述主机计算机包括:
存储器,所述存储器被配置为存储用于对所述目标硬件进行模拟的代理虚拟机(VM),所述代理VM包括:
虚拟处理器,所述虚拟处理器用于对目标处理器进行模拟;以及
模拟存储器,所述模拟存储器通过虚拟存储器总线联接至所述虚拟处理器,所述模拟存储器包括存储有目标代码的至少一部分;以及
主机中央处理单元(CPU),所述主机中央处理单元被配置为执行所述代理VM,以对所述目标硬件进行模拟,所述代理VM在由所述主机CPU执行时被配置为由所述虚拟处理器执行所述目标代码。
根据本公开的示例提供了一种用于嵌入式系统的测试平台,所述测试平台包括:
主机计算机,所述主机计算机包括:
主机通信接口,所述主机通信接口被配置为接收输入测试数据;
存储器,所述存储器被配置为存储用于对具有不完整设计的目标硬件进行模拟的代理虚拟机(VM),所述代理VM包括:
虚拟处理器,所述虚拟处理器用于对目标处理器进行模拟;以及
模拟存储器,所述模拟存储器通过虚拟存储器总线联接至所述虚拟处理器,所述模拟存储器包括存储有目标代码的至少一部分;以及
主机中央处理单元(CPU),所述主机中央处理单元被配置为执行所述代理VM,以对所述目标硬件进行模拟,所述代理VM在由所述主机CPU执行时被配置为由所述虚拟处理器执行所述目标代码,以对所述输入测试数据进行操作。
Claims (15)
1.一种主机计算机(400),所述主机计算机包括:
存储器(404),所述存储器被配置为存储用于对具有不完整设计的目标硬件(100)进行模拟的代理虚拟机(302),所述代理虚拟机包括:
虚拟处理器(314),所述虚拟处理器用于对目标处理器(102)进行模拟;以及
模拟存储器,所述模拟存储器经由虚拟存储器总线与所述虚拟处理器进行通信,所述模拟存储器包括存储有目标代码(324)的至少一部分;以及
主机中央处理单元(308),所述主机中央处理单元被配置为执行所述代理虚拟机,以对所述目标硬件进行模拟,所述代理虚拟机在由所述主机中央处理单元执行时被配置为由所述虚拟处理器执行所述目标代码。
2.根据权利要求1所述的主机计算机(400),其中,所述代理虚拟机(302)在由所述主机中央处理单元(308)执行时还被配置为执行至少一个目标代码开发工具(326)。
3.根据前述权利要求中任一项所述的主机计算机(400),其中,所述目标代码(324)包括至少一个功能应用,所述至少一个功能应用与至少一个外围硬件抽象层(328)交互,并且不与从所述不完整设计中省略的对应外围硬件(112、114、116、118)交互。
4.根据前述权利要求中任一项所述的主机计算机(400),所述主机计算机还包括被包括在所述目标硬件(100)中的外围硬件设备(112、114、116、118、138;414),其中,所述代理虚拟机(302)还包括硬件抽象层(328),所述硬件抽象层与所述外围硬件设备相对应,并被配置为在所述代理虚拟机执行所述目标代码时将主机驱动程序(312)用于所述外围硬件设备。
5.根据前述权利要求中任一项所述的主机计算机(400),其中,所述代理虚拟机(302)包括虚拟外围硬件设备(320),所述虚拟外围硬件设备与未被包括在所述目标硬件(100)的完整设计中的外围硬件(112、114、116、118、138)相对应。
6.根据前述权利要求中任一项所述的主机计算机(400),其中,所述代理虚拟机(302)还包括虚拟外围总线,所述虚拟外围总线联接所述代理虚拟机模拟的I/O设备(320)和物理主机I/O设备(310)。
7.根据前述权利要求中任一项所述的主机计算机(400),其中,所述模拟存储器还包括存储有操作系统(316)和板级支持包(318)的部分。
8.根据前述权利要求中任一项所述的主机计算机(400),所述主机计算机还包括联接至模拟外围总线的虚拟通信接口(138),其中,所述模拟存储器还包括存储有测试输入数据(330)的部分,并且其中,所述代理虚拟机(302)在由所述主机中央处理单元(308)执行时还被配置为:
由所述虚拟处理器(314)执行所述目标代码(324),以对所述测试输入数据进行操作;以及
响应于所述目标代码的执行,通过所述虚拟通信接口写出测试输出数据。
9.一种针对具有不完整设计的目标硬件(100)执行目标代码(324)的方法(500),所述方法包括以下步骤:
执行(502)代理虚拟机(302)以对所述不完整设计的所述目标硬件进行模拟,所述代理虚拟机包括虚拟处理器(314)、模拟存储器和虚拟通信接口(320);
在所述代理虚拟机内执行(504)存储在所述模拟存储器中的所述目标代码;
在所述代理虚拟机内获得对输入数据(330)的访问(506);
通过所述目标代码对所述输入数据进行操作(508);以及
响应于所述目标代码的执行,通过所述虚拟通信接口写(510)输出数据。
10.根据权利要求9所述的方法(500),所述方法还包括以下步骤:主机处理器(308)通过所述代理虚拟机(302)内的虚拟总线获得对输出数据的访问。
11.根据前述权利要求中任一项所述的方法(500),所述方法还包括以下步骤:在所述代理虚拟机(302)内执行存储在所述模拟存储器中的操作系统(316)。
12.根据权利要求11所述的方法(500),其中,所述代理虚拟机(302)还包括引导加载程序,所述引导加载程序联接至所述虚拟处理器(314)并被配置为在所述代理虚拟机启动时从所述模拟存储器的一部分加载所述操作系统(316)和板级支持包(318)。
13.根据前述权利要求中任一项所述的方法(500),所述方法还包括以下步骤:通过所述虚拟通信接口(320)执行联接至所述代理虚拟机(302)的至少一个目标代码开发工具(326)。
14.根据前述权利要求中任一项所述的方法(500),其中,执行所述目标代码(324)的步骤包括:在所述代理虚拟机(302)内执行至少一个功能应用,所述至少一个功能应用与至少一个外围硬件抽象层(328)交互,并且不与从所述不完整设计中省略的对应外围硬件(112、114、116、118)交互。
15.一种主机计算机(400),所述主机计算机包括:
存储器(404),所述存储器被配置为存储用于对目标硬件进行模拟的代理虚拟机(302),所述代理虚拟机包括:
虚拟处理器(314),所述虚拟处理器用于对目标处理器(102)进行模拟;以及
模拟存储器,所述模拟存储器通过虚拟存储器总线联接至所述虚拟处理器(314),所述模拟存储器包括存储有目标代码(324)的至少一部分;以及
主机中央处理单元(308),所述主机中央处理单元被配置为执行所述代理虚拟机,以对所述目标硬件(100)进行模拟,所述代理虚拟机在由所述主机中央处理单元执行时被配置为由所述虚拟处理器执行所述目标代码。
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 |
---|---|
CN114116116A true CN114116116A (zh) | 2022-03-01 |
Family
ID=76522891
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110752794.7A Pending CN114116116A (zh) | 2020-08-26 | 2021-07-02 | 针对硬件设计开发和测试目标代码的虚拟机 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20220066911A1 (zh) |
EP (1) | EP3961389A1 (zh) |
JP (1) | JP2022040001A (zh) |
KR (1) | KR20220027027A (zh) |
CN (1) | CN114116116A (zh) |
CA (1) | CA3123074A1 (zh) |
Family Cites Families (24)
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 |
EP1949229A2 (en) * | 2005-11-16 | 2008-07-30 | Esmertec 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 |
US10608890B2 (en) * | 2017-09-26 | 2020-03-31 | Tesuto Inc. | Holistic validation of a network via native communications across a mirrored emulation of the network |
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 |
-
2021
- 2021-06-18 EP EP21180257.4A patent/EP3961389A1/en active Pending
- 2021-06-22 CA CA3123074A patent/CA3123074A1/en active Pending
- 2021-07-02 CN CN202110752794.7A patent/CN114116116A/zh active Pending
- 2021-08-06 JP JP2021129684A patent/JP2022040001A/ja active Pending
- 2021-08-23 KR KR1020210110999A patent/KR20220027027A/ko active Search and Examination
- 2021-08-23 US US17/409,516 patent/US20220066911A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220066911A1 (en) | 2022-03-03 |
EP3961389A1 (en) | 2022-03-02 |
KR20220027027A (ko) | 2022-03-07 |
JP2022040001A (ja) | 2022-03-10 |
CA3123074A1 (en) | 2022-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3382536B1 (en) | Emulation of hardware components | |
JP7321839B2 (ja) | ハードウェア抽象化ソフトウェアレイヤを使用するシステムのための汎用仮想化プラットフォーム | |
US5363501A (en) | Method for computer system development verification and testing using portable diagnostic/testing programs | |
CN111353263A (zh) | 软硬件设计与验证平台系统 | |
US6834359B2 (en) | Method and system for testing a processor | |
EP3435229B1 (en) | System integration using virtualization | |
CN116306392A (zh) | 芯片仿真装置、方法、电子设备和存储介质 | |
CN114116116A (zh) | 针对硬件设计开发和测试目标代码的虚拟机 | |
US7447618B2 (en) | Method and system for ASIC simulation | |
CN115374017A (zh) | 一种仿真运行可执行文件时抓取现场的方法及计算设备 | |
KR20240009757A (ko) | 오토사 스택 가상화를 통한 윈도우 기반의 차량용 소프트웨어 시뮬레이션 장치 및 방법 | |
US11620144B2 (en) | Qualifying a device driver for a device | |
Gutierrez et al. | Virtualization and Validation of Emulated STM-32 Blue Pill Using the QEMU Open-Source Framework | |
CN115185638A (zh) | 一种仿真运行应用程序时获取调用栈的方法及计算设备 | |
US11719749B1 (en) | Method and system for saving and restoring of initialization actions on dut and corresponding test environment | |
CN112905233B (zh) | 一种基于Linux内核的嵌入式固件的外设移植方法 | |
US11599373B2 (en) | Virtualized hardware and methods for leveraging virtualized hardware with munition support software | |
Kurikka | Testing embedded software in a simulated environment | |
KR20240009779A (ko) | 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 디바이스 드라이버 가상화 장치 및 방법 | |
TWI411930B (zh) | 系統階層模擬/驗證系統及其方法 | |
WO2013167394A1 (en) | Instruction execution simulation method using trapped addresses and associated hardware | |
CN118395918A (zh) | 基于软硬件的芯片仿真方法、装置、测试终端及介质 | |
AU2021225171A1 (en) | Virtual machine for virtualizing graphics functions | |
US20180011956A1 (en) | Data Injection In Emulation Without Rebooting |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |