CN112698835B - 一种单片机编译链接方法、装置、计算机设备及存储介质 - Google Patents
一种单片机编译链接方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN112698835B CN112698835B CN202110006927.6A CN202110006927A CN112698835B CN 112698835 B CN112698835 B CN 112698835B CN 202110006927 A CN202110006927 A CN 202110006927A CN 112698835 B CN112698835 B CN 112698835B
- Authority
- CN
- China
- Prior art keywords
- file
- executable file
- data information
- variable
- compiling
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/54—Link editing before load time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明实施例公开了一种单片机编译链接方法、装置、计算机设备及存储介质。该方法包括:获取当前文件中的不可变代码编译链接生成对应的第一可执行文件,所述第一可执行文件中的第一数据信息存放在第一不可变FLASH存储区,所述第一可执行文件中的第二数据信息存放在第一不可变RAM存储区;将所述当前文件中的可变代码编译链接生成对应的第二可执行文件,所述第二可执行文件中的第一数据信息存放在第二可变FLASH存储区,所述第二可执行文件中的第二数据信息存放在第二可变RAM存储区;根据所述第一可执行文件和所述第二可执行文件生成目标文件。本发明实施例的技术方案,以实现缩短编译时间,提升工作效率和用户体验。
Description
技术领域
本发明实施例涉及单片机编译链接技术领域,尤其涉及一种单片机编译链接方法、装置、计算机设备及存储介质。
背景技术
单片机的烧录文件一般为s19\hex的格式,它是通过编译器对很多C代码进行编译、链接,最终生成目标文件。
随着ECU(电子控制单元)功能的越来越强大,软件逻辑也越来越复杂,C代码量的编译非常庞大,一般ECU代码行数有60万行,对应的C文件7000多个,对这么多文件进行编译、链接需要消耗很长的时间。
对于快速开发原型,用户有时仅需要修改少量的文件,然后跟大量的其他代码文件一起进行编译链接,耗时较长,即使其他文件已经编译成库文件不需要编译了,但也需要对所有的函数、变量确定存储地址,同样需要很长的时间进行链接。
发明内容
本发明实施例提供一种单片机编译链接方法、装置、计算机设备及存储介质,以实现缩短编译时间,提升工作效率和用户体验。
第一方面,本发明实施例提供了一种单片机编译链接方法,该方法包括:
获取当前文件中的不可变代码编译链接生成对应的第一可执行文件,所述第一可执行文件中的第一数据信息存放在第一不可变FLASH存储区,所述第一可执行文件中的第二数据信息存放在第一不可变RAM存储区;
将所述当前文件中的可变代码编译链接生成对应的第二可执行文件,所述第二可执行文件中的第一数据信息存放在第二可变FLASH存储区,所述第二可执行文件中的第二数据信息存放在第二可变RAM存储区;
根据所述第一可执行文件和所述第二可执行文件生成目标文件。
第二方面,本发明实施例还提供了一种单片机编译链接装置,该装置包括:
第一可执行文件生成模块,用于获取当前文件中的不可变代码编译链接生成对应的第一可执行文件,所述第一可执行文件中的第一数据信息存放在第一不可变FLASH存储区,所述第一可执行文件中的第二数据信息存放在第一不可变RAM存储区;
第二可执行文件生成模块,用于将所述当前文件中的可变代码编译链接生成对应的第二可执行文件,所述第二可执行文件中的第一数据信息存放在第二可变FLASH存储区,所述第二可执行文件中的第二数据信息存放在第二可变RAM存储区;
目标文件生成模块,用于根据所述第一可执行文件和所述第二可执行文件生成目标文件。
第三方面,本发明实施例还提供了一种设备,该设备包括:
一个或多个处理器;
存储装置,用于存储多个程序,
当所述多个程序中的至少一个被所述一个或多个处理器执行时,使得所述一个或多个处理器实现本发明第一方面实施例所提供的单片机编译链接方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明第一方面实施例所提供的一种单片机编译链接方法。
本发明实施例的技术方案,通过获取当前文件中的不可变代码编译链接生成对应的第一可执行文件,所述第一可执行文件中的第一数据信息存放在第一不可变FLASH存储区,所述第一可执行文件中的第二数据信息存放在第一不可变RAM存储区;将所述当前文件中的可变代码编译链接生成对应的第二可执行文件,所述第二可执行文件中的第一数据信息存放在第二可变FLASH存储区,所述第二可执行文件中的第二数据信息存放在第二可变RAM存储区;根据所述第一可执行文件和所述第二可执行文件生成目标文件。解决了现有单片机的烧录文件编译链接耗时较长的问题,以实现缩短编译时间,提升工作效率和用户体验。
附图说明
图1是本发明实施例一提供的一种单片机编译链接方法的流程图;
图2是本发明实施例二提供的一种单片机编译链接方法的流程图;
图3是本发明实施例三提供的一种单片机编译链接装置的结构图;
图4是本发明实施例四提供的一种计算机设备的硬件结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明具体实施例作进一步的详细描述。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。
另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部内容。在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
实施例一
图1为本发明实施例一提供的一种单片机编译链接方法的流程图,本实施例可适用于库函数较多或者用户仅修改少量模型代码的情况,该方法可以由单片机编译链接装置来执行,该装置可以通过软件和/或硬件的形式实现。具体包括如下步骤:
S110、获取当前文件中的不可变代码编译链接生成对应的第一可执行文件,所述第一可执行文件中的第一数据信息存放在第一不可变FLASH存储区,所述第一可执行文件中的第二数据信息存放在第一不可变RAM存储区。
其中,当前文件为单片机待编译链接的单片机库文件中所有的.o文件。
可以理解的是,在获取当前文件中的不可变代码编译链接生成对应的第一可执行文件之前,还包括:将原始文件通过编译器编译为当前文件。
具体的,通过所有.c文件(即原始文件)的C代码通过编译器编译为单片机库文件中的.o文件。
进一步的,当前文件中的不可变代码为基本不会被修改的代码,例如,库函数、驱动等代码,当前文件中的不可变代码可以存放于lib存储区。正如现有单片机编译链接方法中对当前文件中的不可变代码也进行了重新的编译链接,则导致单片机编译链接时间耗时较长,在本实施例中,预先将当前文件中的不可变代码单独存放于指定的lib存储区,而在单片机进行编译链接时不再对当前文件中的不可变代码进行重新的编译链接,从而缩短了单片机的编译链接的时间。
其中,所述第一数据信息为函数和常量,所述第二数据信息为变量。所述第二数据信息中变量无初始值或初始值为零。
第一不可变FLASH存储区为第一不可变FLASH_lib存储区,第一不可变RAM存储区为第一不可变RAM_lib存储区。
具体的,将当前文件中的不可变代码经过编译链接生成对应的第一可执行文件,因此为,将第一可执行文件中的第一数据信息存放在第一不可变FLASH_lib存储区,即将第一可执行文件中的函数和常量存放在第一不可变FLASH_lib存储区,将第一可执行文件中的第二数据信息存放在第一不可变RAM_lib存储区,即将第一可执行文件中的变量存放在第一不可变RAM_lib存储区,则所有的交互函数的存放地址在此确定。
第一可执行文件可以为但不限于为s19\hex文件,也可以为bin格式。第一可执行文件的文件格式为最终烧录进单片机的文件格式,第一可执行文件的文件格式可以由本领域技术人员根据实际单片机烧录需求的文件格式进行选择设置,本实施例对此不作任何限制。
在本实施例中,将当前文件中的不可变代码单独存放于指定的lib存储区,通过对lib存储区中的不可变代码编译、链接生成对应的第一可执行文件,第一可执行文件中的函数和常量存放在第一不可变FLASH_lib存储区,第一可执行文件中的变量存放在第一不可变RAM_lib存储区。
S120、将所述当前文件中的可变代码编译链接生成对应的第二可执行文件,所述第二可执行文件中的第一数据信息存放在第二可变FLASH存储区,所述第二可执行文件中的第二数据信息存放在第二可变RAM存储区。
进一步的,当前文件中的可变代码为本领域技术人员在单片机进行编译链接时需要频繁被修改的代码,例如,控制策略等代码,当前文件中的可变代码可以存放于customer存储区。
可以理解的是,在将所述当前文件中的可变代码编译链接生成对应的第二可执行文件之前,还包括:根据预设条件对可变代码进行修改;将所述当前文件中的可变代码编译链接生成对应的第二可执行文件,包括:将所述当前文件中修改后的可变代码编译链接生成对应的第二可执行文件。
其中,所述第一数据信息为函数和常量,所述第二数据信息为变量。所述第二数据信息中变量无初始值或初始值为零。
第二可变FLASH存储区为第二可变FLASH_customer存储区,第二可变RAM存储区为第二可变RAM_customer存储区。
具体的,将所述当前文件中的可变代码经过编译链接生成对应的第二可执行文件,因此为,将第二可执行文件中的第一数据信息存放在第二可变FLASH_customer存储区,即将第二可执行文件中的函数和常量存放在第二可变FLASH_customer存储区,将第二可执行文件中的第二数据信息存放在第二可变RAM_customer存储区,即将第二可执行文件中的变量存放在第二可变RAM_customer存储区。
在上述实施例的基础上,所述第二可执行文件中的第一数据信息通过函数指针访问所述第一可执行文件中的第一数据信息;以及,所述第二可执行文件中的第二数据信息通过函数指针访问所述第一可执行文件中的第二数据信息。
具体的,第二可执行文件中的第一数据信息存放在第二可变FLASH_customer存储区,第一可执行文件中的第一数据信息存放在第一不可变FLASH_lib存储区,即存放在第二可变FLASH_customer存储区的第二可执行文件中的第一数据信息可以通过函数指针访问存放在第一不可变FLASH_lib存储区的第一可执行文件中的第一数据信息;所述第二可执行文件中的第二数据信息存放在第二可变RAM_customer存储区,第一可执行文件中的第二数据信息存放在第一不可变RAM_lib存储区,即存放在第二可变RAM_customer存储区的第二可执行文件中的第二数据信息可以通过函数指针访问存放在第一不可变RAM_lib存储区的第一可执行文件中的第二数据信息。
第二可执行文件可以为但不限于为s19\hex文件,也可以为bin格式。第二可执行文件的文件格式为最终烧录进单片机的文件格式,第二可执行文件的文件格式可以由本领域技术人员根据实际单片机烧录需求的文件格式进行选择设置,本实施例对此不作任何限制。
在本实施例中,将当前文件中的可变代码单独存放于指定的customer存储区,通过对customer存储区中的可变代码编译、链接生成对应的第二可执行文件,第二可执行文件中的函数和常量存放在第二可变FLASH_customer存储区,第二可执行文件中的变量存放在第二可变RAM_customer存储区。
S130、根据所述第一可执行文件和所述第二可执行文件生成目标文件。
其中,目标文件可以为但不限于为s19\hex文件,也可以为bin格式。目标文件的文件格式为最终烧录进单片机的文件格式,目标文件的文件格式可以由本领域技术人员根据实际单片机烧录需求的文件格式进行选择设置,本实施例对此不作任何限制。
在上述实施例的基础上,根据所述第一可执行文件和所述第二可执行文件生成目标文件,包括:根据所述第一可执行文件中的第一数据信息和所述第二可执行文件中的第一数据信息生成FLASH存储区文件,以及所述第一可执行文件中的第二数据信息和所述第二可执行文件中的第二数据信息生成RAM存储区文件;将所述FLASH存储区文件和所述RAM存储区文件合并生成所述目标文件。
具体的,将第一可执行文件中的第一不可变FLASH_lib存储区与第二可执行文件中的第二可变FLASH_customer存储区的两个存储区内的数据放置至对应的FLASH存储区,进而组成FLASH存储区文件;将第一可执行文件中的第一不可变RAM_lib存储区与第二可执行文件中的第二可变RAM_customer存储区的两个存储区内的数据放置至对应的RAM存储区,进而组成RAM存储区文件;进一步的,将所述FLASH存储区文件和所述RAM存储区文件合并生成所述目标文件。
本发明实施例的技术方案,通过获取当前文件中的不可变代码编译链接生成对应的第一可执行文件,所述第一可执行文件中的第一数据信息存放在第一不可变FLASH存储区,所述第一可执行文件中的第二数据信息存放在第一不可变RAM存储区;将所述当前文件中的可变代码编译链接生成对应的第二可执行文件,所述第二可执行文件中的第一数据信息存放在第二可变FLASH存储区,所述第二可执行文件中的第二数据信息存放在第二可变RAM存储区;根据所述第一可执行文件和所述第二可执行文件生成目标文件。解决了现有单片机的烧录文件编译链接耗时较长的问题,以实现缩短编译时间,提升工作效率和用户体验。
实施例二
图2为本发明实施例二提供的一种单片机编译链接方法的流程图,本实施例以上述实施例为基础进行优化。
相应的,本实施例的方法具体包括:
S210、将原始文件通过编译器编译为当前文件。
其中,原始文件为单片机中所有的.c文件。
具体的,本实施例先将所有.c文件通过编译器编译为.o文件,即得到当前文件。
S220、获取当前文件中的不可变代码编译链接生成对应的第一可执行文件,所述第一可执行文件中的第一数据信息存放在第一不可变FLASH存储区,所述第一可执行文件中的第二数据信息存放在第一不可变RAM存储区。
S230、根据预设条件对可变代码进行修改。
其中,预设条件即为单片机需要进行编译链接进行修改的代码内容,采用本实施例的技术方案则仅需对当前文件中的可变代码进行修改,以此得到修改后的可变代码,本实施例对具体的预设条件不作任何限制,本领域技术人员可以根据实际的单片机文件烧录需求进行选择设置预设条件。
S240、将所述当前文件中修改后的可变代码编译链接生成对应的第二可执行文件,所述第二可执行文件中的第一数据信息存放在第二可变FLASH存储区,所述第二可执行文件中的第二数据信息存放在第二可变RAM存储区。
在本实施例中,先将FLASH存储区和RAM存储区分成两部分,即FLASH存储区包括第一不可变FLASH存储区和第二可变FLASH存储区,RAM存储区包括第一不可变RAM存储区和第二可变FLASH存储区。也就是说,FLASH存储区包括第一不可变FLASH_lib存储区和第二可变FLASH_customer存储区,RAM存储区包括第一不可变RAM_lib存储区和第二可变RAM_customer存储区。
进一步的,FLASH存储区中包括的第一不可变FLASH_lib存储区和第二可变FLASH_customer存储区只有函数交互,没有变量交互,即第二可变FLASH_customer存储区中的代码不会访问第一不可变FLASH_lib存储区的变量,但第二可变FLASH_customer存储区中的代码可以访问第一不可变FLASH_lib存储区的函数。
RAM存储区中包括的第一不可变RAM_lib存储区和第二可变RAM_customer存储区只有函数交互,没有变量交互,即第二可变RAM_customer存储区中的代码不会访问第一不可变RAM_lib存储区的变量,但第二可变RAM_customer存储区中的代码可以访问第一不可变RAM_lib存储区的函数。
其中,所述第一数据信息为函数和常量,所述第二数据信息为变量。所述第二数据信息中变量无初始值或初始值为零。
具体的,第一不可变RAM_lib存储区中的第二数据信息全部为无初始值或者初始值为0,第二可变RAM_customer存储区中的第二数据信息全部为无初始值或者初始值为0,以此保证了lib存储区变量的准确性。
进一步的,在本实施中,将所述当前文件中修改后的可变代码经过编译链接生成对应的第二可执行文件,因此为,将第二可执行文件中修改后的第一数据信息存放在第二可变FLASH_customer存储区,即将第二可执行文件中修改后的函数和常量存放在第二可变FLASH_customer存储区,将第二可执行文件中修改后的第二数据信息存放在第二可变RAM_customer存储区,即将第二可执行文件中修改后的变量存放在第二可变RAM_customer存储区。
S250、根据所述第一可执行文件中的第一数据信息和所述第二可执行文件中的第一数据信息生成FLASH存储区文件,以及所述第一可执行文件中的第二数据信息和所述第二可执行文件中的第二数据信息生成RAM存储区文件。
S260、将所述FLASH存储区文件和所述RAM存储区文件合并生成所述目标文件。
本发明实施例的技术方案,先将所有.c文件(即原始文件)通过编译器编译为.o文件(即当前文件),然后根据链接文件中指定的函数、变量、常量的存放位置,将所有.o中的函数、变量、常量放置到对应的FLASH存储区和RAM存储区中,通过将频繁修改代码编译生成的s19\hex文件(即第一可执行文件)和已提前编译好的s19\hex文件(即第二可执行文件)进行合并,生成最终烧录文件得到目标文件。在本实施例中,将不会被频繁修改的代码提前编译链接生成s19\hex文件(即第二可执行文件),则不需要对第二可执行文件进行重新链接,缩短链接的时间,其他模块通过函数指针访问这些代码,省去了部分底层函数的编译、链接过程。本实施例提供的技术方案可应用于库函数较多或者客户仅修改少量模型代码的场景,从而极大提升目标文件生成速度,提升本领域技术人员的工作效率和使用体验。
实施例三
图3为本发明实施例三提供的一种单片机编译链接装置的结构图,本实施例可适用于库函数较多或者用户仅修改少量模型代码的情况。
如图3所示,所述装置包括:第一可执行文件生成模块310、第二可执行文件生成模块320和目标文件生成模块330,其中:
第一可执行文件生成模块310,用于获取当前文件中的不可变代码编译链接生成对应的第一可执行文件,所述第一可执行文件中的第一数据信息存放在第一不可变FLASH存储区,所述第一可执行文件中的第二数据信息存放在第一不可变RAM存储区;
第二可执行文件生成模块320,用于将所述当前文件中的可变代码编译链接生成对应的第二可执行文件,所述第二可执行文件中的第一数据信息存放在第二可变FLASH存储区,所述第二可执行文件中的第二数据信息存放在第二可变RAM存储区;
目标文件生成模块330,用于根据所述第一可执行文件和所述第二可执行文件生成目标文件。
本实施例的单片机编译链接方法装置,通过获取当前文件中的不可变代码编译链接生成对应的第一可执行文件,所述第一可执行文件中的第一数据信息存放在第一不可变FLASH存储区,所述第一可执行文件中的第二数据信息存放在第一不可变RAM存储区;将所述当前文件中的可变代码编译链接生成对应的第二可执行文件,所述第二可执行文件中的第一数据信息存放在第二可变FLASH存储区,所述第二可执行文件中的第二数据信息存放在第二可变RAM存储区;根据所述第一可执行文件和所述第二可执行文件生成目标文件。解决了现有单片机的烧录文件编译链接耗时较长的问题,以实现缩短编译时间,提升工作效率和用户体验。
在上述各实施例的基础上,在获取当前文件中的不可变代码编译链接生成对应的第一可执行文件之前,还包括:
将原始文件通过编译器编译为当前文件。
在上述各实施例的基础上,在将所述当前文件中的可变代码编译链接生成对应的第二可执行文件之前,还包括:
根据预设条件对可变代码进行修改;
将所述当前文件中的可变代码编译链接生成对应的第二可执行文件,包括:
将所述当前文件中修改后的可变代码编译链接生成对应的第二可执行文件。
在上述各实施例的基础上,根据所述第一可执行文件和所述第二可执行文件生成目标文件,包括:
根据所述第一可执行文件中的第一数据信息和所述第二可执行文件中的第一数据信息生成FLASH存储区文件,以及所述第一可执行文件中的第二数据信息和所述第二可执行文件中的第二数据信息生成RAM存储区文件;
将所述FLASH存储区文件和所述RAM存储区文件合并生成所述目标文件。
在上述各实施例的基础上,所述第二可执行文件中的第一数据信息通过函数指针访问所述第一可执行文件中的第一数据信息;以及,
所述第二可执行文件中的第二数据信息通过函数指针访问所述第一可执行文件中的第二数据信息。
在上述各实施例的基础上,所述第一数据信息为函数和常量,所述第二数据信息为变量。
在上述各实施例的基础上,所述第二数据信息中变量无初始值或初始值为零。
上述各实施例所提供的单片机编译链接装置可执行本发明任意实施例所提供的单片机编译链接方法,具备执行单片机编译链接方法相应的功能模块和有益效果。
实施例四
图4为本发明实施例四提供的一种计算机设备的结构示意图,如图4所示,该计算机设备包括处理器410、存储器420、输入装置430和输出装置440;计算机设备中处理器410的数量可以是一个或多个,图4中以一个处理器410为例;计算机设备中的处理器410、存储器420、输入装置430和输出装置440可以通过总线或其他方式连接,图4中以通过总线连接为例。
存储器420作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的单片机编译链接方法对应的程序指令/模块(例如,单片机编译链接装置中的第一可执行文件生成模块310、第二可执行文件生成模块320和目标文件生成模块330)。处理器410通过运行存储在存储器420中的软件程序、指令以及模块,从而执行计算机设备的各种功能应用以及数据处理,即实现上述的单片机编译链接方法。
存储器420可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器420可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器420可进一步包括相对于处理器410远程设置的存储器,这些远程存储器可以通过网络连接至计算机设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置430可用于接收输入的数字或字符信息,以及产生与计算机设备的用户设置以及功能控制有关的键信号输入。输出装置440可包括显示屏等显示设备。
实施例五
本发明实施例五还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种单片机编译链接方法,该方法包括:
获取当前文件中的不可变代码编译链接生成对应的第一可执行文件,所述第一可执行文件中的第一数据信息存放在第一不可变FLASH存储区,所述第一可执行文件中的第二数据信息存放在第一不可变RAM存储区;
将所述当前文件中的可变代码编译链接生成对应的第二可执行文件,所述第二可执行文件中的第一数据信息存放在第二可变FLASH存储区,所述第二可执行文件中的第二数据信息存放在第二可变RAM存储区;
根据所述第一可执行文件和所述第二可执行文件生成目标文件。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的单片机编译链接方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述单片机编译链接装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (8)
1.一种单片机编译链接方法,其特征在于,包括:
获取当前文件中的不可变代码编译链接生成对应的第一可执行文件,所述第一可执行文件中的第一数据信息存放在第一不可变FLASH存储区,所述第一可执行文件中的第二数据信息存放在第一不可变RAM存储区;所述第一数据信息为函数和常量,所述第二数据信息为变量;
将所述当前文件中的可变代码编译链接生成对应的第二可执行文件,所述第二可执行文件中的第一数据信息存放在第二可变FLASH存储区,所述第二可执行文件中的第二数据信息存放在第二可变RAM存储区;
根据所述第一可执行文件和所述第二可执行文件生成目标文件;
其中,根据所述第一可执行文件和所述第二可执行文件生成目标文件,包括:根据所述第一可执行文件中的第一数据信息和所述第二可执行文件中的第一数据信息生成FLASH存储区文件,以及所述第一可执行文件中的第二数据信息和所述第二可执行文件中的第二数据信息生成RAM存储区文件;将所述FLASH存储区文件和所述RAM存储区文件合并生成所述目标文件。
2.根据权利要求1所述的方法,其特征在于,在获取当前文件中的不可变代码编译链接生成对应的第一可执行文件之前,还包括:
将原始文件通过编译器编译为当前文件。
3.根据权利要求1所述的方法,其特征在于,在将所述当前文件中的可变代码编译链接生成对应的第二可执行文件之前,还包括:
根据预设条件对可变代码进行修改;
将所述当前文件中的可变代码编译链接生成对应的第二可执行文件,包括:
将所述当前文件中修改后的可变代码编译链接生成对应的第二可执行文件。
4.根据权利要求1所述的方法,其特征在于,所述第二可执行文件中的第一数据信息通过函数指针访问所述第一可执行文件中的第一数据信息;以及,
所述第二可执行文件中的第二数据信息通过函数指针访问所述第一可执行文件中的第二数据信息。
5.根据权利要求1所述的方法,其特征在于,所述第二数据信息中变量无初始值或初始值为零。
6.一种单片机编译链接装置,其特征在于,包括:
第一可执行文件生成模块,用于获取当前文件中的不可变代码编译链接生成对应的第一可执行文件,所述第一可执行文件中的第一数据信息存放在第一不可变FLASH存储区,所述第一可执行文件中的第二数据信息存放在第一不可变RAM存储区;所述第一数据信息为函数和常量,所述第二数据信息为变量;
第二可执行文件生成模块,用于将所述当前文件中的可变代码编译链接生成对应的第二可执行文件,所述第二可执行文件中的第一数据信息存放在第二可变FLASH存储区,所述第二可执行文件中的第二数据信息存放在第二可变RAM存储区;
目标文件生成模块,用于根据所述第一可执行文件和所述第二可执行文件生成目标文件;
其中,所述目标文件生成模块具体用于:根据所述第一可执行文件中的第一数据信息和所述第二可执行文件中的第一数据信息生成FLASH存储区文件,以及所述第一可执行文件中的第二数据信息和所述第二可执行文件中的第二数据信息生成RAM存储区文件;将所述FLASH存储区文件和所述RAM存储区文件合并生成所述目标文件。
7.一种计算机设备,其特征在于,所述计算机设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-5中任一项所述的单片机编译链接方法。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-5中任一项所述的单片机编译链接方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110006927.6A CN112698835B (zh) | 2021-01-05 | 2021-01-05 | 一种单片机编译链接方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110006927.6A CN112698835B (zh) | 2021-01-05 | 2021-01-05 | 一种单片机编译链接方法、装置、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112698835A CN112698835A (zh) | 2021-04-23 |
CN112698835B true CN112698835B (zh) | 2023-08-18 |
Family
ID=75514692
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110006927.6A Active CN112698835B (zh) | 2021-01-05 | 2021-01-05 | 一种单片机编译链接方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112698835B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103473097A (zh) * | 2013-09-09 | 2013-12-25 | 福州瑞芯微电子有限公司 | Android系统固件升级系统、装置及升级方法 |
CN104360834B (zh) * | 2014-10-10 | 2018-01-26 | 惠州市德赛西威汽车电子股份有限公司 | 一种车载嵌入式系统复用第三方插件的方法 |
CN106293827B (zh) * | 2016-08-08 | 2019-08-16 | 杭州玳数科技有限公司 | 一种通过配置文件来控制web前端发布的方法与系统 |
CN110633250A (zh) * | 2019-07-19 | 2019-12-31 | 完美世界(北京)软件科技发展有限公司 | 资源管理系统和方法 |
CN110673854A (zh) * | 2019-09-24 | 2020-01-10 | 深圳前海微众银行股份有限公司 | Sas语言编译方法、装置、设备及可读存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104881611B (zh) * | 2014-02-28 | 2017-11-24 | 国际商业机器公司 | 保护软件产品中的敏感数据的方法和装置 |
JP6790869B2 (ja) * | 2017-01-25 | 2020-11-25 | 富士通株式会社 | コンパイル方法、コンパイルプログラム及び情報処理装置 |
-
2021
- 2021-01-05 CN CN202110006927.6A patent/CN112698835B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103473097A (zh) * | 2013-09-09 | 2013-12-25 | 福州瑞芯微电子有限公司 | Android系统固件升级系统、装置及升级方法 |
CN104360834B (zh) * | 2014-10-10 | 2018-01-26 | 惠州市德赛西威汽车电子股份有限公司 | 一种车载嵌入式系统复用第三方插件的方法 |
CN106293827B (zh) * | 2016-08-08 | 2019-08-16 | 杭州玳数科技有限公司 | 一种通过配置文件来控制web前端发布的方法与系统 |
CN110633250A (zh) * | 2019-07-19 | 2019-12-31 | 完美世界(北京)软件科技发展有限公司 | 资源管理系统和方法 |
CN110673854A (zh) * | 2019-09-24 | 2020-01-10 | 深圳前海微众银行股份有限公司 | Sas语言编译方法、装置、设备及可读存储介质 |
Non-Patent Citations (1)
Title |
---|
基于CCP协议的纯电动车整车控制器标定研究;汪春华 等;《汽车工程》;第42卷(第3期);286-291 * |
Also Published As
Publication number | Publication date |
---|---|
CN112698835A (zh) | 2021-04-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7971175B2 (en) | Method and system for implementing cached parameterized cells | |
CN109388396A (zh) | 页面生成方法、装置、计算机设备和存储介质 | |
CN115686631B (zh) | 一种基于知识基的随机指令生成方法、装置及存储介质 | |
CN109445775A (zh) | 一键活动内嵌代码方法、装置及计算机可读存储介质 | |
CN111159301A (zh) | 一种基于智能合约的数据创建方法、装置、设备及存储介质 | |
US8935657B2 (en) | Model-to-model transformation by kind | |
CN112947907B (zh) | 一种创建代码分支的方法 | |
CN112698835B (zh) | 一种单片机编译链接方法、装置、计算机设备及存储介质 | |
CN110018831B (zh) | 程序处理方法、装置及计算机可读存储介质 | |
CN111475165A (zh) | 一种应用程序智能编译方法、系统、终端及存储介质 | |
CN114185530A (zh) | 一种通用组件库开发的方法、装置、产品及存储介质 | |
CN115309811A (zh) | Etl脚本生成方法、装置、存储介质和设备 | |
CN115292641A (zh) | 页面生成方法、装置、服务器及存储介质 | |
CN111651160B (zh) | 插件构建、网页设计的方法和装置 | |
CN114371986A (zh) | 用户界面测试用例更新方法、装置及存储介质 | |
CN112312630A (zh) | 一种数据处理的方法和装置 | |
CN110674179A (zh) | 一种查询接口的生成方法、装置及介质 | |
CN109117124A (zh) | 一种多返回值的函数编程方法 | |
CN113326042B (zh) | 可视化配置薪资的方法、装置、存储介质及处理器 | |
CN114741064B (zh) | 页面生成方法、装置、系统及存储介质 | |
CN114661301A (zh) | 图形处理单元编译方法、装置、编译加速库和存储介质 | |
CN116331232A (zh) | 车辆控制器的代码集成方法、装置、设备、介质和产品 | |
CN110045985B (zh) | 一种Targetlink模型标定参数设置方法、装置、设备及介质 | |
CN117892497A (zh) | 基于c语言模型的实时化仿真方法、装置、设备及介质 | |
CN117492765A (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 |