数据的识别方法、数据的识别装置、存储介质和电子设备与流程
未命名
07-22
阅读:111
评论:0
1.本技术涉及计算机技术领域,具体而言,涉及一种数据的识别方法、交互数据的识别装置、计算机可读存储介质和电子设备。
背景技术:
2.随着汽车电子的发展,汽车功能在不断增多,随之带来的是控制器功能的更加复杂,从而导致控制软件逻辑的复杂程度不断增加,且控制逻辑的复杂势必会带来大量的数据变量。为了解决上述问题,目前随着汽车控制器性能的逐渐提高,芯片已经由简单的单核发展为多核,使得不同的功能在不同的核芯运行。
3.然而,控制功能多核运行势必会带来数据不一致以及相互干扰的情况,且在项目开发阶段,开发人员势必不会面面俱到,从而不会考虑到每个变量在程序中的运行情况,因此,如果出现软件跨核读取数据的问题的情况,会严重影响系统整体运行效率。
技术实现要素:
4.本技术的主要目的在于提供一种数据的识别方法、数据的识别装置、计算机可读存储介质和电子设备,以至少解决现有技术中判断系统整体运行过程中是否存在跨核读取数据的问题。
5.为了实现上述目的,根据本技术的一个方面,提供了一种数据的识别方法,包括:获取嵌入式软件的目标文件和嵌入式软件的map文件;对目标文件和map文件分别进行程序静态分析,得到嵌入式软件中多个目标函数所包含的多个第一全局变量以及每个第一全局变量所在的第一核芯,多个目标函数与目标文件对应;在嵌入式软件的程序处于动态运行的情况下,获取当前核芯所访问的多个第一全局变量中的目标第一全局变量,当前核芯为第一核芯或第二核芯;在目标第一全局变量对应的当前核芯为第二核芯的情况下,确定嵌入式软件存在跨核交互数据现象,跨核交互数据现象表示为以下至少之一:第一全局变量被第二核芯访问,第一全局变量被第一核芯和一个第二核芯同时访问,第一全局变量被多个第二核芯同时访问。
6.进一步地,识别方法还包括:获取存在跨核交互数据现象的所有目标第一全局变量以及访问每个目标第一全局变量的第二核芯,当前核芯包括至少一个第二核芯;根据每个目标第一全局变量对应的至少一个第二核芯和每个第二核芯对应的第一全局变量,确定每个目标第一全局变量的数据交互形式。
7.进一步地,对目标文件和map文件分别进行程序静态分析,得到嵌入式软件中多个目标函数所包含的多个第一全局变量以及每个第一全局变量所在的第一核芯,包括:对目标文件进行程序静态分析,确定出每个目标文件对应的多个目标函数和每个目标函数所包含的第一全局变量;对map文件进行程序静态分析,至少获取嵌入式软件的目标全局变量,以及确定目标全局变量对应的目标文件,目标全局变量为多个第一全局变量中位于第一核芯的存储区的第一全局变量。
8.进一步地,在嵌入式软件的程序处于动态运行的情况下,获取当前核芯所访问的多个第一全局变量中的目标第一全局变量,包括:对目标文件和目标全局变量进行递归搜索,得到递归搜索结果;根据递归搜索结果和多个目标函数,生成函数调用树;根据函数调用树,获取当前核芯所访问的目标第一全局变量。
9.进一步地,识别方法还包括:获取嵌入式软件的顶层函数以及顶层函数所在的第一核芯,顶层函数为多个目标函数中的最上层函数。
10.进一步地,在目标第一全局变量对应的当前核芯为第二核芯的情况下,确定嵌入式软件存在跨核交互数据现象,包括:获取与目标第一全局变量对应的预设变量信息,预设变量信息为嵌入式软件的程序处于静态的情况下,目标第一全局变量的变量信息;将与目标第一全局变量对应的当前变量信息与预设变量信息进行匹配,预设变量信息为嵌入式软件的程序处于动态运行的情况下,目标第一全局变量的变量信息;在当前变量信息与预设变量信息不匹配的情况下,确定目标第一全局变量对应的当前核芯为第二核芯;确定嵌入式软件存在跨核交互数据现象。
11.进一步地,当前核芯包括多个,识别方法还包括:提取目标第一全局变量在多个当前核芯中的多个访问频率,当前核芯和访问频率一一对应;从多个访问频率中确定目标核芯,目标核芯为目标第一全局变量访问频率最高的当前核芯;将目标第一全局变量的定义位置修改为目标核芯。
12.根据本技术的再一方面,提供了一种数据的识别装置,包括:第一获取模块,用于获取嵌入式软件的目标文件和嵌入式软件的map文件;分析模块,用于对目标文件和map文件分别进行程序静态分析,得到嵌入式软件中多个目标函数所包含的多个第一全局变量以及每个第一全局变量所在的第一核芯,多个目标函数与目标文件对应;第二获取模块,用于在嵌入式软件的程序处于动态运行的情况下,获取当前核芯所访问的多个第一全局变量中的目标第一全局变量,当前核芯为第一核芯或第二核芯;确定模块,用于在目标第一全局变量对应的当前核芯为第二核芯的情况下,确定嵌入式软件存在跨核交互数据现象,跨核交互数据现象表示为以下至少之一:第一全局变量被第二核芯访问,第一全局变量被第一核芯和一个第二核芯同时访问,第一全局变量被多个第二核芯同时访问。
13.根据本技术的又一方面,提供了一种计算机可读存储介质,计算机可读存储介质包括存储的程序,其中,在程序运行时控制计算机可读存储介质所在设备执行上述数据的识别方法。
14.根据本技术的又一方面,提供了一种电子设备,包括:一个或多个处理器,存储器,以及一个或多个程序,其中,一个或多个程序被存储在存储器中,并且被配置为由一个或多个处理器执行,一个或多个程序包括用于执行上述的数据的识别方法。
15.应用本技术的技术方案,通过首先获取嵌入式软件的目标文件和嵌入式软件的map文件,使得脚本分别对上述目标文件和上述map文件进行程序静态分析,由于每个目标文件对应有多个目标函数,从而在上述程序静态分析之后,脚本能够得到该嵌入式软件中的多个目标函数所包含的多个第一全局变量,以及每个第一全局变量所在的第一核芯,进而在上述嵌入式软件的程序处于动态运行的情况下,再基于上述程序的实际运行,获取到该嵌入式软件的每个核芯在当前动态运行情况下(即当前核芯)访问的目标第一全局变量,其中,上述第一全局变量包括该目标第一全局变量,且该程序处于动态运行情况下的每个
核芯可以是第一核芯或第二核芯,从而在上述程序处于动态运行情况下,若目标第一全局变量对应的当前核芯为第二核芯,则脚本能够确定出该嵌入式软件存在跨核交互数据的现象,从而完成整个嵌入式软件工程的分析,而不需要开发人员进行其他的操作,大大降低了开发人员分析的时间,缩短了开发时间,降低了开发成本,且该识别方法可以直接引入到集成环境中,可直接进行调用使用,具有较高的通用性和可移植性。
附图说明
16.构成本技术的一部分的说明书附图用来提供对本技术的进一步理解,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
17.图1示出了根据本技术的实施例中提供的一种执行数据的识别方法的移动终端的硬件结构框图;
18.图2示出了根据本技术的一个实施例提供的一种数据的识别方法的流程示意图;
19.图3示出了根据本技术的另一个实施例提供的一种数据的识别方法的流程示意图;
20.图4示出了根据本技术的实施例提供的一种数据的识别方法中,步骤s202的细化流程示意图;
21.图5示出了根据本技术的实施例提供的一种数据的识别方法中,步骤s203的细化流程示意图;
22.图6示出了根据本技术的实施例提供的一种数据的识别装置的结构框图。
具体实施方式
23.需要说明的是,在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本技术。
24.为了使本技术领域的人员更好地理解本技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分的实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本技术保护的范围。
25.需要说明的是,本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
26.正如背景技术中所介绍的,现有技术中控制功能多核运行势必会带来数据不一致以及相互干扰的情况,且在项目开发阶段,开发人员势必不会面面俱到,从而不会考虑到每个变量在程序中的运行情况,因此,如果出现软件跨核读取数据的问题的情况,会严重影响系统整体运行效率。,为解决如何判断系统整体运行过程中是否存在跨核读取数据的问题,本技术的实施例提供了一种数据的识别方法、数据的识别装置、存储介质和电子设备。
27.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
28.本技术实施例中所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图1是本发明实施例的一种数据的识别方法的移动终端的硬件结构框图。如图1所示,移动终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)和用于存储数据的存储器104,其中,上述移动终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
29.存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的数据的识别方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(network interface controller,简称为nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(radio frequency,简称为rf)模块,其用于通过无线方式与互联网进行通讯。
30.在本实施例中提供了一种运行于移动终端、计算机终端或者类似的运算装置的数据的识别方法,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
31.图2是根据本技术实施例的数据的识别方法的流程图。如图2所示,该识别方法包括以下步骤:
32.步骤s201,获取嵌入式软件的目标文件和嵌入式软件的map文件;
33.具体地,嵌入式软件是基于嵌入式系统设计的软件,是计算机软件的一种,同样由程序及其文档组成,是嵌入式系统的重要组成部分,其中,嵌入式操作系统(embedded operation system)是嵌入式软件中最靠近硬件的一层,是用于嵌入式系统的操作系统,嵌入式操作系统是一种用途广泛的系统软件,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等,嵌入式操作系统负责嵌入式系统的全部软件、硬件资源的分配、任务调度、控制、协调并发活动;目标文件是指嵌入式软件在经过编译器编译后,会生成.o形式的文件,该类文件被称为目标文件,包含程序中一些信息;map文件是指编译器编译嵌入式代码后生成的一类包含一定信息的文件。
34.为了获取嵌入式软件在经过编译器编译之后,嵌入式软件中的全局变量被该嵌入式软件中的哪些核芯访问,在该步骤中,由于上述嵌入式软件的目标文件对应有多个目标
函数,且多个目标函数包含有多个全局变量,从而通过采用获取该嵌入式软件的目标文件的方式,使得达到获取该目标文件对应的多个目标函数所包含的多个全局变量的目的,另外,由于上述嵌入式软件的map文件中包含有该嵌入式软件中所包含的所有的全局变量,从而通过采用获取该嵌入式软件中的map文件的方式,使得达到获取该map文件所包含的全局变量的目的。具体地,上述步骤中所提到的全局变量指的是上述嵌入式软件中一种数据形式,该种形式的数据可以被芯片中所有的核芯进行读写访问。
35.步骤s202,对目标文件和map文件分别进行程序静态分析,得到嵌入式软件中多个目标函数所包含的多个第一全局变量以及每个第一全局变量所在的第一核芯,多个目标函数与目标文件对应;
36.具体地,为了获取该嵌入式软件的所有全局变量的初始定义位置,在该嵌入式软件的程序处于静态的情况下,分别对该嵌入式软件的目标文件和该嵌入式软件的map文件进行分析(即程序静态分析),从而通过分析目标文件得到上述嵌入式软件的每个目标文件中多个目标函数所包含的多个第一全局变量,即上述每个目标文件对应有一个或多个目标函数,每个目标函数对应有一个或多个第一全局变量,并通过分析map文件得到上述嵌入式软件的所有第一全局变量以及每个第一全局变量所在的第一核芯,即在嵌入式软件的程序处于静态的情况下,上述每个第一全局变量对应有唯一的第一核芯。
37.步骤s203,在嵌入式软件的程序处于动态运行的情况下,获取当前核芯所访问的多个第一全局变量中的目标第一全局变量,当前核芯为第一核芯或第二核芯;
38.具体地,在上述嵌入式软件的程序处于动态运行的情况下,为了获取该嵌入式软件的所有第一全局变量被哪些核芯所访问,通过监控上述嵌入式软件中的处于当前程序运行过程中的每个核芯(即当前核芯),从而获取到了上述当前核芯所访问的多个第一全局变量,并将该当前核芯所访问的上述多个第一全局变量作为目标第一全局变量,需要注意的是,由于上述每个第一全局变量具有初始定义的对应的第一核芯,但是,由于上述嵌入式软件的程序在实际运行过程中,可能存在同一个第一全局变量被不是初始定义的第一核芯所访问的现象,即该步骤中的上述当前核芯所访问的目标第一全局变量可能还被除上述第一核芯之外的第二核芯所访问,因此该当前核芯包括上述第一核芯或第二核芯。
39.步骤s204,在目标第一全局变量对应的当前核芯为第二核芯的情况下,确定嵌入式软件存在跨核交互数据现象,跨核交互数据现象表示为以下至少之一:第一全局变量被第二核芯访问,第一全局变量被第一核芯和一个第二核芯同时访问,第一全局变量被多个第二核芯同时访问。
40.具体地,跨核数据交互表示为在嵌入式软件中,同一个全局变量可能被多个核芯访问,且每个核芯对应有自己的ram存储区,以及所有核芯存在公共的ram存储区,由于核芯在访问自己的ram存储区和其他核芯的ram存储区时,访问读写的时间是不同的,从而在核芯访问其他核芯的ram存储区中的全局变量时,会增加系统整体访问变量所花费的时间,进而导致系统整体运行速率的下降。因此为了确定该嵌入式软件的程序在实际运行过程中,是否确实存在数据的跨核交互现象(跨核交互数据现象),需要对每个目标第一全局变量对应的当前核芯和该目标第一全局变量的初始定义位置对应的第一核芯进行匹配,从而在上述当前核芯与第一核芯不匹配,即上述当前核芯为第二核芯的情况下,确定得到该嵌入式软件存在跨核交互数据现象。
41.示例性地,上述嵌入式软件包括核芯0和核芯1,且上述核芯0和核芯1分别具有对应的ram区,在理性情况下,假如某一全局变量的初始定义位置在核芯0的ram区中,则该全局变量应该被核芯0读写,不被核芯1读写;假如某一全局变量的初始定义位置在核芯1的ram区中,则该全局变量被核芯1读写,不被核芯0读写。因此,假如某一全局变量的初始定义位置在核芯0的ram区中,而被核芯1进行读写,则核芯1需要访问核芯0的ram区去读写该变量的值,而不是直接去核芯1中读写,此时这个过程即发生的跨核的数据交互。
42.通过本实施例,可以首先获取嵌入式软件的目标文件和嵌入式软件的map文件,使得脚本分别对上述目标文件和上述map文件进行程序静态分析,由于每个目标文件对应有多个目标函数,从而在上述程序静态分析之后,脚本能够得到该嵌入式软件中的多个目标函数所包含的多个第一全局变量,以及每个第一全局变量所在的第一核芯,进而在上述嵌入式软件的程序处于动态运行的情况下,再基于上述程序的实际运行,获取到该嵌入式软件的每个核芯在当前动态运行情况下(即当前核芯)访问的目标第一全局变量,其中,上述第一全局变量包括该目标第一全局变量,且该程序处于动态运行情况下的每个核芯可以是第一核芯或第二核芯,需要注意的是,由于上述第一全局变量对应一个第一核芯,且上述第一全局变量包括上述目标第一全局变量,因此,理想情况下,该目标第一全局变量同样具有唯一对应的第一核芯,从而在上述程序处于动态运行情况下,若目标第一全局变量对应的当前核芯为第二核芯,则脚本能够确定出该嵌入式软件存在跨核交互数据的现象,从而完成整个嵌入式软件工程的分析,而不需要开发人员进行其他的操作,大大降低了开发人员分析的时间,缩短了开发时间,降低了开发成本,且该识别方法可以直接引入到集成环境中,可直接进行调用使用,具有较高的通用性和可移植性。
43.在一些可选的实施方式中,除如图2所示的步骤之外,如图3所示,识别方法还包括:步骤s205,获取存在跨核交互数据现象的所有目标第一全局变量以及访问每个目标第一全局变量的第二核芯,当前核芯包括至少一个第二核芯;步骤s206,根据每个目标第一全局变量对应的至少一个第二核芯和每个第二核芯对应的第一全局变量,确定每个目标第一全局变量的数据交互形式。
44.通过确定了当前核芯与第一核芯不匹配,即上述当前核芯为第二核芯的现象,从而能够确定得到该嵌入式软件存在跨核交互数据现象,但是依旧不能明确上述每个目标第一全局变量实际被哪些第二核芯所访问,因此进一步地,上述实施方式中,为了确定出在上述嵌入式软件的程序实际运行过程中,每个目标第一全局变量被哪些第二核芯所访问,采用了对每个目标第一全局变量进行跟踪的方式,从而能够获取到每个目标第一全局变量和访问对应上述每个目标第一全局变量的第二核芯,可选地,在确定嵌入式软件存在跨核交互数据现象的情况下,对目标第一全局变量对应的变量信息进行记录。需要注意的是,由于上述每个目标第一全局变量可能同时被多个核芯进行访问,因此,上述第二核芯可以是嵌入式软件的程序处于动态运行时的一个核芯或多个核芯。
45.进而由于每个第一全局变量具有初始定义的唯一的第一核芯,且上述目标第一全局变量被上述多个第一全局变量所包含,因此,通过匹配每个上述目标第一全局变量对应的至少一个第二核芯和每个第二核芯对应的第一全局变量,就能够确定出每个目标第一全局变量实际被不同的第二核芯访问。
46.进一步地,在获取到上述存在跨核交互数据现象的所有目标第一全局变量和访问
每个第一目标全局变量的多个第二核芯的情况下,通过确定嵌入式软件的程序处于静态时,上述多个第二核芯中的每个第二核芯对应的初始定义的第一全局变量,从而将该第一全局变量和上述目标第一全局变量进行匹配,在第一全局变量和目标第一全局变量不匹配的情况下,记录该第一全局变量对应的第二核芯,从而能够确定出上述么每个第一目标全局变量可以对应有多个不同的第二核芯,且能够区分出多个不同的第二核芯。
47.在一些可选的实施方式中,如图4所示,步骤s202,对目标文件和map文件分别进行程序静态分析,得到嵌入式软件中多个目标函数所包含的多个第一全局变量以及每个第一全局变量所在的第一核芯,包括:步骤s2021,对目标文件进行程序静态分析,确定出每个目标文件对应的多个目标函数和每个目标函数所包含的第一全局变量;s2022,对map文件进行程序静态分析,至少获取嵌入式软件的目标全局变量,以及确定目标全局变量对应的目标文件,目标全局变量为多个第一全局变量中位于第一核芯的存储区的第一全局变量。
48.上述实施方式中,由于每个目标文件和上述map文件为嵌入式软件中的不同的文件,且该目标文件和map文件中均对应有第一全局变量的相关信息,因此,为了获取该第一全局变量的全部相关信息,分别对上述目标文件和map文件进行程序静态分析,以实现得到与上述第一全局变量相关的全部信息。具体地,嵌入式软件中可以包括有多个目标文件,每个目标文件可以包括多个目标函数,该多个目标函数可以为并列的多个目标函数,也可以为具有包含关系的多个目标函数,即上述每个目标文件可以包括并列的第一目标函数和第二目标函数,进一步地,第一目标函数中还包括有第三目标函数和第四目标函数等,且每个上述目标函数包含有第一全局变量,从而对上述目标文件进行静态程序分析,能够得到嵌入式软件中多个目标函数所包含的多个第一全局变量,且嵌入式软件的map文件中包含有上述所有第一核芯对应的多个第一全局变量,即目标全局变量,以及每个第一全局变量确定有对应的第一核芯,因此通过对上述map文件进行程序静态分析,能够得到每个目标全局变量所在的第一核芯,即能够得到每个第一全局变量所在的第一核芯。
49.可选地,对目标文件和map文件分别进行程序静态分析时,可以先对目标文件进行程序静态分析,也可以先对map文件进行程序静态分析,两者的先后顺序可以互换。
50.在一些可选的实施方式中,如图5所示,步骤s203,在嵌入式软件的程序处于动态运行的情况下,获取当前核芯所访问的多个第一全局变量中的目标第一全局变量,包括:s2031,对目标文件和目标全局变量进行递归搜索,得到递归搜索结果;s2032,根据递归搜索结果和多个目标函数,生成函数调用树;s2033,根据函数调用树,获取当前核芯所访问的目标第一全局变量。
51.为了将嵌入式软件处于动态运行时的每个核芯访问的目标第一全局变量,与嵌入式软件的所有目标文件之间形成一定关联,且由于每个目标全局变量均能够在对应的目标文件中找到,因此,上述实施方式中,采用了对目标文件和目标全局变量进行递归搜索的方式,首先得到每个目标全局变量对目标文件对应的递归搜索结果,进而由于每个目标文件对应有多个目标函数,从而根据上述递归搜索结果和每个目标文件对应的多个目标函数,另外,由于每个目标全局变量对应的第一核芯也是确定的,从而能够建立得到目标文件、目标函数、目标第一全局变量以及第一核芯之间的关系,即函数调用树,进而在获取当前核芯所访问的目标第一全局变量时,直接通过该函数调用树即可确定。
52.在一些可选的实施方式中,识别方法还包括:获取嵌入式软件的顶层函数以及顶
层函数所在的第一核芯,顶层函数为多个目标函数中的最上层函数。
53.上述实施方式中,在获取上述嵌入式软件的每个核芯可能访问的所有的目标函数的过程中,由于与核芯存在直接关系的目标函数为嵌入式软件的最上层根函数(顶层函数),而上述目标函数可能并不是该嵌入式软件的最上层根函数(顶层函数),因此与核芯之间可能并不存在直接关系,从而为了获得上述嵌入式软件的每个核芯可能访问的所有的目标函数,采用了首先分析该嵌入式软件的方式,从而获取得到该嵌入式软件的顶层函数以及该顶层函数对应所在的第一核芯,实现通过该顶层函数,该顶层函数对应的第一核芯以及函数调用树,确定出当前核芯所访问的目标第一全局变量的目的。
54.在一些可选的实施方式中,在目标第一全局变量对应的当前核芯为第二核芯的情况下,确定嵌入式软件存在跨核交互数据现象,包括:获取与目标第一全局变量对应的预设变量信息,预设变量信息为嵌入式软件的程序处于静态的情况下,目标第一全局变量的变量信息;将与目标第一全局变量对应的当前变量信息与预设变量信息进行匹配,预设变量信息为嵌入式软件的程序处于动态运行的情况下,目标第一全局变量的变量信息;在当前变量信息与预设变量信息不匹配的情况下,确定目标第一全局变量对应的当前核芯为第二核芯;
55.上述实施方式中,为了在目标第一全局变量对应的当前核芯为第二核芯的情况下,确定嵌入式软件存在跨核交互数据现象,采用了获取目标第一全局变量在嵌入式软件的程序处于静态状态下对应的预设变量信息,示例性地,该预设变量信息可以为第一全局变量具有唯一对应的第一核芯,以及目标第一全局变量在嵌入式软件的程序处于动态运行状态下对应的实际变量信息,示例性的,该实际变量信息可以为目标第一全局变量具有对应的除第一核芯以外的第二核芯,从而通过比较上述预设变量信息和实际变量信息是否一致,并在上述预设变量信息和实际变量信息不一致,即不匹配的情况下,说明该目标第一全局变量被除第一核芯以外的第二核芯所访问,从而确定出嵌入式软件存在跨核交互数据现象。
56.在一些可选的实施方式中,当前核芯包括多个,识别方法还包括:提取目标第一全局变量在多个当前核芯中的多个访问频率,当前核芯和访问频率一一对应;从多个访问频率中确定目标核芯,目标核芯为目标第一全局变量访问频率最高的当前核芯;将目标第一全局变量的定义位置修改为目标核芯。
57.上述实施方式中,在当前核芯为多个的情况下,由于不同的当前核芯访问目标第一全局变量的频率可能不同,从而不能确定重新定义该目标第一全局变量的最佳核芯,因此,采用了提取目标第一全局变量在多个当前核芯中的多个访问频率的方式,将访问目标第一全局变量的频率最高的当前核芯确定为重新定义该目标第一全局变量的核芯。以实现降低系统运行负荷和提高程序执行效率的目的。
58.本技术实施例还提供了一种数据的识别装置,需要说明的是,本技术实施例的数据的识别装置可以用于执行本技术实施例所提供的用于数据的识别方法。该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
59.以下对本技术实施例提供的数据的识别装置进行介绍。
60.图6是根据本技术实施例的数据的识别装置的示意图。如图6所示,该装置包括:
61.第一获取模块10,用于获取嵌入式软件的目标文件和嵌入式软件的map文件;
62.具体地,嵌入式软件是基于嵌入式系统设计的软件,是计算机软件的一种,同样由程序及其文档组成,是嵌入式系统的重要组成部分,其中,嵌入式操作系统(embedded operation system)是嵌入式软件中最靠近硬件的一层,是用于嵌入式系统的操作系统,嵌入式操作系统是一种用途广泛的系统软件,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等,嵌入式操作系统负责嵌入式系统的全部软件、硬件资源的分配、任务调度、控制、协调并发活动;目标文件是指嵌入式软件在经过编译器编译后,会生成.o形式的文件,该类文件被称为目标文件,包含程序中一些信息;map文件是指编译器编译嵌入式代码后生成的一类包含一定信息的文件。
63.为了获取嵌入式软件在经过编译器编译之后,嵌入式软件中的全局变量被该嵌入式软件中的哪些核芯访问,在该步骤中,由于上述嵌入式软件的目标文件对应有多个目标函数,且多个目标函数包含有多个全局变量,从而通过采用获取该嵌入式软件的目标文件的方式,使得达到获取该目标文件对应的多个目标函数所包含的多个全局变量的目的,另外,由于上述嵌入式软件的map文件中包含有该嵌入式软件中所包含的所有的全局变量,从而通过采用获取该嵌入式软件中的map文件的方式,使得达到获取该map文件所包含的全局变量的目的。具体地,上述步骤中所提到的全局变量指的是上述嵌入式软件中一种数据形式,该种形式的数据可以被芯片中所有的核芯进行读写访问。
64.分析模块20,用于对目标文件和map文件分别进行程序静态分析,得到嵌入式软件中多个目标函数所包含的多个第一全局变量以及每个第一全局变量所在的第一核芯,多个目标函数与目标文件对应;
65.具体地,为了获取该嵌入式软件的所有全局变量的初始定义位置,在该嵌入式软件的程序处于静态的情况下,分别对该嵌入式软件的目标文件和该嵌入式软件的map文件进行分析(即程序静态分析),从而通过分析目标文件得到上述嵌入式软件的每个目标文件中多个目标函数所包含的多个第一全局变量,即上述每个目标文件对应有一个或多个目标函数,每个目标函数对应有一个或多个第一全局变量,并通过分析map文件得到上述嵌入式软件的所有第一全局变量以及每个第一全局变量所在的第一核芯,即在嵌入式软件的程序处于静态的情况下,上述每个第一全局变量对应有唯一的第一核芯。
66.第二获取模块30,用于在嵌入式软件的程序处于动态运行的情况下,获取当前核芯所访问的多个第一全局变量中的目标第一全局变量,当前核芯为第一核芯或第二核芯;
67.具体地,在上述嵌入式软件的程序处于动态运行的情况下,为了获取该嵌入式软件的所有第一全局变量被哪些核芯所访问,通过监控上述嵌入式软件中的处于当前程序运行过程中的每个核芯(即当前核芯),从而获取到了上述当前核芯所访问的多个第一全局变量,并将该当前核芯所访问的上述多个第一全局变量作为目标第一全局变量,需要注意的是,由于上述每个第一全局变量具有初始定义的对应的第一核芯,但是,由于上述嵌入式软件的程序在实际运行过程中,可能存在同一个第一全局变量被不是初始定义的第一核芯所访问的现象,即该步骤中的上述当前核芯所访问的目标第一全局变量可能还被除上述第一核芯之外的第二核芯所访问,因此该当前核芯包括上述第一核芯或第二核芯。
68.确定模块40,用于在目标第一全局变量对应的当前核芯为第二核芯的情况下,确
定嵌入式软件存在跨核交互数据现象,跨核交互数据现象表示为以下至少之一:第一全局变量被第二核芯访问,第一全局变量被第一核芯和一个第二核芯同时访问,第一全局变量被多个第二核芯同时访问。
69.具体地,跨核数据交互表示为在嵌入式软件中,同一个全局变量可能被多个核芯访问,且每个核芯对应有自己的ram存储区,以及所有核芯存在公共的ram存储区,由于核芯在访问自己的ram存储区和其他核芯的ram存储区时,访问读写的时间是不同的,从而在核芯访问其他核芯的ram存储区中的全局变量时,会增加系统整体访问变量所花费的时间,进而导致系统整体运行速率的下降。因此为了确定该嵌入式软件的程序在实际运行过程中,是否确实存在数据的跨核交互现象(跨核交互数据现象),需要对每个目标第一全局变量对应的当前核芯和该目标第一全局变量的初始定义位置对应的第一核芯进行匹配,从而在上述当前核芯与第一核芯不匹配,即上述当前核芯为第二核芯的情况下,确定得到该嵌入式软件存在跨核交互数据现象。
70.示例性地,上述嵌入式软件包括核芯0和核芯1,且上述核芯0和核芯1分别具有对应的ram区,在理性情况下,假如某一全局变量的初始定义位置在核芯0的ram区中,则该全局变量应该被核芯0读写,不被核芯1读写;假如某一全局变量的初始定义位置在核芯1的ram区中,则该全局变量被核芯1读写,不被核芯0读写。因此,假如某一全局变量的初始定义位置在核芯0的ram区中,而被核芯1进行读写,则核芯1需要访问核芯0的ram区去读写该变量的值,而不是直接去核芯1中读写,此时这个过程即发生的跨核的数据交互。
71.通过本实施例,可以首先获取嵌入式软件的目标文件和嵌入式软件的map文件,使得脚本分别对上述目标文件和上述map文件进行程序静态分析,由于每个目标文件对应有多个目标函数,从而在上述程序静态分析之后,脚本能够得到该嵌入式软件中的多个目标函数所包含的多个第一全局变量,以及每个第一全局变量所在的第一核芯,进而在上述嵌入式软件的程序处于动态运行的情况下,再基于上述程序的实际运行,获取到该嵌入式软件的每个核芯在当前动态运行情况下(即当前核芯)访问的目标第一全局变量,其中,上述第一全局变量包括该目标第一全局变量,且该程序处于动态运行情况下的每个核芯可以是第一核芯或第二核芯,需要注意的是,由于上述第一全局变量对应一个第一核芯,且上述第一全局变量包括上述目标第一全局变量,因此,理想情况下,该目标第一全局变量同样具有唯一对应的第一核芯,从而在上述程序处于动态运行情况下,若目标第一全局变量对应的当前核芯为第二核芯,则脚本能够确定出该嵌入式软件存在跨核交互数据的现象,从而完成整个嵌入式软件工程的分析,而不需要开发人员进行其他的操作,大大降低了开发人员分析的时间,缩短了开发时间,降低了开发成本,且该识别方法可以直接引入到集成环境中,可直接进行调用使用,具有较高的通用性和可移植性。
72.在一些可选的实施方式中,识别装置还包括:第一处理模块,用于获取存在跨核交互数据现象的所有目标第一全局变量以及访问每个目标第一全局变量的第二核芯,当前核芯包括至少一个第二核芯;根据每个目标第一全局变量对应的至少一个第二核芯和每个第二核芯对应的第一全局变量,确定每个目标第一全局变量的数据交互形式。
73.通过确定了当前核芯与第一核芯不匹配,即上述当前核芯为第二核芯的现象,从而能够确定得到该嵌入式软件存在跨核交互数据现象,但是依旧不能明确上述每个目标第一全局变量实际被哪些第二核芯所访问,因此进一步地,上述实施方式中,为了确定出在上
述嵌入式软件的程序实际运行过程中,每个目标第一全局变量被哪些第二核芯所访问,采用了对每个目标第一全局变量进行跟踪的方式,从而能够获取到每个目标第一全局变量和访问对应上述每个目标第一全局变量的第二核芯,可选地,在确定嵌入式软件存在跨核交互数据现象的情况下,对目标第一全局变量对应的变量信息进行记录。需要注意的是,由于上述每个目标第一全局变量可能同时被多个核芯进行访问,因此,上述第二核芯可以是嵌入式软件的程序处于动态运行时的一个核芯或多个核芯。
74.进而由于每个第一全局变量具有初始定义的唯一的第一核芯,且上述目标第一全局变量被上述多个第一全局变量所包含,因此,通过匹配每个上述目标第一全局变量对应的至少一个第二核芯和每个第二核芯对应的第一全局变量,就能够确定出每个目标第一全局变量实际被不同的第二核芯访问。
75.进一步地,在获取到上述存在跨核交互数据现象的所有目标第一全局变量和访问每个第一目标全局变量的多个第二核芯的情况下,通过确定嵌入式软件的程序处于静态时,上述多个第二核芯中的每个第二核芯对应的初始定义的第一全局变量,从而将该第一全局变量和上述目标第一全局变量进行匹配,在第一全局变量和目标第一全局变量不匹配的情况下,记录该第一全局变量对应的第二核芯,从而能够确定出上述么每个第一目标全局变量可以对应有多个不同的第二核芯,且能够区分出多个不同的第二核芯。
76.在一些可选的实施方式中,分析模块包括:第二处理模块,用于对目标文件进行程序静态分析,确定出每个目标文件对应的多个目标函数和每个目标函数所包含的第一全局变量;第三处理模块,用于对map文件进行程序静态分析,至少获取嵌入式软件的目标全局变量,以及确定目标全局变量对应的目标文件,目标全局变量为多个第一全局变量中位于第一核芯的存储区的第一全局变量。
77.上述实施方式中,由于每个目标文件和上述map文件为嵌入式软件中的不同的文件,且该目标文件和map文件中均对应有第一全局变量的相关信息,因此,为了获取该第一全局变量的全部相关信息,分别对上述目标文件和map文件进行程序静态分析,以实现得到与上述第一全局变量相关的全部信息。具体地,嵌入式软件中可以包括有多个目标文件,每个目标文件可以包括多个目标函数,该多个目标函数可以为并列的多个目标函数,也可以为具有包含关系的多个目标函数,即上述每个目标文件可以包括并列的第一目标函数和第二目标函数,进一步地,第一目标函数中还包括有第三目标函数和第四目标函数等,且每个上述目标函数包含有第一全局变量,从而对上述目标文件进行静态程序分析,能够得到嵌入式软件中多个目标函数所包含的多个第一全局变量,且嵌入式软件的map文件中包含有上述所有第一核芯对应的多个第一全局变量,即目标全局变量,以及每个第一全局变量确定有对应的第一核芯,因此通过对上述map文件进行程序静态分析,能够得到每个目标全局变量所在的第一核芯,即能够得到每个第一全局变量所在的第一核芯。
78.可选地,对目标文件和map文件分别进行程序静态分析时,可以先对目标文件进行程序静态分析,也可以先对map文件进行程序静态分析,两者的先后顺序可以互换。
79.在一些可选的实施方式中,第二获取模块包括:第四处理模块,用于对目标文件和目标全局变量进行递归搜索,得到递归搜索结果;第五处理模块,用于根据递归搜索结果和多个目标函数,生成函数调用树;第六处理模块,用于根据函数调用树,获取当前核芯所访问的目标第一全局变量。
80.为了将嵌入式软件处于动态运行时的每个核芯访问的目标第一全局变量,与嵌入式软件的所有目标文件之间形成一定关联,且由于每个目标全局变量均能够在对应的目标文件中找到,因此,上述实施方式中,采用了对目标文件和目标全局变量进行递归搜索的方式,首先得到每个目标全局变量对目标文件对应的递归搜索结果,进而由于每个目标文件对应有多个目标函数,从而根据上述递归搜索结果和每个目标文件对应的多个目标函数,另外,由于每个目标全局变量对应的第一核芯也是确定的,从而能够建立得到目标文件、目标函数、目标第一全局变量以及第一核芯之间的关系,即函数调用树,进而在获取当前核芯所访问的目标第一全局变量时,直接通过该函数调用树即可确定。
81.在一些可选的实施方式中,识别装置还包括:第七处理模块,用于获取嵌入式软件的顶层函数以及顶层函数所在的第一核芯,顶层函数为多个目标函数中的最上层函数。
82.上述实施方式中,在获取上述嵌入式软件的每个核芯可能访问的所有的目标函数的过程中,由于与核芯存在直接关系的目标函数为嵌入式软件的最上层根函数(顶层函数),而上述目标函数可能并不是该嵌入式软件的最上层根函数(顶层函数),因此与核芯之间可能并不存在直接关系,从而为了获得上述嵌入式软件的每个核芯可能访问的所有的目标函数,采用了首先分析该嵌入式软件的方式,从而获取得到该嵌入式软件的顶层函数以及该顶层函数对应所在的第一核芯,实现通过该顶层函数,该顶层函数对应的第一核芯以及函数调用树,确定出当前核芯所访问的目标第一全局变量的目的。
83.在一些可选的实施方式中,确定模块包括:第一子处理模块,用于获取与目标第一全局变量对应的预设变量信息,预设变量信息为嵌入式软件的程序处于静态的情况下,目标第一全局变量的变量信息;第二子处理模块,用于将与目标第一全局变量对应的当前变量信息与预设变量信息进行匹配,预设变量信息为嵌入式软件的程序处于动态运行的情况下,目标第一全局变量的变量信息;第三子处理模块,用于在当前变量信息与预设变量信息不匹配的情况下,确定目标第一全局变量对应的当前核芯为第二核芯;
84.上述实施方式中,为了在目标第一全局变量对应的当前核芯为第二核芯的情况下,确定嵌入式软件存在跨核交互数据现象,采用了获取目标第一全局变量在嵌入式软件的程序处于静态状态下对应的预设变量信息,示例性地,该预设变量信息可以为第一全局变量具有唯一对应的第一核芯,以及目标第一全局变量在嵌入式软件的程序处于动态运行状态下对应的实际变量信息,示例性的,该实际变量信息可以为目标第一全局变量具有对应的除第一核芯以外的第二核芯,从而通过比较上述预设变量信息和实际变量信息是否一致,并在上述预设变量信息和实际变量信息不一致,即不匹配的情况下,说明该目标第一全局变量被除第一核芯以外的第二核芯所访问,从而确定出嵌入式软件存在跨核交互数据现象。
85.在一些可选的实施方式中,当前核芯包括多个,识别装置还包括:第八处理模块,用于提取目标第一全局变量在多个当前核芯中的多个访问频率,当前核芯和访问频率一一对应;第九处理模块,用于从多个访问频率中确定目标核芯,目标核芯为目标第一全局变量访问频率最高的当前核芯;第十处理模块,用于将目标第一全局变量的定义位置修改为目标核芯。
86.上述实施方式中,在当前核芯为多个的情况下,由于不同的当前核芯访问目标第一全局变量的频率可能不同,从而不能确定重新定义该目标第一全局变量的最佳核芯,因
此,采用了提取目标第一全局变量在多个当前核芯中的多个访问频率的方式,将访问目标第一全局变量的频率最高的当前核芯确定为重新定义该目标第一全局变量的核芯。以实现降低系统运行负荷和提高程序执行效率的目的。
87.数据的识别装置包括处理器和存储器,上述第一获取模块、分析模块、第二获取模块以及确定模块等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
88.处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来判断系统整体运行过程中是否存在跨核读取数据。
89.存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram),存储器包括至少一个存储芯片。
90.本发明实施例提供了一种计算机可读存储介质,计算机可读存储介质包括存储的程序,其中,在程序运行时控制计算机可读存储介质所在设备执行数据的识别方法。
91.本发明实施例提供了一种设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现至少以下步骤:获取嵌入式软件的目标文件和嵌入式软件的map文件;对目标文件和map文件分别进行程序静态分析,得到嵌入式软件中多个目标函数所包含的多个第一全局变量以及每个第一全局变量所在的第一核芯,多个目标函数与目标文件对应;在嵌入式软件的程序处于动态运行的情况下,获取当前核芯所访问的多个第一全局变量中的目标第一全局变量,当前核芯为第一核芯或第二核芯;在目标第一全局变量对应的当前核芯为第二核芯的情况下,确定嵌入式软件存在跨核交互数据现象,跨核交互数据现象表示为第一全局变量被第二核芯访问,第一全局变量被第一核芯和一个第二核芯同时访问,第一全局变量被多个第二核芯同时访问。本文中的设备可以是服务器、pc、pad、手机等。
92.本技术还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有至少如下方法步骤的程序:获取嵌入式软件的目标文件和嵌入式软件的map文件;对目标文件和map文件分别进行程序静态分析,得到嵌入式软件中多个目标函数所包含的多个第一全局变量以及每个第一全局变量所在的第一核芯,多个目标函数与目标文件对应;在嵌入式软件的程序处于动态运行的情况下,获取当前核芯所访问的多个第一全局变量中的目标第一全局变量,当前核芯为第一核芯或第二核芯;在目标第一全局变量对应的当前核芯为第二核芯的情况下,确定嵌入式软件存在跨核交互数据现象,跨核交互数据现象表示为第一全局变量被第二核芯访问,第一全局变量被第一核芯和一个第二核芯同时访问,第一全局变量被多个第二核芯同时访问。
93.显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
94.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
95.本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
96.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
97.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
98.在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
99.存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。存储器是计算机可读介质的示例。
100.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
101.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
102.从以上的描述中,可以看出,本技术上述的实施例实现了如下技术效果:
103.通过首先获取嵌入式软件的目标文件和嵌入式软件的map文件,使得脚本分别对
上述目标文件和上述map文件进行程序静态分析,由于每个目标文件对应有多个目标函数,从而在上述程序静态分析之后,脚本能够得到该嵌入式软件中的多个目标函数所包含的多个第一全局变量,以及每个第一全局变量所在的第一核芯,进而在上述嵌入式软件的程序处于动态运行的情况下,再基于上述程序的实际运行,获取到该嵌入式软件的每个核芯在当前动态运行情况下(即当前核芯)访问的目标第一全局变量,其中,上述第一全局变量包括该目标第一全局变量,且该程序处于动态运行情况下的每个核芯可以是第一核芯或第二核芯,需要注意的是,由于上述第一全局变量对应一个第一核芯,且上述第一全局变量包括上述目标第一全局变量,因此,理想情况下,该目标第一全局变量同样具有唯一对应的第一核芯,从而在上述程序处于动态运行情况下,若目标第一全局变量对应的当前核芯为第二核芯,则脚本能够确定出该嵌入式软件存在跨核交互数据的现象,从而完成整个嵌入式软件工程的分析,而不需要开发人员进行其他的操作,大大降低了开发人员分析的时间,缩短了开发时间,降低了开发成本,且该识别方法可以直接引入到集成环境中,可直接进行调用使用,具有较高的通用性和可移植性,从而实现降低系统运行负荷和提高程序执行效率的目的。
104.以上所述仅为本技术的优选实施例而已,并不用于限制本技术,对于本领域的技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
技术特征:
1.一种数据的识别方法,其特征在于,包括:获取嵌入式软件的目标文件和所述嵌入式软件的map文件;对所述目标文件和所述map文件分别进行程序静态分析,得到所述嵌入式软件中多个目标函数所包含的多个第一全局变量以及每个所述第一全局变量所在的第一核芯,多个所述目标函数与所述目标文件对应;在所述嵌入式软件的程序处于动态运行的情况下,获取当前核芯所访问的多个所述第一全局变量中的目标第一全局变量,所述当前核芯为所述第一核芯或第二核芯;在所述目标第一全局变量对应的所述当前核芯为所述第二核芯的情况下,确定所述嵌入式软件存在跨核交互数据现象,所述跨核交互数据现象表示为以下至少之一:所述第一全局变量被所述第二核芯访问,所述第一全局变量被所述第一核芯和一个所述第二核芯同时访问,所述第一全局变量被多个所述第二核芯同时访问。2.根据权利要求1所述的识别方法,其特征在于,所述识别方法还包括:获取存在所述跨核交互数据现象的所有所述目标第一全局变量以及访问每个所述目标第一全局变量的至少一个第二核芯,所述当前核芯包括至少一个所述第二核芯;根据每个所述目标第一全局变量对应的至少一个所述第二核芯和每个所述第二核芯对应的所述第一全局变量,确定每个所述目标第一全局变量的数据交互形式。3.根据权利要求1或2所述的识别方法,其特征在于,所述对所述目标文件和所述map文件分别进行程序静态分析,得到所述嵌入式软件中多个目标函数所包含的多个第一全局变量以及每个所述第一全局变量所在的第一核芯,包括:对所述目标文件进行所述程序静态分析,确定出每个所述目标文件对应的多个所述目标函数和每个所述目标函数所包含的所述第一全局变量;对所述map文件进行程序静态分析,至少获取所述嵌入式软件的目标全局变量,以及确定所述目标全局变量对应的所述目标文件,所述目标全局变量为多个所述第一全局变量中位于所述第一核芯的存储区的第一全局变量。4.根据权利要求3所述的识别方法,其特征在于,所述在所述嵌入式软件的程序处于动态运行的情况下,获取当前核芯所访问的多个所述第一全局变量中的目标第一全局变量,包括:对所述目标文件和所述目标全局变量进行递归搜索,得到递归搜索结果;根据所述递归搜索结果和多个所述目标函数,生成函数调用树;根据所述函数调用树,获取所述当前核芯所访问的所述目标第一全局变量。5.根据权利要求4所述的识别方法,其特征在于,所述识别方法还包括:获取所述嵌入式软件的顶层函数以及所述顶层函数所在的所述第一核芯,所述顶层函数为多个所述目标函数中的最上层函数。6.根据权利要求1或2所述的识别方法,其特征在于,所述在所述目标第一全局变量对应的所述当前核芯为所述第二核芯的情况下,确定所述嵌入式软件存在跨核交互数据现象,包括:获取与所述目标第一全局变量对应的预设变量信息,所述预设变量信息为所述嵌入式软件的程序处于静态的情况下,所述目标第一全局变量的变量信息;将与所述目标第一全局变量对应的当前变量信息与所述预设变量信息进行匹配,所述
预设变量信息为所述嵌入式软件的程序处于动态运行的情况下,所述目标第一全局变量的变量信息;在所述当前变量信息与所述预设变量信息不匹配的情况下,确定所述目标第一全局变量对应的所述当前核芯为所述第二核芯;确定所述嵌入式软件存在跨核交互数据现象。7.根据权利要求1或2所述的识别方法,其特征在于,所述当前核芯包括多个,所述识别方法还包括:提取所述目标第一全局变量在多个所述当前核芯中的多个访问频率,所述当前核芯和所述访问频率一一对应;从多个所述访问频率中确定目标核芯,所述目标核芯为所述目标第一全局变量访问频率最高的所述当前核芯;将所述目标第一全局变量的定义位置修改为所述目标核芯。8.一种数据的识别装置,其特征在于,包括:第一获取模块,用于获取嵌入式软件的目标文件和所述嵌入式软件的map文件;分析模块,用于对所述目标文件和所述map文件分别进行程序静态分析,得到所述嵌入式软件中多个目标函数所包含的多个第一全局变量以及每个所述第一全局变量所在的第一核芯,多个所述目标函数与所述目标文件对应;第二获取模块,用于在所述嵌入式软件的程序处于动态运行的情况下,获取当前核芯所访问的多个所述第一全局变量中的目标第一全局变量,所述当前核芯为所述第一核芯或第二核芯;确定模块,用于在所述目标第一全局变量对应的所述当前核芯为所述第二核芯的情况下,确定所述嵌入式软件存在跨核交互数据现象,所述跨核交互数据现象表示为以下至少之一:所述第一全局变量被所述第二核芯访问,所述第一全局变量被所述第一核芯和一个所述第二核芯同时访问,所述第一全局变量被多个所述第二核芯同时访问。9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的程序,其中,在所述程序运行时控制所述计算机可读存储介质所在设备执行权利要求1至7中任意一项所述的数据的识别方法。10.一种电子设备,其特征在于,包括:一个或多个处理器,存储器,以及一个或多个程序,其中,所述一个或多个程序被存储在所述存储器中,并且被配置为由所述一个或多个处理器执行,所述一个或多个程序包括用于执行权利要求1至7中任意一项所述的数据的识别方法。
技术总结
本申请提供了一种数据的识别方法、数据的识别装置、存储介质和电子设备。该方法包括:获取嵌入式软件的目标文件和嵌入式软件的MAP文件;对目标文件和MAP文件分别进行程序静态分析,得到嵌入式软件中多个目标函数所包含的多个第一全局变量以及每个第一全局变量所在的第一核芯,多个目标函数与目标文件对应;在嵌入式软件的程序处于动态运行的情况下,获取当前核芯所访问的多个第一全局变量中的目标第一全局变量,当前核芯为第一核芯或第二核芯;在目标第一全局变量对应的当前核芯为第二核芯的情况下,确定嵌入式软件存在跨核交互数据现象。该方法能确定嵌入式软件存在跨核交互数据现象,实现了降低系统运行负荷和提高程序执行效率的目的。行效率的目的。行效率的目的。
技术研发人员:房骁 刘硕 黄瑞霞 卢晓玲
受保护的技术使用者:潍坊潍柴动力科技有限责任公司
技术研发日:2023.04.14
技术公布日:2023/7/20
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
