CN114385524A - 嵌入式固件仿真系统及其方法、装置和电子设备 - Google Patents
嵌入式固件仿真系统及其方法、装置和电子设备 Download PDFInfo
- Publication number
- CN114385524A CN114385524A CN202011127579.XA CN202011127579A CN114385524A CN 114385524 A CN114385524 A CN 114385524A CN 202011127579 A CN202011127579 A CN 202011127579A CN 114385524 A CN114385524 A CN 114385524A
- Authority
- CN
- China
- Prior art keywords
- firmware
- integrated circuit
- circuit chip
- target
- storage device
- 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.)
- Granted
Links
- 238000004088 simulation Methods 0.000 title claims abstract description 85
- 238000000034 method Methods 0.000 title claims abstract description 69
- 230000015654 memory Effects 0.000 claims description 44
- 230000008569 process Effects 0.000 claims description 13
- 230000004044 response Effects 0.000 claims description 6
- 238000013500 data storage Methods 0.000 claims description 3
- 238000012544 monitoring process Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 17
- 230000006870 function Effects 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- 230000006399 behavior Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012038 vulnerability analysis Methods 0.000 description 2
- 241000588769 Proteus <enterobacteria> Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011022 operating instruction Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000007711 solidification Methods 0.000 description 1
- 230000008023 solidification Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/105—Program control for peripheral devices where the programme performs an input/output emulation function
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
- G06F30/3308—Design verification, e.g. functional simulation or model checking using simulation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种嵌入式固件仿真系统及其方法、装置和电子设备,用于解决现有技术中嵌入式固件仿真系统虚拟出的操作系统内核无法检测到硬件设备,导致嵌入式系统仿真失败的问题。该系统包括:集成电路芯片、至少一个仿真程序存储设备和至少一个固件存储设备,其中:至少一个仿真程序存储设备通过第一多路复用器与集成电路芯片连接,每个仿真程序存储设备存储有固件仿真程序;固件仿真程序中至少包含用于仿真出目标处理器架构并驱动集成电路芯片运行的目标固件仿真程序;至少一个固件存储设备通过第二多路复用器与集成电路芯片连接,每个固件存储设备存储有固件;固件中至少包含用于驱动目标硬件设备运行的目标固件。
Description
技术领域
本申请属于计算机技术领域,具体涉及一种嵌入式固件仿真系统及其方法、装置和电子设备。
背景技术
随着物联网技术的飞速发展,各种各样的物联网设备逐渐融入了人们的日常生活,物联网设备面临的安全问题也越来越重要。目前,物联网设备大多基于嵌入式系统,为了提高物联网设备的安全性,可利用漏洞分析工具针对物联网设备中的嵌入式系统进行安全检测。
现有的针对嵌入式系统的漏洞分析工具都是采用软件仿真的方式来实现,即通过软件仿真操作系统内核,以仿真嵌入式系统的行为,通过对行为执行过程和/或行为结果进行检测,可以判断嵌入式系统是否存在漏洞。
按照现有技术,驱动物联网设备的嵌入式系统的中央处理器(CentralProcessing Unit,CPU)和计算机内存等内部部件不需要运行固件(Firmware),从而可以直接利用软件虚拟出物联网设备的嵌入式系统的该些内部部件的行为。其中,固件是写入EPROM(可擦写可编程只读存储器)或EEPROM(电可擦可编程只读存储器)中的程序。针对物联网设备而言,固件是指物联网设备内部保存的设备“驱动程序”,通过固件,操作系统能实现驱动物联网设备运作。
相对而言,驱动物联网设备的如摄像头和非易失性随机访问存储器(Non-Volatile Random Access Memory,NVRAM)等外部硬件设备则需要运行固件,这就使得当想要通过软件虚拟操作系统对于所述的外部硬件设备的驱动,以及所述的外部硬件设备的行为时,操作系统内核会因无法检测到该些外部硬件设备而导致固件启动失败,从而导致嵌入式系统仿真失败。
发明内容
本申请实施例的目的是提供一种嵌入式固件仿真系统及其方法、装置和电子设备,能够解决现有技术中嵌入式固件仿真系统虚拟出的操作系统内核无法检测到硬件设备,导致嵌入式系统仿真失败的的问题。
为了解决上述技术问题,本申请是这样实现的:
第一方面,本申请实施例提供了一种嵌入式固件仿真系统,该系统包括集成电路芯片、至少一个仿真程序存储设备和至少一个固件存储设备,其中:
所述至少一个仿真程序存储设备通过第一多路复用器与所述集成电路芯片连接,每个仿真程序存储设备存储有固件仿真程序,一个固件仿真程序对应于一种处理器架构;所述固件仿真程序中至少包含用于仿真出目标处理器架构并驱动所述集成电路芯片运行的目标固件仿真程序;
所述至少一个固件存储设备通过第二多路复用器与所述集成电路芯片连接,每个固件存储设备存储有固件;所述固件中至少包含用于驱动目标硬件设备运行的目标固件;
所述集成电路芯片响应于用于指示所述集成电路芯片开始仿真的控制信号,从仿真程序存储设备中读取并运行所述目标固件仿真程序;在检测到已连接所述目标硬件设备之后,从所述至少一个固件存储设备中读取并执行所述目标固件,以驱动所述目标硬件设备执行与所述目标固件对应的操作。
第二方面,本申请实施例提供了一种嵌入式固件仿真方法,该方法应用于如第一方面所述的嵌入式固件仿真系统,该方法包括:
所述集成电路芯片响应于用于控制所述集成电路芯片开始仿真的控制信号,从仿真程序存储设备中读取目标固件仿真程序;
所述集成电路芯片在检测到已连接所述目标硬件设备之后,从所述至少一个固件存储设备中读取所述目标固件;
所述集成电路芯片执行所述目标固件,以驱动所述目标硬件设备执行与所述目标固件对应的操作。
第三方面,提出了一种集成电路芯片,该集成电路芯片包括:
程序读取单元,用于响应于用于控制集成电路芯片开始仿真的控制信号,从仿真程序存储设备读取目标固件仿真程序;
固件读取单元,用于在检测到所述集成电路芯片已连接目标硬件设备之后,从至少一个固件存储设备中读取目标固件;
所述集成电路芯片用于:执行所述目标固件,以驱动所述目标硬件设备执行与所述目标固件对应的操作。
第四方面,提出了一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行如第二方面所述的嵌入式固件仿真方法。
在本申请实施例中,提供的嵌入式固件仿真系统包括集成电路芯片、至少一个仿真程序存储设备和至少一个固件存储设备,其中:至少一个仿真程序存储设备通过第一多路复用器与集成电路芯片连接,每个仿真程序存储设备存储有固件仿真程序,一个固件仿真程序对应于一种处理器架构;固件仿真程序中至少包含用于仿真出目标处理器架构并驱动集成电路芯片运行的目标固件仿真程序;至少一个固件存储设备通过第二多路复用器与集成电路芯片连接,每个固件存储设备存储有固件;固件中至少包含用于驱动目标硬件设备运行的目标固件;集成电路芯片响应于用于指示集成电路芯片开始仿真的控制信号,从仿真程序存储设备中读取并运行目标固件仿真程序;在检测到已连接目标硬件设备之后,从至少一个固件存储设备中读取并执行目标固件,以驱动目标硬件设备执行与目标固件对应的操作。
这样,本申请实施例提供的方法能够在集成电路芯片已与目标硬件设备连接的前提下,使得集成电路芯片虚拟出来的操作系统内核能够检测到目标硬件设备,并正常运行用户需要的处理器架构对应的目标固件仿真程序,从而成功进行嵌入式固件仿真,提高了嵌入式固件仿真系统的通用性。
附图说明
图1为本申请实施例提供的一种嵌入式固件仿真系统的结构示意图;
图2为本申请实施例提供的嵌入式固件仿真系统中一种多路复用器连接方式的示意图;
图3为本申请实施例提供的嵌入式固件仿真系统在一种实际场景中的结构示意图;
图4为本申请实施例提供的嵌入式固件仿真系统的具体实施例的结构示意图;
图5为本申请实施例提供的一种嵌入式固件仿真方法的具体实施流程示意图;
图6为本申请实施例提供的嵌入式固件仿真方法中一种目标固件的执行过程的示意图;
图7为本申请实施例提供的嵌入式固件仿真方法在一种实际应用中的具体流程示意图;
图8为本申请实施例提供的嵌入式固件仿真方法中一种集成电路芯片虚拟出的中央处理器时的结构示意图;
图9为本申请实施例提供的一种集成电路芯片的结构示意图;
图10为本申请实施例提供的一种电子设备的硬件结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
下面结合附图,通过具体的实施例及其应用场景对本申请实施例提供的进程容器地址的更新方法进行详细地说明。
如图1所示,为本申请实施例提供的一种嵌入式固件仿真系统的结构示意图。该系统包括集成电路芯片11、至少一个仿真程序存储设备13和至少一个固件存储设备15,其中:
至少一个仿真程序存储设备13通过第一多路复用器12与集成电路芯片11连接,每个仿真程序存储设备13存储有固件仿真程序,一个固件仿真程序对应于一种处理器架构;固件仿真程序中至少包含用于仿真出目标处理器架构并驱动集成电路芯片11运行的目标固件仿真程序;
至少一个固件存储设备15通过第二多路复用器14与集成电路芯片11连接,每个固件存储设备15存储有固件;固件中至少包含用于驱动目标硬件设备20运行的目标固件;
集成电路芯片11响应于用于指示集成电路芯片开始仿真的控制信号,从仿真程序存储设备中读取并运行目标固件仿真程序;在检测到已连接目标硬件设备20之后,从至少一个固件存储设备中读取并执行目标固件,以驱动目标硬件设备20执行与目标固件对应的操作。
其中,当仿真程序存储设备13和固件存储设备15包括闪存时,由于一个闪存中只能存储一个程序,可通过多路复用器同时连接多个闪存,从而在嵌入式固件仿真系统10中能够存储至少一个固件仿真程序和至少一个固件。
例如,如图2所示,为本申请实施例提供的嵌入式固件仿真系统中一种多路复用器连接方式的示意图。多路复用器与多个NOR Flash连接,可将作为集成电路芯片10与多个NOR Flash的连接通道,多路复用器还与拨码开关连接,使得用户可通过拨动拨码开关来选择要指定的NOR Flash。其中,DOUT是多路复用器的输出接口,DIN是多路复用器的输入接口,CLK是多路复用器的时钟信号接口。
本申请实施例提供的系统采用至少一个仿真程序存储设备13,且每个仿真程序存储设备13可存储有一个固件仿真程序,一个固件仿真程序对应于一种处理器架构。这样,当需要将新的处理器框架对应的固件仿真程序存储至嵌入式固件仿真系统10中时,可在嵌入式固件仿真系统10中添加新的仿真程序存储设备13,再将新的固件仿真程序存储至新添加的仿真程序存储设备13中,而不需要对整个嵌入式固件仿真系统10进行改动,方便了扩展新的处理器架构。
其中,处理器架构可包括x86和x86_64等。
如图4所示,为本申请实施例提供的嵌入式固件仿真系统的具体实施例的结构示意图。
可选地,为了保证目标固件能够被正常执行,集成电路芯片11运行时的中间数据能够被缓存,本申请实施例提供的系统还包括缓存存储设备16和配置存储设备17,其中:
缓存存储设备16与集成电路芯片11连接,缓存存储设备16,存储有集成电路芯片11从至少一个固件存储设备15中读取的目标固件;以及,存储有目标硬件设备20在执行与目标固件对应的操作之后发送的仿真结果数据;
配置存储设备17与集成电路芯片11连接,配置存储设备17存储有用于初始化嵌入式固件仿真系统10的配置信息。
其中,该仿真结果数据可包括目标硬件设备20运行时产生的中间数据、和/或目标硬件设备20运行后产生的结果数据。例如,当目标硬件设备20是麦克风25时,麦克风25在运行后产生的结果数据可以包括麦克风25接收到的声音生成的音频数据。
该用于初始化嵌入式固件仿真系统10的配置信息可包括该嵌入式固件仿真系统10的定时器初始化参数、计数器初始化参数、外部中断初始化参数、输入输出端口的初始化状态、寄存器初始值和堆栈地址中的至少一种。
可选地,为了能够便于控制集成电路芯片11的工作状态,并监控目标固件的执行状态,本申请实施例提供的系统还包括监控器18,其中:
监控器18与集成电路芯片11连接,监控器18用于监控目标固件的执行状态;以及,向集成电路芯片11发送控制信号;
其中,控制信号包括用于控制集成电路芯片11开始仿真的控制信号、和/或用于控制集成电路芯片11停止仿真的控制信号。
可选地,监控器可包括一个能够与集成电路芯片11通信的MCU,该MCU可向集成电路芯片11发送上述控制信号,并接受集成电路芯片11发送的目标固件的执行情况,执行情况可包括目标固件的执行进度和是否成功执行。
可选地,监控器18可包括显示器,使得用户能够通过该显示器监控集成电路芯片11正在执行的至少一个固件中的某一固件的固件名称、和/或目标固件对应的目标硬件设备20的名称,以及可监控集成电路芯片11正在执行目标固件中的哪一条执行码。
可选地,为了便于用户从至少一个仿真程序存储设备13中选择存储目标固件仿真程序的仿真程序存储设备,以及从至少一个固件存储设备15中选择存储目标固件的固件存储设备,本申请实施例提供的系统还包括第一拨码开关122和第二拨码开关142,其中:
第一拨码开关122与第一多路复用器121连接,第一拨码开关122用于接通或断开集成电路芯片11和存储目标固件仿真程序的仿真程序存储设备之间的连接;
第二拨码开关142与第二多路复用器141连接,第二拨码开关142用于接通或断开集成电路芯片11和存储目标固件的固件存储设备之间的连接。
例如,用户可拨动第一拨码开关122的键,接通该键对应的引脚,使得集成电路芯片11与存储目标固件仿真程序的仿真程序存储设备相接通,集成电路芯片11能够获取并运行目标固件仿真程序。与第一拨码开关122相类似的,用户可拨动第二拨码开关142的键,接通该键对应的引脚,使得集成电路芯片11与存储目标固件的固件存储设备相接通,集成电路芯片11能够获取并执行目标固件。
可选地,为了能够将目标固件仿真程序和目标固件固化至指定的仿真程序存储设备和指定的固件存储设备中,可连接集成电路芯片10与计算机30,使得用户可通过计算机30中的集成电路芯片11开发工具软件,固化目标固件仿真程序和目标固件,其中,固化是指将数据长期存储在存储设备中。
可选地,用户还可通过计算机30向集成电路芯片11发送存储有目标固件仿真程序的仿真程序存储设备13的地址、以及存储有目标固件的固件存储设备15的地址,使得集成电路芯片11从这些地址指定的仿真程序存储设备13和固件存储设备15中读取目标固件仿真程序和目标固件。
如图3所示,为本申请实施例提供的嵌入式固件仿真系统在一种实际场景中的结构示意图。
可选地,集成电路芯片11可以是现场可编程门阵列(Field Programmable GateArray,FPGA)或复杂可编程逻辑器件(Complex Programming Logic Device,CPLD)等可实现本申请实施例的逻辑器件。
其中,FPGA是基于查找表(Look-Up-Table,LUT)结构的,而LUT的本质是一个SDRAM。在通过寄存器转换级电路(Register Transfer Level,RTL)或硬件描述语言(Hardware Description Language,HDL)完整描述输入输出逻辑之后,FPGA开发软件Quartus II会自动计算出所有的输入输出映射关系,并将该输入输出映射关系写入FPGA内部的SDRAM中。这样,当FPGA每接收到一个信号,就相当于接收到一个地址,FPGA可根据该地址在内部SDRAM中查找对应的位置,并输出该位置的值。
此外,在FPGA断电之后,FPGA内部的SDRAM中的数据就会丢失,因此,为了使得FPGA需要运行的程序得到固化,就需要在FPGA的外部设置闪存,如NOR Flash、EEPROM和NANDFlash等。这样,在FPGA接通电源时,可先读取外部闪存中的数据,再执行数据中的程序。
可选地,由于被固化至仿真程序存储设备中的固件仿真程序很少需要进行修改或删除,且固件仿真程序的数据量较大,至少一个仿真程序存储设备可以包括读取效率高、写入效率较低的至少一个或非闪存(Not Or Flash,NOR Flash)。
可选地,由于集成电路芯片11可能与多个目标硬件设备20,且嵌入式固件仿真系统10每次需要仿真目标固件需要驱动的目标硬件设备20不尽相同,用户可根据仿真需求擦除或写入至少一个固件存储设备15中的固件,且通常情况下固件的数据量小于固件仿真程序的数据量,因此,至少一个固件存储设备15可以包括至少一个带电可擦可编程只读存储器(Electrically Erasable Programmable read only memory,EEPROM)和/或至少一个NOR Flash。可根据目标硬件设备在实际应用场景中固件的存储方式来确定将目标固件固化至EEPROM或NOR Flash中。
可选地,为了能够与集成电路芯片11保持同步的时钟总线,缓存存储设备16可包括同步动态随机存取内存(Synchronous Dynamic Random-access Memory,SDRAM),SDRAM有一个同步接口,能够在响应于输入指令之前等待一个时钟信号,这样就能和集成电路芯片10的时钟总线保持同步。
可选地,配置存储设备17中的用于初始化嵌入式固件仿真系统10的配置信息可不经常更新,配置存储设备17可包括非易失性随机访问存储器(Non-Volatile RandomAccess Memory,NVRAM),使得在嵌入式固件仿真系统10断电之后还能够保存这些配置信息。
可选地,目标硬件设备20可包括与非闪存(Not AND Flash,NAND Flash)21、4G/5G模块、无线上网(Wireless Fidelity,Wi-Fi)模块23、摄像头24、麦克风25、传感器组26、舵机27、通用串行总线(Universal Serial Bus,USB)控制器28和/或以太网控制器29等硬件设备。
可选地,NAND Flash 21的结构简单、成本低廉,且内存较大,因此,NAND Flash 21不仅可以作为目标硬件设备20,还可以作为固件存储设备,用于存储至少一个固件存储设备存储15不下的固件。
可选地,本申请实施例提供的系统中,为了满足各目标硬件设备20的连接需要,可将集成电路芯片11的各引脚通过接插件与目标硬件设备20连接。
可选地,可通过印制电路板(Printed Circuit Board,PCB)将集成电路芯片11与目标硬件设备20之间的连线固定,并通过计算机30中的集成电路芯片11开发软件来配置集成电路芯片11各引脚的功能,从而避免频繁的接通和断开连接操作会损坏集成电路芯片11、目标硬件设备20和连接线。
在本申请实施例中,提供的嵌入式固件仿真系统包括集成电路芯片、至少一个仿真程序存储设备和至少一个固件存储设备,其中:至少一个仿真程序存储设备通过第一多路复用器与集成电路芯片连接,每个仿真程序存储设备存储有固件仿真程序,一个固件仿真程序对应于一种处理器架构;固件仿真程序中至少包含用于仿真出目标处理器架构并驱动集成电路芯片运行的目标固件仿真程序;至少一个固件存储设备通过第二多路复用器与集成电路芯片连接,每个固件存储设备存储有固件;固件中至少包含用于驱动目标硬件设备运行的目标固件;集成电路芯片响应于用于指示集成电路芯片开始仿真的控制信号,从仿真程序存储设备中读取并运行目标固件仿真程序;在检测到已连接目标硬件设备之后,从至少一个固件存储设备中读取并执行目标固件,以驱动目标硬件设备执行与目标固件对应的操作。
这样,本申请实施例提供的方法能够在集成电路芯片已与目标硬件设备连接的前提下,使得集成电路芯片虚拟出来的操作系统内核能够检测到目标硬件设备,并正常运行用户需要的处理器架构对应的目标固件仿真程序,从而成功进行嵌入式固件仿真,提高了嵌入式固件仿真系统的通用性。
为了解决现有技术中嵌入式固件仿真系统虚拟出的操作系统内核无法检测到硬件设备,导致嵌入式系统仿真失败的问题,本申请实施例还提供一种嵌入式固件仿真方法。
需要说明的是,本申请实施例提供的嵌入式固件仿真方法,执行主体可以为嵌入式固件仿真系统,或者该嵌入式固件仿真系统中的用于执行加载嵌入式固件仿真方法的控制模块。本申请实施例中以嵌入式固件仿真系统执行嵌入式固件仿真方法为例,说明本申请实施例提供的嵌入式固件仿真方法。
下面结合图5所示的嵌入式固件仿真方法的具体实施流程示意图,对该方法的实施过程进行详细介绍,包括:
步骤501,集成电路芯片响应于用于控制集成电路芯片开始仿真的控制信号,从仿真程序存储设备中读取目标固件仿真程序;
在一种现有技术中,虚拟化技术按照层次来分,可分为硬件抽象层虚拟化、操作系统级虚拟化、库函数级虚拟化和编程语言级虚拟化,这四个虚拟技术层次的典型代表分别有快速模拟器(Quick Emulator,QEMU)、应用容器引擎Docker、Windows兼容层(WindowsEnvironment,WinE)和Java虚拟机(Java Virtual Machine,JVM)。
其中,硬件抽象层的虚拟化需要通过虚拟硬件设备来实现虚拟机,虚拟机中运行的操作系统可以访问和宿主机(即部署有虚拟机的物理设备)相似的硬件设备,并且这些硬件设备都是虚拟出来的。由于硬件抽象层的虚拟化可以为虚拟机提供虚拟的CPU、IO、内存等设备,这种硬件抽象层的虚拟化,可以在一台宿主机中虚拟出不同的虚拟机,且这些虚拟机是相互独立的,这些虚拟机中的操作系统甚至可以是不同CPU架构的镜像。
QEMU是一款典型的硬件抽象层的虚拟化软件,或者可以称它为处理器模拟器。QEMU由虚拟机监视器Hypervisor、微型代码生成器(Tiny Code Generator,TCG)、软件实现的内存管理单元(Memory Management Unit,MMU)和设备子系统组成。其中,Hypervisor可从存储有备份数据的硬盘映像中加载二进制代码,再由TCG将这些二进制代码翻译成中间代码,然后启动MMU,并连接虚拟设备,从而开始虚拟操作系统。
QEMU一般包括USER和SYSTEM这两种工作模式。其中,USER模式能够实现库函数级虚拟化,能够启动为不同种类的CPU进行编译的应用程序;而SYSTEM模式能够实现硬件抽象层的虚拟化,能够虚拟出整台计算机,并能够将计算机可执行程序中的指令翻译成中间代码,然后通过调用宿主机系统资源的方式构建虚拟CPU。
然而,QEMU是采用直通模式与硬件设备进行交互的,即QEMU直接连接硬件设备或虚拟设备,但直接与QEMU连接的硬件设备一般不能被共享,即当虚拟机在使用这些硬件设备时,宿主机就无法使用,因此,在通常情况下只针对难以虚拟的设备采用直通模式。
由于,采用直通模式的存在限制:首先,宿主机需已与这些硬件设备建立连接,例如,若宿主机并未与摄像头建立连接,或者宿主机不支持共享摄像头,那么QEMU就无法连接到该摄像头。其次,计算机的硬件系统和嵌入式系统差异巨大,嵌入式系统往往是针对特定的应用场景而设计的,有着独特的硬件设备,如传感器和NVRAM。因此,QEMU往往在启动这些硬件设备的固件时,操作系统内核会因无法检测到这些硬件设备而导致固件启动失败,而这些硬件设备此外,又难以虚拟出来。
此外,通常嵌入式系统会与电机、蜂鸣器、数码管和发光二极管(Light EmittingDiode,LED)灯等硬件设备进行连接,一方面,若通过软件来虚拟出这些硬件设备,会消耗大量的计算资源,另一方面,现在的通用计算机很少包含这些设备,无法通过调用通用计算机来获取这些硬件设备资源。若通过虚拟机将所有硬件设备虚拟出来,将无法直观地看到硬件设备的变化。
在另一种现有技术中,利用电子设计自动化(Electronic Design Automation,EDA)软件之一的电路仿真软件不仅可以模拟嵌入式系统的单片机运行,还可以使得用户观察硬件设备的变化。此外,虚拟仪表还提供了对电路信号的分析功能。例如,EDA工具软件Porteus可以支持主流的微控制单元(Microcontroller Unit,MCU)和众多外部硬件设备,同时还能提供动画效果以便于用户观察到外部硬件设备的变化,并且Porteus还自带AVR单片机汇编器和8051单片机汇编器,从而实现MCU的源代码级的调试仿真。
然而,电路仿真软件的运行效率较低,且无法运行较为复杂的程序。并且,像Proteus这类的电路仿真软件主要是对电路设计进行仿真,并不能对较为复杂的嵌入式系统进行仿真。
因此,本申请实施例提供的方法能够在集成电路芯片已与目标硬件设备连接的前提下,使得集成电路芯片能够正常运行用户需要的处理器架构对应的目标固件仿真程序,从而正常进行嵌入式固件仿真,提高了嵌入式固件仿真方法的通用性。
可选地,为了构建合适的嵌入式固件仿真系统,可先根据预先设计好的接线图连接好嵌入式固件仿真系统中各模块和部件,然后,将目标固件仿真程序固化至仿真程序存储设备中,将目标固件固化至固件存储设备中。
可选地,集成电路芯片可从已被第一拨码开关接通的仿真程序存储设备中读取至少一个目标固件仿真程序,或根据与集成电路芯片连接的计算机所发送的指定地址对应的仿真程序存储设备中读取至少一个目标固件仿真程序。
应理解,集成电路芯片在运行目标固件仿真程序时,可根据目标固件仿真程序中的指令调用目标固件来完成固件仿真过程。
步骤502,集成电路芯片在检测到已连接目标硬件设备之后,从至少一个固件存储设备中读取目标固件;
可选地,集成电路芯片可从已被第二拨码开关接通的固件存储设备中读取至少一个目标固件,或根据与集成电路芯片连接的计算机所发送的指定地址对应的固件存储设备中读取至少一个目标固件。
可选地,集成电路芯片可将读取到的目标固件缓存在缓存存储设备中,以等待集成电路芯片依次执行目标固件。
步骤503,集成电路芯片执行目标固件,以驱动目标硬件设备执行与目标固件对应的操作。
可选地,为了能够根据目标固件对集成电路芯片的寄存器进行写操作,从而控制各目标硬件设备和集成电路芯片之间的输入输出关系,可先将目标固件转换成预先定义的多个执行码。例如,在本申请实施例提供的方法中,集成电路芯片执行目标固件,包括:
集成电路芯片响应于目标固件仿真程序中的执行固件指令,将目标固件中的多条指令,分别翻译成预先定义的多个执行码;
集成电路芯片依次执行多个执行码;
其中,一条指令对应于一个执行码,执行码用于:指示集成电路芯片将集成电路芯片的寄存器中存储的数值,修改为执行码中提供的数值。
可选地,集成电路芯片可在缓存存储设备中对目标固件进行翻译操作。
可选地,为了使得集成电路芯片能够按照顺序执行目标固件中的多个执行码,在本申请实施例提供的方法中,集成电路芯片执行目标固件,包括:
集成电路芯片将多个执行码依次写入先入先出(First Input First Output,FIFO)队列中;
集成电路芯片从FIFO队列中依次读取并执行多个执行码;
其中,FIFO队列为预先建立在集成电路芯片的存储器中的数据存储结构,集成电路芯片的存储器可以包括集成电路芯片内部的SDRAM。
如图6所示,为本申请实施例提供的嵌入式固件仿真方法中一种目标固件的执行过程的示意图。首先,集成电路芯片调用正在集成电路芯片的存储器中运行的目标固件仿真程序中的指令解释器,并根据该指令解释器将目标固件中多个二进制指令分别解析为预先定义的多个执行码;然后,将该多个执行码写入集成电路芯片的存储器的FIFO队列中;最后,按照FIFO队列的先入先出规则,依次执行这多个执行码,通过逻辑运算单元和算术运算单元,对IO控制寄存器和存储器进行写或读操作。
其中,一个指令解释器对应于一种处理器架构。
可选地,FIFO队列每写入一个执行码,该FIFO队列内部的写入地址可向低地址偏移该执行码所占用的字节数,直至写入地址偏移至0,那么,下一个执行码可被写入FIFO队列的最高地址处。如果,在写入执行码时发现写入地址对应的位置已有数据写入,则表示FIFO队列已被写满数据,暂停之后的写入操作,直至FIFO队列中有空闲的地址。
当一个执行码被从FIFO队列中读取出时,将原先存储该执行码的地址格式化,并可将FIFO队列内部的写出地址向低地址偏移该执行码所占用的字节数,直至写出地址偏移至0,那么,可从FIFO队列的最高地址处读取下一个执行码。
可选地,为了便于用户观察嵌入式固件仿真系统的仿真结果,在驱动目标硬件设备执行与目标固件对应的操作之后,本申请实施例提供的方法还包括:
集成电路芯片接收目标硬件设备发送的仿真结果数据,并将仿真结果数据缓存至缓存存储设备中;
集成电路芯片响应于来自与集成电路芯片连接的计算机的查看指令,将仿真结果数据发送至计算机;
其中,仿真结果数据包括目标硬件设备在执行与目标固件对应的操作时,产生的与执行过程相关的数据,和/或目标硬件设备在执行与目标固件对应的操作之后,生成的与执行结果相关的数据。
例如,当目标硬件设备是麦克风时,麦克风在运行后产生的结果数据可以包括麦克风接收到的声音生成的音频数据。
例如,如图7所示,为本申请实施例提供的嵌入式固件仿真方法在一种实际应用中的具体流程示意图。下面结合图7中的一种实施例进行说明,具体包括:
步骤701,集成电路芯片接收到复位指令;
步骤702,集成电路芯片开始扫描缓存存储设备是否有目标固件;
步骤703,集成电路芯片读取缓存存储设备中目标固件的二进制指令;
步骤704,若在读取二进制指令时遇到空指令,集成电路芯片则重复读取动作;
步骤705,集成电路芯片调用正在集成电路芯片的存储器中运行的目标固件仿真程序中的指令解释器,并根据该指令解释器将目标固件中的二进制指令解析为预先定义的执行码;
步骤706,集成电路芯片将该执行码写入内部的FIFO队列中,并开始执行该执行码;
步骤707,若执行步骤706中的执行码的过程被中断,集成电路芯片则继续执行该被中断的执行码;
步骤708,若执行步骤706中的执行码不需要对集成电路芯片的寄存器进行写操作,集成电路芯片则继续从目标固件中读取其他二进制指令;
步骤709,若执行步骤706中的执行码需要对集成电路芯片的寄存器进行写操作,则将该执行码中的数值写入集成电路芯片的寄存器的相应位置,并刷新集成电路芯片的寄存器。
可选地,在本申请实施例提供的方法中,除了通过运行目标固件仿真程序来构建用户需要的处理器架构,还可通过集成电路芯片中的硬核或软核,将集成电路芯片虚拟成一个完整的中央处理器,除了能够实现指令解释器将二进制指令解析为执行码的功能,还能够实现普通CPU的其他功能。这种方式更加方便快捷,不需要用户自己设计并编写目标固件仿真程序。
例如,如图8所示,为本申请实施例提供的嵌入式固件仿真方法中一种集成电路芯片虚拟出的中央处理器时的结构示意图。其中,集成电路芯片虚拟出的中央处理器可包括通用型输入输出(General-Purpose Input/Output,GPIO)控制单元、高速随机存取存储器(Random-Access Memory,RAM)和只读存储器(Read-Only Memory,ROM)等。
在本申请实施例中,提供的嵌入式固件仿真系统包括集成电路芯片、至少一个仿真程序存储设备和至少一个固件存储设备,其中:至少一个仿真程序存储设备通过第一多路复用器与集成电路芯片连接,每个仿真程序存储设备存储有固件仿真程序,一个固件仿真程序对应于一种处理器架构;固件仿真程序中至少包含用于仿真出目标处理器架构并驱动集成电路芯片运行的目标固件仿真程序;至少一个固件存储设备通过第二多路复用器与集成电路芯片连接,每个固件存储设备存储有固件;固件中至少包含用于驱动目标硬件设备运行的目标固件;集成电路芯片响应于用于指示集成电路芯片开始仿真的控制信号,从仿真程序存储设备中读取并运行目标固件仿真程序;在检测到已连接目标硬件设备之后,从至少一个固件存储设备中读取并执行目标固件,以驱动目标硬件设备执行与目标固件对应的操作。
这样,本申请实施例提供的方法能够在集成电路芯片已与目标硬件设备连接的前提下,使得集成电路芯片虚拟出来的操作系统内核能够检测到目标硬件设备,并正常运行用户需要的处理器架构对应的目标固件仿真程序,从而成功进行嵌入式固件仿真,提高了嵌入式固件仿真系统的通用性。
本申请实施例还提供一种集成电路芯片900,如图9所示,包括:
程序读取单元901,用于响应于用于控制集成电路芯片开始仿真的控制信号,从仿真程序存储设备读取目标固件仿真程序;
固件读取单元902,用于在检测到所述集成电路芯片已连接目标硬件设备之后,从至少一个固件存储设备中读取目标固件;
所述集成电路芯片900用于:执行所述目标固件,以驱动所述目标硬件设备执行与所述目标固件对应的操作。
可选地,在一种实施方式中,所述集成电路芯片900,用于:
响应于所述目标固件仿真程序中的执行固件指令,将所述目标固件中的多条指令,分别翻译成预先定义的多个执行码;
依次执行所述多个执行码;
其中,一条指令对应于一个执行码,所述执行码用于:指示所述集成电路芯片将所述集成电路芯片的寄存器中存储的数值,修改为所述执行码中提供的数值。
可选地,在一种实施方式中,所述集成电路芯片900,用于:
将所述多个执行码依次写入先入先出FIFO队列中;
从所述FIFO队列中依次读取并执行所述多个执行码;
其中,所述FIFO队列为预先建立在所述集成电路芯片的存储器中的数据存储结构。
可选地,在一种实施方式中,所述集成电路芯片900,还包括:
数据接收单元903,用于接收所述目标硬件设备发送的仿真结果数据,并将所述仿真结果数据缓存至所述缓存存储设备中;
数据发送单元904,用于响应于来自与所述集成电路芯片连接的计算机的查看指令,将所述仿真结果数据发送至所述计算机;
其中,所述仿真结果数据包括所述目标硬件设备在执行与所述目标固件对应的操作时,产生的与执行过程相关的数据,和/或所述目标硬件设备在执行与所述目标固件对应的操作之后,生成的与执行结果相关的数据。
集成电路芯片900能够实现图5~图8的方法实施例的方法,具体可参考图5~图8所示实施例的嵌入式固件仿真方法,不再赘述。
在本申请实施例中,提供的嵌入式固件仿真系统包括集成电路芯片、至少一个仿真程序存储设备和至少一个固件存储设备,其中:至少一个仿真程序存储设备通过第一多路复用器与集成电路芯片连接,每个仿真程序存储设备存储有固件仿真程序,一个固件仿真程序对应于一种处理器架构;固件仿真程序中至少包含用于仿真出目标处理器架构并驱动集成电路芯片运行的目标固件仿真程序;至少一个固件存储设备通过第二多路复用器与集成电路芯片连接,每个固件存储设备存储有固件;固件中至少包含用于驱动目标硬件设备运行的目标固件;集成电路芯片响应于用于指示集成电路芯片开始仿真的控制信号,从仿真程序存储设备中读取并运行目标固件仿真程序;在检测到已连接目标硬件设备之后,从至少一个固件存储设备中读取并执行目标固件,以驱动目标硬件设备执行与目标固件对应的操作。
这样,本申请实施例提供的方法能够在集成电路芯片已与目标硬件设备连接的前提下,使得集成电路芯片虚拟出来的操作系统内核能够检测到目标硬件设备,并正常运行用户需要的处理器架构对应的目标固件仿真程序,从而成功进行嵌入式固件仿真,提高了嵌入式固件仿真系统的通用性。
图10是本说明书的一个实施例提供的电子设备的结构示意图。请参考图10,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(Random-Access Memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。
处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是ISA(Industry Standard Architecture,工业标准体系结构)总线、PCI(PeripheralComponent Interconnect,外设部件互连标准)总线或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图10中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。
处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成集成电路芯片。处理器,执行存储器所存放的程序,并具体用于执行以下操作:
所述集成电路芯片响应于用于控制所述集成电路芯片开始仿真的控制信号,从仿真程序存储设备中读取目标固件仿真程序;
所述集成电路芯片在检测到已连接所述目标硬件设备之后,从所述至少一个固件存储设备中读取所述目标固件;
所述集成电路芯片执行所述目标固件,以驱动所述目标硬件设备执行与所述目标固件对应的操作。
在本申请实施例中,提供的嵌入式固件仿真系统包括集成电路芯片、至少一个仿真程序存储设备和至少一个固件存储设备,其中:至少一个仿真程序存储设备通过第一多路复用器与集成电路芯片连接,每个仿真程序存储设备存储有固件仿真程序,一个固件仿真程序对应于一种处理器架构;固件仿真程序中至少包含用于仿真出目标处理器架构并驱动集成电路芯片运行的目标固件仿真程序;至少一个固件存储设备通过第二多路复用器与集成电路芯片连接,每个固件存储设备存储有固件;固件中至少包含用于驱动目标硬件设备运行的目标固件;集成电路芯片响应于用于指示集成电路芯片开始仿真的控制信号,从仿真程序存储设备中读取并运行目标固件仿真程序;在检测到已连接目标硬件设备之后,从至少一个固件存储设备中读取并执行目标固件,以驱动目标硬件设备执行与目标固件对应的操作。
这样,本申请实施例提供的方法能够在集成电路芯片已与目标硬件设备连接的前提下,使得集成电路芯片虚拟出来的操作系统内核能够检测到目标硬件设备,并正常运行用户需要的处理器架构对应的目标固件仿真程序,从而成功进行嵌入式固件仿真,提高了嵌入式固件仿真系统的通用性。
上述如本说明书图5~图8所示实施例揭示的嵌入式固件仿真方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本说明书一个或多个实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本说明书一个或多个实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
该电子设备还可执行图5~图8的嵌入式固件仿真方法,本说明书在此不再赘述。
当然,除了软件实现方式之外,本说明书的电子设备并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
总之,以上所述仅为本说明书的较佳实施例而已,并非用于限定本说明书的保护范围。凡在本说明书一个或多个实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例的保护范围之内。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
Claims (10)
1.一种嵌入式固件仿真系统,其特征在于,所述系统包括集成电路芯片、至少一个仿真程序存储设备和至少一个固件存储设备,其中:
所述至少一个仿真程序存储设备通过第一多路复用器与所述集成电路芯片连接,每个仿真程序存储设备存储有固件仿真程序,一个固件仿真程序对应于一种处理器架构;所述固件仿真程序中至少包含用于仿真出目标处理器架构并驱动所述集成电路芯片运行的目标固件仿真程序;
所述至少一个固件存储设备通过第二多路复用器与所述集成电路芯片连接,每个固件存储设备存储有固件;所述固件中至少包含用于驱动目标硬件设备运行的目标固件;
所述集成电路芯片响应于用于指示所述集成电路芯片开始仿真的控制信号,从仿真程序存储设备中读取并运行所述目标固件仿真程序;在检测到已连接所述目标硬件设备之后,从所述至少一个固件存储设备中读取并执行所述目标固件,以驱动所述目标硬件设备执行与所述目标固件对应的操作。
2.如权利要求1所述的系统,其特征在于,所述系统还包括缓存存储设备和配置存储设备,其中:
所述缓存存储设备与所述集成电路芯片连接,所述缓存存储设备,存储有所述集成电路芯片从所述至少一个固件存储设备中读取的所述目标固件;以及,存储有所述目标硬件设备在执行与所述目标固件对应的操作之后发送的仿真结果数据;
所述配置存储设备与所述集成电路芯片连接,所述配置存储设备存储有用于初始化所述嵌入式固件仿真系统的配置信息。
3.如权利要求1所述的系统,其特征在于,所述系统还包括监控器,其中:
所述监控器与所述集成电路芯片连接,所述监控器用于监控所述目标固件的执行状态;以及,向所述集成电路芯片发送控制信号;
其中,所述控制信号包括用于控制所述集成电路芯片开始仿真的控制信号、和/或用于控制所述集成电路芯片停止仿真的控制信号。
4.如权利要求1所述的系统,其特征在于,所述系统还包括第一拨码开关和第二拨码开关,其中:
所述第一拨码开关与所述第一多路复用器连接,所述第一拨码开关用于接通或断开所述集成电路芯片和存储所述目标固件仿真程序的仿真程序存储设备之间的连接;
所述第二拨码开关与所述第二多路复用器连接,所述第二拨码开关用于接通或断开所述集成电路芯片和存储所述目标固件的固件存储设备之间的连接。
5.一种嵌入式固件仿真方法,所述方法应用于如权利要求1~4任一所述的嵌入式固件仿真系统,其特征在于,包括:
所述集成电路芯片响应于用于控制所述集成电路芯片开始仿真的控制信号,从仿真程序存储设备中读取目标固件仿真程序;
所述集成电路芯片在检测到已连接所述目标硬件设备之后,从所述至少一个固件存储设备中读取所述目标固件;
所述集成电路芯片执行所述目标固件,以驱动所述目标硬件设备执行与所述目标固件对应的操作。
6.如权利要求5所述的方法,其特征在于,所述集成电路芯片执行所述目标固件,包括:
所述集成电路芯片响应于所述目标固件仿真程序中的执行固件指令,将所述目标固件中的多条指令,分别翻译成预先定义的多个执行码;
所述集成电路芯片依次执行所述多个执行码;
其中,一条指令对应于一个执行码,所述执行码用于:指示所述集成电路芯片将所述集成电路芯片的寄存器中存储的数值,修改为所述执行码中提供的数值。
7.如权利要求6所述的方法,其特征在于,所述集成电路芯片执行所述目标固件,包括:
所述集成电路芯片将所述多个执行码依次写入先入先出FIFO队列中;
所述集成电路芯片从所述FIFO队列中依次读取并执行所述多个执行码;
其中,所述FIFO队列为预先建立在所述集成电路芯片的存储器中的数据存储结构。
8.如权利要求5所述的方法,其特征在于,在所述驱动所述目标硬件设备执行与所述目标固件对应的操作之后,所述方法还包括:
所述集成电路芯片接收所述目标硬件设备发送的仿真结果数据,并将所述仿真结果数据缓存至所述缓存存储设备中;
所述集成电路芯片响应于来自与所述集成电路芯片连接的计算机的查看指令,将所述仿真结果数据发送至所述计算机;
其中,所述仿真结果数据包括所述目标硬件设备在执行与所述目标固件对应的操作时,产生的与执行过程相关的数据,和/或所述目标硬件设备在执行与所述目标固件对应的操作之后,生成的与执行结果相关的数据。
9.一种集成电路芯片,其特征在于,包括:
程序读取单元,用于响应于用于控制集成电路芯片开始仿真的控制信号,从仿真程序存储设备读取目标固件仿真程序;
固件读取单元,用于在检测到所述集成电路芯片已连接目标硬件设备之后,从至少一个固件存储设备中读取目标固件;
所述集成电路芯片用于:执行所述目标固件,以驱动所述目标硬件设备执行与所述目标固件对应的操作。
10.一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行如权利要求5~8任一权项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011127579.XA CN114385524B (zh) | 2020-10-20 | 2020-10-20 | 嵌入式固件仿真系统及其方法、装置和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011127579.XA CN114385524B (zh) | 2020-10-20 | 2020-10-20 | 嵌入式固件仿真系统及其方法、装置和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114385524A true CN114385524A (zh) | 2022-04-22 |
CN114385524B CN114385524B (zh) | 2024-05-31 |
Family
ID=81193620
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011127579.XA Active CN114385524B (zh) | 2020-10-20 | 2020-10-20 | 嵌入式固件仿真系统及其方法、装置和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114385524B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116069453A (zh) * | 2023-04-04 | 2023-05-05 | 苏州浪潮智能科技有限公司 | 一种仿真系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103353931A (zh) * | 2012-02-14 | 2013-10-16 | 杰纳斯技术股份有限公司 | 安全增强型计算机系统和方法 |
CN104077204A (zh) * | 2014-07-22 | 2014-10-01 | 无锡中微爱芯电子有限公司 | 可重构的8位rsic单片机仿真器 |
-
2020
- 2020-10-20 CN CN202011127579.XA patent/CN114385524B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103353931A (zh) * | 2012-02-14 | 2013-10-16 | 杰纳斯技术股份有限公司 | 安全增强型计算机系统和方法 |
CN104077204A (zh) * | 2014-07-22 | 2014-10-01 | 无锡中微爱芯电子有限公司 | 可重构的8位rsic单片机仿真器 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116069453A (zh) * | 2023-04-04 | 2023-05-05 | 苏州浪潮智能科技有限公司 | 一种仿真系统 |
Also Published As
Publication number | Publication date |
---|---|
CN114385524B (zh) | 2024-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101574403B1 (ko) | 결합된 가상 그래픽 장치 | |
US20180074843A1 (en) | System, method, and computer program product for linking devices for coordinated operation | |
US11914997B2 (en) | Method and system for executing new instructions | |
US11669328B2 (en) | Method and system for converting instructions | |
US11803383B2 (en) | Method and system for executing new instructions | |
US20220206809A1 (en) | Method and system for executing new instructions | |
US7581037B2 (en) | Effecting a processor operating mode change to execute device code | |
US20180246840A1 (en) | Intelligent Certificate Discovery in Physical and Virtualized Networks | |
US11954520B2 (en) | Micro kernel scheduling method and apparatus | |
CN111209193A (zh) | 程序的调试方法及装置 | |
CN112579508A (zh) | 一种数据处理方法、数据处理装置、设备及存储介质 | |
US10467078B2 (en) | Crash dump extraction of guest failure | |
CN114385524B (zh) | 嵌入式固件仿真系统及其方法、装置和电子设备 | |
US20110106522A1 (en) | virtual platform for prototyping system-on-chip designs | |
US20180143890A1 (en) | Simulation apparatus, simulation method, and computer readable medium | |
CN117150478A (zh) | 一种基于片上系统的信任根、芯片以及数据校验方法 | |
AU2017438670B2 (en) | Simulation device, simulation method, and simulation program | |
CN116540929A (zh) | 磁盘阵列的虚拟化读取方法、装置、电子设备及存储介质 | |
US10445218B2 (en) | Execution of graphic workloads on a simulated hardware environment | |
US10534682B2 (en) | Method and diagnostic apparatus for performing diagnostic operations upon a target apparatus using transferred state and emulated operation of a transaction master | |
CN109753308B (zh) | 指令通路验证系统及指令通路监测方法 | |
KR100751063B1 (ko) | 임베디드 시스템의 프로그램 개발을 위한 pc 기반의에뮬레이션 제공 방법 및 장치 | |
CN117251118B (zh) | 支持虚拟NVMe仿真与集成方法及系统 | |
US11789736B2 (en) | Method and system for executing new instructions | |
CN112860224B (zh) | 一种函数执行环境构建方法、装置、电子设备及存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |