发明内容
有鉴于此,本发明提供了一种硬件现场复现的方法及装置,以克服现有技术借助芯片以及开发板等硬件环境实现硬件现场复现,所造成的降低硬件现场复现的速度的问题。
为实现上述目的,本发明提供如下技术方案:
一种硬件现场复现的方法,包括:
在芯片出现异常时,备份当前硬件现场中的数据信息,生成数据备份文件;
获取携带调试信息的可执行文件,解析所述可执行文件,得到所述调试信息所对应的芯片运行的程序数据信息;
映射所述程序数据信息对应的实际物理地址;
转化映射后的所述实际物理地址,建立其与所述数据备份文件之间的对应关系;
依据所述对应关系从所述数据备份文件的备份中,读取所述实际物理地址对应的变量数据;
获取备份于所述数据备份文件中的开发板或测试板上的内存数据和寄存器数据;
显示所述变量数据、内存数据和寄存器数据于用户接口,复现硬件现场。
优选的,所述建立所述实际物理地址与所述数据备份文件之间的对应关系所采用的方式为:
转化映射后的所述实际物理地址为所述数据备份文件的文件指针。
优选的,所述获取携带调试信息的可执行文件之前还包括:
创建虚拟内存,模拟芯片、开发板或测试板上的硬件信息,将所述数据备份文件移动至所述虚拟内存中,所述数据备份文件中包括开发板或测试板上的内存数据与寄存器数据,以及芯片运行程序时的相关变量数据。
优选的,所述读取实际物理地址对应的变量数据、以及获取内存数据和寄存器数据之后,所述显示之前还包括:
通过通信媒介将所述变量数据、内存数据和寄存器数据发送至所述用户接口。
优选的,所述建立所述实际物理地址与所述数据备份文件之间的对应关系采用非文件指针的方式进行建立。
优选的,所述用户接口为图形界面接口。
优选的,所述携带调试信息的可执行文件为芯片未出现异常前运行的文件。
一种硬件现场复现的装置,包括:
检测单元,用于检测芯片是否出现异常;
备份单元,用于备份当前硬件现场中的数据信息,生成数据备份文件;
分析单元,用于分析携带调试信息的可执行文件;所述分析单元中包括:
获取模块,用于获取携带调试信息的可执行文件;
解析模块,用于解析所述可执行文件,获取所述可执行文件中携带的调试信息所对应的芯片运行的程序数据信息;
映射模块,用于映射所述程序数据信息对应的实际物理地址;
建立模块,用于转化映射后的所述实际物理地址,建立其与所述数据备份文件之间的对应关系;
读取单元,用于依据所述对应关系从所述数据备份文件的备份中,读取所述实际物理地址对应的变量数据;
获取单元,用于获取备份于所述数据备份文件中的开发板或测试板上的内存数据和寄存器数据;
复现单元,用于显示所述真实数据于用户接口,复现硬件现场。
优选的,所述装置中还包括:
创建单元,用于创建虚拟内存;
移动单元,用于将所述数据备份文件移动至预设的所述虚拟内存中。
优选的,所述装置中的创建单元、移动单元、检测单元、备份单元、分析单元设置于服务端;所述装置中的读取单元、获取单元和复现单元设置于客户端;所述服务端与客户端通过通信媒介进行信息交互。
经由上述的技术方案可知,与现有技术相比,本发明公开了一种硬件现场复现的方法及装置,其方法采用在芯片出现运行异常时,备份当前硬件现场中的数据信息,并生成相应的数据备份文件;然后,通过分析调试信息、映射等一系列操作,依据获取到的实际物理地址从数据备份文件中获取复现需要的数据信息,以及对于不需要分析调试信息的数据信息直接从数据备份文件中获取;最后,将获取到的相关数据信息发送于用户接口并显示,实现硬件现场的复现。通过本发明公开的方法,不需要仿真器,即不需要依托硬件将备份的数据恢复到芯片及开发板上,而采用软件分析获取复现所需数据的方式,可以提高硬件现场复现的速度并节约硬件资源,同时,在快速复现硬件现场之后也为技术人员提供了便利,进一步提高了技术人员分析芯片问题的时间。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在芯片在硬件环境中运行时出现问题,现有技术所采用的方式是借助芯片以及开发板、测试板将相关的数据恢复至硬件环境中,以便完成对硬件现场的复现,但是,采用现有技术进行硬件现场复现时,依托硬件容易受制于硬件环境的运行速度,以及基于有限的硬件资源会使复现硬件现场的速度受限。但是,本发明所公开的方法及系统涉及一种在完全没有芯片及开发板在内的硬件环境下,利用软件实现硬件现场的复现,提高了复现了速度,在本发明中主要是指基带SoC芯片(System on Chip,系统级芯片),具体的技术方案通过下面本发明公开的实施例进行详细的说明。
实施例一
请参阅附图1,为本发明公开一种硬件现场复现的方法,主要包括以下步骤:
步骤S101,在芯片出现异常时,备份当前硬件现场中的数据信息,生成数据备份文件。
当芯片在运行的过程中出现问题时,此时芯片暂时运行或者停止运行(即时状态),但是芯片仍处于上电的状态,在暂停运行或者停止运行之前硬件现场中的相关数据还没有丢失。因此,备份当前硬件现场中的数据信息,该数据信息包括芯片本身的信息(寄存器中的信息)、芯片上运行的程序数据信息,以及开发板或测试板上的内存、寄存器中的相关数据信息。最后再利用备份的数据信息生成数据备份文件,即在该数据备份文件中保存上述的数据信息,并且这些数据信息为硬件现场复现所需的数据。
步骤S102,获取携带调试信息的可执行文件,解析所述可执行文件,得到所述调试信息所对应的芯片运行的程序数据信息。
步骤S103,映射所述程序数据信息对应的实际物理地址。
步骤S104,转化映射后的所述实际物理地址,建立其与所述数据备份文件之间的对应关系。
步骤S105,依据所述对应关系从所述数据备份文件的备份中,读取所述实际物理地址对应的变量数据。
步骤S106,获取备份于所述数据备份文件中的开发板或测试板上的内存数据和寄存器数据。
步骤S107,显示所述变量数据、内存数据和寄存器数据于用户接口,复现硬件现场。
在执行步骤S102至步骤S106时,分别获取到了实现复现硬件现场所需的相关数据,即变量数据、内存数据和寄存器数据。在上述这些数据的获取过程中,变量数据的获取的方法,需要经过调试信息分析才能得到,而内存数据与寄存器数据则不需要分析调试信息。因此,执行步骤S102至步骤S106主要分为分析调试信息和不必分析调试信息两种过程。
其中,分析调试信息的情况为:执行步骤S102至步骤S105,首先,通过分析携带调试信息的可执行文件获得芯片运行的程序数据信息,例如程序中特定符号、变量的相关数据信息,该相关数据信息中包含有数据信息的物理地址信息;然后,将上述获取的各个程序数据信息的实际物理地址进行映射,再进行转化,建立各个程序数据信息的实际物理地址与数据备份文件之间的关系;最后,通过建立的该种对应关系,获取数据备份文件中该实际物理地址对应的变量数据。
需要说明的是,分析调试信息即是通过对携带调试信息的可执行文件进行解析,此携带调试信息的可执行文件即是芯片发生异常前所运行的文件,通过对其进行解析获取芯片运行的程序数据信息。
此外,分析调试信息的过程是为了得到与芯片上运行程序数据信息相关的实际物理地址,例如某个变量或符号所在内存地址,采用分析调试信息的方式获取相关实际物理地址,是因为芯片上的寄存器(或内存)地址是预先可以根据芯片的用户手册说明得到的,是固定值,并且根据芯片的不同,寄存器(内存)数量、名称、物理地址值都会有所不同。
不需要分析调试信息的情况为:执行步骤S106,直接从数据备份文件中获取,即直接从数据备份文件获取开发板或测试板上的内存数据和寄存器数据。
需要说明的是,由于步骤S102至步骤S105为需要分析调试信息的情况,而步骤S106为不需要分析调试信息的情况,因此,上述步骤S106可以在执行完步骤S105之后执行,也可以在执行步骤S102之前执行,并不影响本发明实施例所公开的技术方案。
在通过上述依据两种不同情况获取与硬件现场复现的相关数据信息之后,执行步骤S107,将执行步骤S105和步骤S106获取到的变量数据、内存数据和寄存器数据发送至用户接口,并将其在用户接口显示,实现用软件复现硬件现场的目的。
需要说明的是,用户接口可分为三类:命令接口、程序接口和图形界面接口。在本发明所公开的该实施例中,用户接口最优的选择为图形界面接口。图形界面接口采用图形化的操作界面,例如窗口、图标、菜单和对话框等图形界面,通过易于识别的各种图形将系统各项功能、各种应用程序和文件,直观、逼真地表示出来,技术人员可通过鼠标、菜单和对话框来查看上述获取到的数据信息,即芯片本身的信息(包括芯片上的寄存器等)或者是开发板(测试板)相关信息,还可以是在芯片上运行的程序数据信息(例如程序的运行结果,运行过程中的信息,包括变量等,最后,通过这些在用户接口处显示的各类信息,实现复现硬件现场的目的,使技术人员可以通过复现的硬件现场对出现异常的芯片进行分析。
在上述本发明实施例公开的基础上,上述对实际物理地址进行映射的过程中可以采用多种现有的方式进行映射,例如利用查表的方式进行映射。另外,在映射实际物理地址之后,建立该实际物理地址与数据备份文件之间的对应关系所采用的方式,由于当前保存数据备份文件的位置不同而有所不同。
当数据备份文件保存于硬盘内存中时,此时建立该实际物理地址与数据备份文件之间的对应关系所采用的方式为:转化映射后的所述实际物理地址为所述数据备份文件的文件指针。然后,在执行上述步骤S105时,依据该文件指针读取数据备份文件中转化为文件指针的实际物理地址对应的变量数据,最后再执行步骤S107将该数据变量提交至用户接口,以便于技术人员查看。
通过上述本发明所公开的实施例,在完全没有芯片及开发板在内的硬件环境下,利用软件实现了硬件现场的复现,提高了复现了速度,节约硬件资源。同时,在快速复现硬件现场之后也为技术人员提供了便利,进一步提高了技术人员分析芯片问题的时间。
此外,根据数据备份文件保存的位置不同,本发明还公开的实施例二,对该种情况进行详细说明。
实施例二
在上述本发明公开的基础上,请参阅附图2,本发明实施例二所公开的一种硬件现场复现的方法,主要包括以下步骤:
步骤S201,在芯片出现异常时,备份当前硬件现场中的数据信息,生成数据备份文件。
步骤S202,创建虚拟内存,模拟芯片、开发板或测试板上的硬件信息,将所述数据备份文件移动至所述虚拟内存中。
在执行步骤S201时备份生成的数据备份文件的过程与实施例一中步骤S101的执行过程一致,这里不再赘述。因此,在执行本实施例的步骤S202时,移动至所述虚拟内存中的数据备份文件中包括开发板或测试板上的内存数据与寄存器数据,以及芯片运行程序时的相关变量数据。
步骤S203,获取携带调试信息的可执行文件,解析所述可执行文件,得到所述调试信息所对应的芯片运行的程序数据信息。
步骤S204,映射所述程序数据信息对应的实际物理地址。
步骤S205,转化映射后的所述实际物理地址,建立其与所述数据备份文件之间的对应关系。
步骤S206,依据所述对应关系从所述数据备份文件的备份中,读取所述实际物理地址对应的变量数据。
步骤S207,获取备份于所述数据备份文件中的开发板或测试板上的内存数据和寄存器数据。
步骤S208,显示所述变量数据、内存数据和寄存器数据于用户接口,复现硬件现场。
在执行步骤S203至步骤S207时,分别获取到了实现复现硬件现场所需的相关数据,即变量数据、内存数据和寄存器数据,在获取上述这些数据的过程中。同样,如实施例一中所述存在经过分析调试信息和不必分析调试信息两种情况。在本发明所公开的实施例二中,步骤S203至步骤S206所执行的过程与实施例一中步骤S102至步骤S105的执行过程基本一致;步骤S207所执行的过程与步骤S106所执行的过程基本一致,这里不再赘述。
需要说明的是,在执行步骤S203至步骤S207时,同样从数据备份文件中获取各类数据,与实施例不同的是,本实施例中数据备份文件保存于虚拟内存中。因此,执行步骤S203至步骤S207时,涉及从数据备份文件中获取数据或信息时,实际上都是从虚拟内存中读取的。
此外,因为,数据备份文件保存于虚拟内存中,所以,在执行步骤S205时,建立所述实际物理地址与所述数据备份文件之间的对应关系采用的方式,可以采用现有的非转化文件指针的方式进行建立,在将实际物理地址进行映射,在读取数据备份文件中对应实际物理地址的变量数据时,采用的是查找虚拟内存区地址偏移量的方法。
通过上述本发明实施例所公开的方法,在备份好实现硬件现场复现的数据,生成相应的数据备份文件,再将该数据备份文件移动至计算机中预先创建的虚拟内存中,并利用该数据备份文件在虚拟内存区内模拟开发板上的数据分部状况和寄存器等状况,以及模拟芯片等硬件信息。在执行上述步骤S203至步骤S208时,直接从保存于该虚拟内存内的数据备份文件中获取所需要的数据或信息,在将其发送至用户接口处,实现利用软件复现硬件现场,而采用本发明直接从虚拟内存中获取所需的数据或信息,不需要读取硬盘,提高了数据查询的速度,使获取到的数据做到最优化,进一步提高了硬件现场复现的速度,并节约了硬件资源。同时,在快速复现硬件现场之后也为技术人员提供了便利,进一步提高了技术人员分析芯片问题的时间。
实施例三
在上述本发明实施例公开的基础上,本发明还公开了一种适用于当用户接口与数据分别处于不同计算机内时的一种硬件现场复现的方法。在本实施例三中,当用户接口与数据分别处于两台计算机时的硬件现场复现的方法,请参阅附图3,在上述实施例一的基础上本实施例的方法主要包括以下步骤:
步骤S101,在芯片出现异常时,备份当前硬件现场中的数据信息,生成数据备份文件。
步骤S102,获取携带调试信息的可执行文件,解析所述可执行文件,得到所述调试信息所对应的芯片运行的程序数据信息。
步骤S103,映射所述程序数据信息对应的实际物理地址。
步骤S104,转化映射后的所述实际物理地址,建立其与所述数据备份文件之间的对应关系。
步骤S105,依据所述对应关系从所述数据备份文件的备份中,读取所述实际物理地址对应的变量数据。
步骤S106,获取备份于所述数据备份文件中的开发板或测试板上的内存数据和寄存器数据。
步骤S108,通过通信媒介将所述变量数据、内存数据和寄存器数据发送至所述用户接口。
步骤S107,显示所述变量数据、内存数据和寄存器数据于用户接口,复现硬件现场。
需要说明的是,上述步骤S101、S102、S103、S104、S105、S106和步骤S107与实施例一中的相同标号的步骤执行的内容基本相同这里不再赘述,本实施例与实施例一所不同的是,将在一台计算机中获取的硬件现场所需的数据通过通信媒介发送至另一台计算机的用户接口处,并在该用户接口处显示,实现硬件现场的复现。
请参阅附图4,在实施例二的基础上,本实施例的方法主要包括以下步骤:
步骤S201,在芯片出现异常时,备份当前硬件现场中的数据信息,生成数据备份文件。
步骤S202,创建虚拟内存,模拟芯片、开发板或测试板上的硬件信息,将所述数据备份文件移动至所述虚拟内存中。
步骤S203,获取携带调试信息的可执行文件,解析所述可执行文件,得到所述调试信息所对应的芯片运行的程序数据信息。
步骤S204,映射所述程序数据信息对应的实际物理地址。
步骤S205,转化映射后的所述实际物理地址,建立其与所述数据备份文件之间的对应关系。
步骤S206,依据所述对应关系从所述数据备份文件的备份中,读取所述实际物理地址对应的变量数据。
步骤S207,获取备份于所述数据备份文件中的开发板或测试板上的内存数据和寄存器数据。
步骤S209,通过通信媒介将所述变量数据、内存数据和寄存器数据发送至所述用户接口。
步骤S208,显示所述变量数据、内存数据和寄存器数据于用户接口,复现硬件现场。
需要说明的是,上述步骤S201、S202、S203、S204、S205、S206、S207和步骤S208与实施例二中的相同标号的步骤执行的内容基本相同这里不再赘述,所不同的是,本实施例将在一台计算机中获取的变量数据、内存数据和寄存器数据通过通信媒介发送至另一台计算机的用户接口处,并在该用户接口处显示,实现硬件现场的复现。
此外,在上述本发明实施例三执行的步骤S108和步骤S209中,通过通信媒介将所述变量数据、内存数据和寄存器数据发送至所述用户接口,所述通信媒介可以是现有的特定物理通信媒介,例如USB线(Universal Serial BUS,通用串行总线),或者是现有的通信协议,例如TCP/TP网络协议。
在本发明实施例三中所公开的方法中,利用一台计算机模拟现有技术中的仿真器,将仿真器在内的所有硬件软件化了,然后,在通过另一台计算机进行查看、调试芯片。采用本发明实施例三所公开的方法,不仅实现了在完全没有硬件的情况下快速对硬件现场进行复现,真正实现了现场恢复无硬件化目的,而且,在本实施例三中,针对不同的芯片只需要将提供数据的计算机进行改动,即根据具体芯片的内存地址分配,相关寄存器地址变动等,进行具体的改动的,然后,再利用上述过程快速实现硬件现场的复现。
需要说明的是,在根据需要在用户接口上显示的计算机上也可以根据需要做相应的改动,然后,再实现硬件现场复现,进一步增加调试人员使用的灵活性和方便性。
上述本发明公开的实施例中详细描述了一种硬件现场复现的方法,对于本发明的方法可采用多种形式的装置实现,因此本发明还公开了一种硬件现场复现的装置,下面给出具体的实施例进行详细说明。
请参阅附图5,为本发明所公开的一种硬件现场复现的装置结构示意图,主要包括:检测单元501、备份单元502、分析单元503、读取单元504、获取单元505和复现单元506。其中,检测单元501与备份单元502连接,备份单元与分析单元503、读取单元504、获取单元505相连接,分析单元503与读取单元504相连接,读取单元504和获取单元505分别与复现单元506相连接。
检测单元501,用于检测芯片是否出现异常。
备份单元502,用于备份当前硬件现场中的数据信息,生成数据备份文件。
分析单元503,用于分析携带调试信息的可执行文件。
需要说明的是,在分析单元503中包括:获取模块5031、解析模块5032、映射模块5033和建立模块5034。
获取模块5031,用于获取携带调试信息的可执行文件。
解析模块5032,用于解析所述可执行文件,获取所述可执行文件中携带的调试信息所对应的芯片运行的程序数据信息。
映射模块5033,用于映射所述程序数据信息对应的实际物理地址。
建立模块5034,用于转化映射后的所述实际物理地址,建立其与所述数据备份文件之间的对应关系。
读取单元504,用于依据所述对应关系从所述数据备份文件的备份中,读取所述实际物理地址对应的变量数据。
获取单元505,用于获取备份于所述数据备份文件中的开发板或测试板上的内存数据和寄存器数据。
复现单元506,用于显示所述真实数据于用户接口,复现硬件现场。
本发明实施例公开的装置基于上述本发明所公开的方法执行相关的获取数据过程,具体过程为:当检测单元501检测出芯片的运行出现了异常,利用备份单元502将实现硬件现场复现的数据进行备份,然后,再利用分析单元503、读取单元504和获取单元505从备份单元502生成的数据备份文件中获取相应的数据或信息,最后,在复现单元506上显示,实现硬件现场的复现。
在上述本发明公开的装置的基础上,请参阅附图6,本装置中还可以包括:创建单元507和移动单元508。
创建单元507,用于创建虚拟内存。
移动单元508,用于将所述数据备份文件移动至预设的所述虚拟内存中。
需要说明的是,创建单元507分别与移动单元508、读取单元504、获取单元505相连接;移动单元508分别与备份单元502、创建单元507相连接。
请参阅附图7,上述本发明实施例公开的装置可以分为客户端1和服务端2,在所述客户端1中包括:读取单元504、获取单元505和复现单元506;所述服务端2中包括:创建单元507、移动单元508、检测单元501、备份单元502、分析单元503。
其中,所述服务端2与客户端1通过通信媒介3进行信息交互,所述通信媒介3可以是特定物理通信媒介,例如USB线(Universal SerialBUS,通用串行总线),也可以是现有的通信协议,例如TCP/TP网络协议。
综上所述:
通过本发明公开的方法及装置,利用软件模拟仿真器,即不需要依托硬件将备份的数据恢复到芯片及开发板上,而采用软件分析获取复现所需数据的方式,可以提高硬件现场复现的速度并节约硬件资源,同时,在快速复现硬件现场之后也为技术人员提供了便利,进一步提高了技术人员分析芯片问题的时间。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。