图形化程序的编译文件形成方法
【技术领域】
[0001]本发明属于嵌入式装置编译文件形成方法,具体涉及嵌入式图形化程序的编译文件的自动生成,尤其涉及图形化程序的编译文件形成方法。
【背景技术】
[0002]为了运行嵌入式装置,嵌入式程序开发人员需要将功能代码编译成二进制文件并且转换成硬件CPU支持的文件格式,然后下载到嵌入式装置中让装置运行并执行逻辑功能。为了编译功能代码,程序开发人员需要搭建编译环境、编写编译文件。而且针对不同的CPU类型、甚至相同CPU类型的不同硬件板卡,需要编写不同的编译文件,工作量巨大、难度高、实现细节繁琐;并且每增加新的硬件板卡或CPU类型,由于编译选项、编译器各不相同,需要重新编写编译文件,扩展性和兼容性差。嵌入式装置程序开发已经进入到图形化、可视化的开发阶段,程序的编译文件需图形化编程工具自动形成,需有一种解耦的、可扩展的编译文件形成方法,本案由此产生。
【发明内容】
[0003]本发明目的是提供图形化程序的编译文件形成方法,本发明对同一种处理器类型的源文件,每次编译时复用已存在的模板文件,避免手动编写编译文件,降低工作量、减少失误率。
[0004]为解决上述技术问题,本图形化程序的编译文件形成方法,其特征在于包括以下步骤:
[0005]设计模板文件:设计一种编译文件的模板文件,将模板文件划分为6个文本段;
[0006]生成编译文件:根据处理器类型匹配对应的模板文件;通过分析汇总图形化程序编译相关设置信息,将模板文件中的通配符进行替换,形成图形化程序工程的编译文件。
[0007]作为本发明进一步改进的技术方案,所述设计模板文件包括以下步骤:
[0008]将模板文件划分为TOOL、LIB、INC、FLAG、OBJS、COMPILE共6个文本段;其中:TOOL文本段表示编译前调用的文件删除命令格式模板;
[0009]LIB文本段表示需链接的库、目录,支持通配符;
[0010]INC文本段表示头文件查找目录列表,编译模板提供默认的一些文件目录,并可扩充新的目录;
[0011]FLAG文本段表示编译选项、链接选项;
[0012]OBJS文本段表示需链接的OBJ文件,采用相对目录表示路径,不同编译器文件后缀可不同;
[0013]COMPILE文本段表示执行编译过程命令链;
[0014]所述执行编译过程命令链依次包括单个文件OBJ形成命令、OBJ文件链接为目标文件命令、目标文件转换为HEX文件命令。
[0015]作为本发明进一步改进的技术方案,所述生成编译文件包括以下步骤:
[0016]用若干关键字替换对应的实际处理进程名;不同类型的CPU编译文件模板,其文本段关键字相同,具体的设置内容可不同;将编译文件模板以CPU型号命名,存放到图形化程序环境的指定目录;
[0017]根据当前工程对应的嵌入式处理器型号名,自动匹配对应的编译文件模板,读取解析后的编译文件模板的6个文本段,再根据具体的图形化程序编译信息,替换编译文件模板中的预定义的通配符,生成工程对应的编译文件。
[0018]作为本发明进一步改进的技术方案,所述图形化程序包括型号类型、功能代码所在目录和主机编译环境。
[0019]本发明提供一种编译文件的模板文件,将模板文件划分为6个文本段,根据处理器类型匹配对应的模板文件,并分析汇总图形化程序编译相关设置信息,将模板中的通配符进行替换,形成图形化程序工程的编译文件。具体内容包括:
[0020]第一步:设计编译文件的模板文件。将文件划分为TOOL、LIB, INC、FLAG、OBJS,COMPILE共6个文本段。其中:T00L文本表示编译前调用的文件删除命令格式模板;LIB文本段表示需链接的库、目录,支持通配符。INC文本段表示头文件查找目录列表;编译模板提供默认的一些文件目录,并可扩充新的目录;FLAG文本段表示编译选项、链接选项;OBJS文本段表示需链接的OBJ文件,采用相对目录表示路径,不同编译器文件后缀可不同;COMPILE文本段表示执行编译过程命令链:依次包括单个文件OBJ形成命令、OBJ文件链接为目标文件命令、目标文件转换为HEX文件命令等命令序列。可用若干关键字替换对应的实际处理进程名。不同类型的CPU编译文件模板,其文本段关键字相同,具体的设置内容可不同。将编译模板文件以CPU型号命名,存放到图形化程序环境的指定目录。
[0021]第二步:根据当前工程对应的嵌入式处理器型号名,自动选配对应的模板文件,解析模板文件的6个文本段,再根据具体的型号类型、功能代码所在目录、主机编译环境等具体信息,替换模板中的预定义的通配符,解析生成实际编译的编译文件。
[0022]本发明先设计编译文件的通用模板,将模板分成6个文本段,在文本段中定义生成编译文件所需的部分内容和指令,并进一步分析处理图形化程序工程设置、运行系统编译环境设置信息,导入匹配的模板文件,进行通配符替换,自动形成图形化程序编译所需的编译文件。当新增硬件型号、编译环境时,不需要修改相关软件,只需增加对应的模板,具有较好扩展性,降低了开发难度。
[0023]采用上述方案后,本发明具有如下有益效果:对同一种处理器类型的源文件,每次编译时复用已存在的模板文件,避免手动编写编译文件,降低工作量、减少失误率。对不同类型的处理器,动态适配当前处理器类型,只需添加对应的模板文件,不需要修改相关编译文件形成程序,具有灵活的扩展性。免除了手动编写编译文件的工作量,降低了功能代码编译工作复杂度。本发明已经应用到图形化编程工具的开发中,在直流保护控制、电力电子等装置开发中进行了规模应用,提高了嵌入式装置开发效率。
【附图说明】
[0024]图1是本发明中基于编译文件的程序目标文件过程示意图。
[0025]图2是本发明中基于模板的图形化程序编译文件形成过程示意图。
【具体实施方式】
[0026]以下将结合附图,对本发明的技术方案进行详细说明。
[0027]实施例1
[0028]本图形化程序的编译文件形成方法,包括以下步骤:
[0029]设计模板文件:设计一种编译文件的模板文件,将模板文件划分为6个文本段;
[0030]生成编译文件:根据处理器类型匹配对应的模板文件;通过分析汇总图形化程序编译相关设置信息,将模板文件中的通配符进行替换,形成图形化程序工程的编译文件。
[0031]作为本发明进一步改进的技术方案,所述设计模板文件包括以下步骤:
[0032]将模板文件划分为TOOL、LIB、INC、FLAG、OBJS、COMPILE共6个文本段;其中:TOOL文本段表示编译前调用的文件删除命令格式模板;
[0033]LIB文本段表示需链接的库、目录,支持通配符;
[0034]INC文本段表示头文件查找目录列表,编译模板提供默认的一些文件目录,并可扩充新的目录;
[0035]FLAG文本段表示编译选项、链接选项;
[0036]OBJS文本段表示需链接的OBJ文件,采用相对目录表示路径,不同编译器文件后缀可不同;
[0037]COMPILE文本段表示执行编译过程命令链;
[0038]所述执行编译过程命令链依次包括单个文件OBJ形成命令、OBJ文件链接为目标文件命令、目标文件转换为HEX文件命令。
[0039]作为优选方案,所述生成编译文件包括以下步骤:
[0040]用若干关键字替换对应的实际处理进程名;不同类型的CPU编译文件模板,其文本段关键字相同,具体的设置内容可不同;将编译文件模板以CPU型号命名,存放到图形化程序环境的指定目录;
[0041]根据当前工程对应的嵌入式处理器型号名,自动匹配对应的编译文件模板,读取解析后的编译文件模板的6个文本段,再根据具体的图形化程序编译信息,替换编译文件模板中的预定义的通配符,生成工程对应的编译文件。
[0042]所述图形化程序包括型号类型、功能代码所在目录和主机编译环境。
[0043]本实施例1中,将模板文件划分为6个文本段,根据处理器类型匹配对应的模板文件,并分析汇总图形化程序编译相关设置信息,将模板中的通配符进行替换,形成图形化程序工程的编译文件。具体内容包括:
[0044]第一步:设计编译文件的模板文件。将文件划分为TOOL、LIB, INC、FLAG、OBJS,COMPILE共6个文本段。其中:T00L文本表示编译前调用的文件删除命令格式模板;LIB文本段表示需链接的库、目录,支持通配符。INC文本段表示头文件查找目录列表;编译模板提供默认的一些文件目录,并可扩充新的目录;FLAG文本段表示编译选项、链接选项;OBJS文本段表示需链接的OBJ文件,采用相对目录表示路径,不同编译器文件后缀可不同;COMPILE文本段表示执行编译过程命令链:依次包括单个文件OBJ形成命令、OBJ文件链接为目标文件命令、目标文件转换为HEX文件命令等命令序列。可用若干关键字替换对应的实际处理进程名。不同类型的CPU编译文件模板,其文本段关键字相同,具体的设置内容可不同。将编译模板文件以CPU型号命名,存放到图形化程序环境的指定目录。
[0045]第二步:根据当前工程对应的嵌入式处理器型号名,自动选配对应的模板文件,解析模板文件的6个文本段,再根据具体的型号类型、功能代码所在目录、主机编译环境等具体信息,替换模板中的预定义的通配符,解析生成实际编译的编译文件。
[0046]功能代码编译时,需要生成编译文件,之后将编译文件作为形参传递给maker工具,maker工具逐行解析编译命令,调用编译器将功能源代码编译成二进制代码,然后链接必须的库文件,形成目标文件。基于编译文件的程序目标文件过程如图1所示:
[0047]I)步骤1:编译,将功能源代码编译成二进制代码;
[0048]2)步骤2:链接,将步骤I中编译所得的二进制代码和对应CPU类型的系统库文件、应用人员开发的用户库文件链接起来;
[0049]3)步骤3:重定位,处理链接起来的文件地址空间;
[0050]4)步骤4:格式处理
,处理步骤3中生成的文件,转换成目标CPU支持的文件格式。
[0051]上述步骤的相关命令均需在编译文件中体现,故编译文件的形成是程序开发中的重要环节。本发明设计的基于可扩展模板的图形化程序编译文件生成方法,以图2为例,具体实现过程为:
[0052]第一步,定义编译文件的模板文件,通过抽取编译文件和编译环境的共同特征,制定6个文本段,分别是:
[0053]a) TOOL文本段:编译前调用的文件删除命令格式模板;
[0054]b)LIB文本段:需链接的库、目录,支持通配符;
[0055]c) INC文本段:头文件查找目录列表;编译模板提供默认的一些文件目录,可扩充新的目录;
[0056]d)FLAG文本段:编译选项、链接选项;
[0057]e) OBJS文本段:需链接的OBJ文件,采用相对目录表示路径,不同编译器文件后缀可不同;
[0058]f) COMPILE文本段:执行编译过程命令链:依次包括单个文件OBJ形成、OBJ文件链接为目标文件、目标文件转换为HEX文件的命令序列。可用若干关键字替换对应的实际处理进程名。
[0059]一个优选的典型配置文本示例如下:
[0060][TOOL]
[0061]BDIR= c: / cygwin/ppc-linux/bin
[0062]CR0SS_C0MPILE = $ (BDIR)/ppc-1inux-
[0063]AS = $(CR0SS_C0MPILE)as
[0064]LD = $(CR0SS_C0MPILE)Id
[0065]CC = $ (CR0SS_C0MPILE)gcc
[0066]CPP = $ (CC) -E
[0067]AR = $(CR0SS_C0MPILE)ar
[0068]NM = $(CR0SS_C0MPILE)nm
[0069]STRIP = $(CR0SS_C0MPILE)strip
[0070]OBJCOPY = $(CR0SS_C0MPILE)objcopy[0071 ] 0BJDUMP = $(CR0SS_C0MPILE)objdump
[0072]RANLIB = $(CROSS_COMPILE)RANLIB
[0073]gccincdir: = $ (shell$ (CC)-print-file-name = include)
[0074][/TOOL]
[0075][LIB]
[0076]PROM = T00L_DIR/uapc.sys/XXCPU/prom/start, o
[0077]LDSCRIPT = T00L_DIR/uapc.sys/XXCPU/link/XXCPU.1ds
[0078]LIBS = T00L_DIR/uapc.sys/common_mpc5200_nos/lib/bestcomm.a
[0079][/LIB]
[0080][INC]
[0081]SYS_INC = T00L_DIR/uapc.sys/SYS-1NC
[0082]CPU_SYM_INC = T00L_DIR/uapc.symbol/common_mpc5200_nos/include
[0083]COMM_FUNC_INC = T00L_DIR/uapc.symbol/common_Func/include
[0084][/INC]
[0085][FLAG]
[0086]FLAGS = -g-Os-fPIC-ffixed-rl4-meabi
[0087]FLAGS+ = -DC0NFIG_MPC5xxx_D—KERNEL—_DCONFIG_PPC
[0088]FLAGS+ = -1$(COMM_FUNC_INC)-1 PROJECT_DIR/src_I$(BSP_INC)-1$(SYS_INC)-1$(BOARD_SYS_INC)-1$(BOARD_SYM_INC)-1$(CPU_SYM_INC)
[0089]FLAGS+ = -fno-builtin-ffreestanding-nostdinc-1system$(gccincdir)
[0090]CFLAGS = $ (FLAGS) -D_PPC_-ffal I
[0091]AFLAGS = _D—ASSEMBLY—$ (FLAGS)
[0092]LDFLAGS+ = -Bstatic-T$(LDSCRIPT)-Ttext 0xFF060000_n
[0093]LDFLAGS_DEBUG+ = -Bstatic_T$(LDSCRIPT)-Ttext 0x01400000_n
[0094]OB JCFLAGS = -gap-fill = Oxff
[0095][/FLAG]
[0096][OBJS]
[0097]0BJ_DIR = PROJECTED I R/obj
[0098]OBJS: = $(addprefix$(obj), $ (OBJS))
[0099][/OBJS]
[0100][COMPILE]
[0101]default:PROJECT_DIR/MODULE_NAME.srec$(0BJ_DIR)/System, map PROJECT,DIR/MODULE_NAME.bin PROJECTEDIR/debug
[0102]clean:
[0103]c: /cygwin/bin/rm-f$ (0BJ_DIR) /*.0*.bin*, hex*, srec debug.*
[0104]all: clean default
[0105].depend:
[0106]$ (0BJ_DIR)/%.0:PROJECT_DIR/src/%.c
[0107]PROJECTEDIR/MODULE_NAME.hex: PROJECTEDIR/MODULE_NAME
[0108]-1$ (OBJCOPY)${OBJCFLAGS}-0 ihex$<$i
[0109][/COMPILE]
[0110]在上例中,T00L_DIR是图形化编程工具目录,XXCPU是CPU型号,PROJECT_DIR是当前工程目录,MODULE_NAME是编译模块名,可用实际值进行替换。
[0111]第二步,形成图形化程序工程的编译文件。以图2为例,图形化程序工程的编译文件形成过程为:根据当前工程CPU类型匹配合适的模板文件,读取模板文件,根据预先定义的6个文本段,读取CPU模板内容。解析并汇总图形化程序页面中头文件、库文件链接选项,根据工程文件路径、编译环境路径等工程的编译配置信息,替换模板中的预定义的通配符 T00L_DIR、XXCPU, PROJECT_DIR、MODULE_NAME,输出最终的编译文件。
[0112]以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。
【主权项】
1.图形化程序的编译文件形成方法,其特征在于包括以下步骤: 设计模板文件:一种编译文件的模板文件,将模板文件划分为6个文本段; 生成编译文件:根据处理器类型匹配对应的模板文件;通过分析汇总图形化程序编译相关设置信设计息,将模板文件中的通配符进行替换,形成图形化程序工程的编译文件。2.根据权利要求1所述的图形化程序的编译文件形成方法,其特征在于所述设计模板文件包括以下步骤: 将模板文件划分为TOOL、LIB、INC、FLAG、OBJS, COMPILE共6个文本段;其中:T00L文本段表示编译前调用的文件删除命令格式模板; LIB文本段表示需链接的库、目录,支持通配符; INC文本段表示头文件查找目录列表,编译模板提供默认的一些文件目录,并可扩充新的目录; FLAG文本段表示编译选项、链接选项; OBJS文本段表示需链接的OBJ文件,采用相对目录表示路径,不同编译器文件后缀可不同; COMPILE文本段表示执行编译过程命令链; 所述执行编译过程命令链依次包括单个文件OBJ形成命令、OBJ文件链接为目标文件命令、目标文件转换为HEX文件命令。3.根据权利要求1或2所述的图形化程序的编译文件形成方法,其特征在于所述生成编译文件包括以下步骤: 用若干关键字替换对应的实际处理进程名;不同类型的CPU编译文件模板,其文本段关键字相同,具体的设置内容可不同;将编译文件模板以CPU型号命名,存放到图形化程序环境的指定目录; 根据当前工程对应的嵌入式处理器型号名,自动匹配对应的编译文件模板,读取解析后的编译文件模板的6个文本段,再根据具体的图形化程序编译信息,替换编译文件模板中的预定义的通配符,生成工程对应的编译文件。4.根据权利要求3所述的图形化程序的编译文件形成方法,其特征在于:所述图形化程序包括型号类型、功能代码所在目录和主机编译环境。
【专利摘要】本发明公开图形化程序的编译文件形成方法一种编译文件的模板文件,将模板文件划分为TOOL、LIB、INC、FLAG、OBJS、COMPILE共6个文本段;生成编译文件:根据处理器类型匹配对应的模板文件;通过分析汇总图形化程序编译相关设置信设计息,将模板文件中的通配符进行替换,形成图形化程序工程的编译文件。当新增硬件型号、编译环境时,不需要修改相关软件,只需增加对应的模板,具有较好扩展性,降低了开发难度。
【IPC分类】G06F17/22
【公开号】CN104881396
【申请号】CN201510306173
【发明人】王国栋, 陈宏君, 刘克金, 徐睿, 谭良良, 柴京慧, 曹晖, 陈丹瑜, 程文君, 彭军林
【申请人】南京南瑞继保电气有限公司, 南京南瑞继保工程技术有限公司
【公开日】2015年9月2日
【申请日】2015年6月5日
转载请注明原文地址:https://www.famiwei.com/read-8138679.html