CN104881396A - 图形化程序的编译文件形成方法 - Google Patents
图形化程序的编译文件形成方法 Download PDFInfo
- Publication number
- CN104881396A CN104881396A CN201510306173.0A CN201510306173A CN104881396A CN 104881396 A CN104881396 A CN 104881396A CN 201510306173 A CN201510306173 A CN 201510306173A CN 104881396 A CN104881396 A CN 104881396A
- Authority
- CN
- China
- Prior art keywords
- file
- compiling
- template
- compile
- graphical programs
- 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
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开图形化程序的编译文件形成方法一种编译文件的模板文件,将模板文件划分为TOOL、LIB、INC、FLAG、OBJS、COMPILE共6个文本段;生成编译文件:根据处理器类型匹配对应的模板文件;通过分析汇总图形化程序编译相关设置信设计息,将模板文件中的通配符进行替换,形成图形化程序工程的编译文件。当新增硬件型号、编译环境时,不需要修改相关软件,只需增加对应的模板,具有较好扩展性,降低了开发难度。
Description
技术领域
本发明属于嵌入式装置编译文件形成方法,具体涉及嵌入式图形化程序的编译文件的自动生成,尤其涉及图形化程序的编译文件形成方法。
背景技术
为了运行嵌入式装置,嵌入式程序开发人员需要将功能代码编译成二进制文件并且转换成硬件CPU支持的文件格式,然后下载到嵌入式装置中让装置运行并执行逻辑功能。为了编译功能代码,程序开发人员需要搭建编译环境、编写编译文件。而且针对不同的CPU类型、甚至相同CPU类型的不同硬件板卡,需要编写不同的编译文件,工作量巨大、难度高、实现细节繁琐;并且每增加新的硬件板卡或CPU类型,由于编译选项、编译器各不相同,需要重新编写编译文件,扩展性和兼容性差。嵌入式装置程序开发已经进入到图形化、可视化的开发阶段,程序的编译文件需图形化编程工具自动形成,需有一种解耦的、可扩展的编译文件形成方法,本案由此产生。
发明内容
本发明目的是提供图形化程序的编译文件形成方法,本发明对同一种处理器类型的源文件,每次编译时复用已存在的模板文件,避免手动编写编译文件,降低工作量、减少失误率。
为解决上述技术问题,本图形化程序的编译文件形成方法,其特征在于包括以下步骤:
设计模板文件:设计一种编译文件的模板文件,将模板文件划分为6个文本段;
生成编译文件:根据处理器类型匹配对应的模板文件;通过分析汇总图形化程序编译相关设置信息,将模板文件中的通配符进行替换,形成图形化程序工程的编译文件。
作为本发明进一步改进的技术方案,所述设计模板文件包括以下步骤:
将模板文件划分为TOOL、LIB、INC、FLAG、OBJS、COMPILE共6个文本段;其中:TOOL文本段表示编译前调用的文件删除命令格式模板;
LIB文本段表示需链接的库、目录,支持通配符;
INC文本段表示头文件查找目录列表,编译模板提供默认的一些文件目录,并可扩充新的目录;
FLAG文本段表示编译选项、链接选项;
OBJS文本段表示需链接的OBJ文件,采用相对目录表示路径,不同编译器文件后缀可不同;
COMPILE文本段表示执行编译过程命令链;
所述执行编译过程命令链依次包括单个文件OBJ形成命令、OBJ文件链接为目标文件命令、目标文件转换为HEX文件命令。
作为本发明进一步改进的技术方案,所述生成编译文件包括以下步骤:
用若干关键字替换对应的实际处理进程名;不同类型的CPU编译文件模板,其文本段关键字相同,具体的设置内容可不同;将编译文件模板以CPU型号命名,存放到图形化程序环境的指定目录;
根据当前工程对应的嵌入式处理器型号名,自动匹配对应的编译文件模板,读取解析后的编译文件模板的6个文本段,再根据具体的图形化程序编译信息,替换编译文件模板中的预定义的通配符,生成工程对应的编译文件。
作为本发明进一步改进的技术方案,所述图形化程序包括型号类型、功能代码所在目录和主机编译环境。
本发明提供一种编译文件的模板文件,将模板文件划分为6个文本段,根据处理器类型匹配对应的模板文件,并分析汇总图形化程序编译相关设置信息,将模板中的通配符进行替换,形成图形化程序工程的编译文件。具体内容包括:
第一步:设计编译文件的模板文件。将文件划分为TOOL、LIB、INC、FLAG、OBJS、COMPILE共6个文本段。其中:TOOL文本表示编译前调用的文件删除命令格式模板;LIB文本段表示需链接的库、目录,支持通配符。INC文本段表示头文件查找目录列表;编译模板提供默认的一些文件目录,并可扩充新的目录;FLAG文本段表示编译选项、链接选项;OBJS文本段表示需链接的OBJ文件,采用相对目录表示路径,不同编译器文件后缀可不同;COMPILE文本段表示执行编译过程命令链:依次包括单个文件OBJ形成命令、OBJ文件链接为目标文件命令、目标文件转换为HEX文件命令等命令序列。可用若干关键字替换对应的实际处理进程名。不同类型的CPU编译文件模板,其文本段关键字相同,具体的设置内容可不同。将编译模板文件以CPU型号命名,存放到图形化程序环境的指定目录。
第二步:根据当前工程对应的嵌入式处理器型号名,自动选配对应的模板文件,解析模板文件的6个文本段,再根据具体的型号类型、功能代码所在目录、主机编译环境等具体信息,替换模板中的预定义的通配符,解析生成实际编译的编译文件。
本发明先设计编译文件的通用模板,将模板分成6个文本段,在文本段中定义生成编译文件所需的部分内容和指令,并进一步分析处理图形化程序工程设置、运行系统编译环境设置信息,导入匹配的模板文件,进行通配符替换,自动形成图形化程序编译所需的编译文件。当新增硬件型号、编译环境时,不需要修改相关软件,只需增加对应的模板,具有较好扩展性,降低了开发难度。
采用上述方案后,本发明具有如下有益效果:对同一种处理器类型的源文件,每次编译时复用已存在的模板文件,避免手动编写编译文件,降低工作量、减少失误率。对不同类型的处理器,动态适配当前处理器类型,只需添加对应的模板文件,不需要修改相关编译文件形成程序,具有灵活的扩展性。免除了手动编写编译文件的工作量,降低了功能代码编译工作复杂度。本发明已经应用到图形化编程工具的开发中,在直流保护控制、电力电子等装置开发中进行了规模应用,提高了嵌入式装置开发效率。
附图说明
图1是本发明中基于编译文件的程序目标文件过程示意图。
图2是本发明中基于模板的图形化程序编译文件形成过程示意图。
具体实施方式
以下将结合附图,对本发明的技术方案进行详细说明。
实施例1
本图形化程序的编译文件形成方法,包括以下步骤:
设计模板文件:设计一种编译文件的模板文件,将模板文件划分为6个文本段;
生成编译文件:根据处理器类型匹配对应的模板文件;通过分析汇总图形化程序编译相关设置信息,将模板文件中的通配符进行替换,形成图形化程序工程的编译文件。
作为本发明进一步改进的技术方案,所述设计模板文件包括以下步骤:
将模板文件划分为TOOL、LIB、INC、FLAG、OBJS、COMPILE共6个文本段;其中:TOOL文本段表示编译前调用的文件删除命令格式模板;
LIB文本段表示需链接的库、目录,支持通配符;
INC文本段表示头文件查找目录列表,编译模板提供默认的一些文件目录,并可扩充新的目录;
FLAG文本段表示编译选项、链接选项;
OBJS文本段表示需链接的OBJ文件,采用相对目录表示路径,不同编译器文件后缀可不同;
COMPILE文本段表示执行编译过程命令链;
所述执行编译过程命令链依次包括单个文件OBJ形成命令、OBJ文件链接为目标文件命令、目标文件转换为HEX文件命令。
作为优选方案,所述生成编译文件包括以下步骤:
用若干关键字替换对应的实际处理进程名;不同类型的CPU编译文件模板,其文本段关键字相同,具体的设置内容可不同;将编译文件模板以CPU型号命名,存放到图形化程序环境的指定目录;
根据当前工程对应的嵌入式处理器型号名,自动匹配对应的编译文件模板,读取解析后的编译文件模板的6个文本段,再根据具体的图形化程序编译信息,替换编译文件模板中的预定义的通配符,生成工程对应的编译文件。
所述图形化程序包括型号类型、功能代码所在目录和主机编译环境。
本实施例1中,将模板文件划分为6个文本段,根据处理器类型匹配对应的模板文件,并分析汇总图形化程序编译相关设置信息,将模板中的通配符进行替换,形成图形化程序工程的编译文件。具体内容包括:
第一步:设计编译文件的模板文件。将文件划分为TOOL、LIB、INC、FLAG、OBJS、COMPILE共6个文本段。其中:TOOL文本表示编译前调用的文件删除命令格式模板;LIB文本段表示需链接的库、目录,支持通配符。INC文本段表示头文件查找目录列表;编译模板提供默认的一些文件目录,并可扩充新的目录;FLAG文本段表示编译选项、链接选项;OBJS文本段表示需链接的OBJ文件,采用相对目录表示路径,不同编译器文件后缀可不同;COMPILE文本段表示执行编译过程命令链:依次包括单个文件OBJ形成命令、OBJ文件链接为目标文件命令、目标文件转换为HEX文件命令等命令序列。可用若干关键字替换对应的实际处理进程名。不同类型的CPU编译文件模板,其文本段关键字相同,具体的设置内容可不同。将编译模板文件以CPU型号命名,存放到图形化程序环境的指定目录。
第二步:根据当前工程对应的嵌入式处理器型号名,自动选配对应的模板文件,解析模板文件的6个文本段,再根据具体的型号类型、功能代码所在目录、主机编译环境等具体信息,替换模板中的预定义的通配符,解析生成实际编译的编译文件。
功能代码编译时,需要生成编译文件,之后将编译文件作为形参传递给maker工具,maker工具逐行解析编译命令,调用编译器将功能源代码编译成二进制代码,然后链接必须的库文件,形成目标文件。基于编译文件的程序目标文件过程如图1所示:
1)步骤1:编译,将功能源代码编译成二进制代码;
2)步骤2:链接,将步骤1中编译所得的二进制代码和对应CPU类型的系统库文件、应用人员开发的用户库文件链接起来;
3)步骤3:重定位,处理链接起来的文件地址空间;
4)步骤4:格式处理,处理步骤3中生成的文件,转换成目标CPU支持的文件格式。
上述步骤的相关命令均需在编译文件中体现,故编译文件的形成是程序开发中的重要环节。本发明设计的基于可扩展模板的图形化程序编译文件生成方法,以图2为例,具体实现过程为:
第一步,定义编译文件的模板文件,通过抽取编译文件和编译环境的共同特征,制定6个文本段,分别是:
a)TOOL文本段:编译前调用的文件删除命令格式模板;
b)LIB文本段:需链接的库、目录,支持通配符;
c)INC文本段:头文件查找目录列表;编译模板提供默认的一些文件目录,可扩充新的目录;
d)FLAG文本段:编译选项、链接选项;
e)OBJS文本段:需链接的OBJ文件,采用相对目录表示路径,不同编译器文件后缀可不同;
f)COMPILE文本段:执行编译过程命令链:依次包括单个文件OBJ形成、OBJ文件链接为目标文件、目标文件转换为HEX文件的命令序列。可用若干关键字替换对应的实际处理进程名。
一个优选的典型配置文本示例如下:
[TOOL]
BDIR=c:/cygwin/ppc-linux/bin
CROSS_COMPILE=$(BDIR)/ppc-linux-
AS=$(CROSS_COMPILE)as
LD=$(CROSS_COMPILE)ld
CC=$(CROSS_COMPILE)gcc
CPP=$(CC)-E
AR=$(CROSS_COMPILE)ar
NM=$(CROSS_COMPILE)nm
STRIP=$(CROSS_COMPILE)strip
OBJCOPY=$(CROSS_COMPILE)objcopy
OBJDUMP=$(CROSS_COMPILE)objdump
RANLIB=$(CROSS_COMPILE)RANLIB
gccincdir:=$(shell$(CC)-print-file-name=include)
[/TOOL]
[LIB]
PROM=TOOL_DIR/uapc.sys/XXCPU/prom/start.o
LDSCRIPT=TOOL_DIR/uapc.sys/XXCPU/link/XXCPU.lds
LIBS=TOOL_DIR/uapc.sys/common_mpc5200_nos/lib/bestcomm.a
[/LIB]
[INC]
SYS_INC=TOOL_DIR/uapc.sys/SYS-INC
CPU_SYM_INC=TOOL_DIR/uapc.symbol/common_mpc5200_nos/include
COMM_FUNC_INC=TOOL_DIR/uapc.symbol/common_Func/include
[/INC]
[FLAG]
FLAGS=-g-Os-fPIC-ffixed-r14-meabi
FLAGS+=-DCONFIG_MPC5xxx-D__KERNEL__-DCONFIG_PPC
FLAGS+=-I$(COMM_FUNC_INC)-I PROJECT_DIR/src-I$(BSP_INC)-I$(SYS_INC)-I$(BOARD_SYS_INC)-I$(BOARD_SYM_INC)-I$(CPU_SYM_INC)
FLAGS+=-fno-builtin-ffreestanding-nostdinc-isystem$(gccincdir)
CFLAGS=$(FLAGS)-D__PPC__-Wall
AFLAGS=-D__ASSEMBLY__$(FLAGS)
LDFLAGS+=-Bstatic-T$(LDSCRIPT)-Ttext 0xFF060000-n
LDFLAGS_DEBUG+=-Bstatic-T$(LDSCRIPT)-Ttext 0x01400000-n
OBJCFLAGS=--gap-fill=0xff
[/FLAG]
[OBJS]
OBJ_DIR=PROJECT_DIR/obj
OBJS:=$(addprefix$(obj),$(OBJS))
[/OBJS]
[COMPILE]
default:PROJECT_DIR/MODULE_NAME.srec$(OBJ_DIR)/System.mapPROJECT_DIR/MODULE_NAME.bin PROJECT_DIR/debug
clean:
c:/cygwin/bin/rm-f$(OBJ_DIR)/*.o*.bin*.hex*.srec debug.*
all:clean default
.depend:
$(OBJ_DIR)/%.o:PROJECT_DIR/src/%.c
PROJECT_DIR/MODULE_NAME.hex:PROJECT_DIR/MODULE_NAME
-$(OBJCOPY)${OBJCFLAGS}-O ihex$<$
[/COMPILE]
在上例中,TOOL_DIR是图形化编程工具目录,XXCPU是CPU型号,PROJECT_DIR是当前工程目录,MODULE_NAME是编译模块名,可用实际值进行替换。
第二步,形成图形化程序工程的编译文件。以图2为例,图形化程序工程的编译文件形成过程为:根据当前工程CPU类型匹配合适的模板文件,读取模板文件,根据预先定义的6个文本段,读取CPU模板内容。解析并汇总图形化程序页面中头文件、库文件链接选项,根据工程文件路径、编译环境路径等工程的编译配置信息,替换模板中的预定义的通配符TOOL_DIR、XXCPU、PROJECT_DIR、MODULE_NAME,输出最终的编译文件。
以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。
Claims (4)
1.图形化程序的编译文件形成方法,其特征在于包括以下步骤:
设计模板文件:一种编译文件的模板文件,将模板文件划分为6个文本段;
生成编译文件:根据处理器类型匹配对应的模板文件;通过分析汇总图形化程序编译相关设置信设计息,将模板文件中的通配符进行替换,形成图形化程序工程的编译文件。
2.根据权利要求1所述的图形化程序的编译文件形成方法,其特征在于所述设计模板文件包括以下步骤:
将模板文件划分为TOOL、LIB、INC、FLAG、OBJS、COMPILE共6个文本段;其中:TOOL文本段表示编译前调用的文件删除命令格式模板;
LIB文本段表示需链接的库、目录,支持通配符;
INC文本段表示头文件查找目录列表,编译模板提供默认的一些文件目录,并可扩充新的目录;
FLAG文本段表示编译选项、链接选项;
OBJS文本段表示需链接的OBJ文件,采用相对目录表示路径,不同编译器文件后缀可不同;
COMPILE文本段表示执行编译过程命令链;
所述执行编译过程命令链依次包括单个文件OBJ形成命令、OBJ文件链接为目标文件命令、目标文件转换为HEX文件命令。
3.根据权利要求1或2所述的图形化程序的编译文件形成方法,其特征在于所述生成编译文件包括以下步骤:
用若干关键字替换对应的实际处理进程名;不同类型的CPU编译文件模板,其文本段关键字相同,具体的设置内容可不同;将编译文件模板以CPU型号命名,存放到图形化程序环境的指定目录;
根据当前工程对应的嵌入式处理器型号名,自动匹配对应的编译文件模板,读取解析后的编译文件模板的6个文本段,再根据具体的图形化程序编译信息,替换编译文件模板中的预定义的通配符,生成工程对应的编译文件。
4.根据权利要求3所述的图形化程序的编译文件形成方法,其特征在于:所述图形化程序包括型号类型、功能代码所在目录和主机编译环境。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510306173.0A CN104881396A (zh) | 2015-06-05 | 2015-06-05 | 图形化程序的编译文件形成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510306173.0A CN104881396A (zh) | 2015-06-05 | 2015-06-05 | 图形化程序的编译文件形成方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104881396A true CN104881396A (zh) | 2015-09-02 |
Family
ID=53948891
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510306173.0A Pending CN104881396A (zh) | 2015-06-05 | 2015-06-05 | 图形化程序的编译文件形成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104881396A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105511815A (zh) * | 2015-12-14 | 2016-04-20 | 中国电子信息产业集团有限公司第六研究所 | 一种基于段表的plc可运行文件存储解析方法及存储系统 |
CN106802966A (zh) * | 2015-11-26 | 2017-06-06 | 北京华大九天软件有限公司 | 一种批量替换单元名的方法 |
CN109947430A (zh) * | 2019-03-26 | 2019-06-28 | 山东浪潮通软信息科技有限公司 | 一种基于动态编译的代码编译生成工具和一种动态编译方法 |
CN110795086A (zh) * | 2019-11-12 | 2020-02-14 | 联想(北京)有限公司 | 控制方法、装置及电子设备 |
CN112015633A (zh) * | 2019-05-30 | 2020-12-01 | 北京物芯科技有限责任公司 | 测试激励多平台复用方法、装置、设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103886095A (zh) * | 2014-04-03 | 2014-06-25 | 北京深思数盾科技有限公司 | 跨平台目标文件复用方法 |
US20140351682A1 (en) * | 2003-12-12 | 2014-11-27 | Knapp Investment Company Limited | Dynamic generation of target files from template files and tracking of the processing of target files |
-
2015
- 2015-06-05 CN CN201510306173.0A patent/CN104881396A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140351682A1 (en) * | 2003-12-12 | 2014-11-27 | Knapp Investment Company Limited | Dynamic generation of target files from template files and tracking of the processing of target files |
CN103886095A (zh) * | 2014-04-03 | 2014-06-25 | 北京深思数盾科技有限公司 | 跨平台目标文件复用方法 |
Non-Patent Citations (1)
Title |
---|
王国栋 等: "嵌入式装置图形化编程工具软件设计与应用", 《工业控制计算机》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106802966A (zh) * | 2015-11-26 | 2017-06-06 | 北京华大九天软件有限公司 | 一种批量替换单元名的方法 |
CN105511815A (zh) * | 2015-12-14 | 2016-04-20 | 中国电子信息产业集团有限公司第六研究所 | 一种基于段表的plc可运行文件存储解析方法及存储系统 |
CN109947430A (zh) * | 2019-03-26 | 2019-06-28 | 山东浪潮通软信息科技有限公司 | 一种基于动态编译的代码编译生成工具和一种动态编译方法 |
CN112015633A (zh) * | 2019-05-30 | 2020-12-01 | 北京物芯科技有限责任公司 | 测试激励多平台复用方法、装置、设备及存储介质 |
CN112015633B (zh) * | 2019-05-30 | 2023-11-17 | 北京物芯科技有限责任公司 | 测试激励多平台复用方法、装置、设备及存储介质 |
CN110795086A (zh) * | 2019-11-12 | 2020-02-14 | 联想(北京)有限公司 | 控制方法、装置及电子设备 |
CN110795086B (zh) * | 2019-11-12 | 2021-08-17 | 联想(北京)有限公司 | 控制方法、装置及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8056062B2 (en) | Methods and systems for converting application code in turbine control systems | |
US7162709B2 (en) | System and method for common code generation | |
Wang et al. | Uroboros: Instrumenting stripped binaries with static reassembling | |
CN104881396A (zh) | 图形化程序的编译文件形成方法 | |
CN103744709B (zh) | 补丁加载方法及装置 | |
WO2015176492A1 (en) | A system and method thereof for creating dynamically attachable and detachable binary files | |
CN111142903A (zh) | 一种基于文件对比的配置文件交互式更新方法及装置 | |
US20110126179A1 (en) | Method and System for Dynamic Patching Software Using Source Code | |
JP2022031507A (ja) | ディープラーニングフレームワークにおける演算子の展開方法、展開装置及び電子機器 | |
CN109918081B (zh) | 一种编译方法及编译器 | |
CN110059456B (zh) | 代码保护方法、代码保护装置、存储介质与电子设备 | |
CN111090433A (zh) | 一种数据处理的方法、装置和存储介质 | |
CN102646035A (zh) | 基于api接口和脚本定义相结合的可视化代码生成方法 | |
US10248409B1 (en) | Limiting the effects of source code patches on corresponding native-code patches | |
US20210365258A1 (en) | Method and system for updating legacy software | |
CN110109671B (zh) | 一种webpack标签尺寸样式转换方法及装置 | |
US6381736B1 (en) | Method for compile-time type-checking of arguments for externally-specified format strings | |
CN108304164B (zh) | 一种业务逻辑的开发方法及开发系统 | |
CN117573095A (zh) | 一种支持持续集成的交叉编译框架的搭建及编译方法 | |
CN107402885A (zh) | 一种程序调试方法及装置 | |
CN115658140A (zh) | 一种sdk的打包方法、装置、终端以及存储介质 | |
JP2008140263A (ja) | 単体試験支援装置 | |
CN114816435A (zh) | 一种基于逆向技术的软件开发方法 | |
CN113448591A (zh) | 一种基于python快速创建iOS工程的方法 | |
CN107577476A (zh) | 一种基于模块划分的安卓系统源码差异性分析方法、服务器及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20150902 |
|
WD01 | Invention patent application deemed withdrawn after publication |