CN115629795A - 一种可执行文件的配置方法、装置及电子设备 - Google Patents
一种可执行文件的配置方法、装置及电子设备 Download PDFInfo
- Publication number
- CN115629795A CN115629795A CN202211393407.6A CN202211393407A CN115629795A CN 115629795 A CN115629795 A CN 115629795A CN 202211393407 A CN202211393407 A CN 202211393407A CN 115629795 A CN115629795 A CN 115629795A
- Authority
- CN
- China
- Prior art keywords
- executable file
- configuration
- file
- information
- script
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/116—Details of conversion of file system types or formats
Abstract
本申请实施例提供了一种可执行文件的配置方法、装置及电子设备,涉及嵌入式技术领域,用以提高可执行文件的配置效率,同时避免由于配置时多次编译产生过多的版本,导致难以管理的情况发生。该方法中,包括:获取第一可执行文件的配置文件;所述配置文件包括配置信息,所述配置信息用于描述所述第一可执行文件中各个配置参数的参数值;通过运行第一脚本将所述配置文件按照预设的数据结构转换成信息报文;根据所述信息报文和所述第一可执行文件生成第二可执行文件;通过运行第一底层代码访问所述第二可执行文件,获得所述信息报文中的所述配置信息。
Description
技术领域
本申请涉及嵌入式技术领域,特别涉及一种可执行文件的配置方法、装置及电子设备。
背景技术
嵌入式开发是在一定硬件条件下的系统化设计和软件研发,其硬件的动作均由软件控制,该软件由嵌入式开发人员通过使用高级语言编写,再由编译器编译生成机器可执行的二进制文件。
在需要修改部分软件配置的场景下,需要重新编译或者通过系统设计外部接口的方式进行修改。若重新编译,因设计代码开源通常境况下无法将其开放于使用方,故此对软件开发人员通常需要进行大量的重复劳动,也会产生过多的版本难以管理。若通过系统设计添加外部接口的方式进行修改,对使用方会造成过多冗余的操作,例如可执行文件下载之后,需要单独导入配置文件。
发明内容
本申请实施例提供了一种可执行文件的配置方法、装置及电子设备,用以提高可执行文件的配置效率,同时避免由于配置时多次编译产生过多的版本,导致难以管理的情况发生。
第一方面,本申请实施例提供了一种可执行文件的配置方法,包括:获取第一可执行文件的配置文件;所述配置文件包括配置信息,所述配置信息用于描述所述第一可执行文件中各个配置参数的参数值;通过运行第一脚本将所述配置文件按照预设的数据结构转换成信息报文;根据所述信息报文和所述第一可执行文件生成第二可执行文件;通过运行第一底层代码访问所述第二可执行文件,获得所述信息报文中的所述配置信息。
基于上述方案,使用文件叠加的方式,将配置信息合入可执行文件中,由于可执行文件中的配置信息可以直接通过运行底层代码获得,而不需要对配置文件进行编译再获取配置文件中的配置信息,因此可以提高效率,同时也不会因为多次编译导致产生过多的版本难以管理的情况发生。
在一种可能的实现方式中,所述通过运行第一脚本将所述配置文件按照预设的数据结构转换成信息报文,包括:通过运行第二底层代码将配置参数模板按照预设的数据结构生成头文件;所述第二底层代码与所述第一脚本定义的数据结构相同,所述配置参数模板用于描述第一可执行文件中包括的各个配置参数,以及各个配置参数的格式;通过运行所述第一脚本对所述头文件进行分析,将所述头文件转换成第二脚本;通过运行所述第二脚本和第三脚本,生成所述信息报文;所述第三脚本为对所述配置文件转换文件格式得到的。
基于上述方案,由于第二底层代码与第一脚本定义的数据结构相同,且信息报文是通过运行第一脚本转换得到的,因此可以使得底层代码可以不经编译直接执行信息报文。此外通过该方案第二脚本仅需要构建一次,之后修改信息报文中的配置信息时,可以通过运行底层代码来实现,无需重复将头文件转换为第二脚本的操作,进一步提高了相关工作人员的工作效率。
在一种可能的实现方式中,所述根据所述信息报文和所述第一可执行文件生成第二可执行文件,包括:将所述信息报文附加在所述第一可执行文件之后,生成所述第二可执行文件;或者,将所述信息报文附加在所述第一可执行文件之前,生成所述第二可执行文件。
基于上述方案,通过文件叠加的方式,可以将配置信息合入可执行文件中,避免了多次编译的效率影响。并且信息报文与第一可执行文件的相对位置可以自行设置,增加了方案灵活性。
在一种可能的实现方式中,所述通过运行第一底层代码访问所述第二可执行文件,获得所述信息报文中的所述配置信息,包括:根据所述第一可执行文件的向量地址指向的内存单元中存储的用于描述所述第一可执行文件大小的信息,确定所述第二可执行文件中所述信息报文的起始地址;所述向量地址为寄存器无法访问的地址;根据所述起始地址将所述信息报文复制到预设变量空间中,以获得所述信息报文中的所述配置信息。
基于上述方案,由于代码区的数据是只读的,因此系统可以通过将第二可执行文件中的信息报文复制到预设变量空间中,来获得信息报文中的配置信息。
在一种可能的实现方式中,所述根据所述第一可执行文件的向量地址指向的内存单元中存储的用于描述所述第一可执行文件大小的信息,确定所述第二可执行文件中所述信息报文的起始地址之前,所述方法还包括:确定所述第一可执行文件的向量地址;通过运行第四脚本将用于描述所述第一可执行文件大小的信息写入所述向量地址指向的内存单元。
基于上述方案,由于大部分以向量中断形式编译的底层代码都会存储在预留的向量地址指向的内存单元中,并且在正常情况下该类向量地址指向的内存单元是寄存器无法执行到的。因此可以将用于描述第一可执行文件的大小的信息写入该向量地址指向的内存单元,既能使得系统可以通过运行底层码确定第一可执行文件的大小从而确定第二可执行文件中信息报文的起始地址,还可以避免寄存器对该信息进行访问或者修改。
第二方面,本申请实施例提供了一种可执行文件的配置装置,包括:
获取单元,用于获取第一可执行文件的配置文件;所述配置文件包括配置信息,所述配置信息用于描述所述第一可执行文件中各个配置参数的参数值;
处理单元,用于执行以下操作:通过运行第一脚本将所述配置文件按照预设的数据结构转换成信息报文;根据所述信息报文和所述第一可执行文件生成第二可执行文件;通过运行第一底层代码访问所述第二可执行文件,获得所述信息报文中的所述配置信息。
在一种可能的实现方式中,所述处理单元通过运行第一脚本将所述配置文件按照预设的数据结构转换成信息报文时,用于:通过运行第二底层代码将配置参数模板按照预设的数据结构生成头文件;所述第二底层代码与所述第一脚本定义的数据结构相同,所述配置参数模板用于描述第一可执行文件中包括的各个配置参数,以及各个配置参数的格式;通过运行所述第一脚本对所述头文件进行分析,将所述头文件转换成第二脚本;通过运行所述第二脚本和第三脚本,生成所述信息报文;所述第三脚本为对所述配置文件转换文件格式得到的。
在一种可能的实现方式中,所述处理单元根据所述信息报文和所述第一可执行文件生成第二可执行文件时,用于:将所述信息报文附加在所述第一可执行文件之后,生成所述第二可执行文件;或者,将所述信息报文附加在所述第一可执行文件之前,生成所述第二可执行文件。
在一种可能的实现方式中,所述处理单元通过运行第一底层代码访问所述第二可执行文件,获得所述信息报文中的所述配置信息时,用于:根据所述第一可执行文件的向量地址指向的内存单元中存储的用于描述所述第一可执行文件大小的信息,确定所述第二可执行文件中所述信息报文的起始地址;所述向量地址为寄存器无法访问的地址;根据所述起始地址将所述信息报文复制到预设变量空间中,以获得所述信息报文中的所述配置信息。
在一种可能的实现方式中,所述处理单元根据所述第一可执行文件的向量地址指向的内存单元中存储的用于描述所述第一可执行文件大小的信息,确定所述第二可执行文件中所述信息报文的起始地址之前,还用于:确定所述第一可执行文件的向量地址;通过运行第四脚本将用于描述所述第一可执行文件大小的信息写入所述向量地址指向的内存单元。
第三方面,本申请实施例提供了一种电子设备,包括:
存储器,用于存储计算机指令;
处理器,与所述存储器连接,用于执行所述存储器中的计算机指令,且在执行所述计算机指令时实现如第一方面中任一项所述的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,包括:
所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行如第一方面中任一项所述的方法。
上述第二方面至第四方面中的各个方面以及各个方面可能达到的技术效果请参照上述针对第一方面或第一方面中的各种可能方案可以达到的技术效果说明,这里不再重复赘述。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例。
图1为本申请实施例提供的一种可执行文件的配置方法应用的系统结构图;
图2为本申请实施例提供的一种可执行文件的配置方法的示例性流程图;
图3为本申请实施例提供的一种可执行文件的配置装置示意图;
图4为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为了便于理解本申请实施例提供的技术方案,下面介绍本申请实施例涉及的专业术语。
(1)可执行文件,可以是指多个机器码的目标文件链接成的文件。其中,机器码一般指机器指令码。计算机直接使用的程序语言,其语句就是机器指令码,机器指令码是用于指挥计算机应做的操作和操作数地址的一组二进制数。
(2)数据大小端,包括大端模式和小端模式。大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,数据从高位往低位放;这和我们的阅读习惯一致。小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低。
(3)代码区,用于存放中央处理器(Central Processing Unit,CPU)的机器指令(即代码的二进制形式)。
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请技术方案的一部分实施例,而不是全部的实施例。基于本申请文件中记载的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请技术方案保护的范围。
本申请实施例中的术语“第一”和“第二”是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的保护。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请中的“多个”可以表示至少两个,例如可以是两个、三个或者更多个,本申请实施例不做限制。
另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,在不做特别说明的情况下,一般表示前后关联对象是一种“或”的关系。
目前,在需要修改部分软件配置的场景下,通常需要重新编译或者通过系统设计外部接口的方式进行修改。然而若重新编译,由于代码开源通常境况下无法将其开放于使用方,因此使用方的软件开发人员通常需要进行大量的重复劳动,并且多次重新编译还会产生过多的版本难以管理。若通过系统设计添加外部接口的方式进行修改,对使用方会造成过多冗余的操作,例如可执行文件下载之后,需要单独导入配置文件等。
有鉴于此,本申请实施例提供的一种可执行文件的配置方法,该方法中,可以在获取到用户的配置文件后,通过运行上层脚本将配置文件按照预设的数据结构转换为信息报文,并与可执行文件生成新的可执行文件。然后可以通过运行底层代码获得新的可执行文件的信息报文中的配置信息,来配置可执行文件,从而实现根据用户的需求进行软件配置的修改。通过上述方法,使用文件叠加的方式,将配置信息合入可执行文件中,由于可执行文件中的配置信息可以直接通过运行底层代码获得,而不需要对配置文件进行编译再获取配置文件中的配置信息,因此可以提高效率,同时也不会因为多次编译导致产生过多的版本难以管理的情况发生。
图1示出的是本申请实施例提供的一种可执行文件的配置方法可以应用的系统100。系统100中可以包括计算机101和单片机102。计算机101可以用于获取用户的配置文件,以及运行第一脚本。计算机101可以是台式机、笔记本电脑、小型笔记本电脑、平板电脑等。单片机102可以用于运行第一底层代码、第一可执行文件以及第二可执行文件。
需要说明的是,图1所示的系统仅为示例性的,本申请实施例提供的一种可执行文件的配置方法可以应用于任意底层开发、嵌入式开发或者软件仿真的场景中,本申请对此不作限定。
以下结合说明书附图对本申请实施例进行说明,应当理解,此处所描述的实施例仅用于说明和解释本申请,并不用于限定本申请,并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
参阅图2为本申请实施例提供的一种可执行文件的配置方法的示例性流程图,可以应用于如图1所示的系统100中,包括以下流程S201-S204:
S201,获取第一可执行文件的配置文件。
在本申请实施例中,配置文件可以包括用于描述第一可执行文件中各个配置参数的参数值的配置信息。举例来说,假设第一可执行文件中可修改的配置参数包括:配置参数1和配置参数2,在用户需要将配置参数1的参数值设置为A,将配置参数2的参数值设置为B时,配置信息可以包括“配置参数1=A”以及“配置参数2=B”。需要说明的是,上述表示形式仅为示例性的,配置信息的具体格式可以是根据实际情况设置的,本申请对此不作限定。
一种可能的实现方式中,配置文件可以是用户根据需求确定第一可执行文件中各个配置参数的参数值后,将参数值写入文件中得到的。其中,配置文件可以是脚本文件,文件格式可以是txt。应了解,配置文件的文件格式也可以是其他可以用于描述配置信息的格式,例如ASCII、xml、ini、toml、json等,本申请对此不作限定。
S202,通过运行第一脚本将配置文件按照预设的数据结构转换成信息报文。
一种可能的实现方式中,系统可以通过运行第二底层代码将配置参数模板按照预设的数据结构生成头文件。然后可以通过运行第一脚本对头文件进行分析,将头文件转换成第二脚本。再通过运行第二脚本和第三脚本,生成信息报文。其中,第二底层代码定义的数据结构与第一脚本定义的数据结构相同,包括数据大小端相同、数据对齐方式相同等。配置参数模板用于描述第一可执行文件中包括的各个配置参数,以及各个配置参数的格式。第三脚本为对配置文件转换文件格式得到的。
在一个示例中,为了提高处理器的存储速度,编译器会对一些变量的起始地址进行强制对齐。但若出现强制对齐的情况会导致第二底层代码定义的数据结构与第一脚本定义的数据结构无法相同。因此以第二底层代码为C语言为例,在按照预设的数据结构生成头文件时,可以先建立结构体,并按照结构体对齐的规则进行结构体成员编排,所有需要对齐的位置由结构体成员代替,避免出现编译器强制对齐的位置,将严格对齐要求的结构体生成头文件。需要说明的是,本申请实施例中的底层代码可以是由C语言书写的,也可以是由C++等语言书写的,本申请对此不作限定。
在一些实施例中,以第一脚本、第二脚本、第三脚本均由Python书写为例。假设第一脚本为A.py,第二脚本B.py,第三脚本为C.py。其中,C.py是对配置文件C.txt转换文件格式得到的。生成头文件B.h后,系统可以通过运行A.py对B.h进行扫描和分析,将B.h转换成B.py。再通过运行A.py生成系统可以识别的类(class),然后通过运行C.py,可以根据配置文件中各个配置参数的参数值对生成的class进行赋值,生成带有配置信息的二进制码流,也即信息报文。
需要说明的是,本申请实施例中的脚本可以是由Python语言书写的,也可以是由其他脚本语言书写的,本申请对此不作限定。
S203,根据信息报文和第一可执行文件生成第二可执行文件。
一种可能的实现方式中,将信息报文附加在第一可执行文件之后,生成第二可执行文件。或者,将信息报文附加在第一可执行文件之前,生成第二可执行文件。或者,将信息报文的一部分附加在第一可执行文件之前,将信息报文的另一部分附加在第一可执行文件之后,生成第二可执行文件。
具体的,可以通过设置底层代码的启动脚本的方式,来设置信息报文与第一可执行文件的位置。举例来说,假设信息报文为A,第一可执行文件为B,则将信息报文附加在第一可执行文件之后时,生成的第二可执行文件则可以是AB。将信息报文附加在第一可执行文件之前时,生成的第二可执行文件则可以是BA。将信息报文的一部分附加在第一可执行文件之前,将信息报文的另一部分附加在第一可执行文件之后时,可以将信息报文分为A1和A2,则生成的第二可执行文件则可以是A1BA2,或者也可以是A2BA1。
S204,通过运行第一底层代码访问第二可执行文件,获得信息报文中的配置信息。
在一些实施例中,由于代码区的数据是只读的,因此系统可以通过将第二可执行文件中的信息报文复制到预设变量空间中,来获得信息报文中的配置信息。具体的,系统可以通过运行第一底层代码访问第二可执行文件,并将第二可执行文件中的信息报文复制到预设变量堆栈中,从而获得信息报文中的配置信息。需要说明的是,预设变量空间可以是变量堆栈,也可以是其他用于存储信息的变量空间,本申请对此不作限定。
在一种可能的实现方式中,系统将第二可执行文件中的信息报文复制到预设变量空间中时,可以根据第一可执行文件的大小确定第二可执行文件中信息报文的起始位置。然后根据该起始位置将信息报文复制到预设变量空间中,从而获得信息报文中的配置信息。举例来说,假设在第二可执行文件中信息报文附加在第一可执行文件之后,也可以将第二可执行文件表示为AB,其中A为第一可执行文件,B为信息报文。并且第一可执行文件A的大小为64字节,则根据第一可执行文件A的大小,可以确定第一可执行文件A在第二可执行文件AB中的结尾位置为第63字节,从而可以通过正推确定第二可执行文件AB中信息报文B从第64字节开始。因此可以从第64字节开始复制信息报文到预设变量空间中,来获得信息报文中的配置信息。
在一种可能的实施方式中,由于大部分以向量中断形式编译的底层代码都会存储在预留的向量地址指向的内存单元中,并且在正常情况下该类向量地址指向的内存单元是寄存器无法执行到的。因此预先存储用于描述第一可执行文件大小的信息时,系统可以确定第一可执行文件的向量地址。然后系统可以通过运行第四脚本将用于描述信息报文大小的信息写入向量地址指向的内存单元。
在另一种可能的实施方式中,在不存在可执行文件的向量地址时,可以在启动脚本中设置一个固定地址,将用于描述第一可执行文件大小的信息写入该固定地址指向的内存空间。例如,可以在该固定地址最开头的地方加入跳转指令,使得寄存器不会对该固定地址指向的内存空间进行访问。
基于上述方案,系统将用于描述第一可执行文件的大小的信息写入寄存器无法执行到的内存单元中,既能使得系统可以通过运行底层码确定第一可执行文件的大小从而确定第二可执行文件中信息报文的起始地址,还可以避免寄存器对该信息进行访问或者修改。
基于上述方法的同一构思,参见图3,为本申请实施例提供的一种可执行文件的配置装置300,装置300能够执行上述方法中的各个步骤,为了避免重复,此处不再详述。该装置300包括获取单元301和处理单元302。在一种场景下:
获取单元301,用于获取第一可执行文件的配置文件;所述配置文件包括配置信息,所述配置信息用于描述所述第一可执行文件中各个配置参数的参数值;
处理单元302,用于执行以下操作:通过运行第一脚本将所述配置文件按照预设的数据结构转换成信息报文;根据所述信息报文和所述第一可执行文件生成第二可执行文件;通过运行第一底层代码访问所述第二可执行文件,获得所述信息报文中的所述配置信息。
在一种可能的实现方式中,所述处理单元302通过运行第一脚本将所述配置文件按照预设的数据结构转换成信息报文时,用于:通过运行第二底层代码将配置参数模板按照预设的数据结构生成头文件;所述第二底层代码与所述第一脚本定义的数据结构相同,所述配置参数模板用于描述第一可执行文件中包括的各个配置参数,以及各个配置参数的格式;通过运行所述第一脚本对所述头文件进行分析,将所述头文件转换成第二脚本;通过运行所述第二脚本和第三脚本,生成所述信息报文;所述第三脚本为对所述配置文件转换文件格式得到的。
在一种可能的实现方式中,所述处理单元302根据所述信息报文和所述第一可执行文件生成第二可执行文件时,用于:将所述信息报文附加在所述第一可执行文件之后,生成所述第二可执行文件;或者,将所述信息报文附加在所述第一可执行文件之前,生成所述第二可执行文件。
在一种可能的实现方式中,所述处理单元302通过运行第一底层代码访问所述第二可执行文件,获得所述信息报文中的所述配置信息时,用于:根据所述第一可执行文件的向量地址指向的内存单元中存储的用于描述所述第一可执行文件大小的信息,确定所述第二可执行文件中所述信息报文的起始地址;所述向量地址为寄存器无法访问的地址;根据所述起始地址将所述信息报文复制到预设变量空间中,以获得所述信息报文中的所述配置信息。
在一种可能的实现方式中,所述处理单元302根据所述第一可执行文件的向量地址指向的内存单元中存储的用于描述所述第一可执行文件大小的信息,确定所述第二可执行文件中所述信息报文的起始地址之前,还用于:确定所述第一可执行文件的向量地址;通过运行第四脚本将用于描述所述第一可执行文件大小的信息写入所述向量地址指向的内存单元。
基于上述方法的同一构思,参见图4,为本申请实施例提供的一种电子设备的结构示意图,该电子设备包括至少一个处理器402,以及与至少一个处理器402连接或称耦合的存储器401,此外,电子设备还可以包括通信接口403。电子设备可以通过通信接口403和其它设备进行信息交互。
示例性的,所述通信接口403可以是收发器、电路、总线、模块、管脚或其它类型的通信接口。当该电子设备为芯片类的装置或者电路时,该电子设备中的通信接口403也可以是输入输出电路,可以输入信息(或称,接收信息)和输出信息(或称,发送信息),处理器为集成的处理器或者微处理器或者集成电路或则逻辑电路,处理器可以根据输入信息确定输出信息。
本申请实施例中的耦合是装置、单元或模块之间的间接耦合或通信连接,可以是电性,机械或其它的形式,用于装置、单元或模块之间的信息交互。处理器402可能和存储器401、通信接口403协同操作。本申请中不限定上述处理器402、存储器401以及通信接口403之间的具体连接介质。
可选的,参见图4,所述处理器402、所述存储器401以及所述通信接口403之间通过总线相互连接。所述总线可以是外设部件互连标准(peripheral componentinterconnect,PCI)总线或扩展工业标准结构(extended industry standardarchitecture,EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
在本申请实施例中,存储器401作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器401可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random Access Memory,RAM)、静态随机访问存储器(Static Random Access Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(ReadOnly Memory,ROM)、带电可擦除可编程只读存储器(Electrically ErasableProgrammable Read-Only Memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器401是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器401还可以是电路或者其它任意能够实现存储功能的装置,用于存储指令、计算机程序和/或数据。
在本申请实施例中,处理器402可以是通用处理器,例如中央处理器(CPU)、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的可执行文件的配置方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
通过对处理器402进行设计编程,可以将前述实施例中介绍的可执行文件的配置方法所对应的代码固化到芯片内,从而使芯片在运行时能够执行前述的可执行文件的配置方法的步骤,如何对处理器402进行设计编程为本领域技术人员所公知的技术,这里不再赘述。
在一个或多个实施例中,存储器401存储有可被至少一个处理器402执行的指令,至少一个处理器402通过调用存储器401存储的指令或者计算机程序,可以实现上述任一方法的步骤。
本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行上述任一方法的步骤。
在一些实施例中,本申请提供的可执行文件的配置方法的各个方面还可以实现为一种计算机程序产品的形式,其包括程序代码,当计算机程序产品在电子设备上运行时,程序代码用于使该电子设备执行本说明书上述描述的任一方法中的步骤。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
虽然以上描述了本申请的具体实施方式,但是本领域的技术人员应当理解,这些仅是举例说明,本申请的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本申请的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本申请的保护范围。尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (12)
1.一种可执行文件的配置方法,其特征在于,包括:
获取第一可执行文件的配置文件;所述配置文件包括配置信息,所述配置信息用于描述所述第一可执行文件中各个配置参数的参数值;
通过运行第一脚本将所述配置文件按照预设的数据结构转换成信息报文;
根据所述信息报文和所述第一可执行文件生成第二可执行文件;
通过运行第一底层代码访问所述第二可执行文件,获得所述信息报文中的所述配置信息。
2.根据权利要求1所述的方法,其特征在于,所述通过运行第一脚本将所述配置文件按照预设的数据结构转换成信息报文,包括:
通过运行第二底层代码将配置参数模板按照预设的数据结构生成头文件;所述第二底层代码与所述第一脚本定义的数据结构相同,所述配置参数模板用于描述第一可执行文件中包括的各个配置参数,以及各个配置参数的格式;
通过运行所述第一脚本对所述头文件进行分析,将所述头文件转换成第二脚本;
通过运行所述第二脚本和第三脚本,生成所述信息报文;所述第三脚本为对所述配置文件转换文件格式得到的。
3.根据权利要求1或2所述的方法,其特征在于,所述根据所述信息报文和所述第一可执行文件生成第二可执行文件,包括:
将所述信息报文附加在所述第一可执行文件之后,生成所述第二可执行文件;或者,
将所述信息报文附加在所述第一可执行文件之前,生成所述第二可执行文件。
4.根据权利要求1所述的方法,其特征在于,所述通过运行第一底层代码访问所述第二可执行文件,获得所述信息报文中的所述配置信息,包括:
根据所述第一可执行文件的向量地址指向的内存单元中存储的用于描述所述第一可执行文件大小的信息,确定所述第二可执行文件中所述信息报文的起始地址;所述向量地址为寄存器无法访问的地址;
根据所述起始地址将所述信息报文复制到预设变量空间中,以获得所述信息报文中的所述配置信息。
5.根据权利要求4所述的方法,其特征在于,所述根据所述第一可执行文件的向量地址指向的内存单元中存储的用于描述所述第一可执行文件大小的信息,确定所述第二可执行文件中所述信息报文的起始地址之前,所述方法还包括:
确定所述第一可执行文件的向量地址;
通过运行第四脚本将用于描述所述第一可执行文件大小的信息写入所述向量地址指向的内存单元。
6.一种可执行文件的配置装置,其特征在于,包括:
获取单元,用于获取第一可执行文件的配置文件;所述配置文件包括配置信息,所述配置信息用于描述所述第一可执行文件中各个配置参数的参数值;
处理单元,用于执行以下操作:
通过运行第一脚本将所述配置文件按照预设的数据结构转换成信息报文;
根据所述信息报文和所述第一可执行文件生成第二可执行文件;
通过运行第一底层代码访问所述第二可执行文件,获得所述信息报文中的所述配置信息。
7.根据权利要求6所述的装置,其特征在于,所述处理单元通过运行第一脚本将所述配置文件按照预设的数据结构转换成信息报文时,用于:
通过运行第二底层代码将配置参数模板按照预设的数据结构生成头文件;所述第二底层代码与所述第一脚本定义的数据结构相同,所述配置参数模板用于描述第一可执行文件中包括的各个配置参数,以及各个配置参数的格式;
通过运行所述第一脚本对所述头文件进行分析,将所述头文件转换成第二脚本;
通过运行所述第二脚本和第三脚本,生成所述信息报文;所述第三脚本为对所述配置文件转换文件格式得到的。
8.根据权利要求6或7所述的装置,其特征在于,所述处理单元根据所述信息报文和所述第一可执行文件生成第二可执行文件时,用于:
将所述信息报文附加在所述第一可执行文件之后,生成所述第二可执行文件;或者,
将所述信息报文附加在所述第一可执行文件之前,生成所述第二可执行文件。
9.根据权利要求6所述的装置,其特征在于,所述处理单元通过运行第一底层代码访问所述第二可执行文件,获得所述信息报文中的所述配置信息时,用于:
根据所述第一可执行文件的向量地址指向的内存单元中存储的用于描述所述第一可执行文件大小的信息,确定所述第二可执行文件中所述信息报文的起始地址;所述向量地址为寄存器无法访问的地址;
根据所述起始地址将所述信息报文复制到预设变量空间中,以获得所述信息报文中的所述配置信息。
10.根据权利要求9所述的装置,其特征在于,所述处理单元根据所述第一可执行文件的向量地址指向的内存单元中存储的用于描述所述第一可执行文件大小的信息,确定所述第二可执行文件中所述信息报文的起始地址之前,还用于:
确定所述第一可执行文件的向量地址;
通过运行第四脚本将用于描述所述第一可执行文件大小的信息写入所述向量地址指向的内存单元。
11.一种电子设备,其特征在于,包括:
存储器,用于存储计算机指令;
处理器,与所述存储器连接,用于执行所述存储器中的计算机指令,且在执行所述计算机指令时实现如权利要求1至5中任一项所述的方法。
12.一种计算机可读存储介质,其特征在于,包括:
所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行如权利要求1至5中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211393407.6A CN115629795A (zh) | 2022-11-08 | 2022-11-08 | 一种可执行文件的配置方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211393407.6A CN115629795A (zh) | 2022-11-08 | 2022-11-08 | 一种可执行文件的配置方法、装置及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115629795A true CN115629795A (zh) | 2023-01-20 |
Family
ID=84907687
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211393407.6A Pending CN115629795A (zh) | 2022-11-08 | 2022-11-08 | 一种可执行文件的配置方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115629795A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117453548A (zh) * | 2023-10-26 | 2024-01-26 | 上海合芯数字科技有限公司 | 代码模块信息确定方法、装置、计算机设备和存储介质 |
-
2022
- 2022-11-08 CN CN202211393407.6A patent/CN115629795A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117453548A (zh) * | 2023-10-26 | 2024-01-26 | 上海合芯数字科技有限公司 | 代码模块信息确定方法、装置、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Deitel | Java how to program | |
US9558016B2 (en) | Platform system, method for changing support hardware configuration of universal extensible firmware interface basic input output system and computer program product | |
KR102332209B1 (ko) | 2개의 명령어 세트 아키텍처들에 따라 컴파일링된 애플리케이션 코드의 실행을 위한 시스템 및 방법 | |
CN107526625B (zh) | 一种基于字节码检查的Java智能合约安全检测方法 | |
US20140325534A1 (en) | Runtime system | |
US9841953B2 (en) | Pluggable components for runtime-image generation | |
US7730492B1 (en) | Method and system for running multiple virtual machines in a single process | |
WO2023155940A1 (zh) | 小程序的编译方法、小程序的运行方法及装置、存储介质 | |
CN112882694A (zh) | 一种程序编译方法、装置、电子设备及可读存储介质 | |
EP3207453B1 (en) | Api versioning independent of product releases | |
CN115629795A (zh) | 一种可执行文件的配置方法、装置及电子设备 | |
WO2022017242A1 (zh) | 在第一系统运行第二系统应用的方法、装置、设备及介质 | |
US11714742B2 (en) | Synthesizing printf and scanf statements for generating debug messages in high-level synthesis (HLS) code | |
CN109426511B (zh) | 软核更新方法和系统 | |
CN110018831B (zh) | 程序处理方法、装置及计算机可读存储介质 | |
Kurniawan | Java for Android | |
CN113177292B (zh) | 一种通用的bim二次开发实现方法和装置 | |
KR20170005536A (ko) | 안드로이드 시스템의 부팅 성능을 향상시키기 위한 방법, 컴퓨팅 장치 및 컴퓨터-판독가능 매체에 저장된 컴퓨터 프로그램 | |
US8549485B2 (en) | Method and system for concise expression of optional code snippets in interrepted languages | |
US20190065161A1 (en) | Supporting compiler variable instrumentation for uninitialized memory references | |
CN114911541A (zh) | 配置信息的处理方法、装置、电子设备及存储介质 | |
US11188361B1 (en) | Cross-architecture software distribution using a virtual instruction set architecture | |
Deitel et al. | Java SE 8 for programmers | |
US20060101436A1 (en) | Hosting environment abstraction model for content | |
US8135943B1 (en) | Method, apparatus, and computer-readable medium for generating a dispatching function |
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 |