一种嵌入式c编译器的实现方法及系统的利记博彩app
【专利摘要】本发明公开了一种嵌入式C编译器的实现方法及系统,其方法包括:步骤A:创建解释型语言脚本将用户在PC端编写C语言源代码编译成指定执行地址的目标代码;步骤B:将目标代码写入嵌入式下位机指定编译地址;步骤C:下位机创建现场保护机制,然后执行目标代码;步骤D:下位机执行完目标代码执行以后,跳转到现场保护位置,恢复现场,继续执行下位机其他代码。其系统包括PC端及上位机,本发明将客户的编译型代码转成工业控制器能够识别的目标语言即机器代码,同时执行效率快,大大提高了用户在组态软件领域研发的便利性,具有良好的经济和社会效益。本发明作为一种嵌入式C编译器的实现方法及系统,广泛适用于组态软件领域。
【专利说明】
一种嵌入式C编译器的实现方法及系统
技术领域
[0001]本发明涉及组态软件领域,尤其涉及一种嵌入式C编译器的实现方法及系统。
【背景技术】
[0002]嵌入式系统本身不具备自主开发能力,必须有交叉编译和调试开发环境才能进行开发。计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。
[0003]目前基于嵌入式系统主要有两种语言,解释性语言以及编译型语言。编译型语言在程序执行之前,有一个单独的编译过程,将程序翻译成机器语言,以后执行这个程序的时候,就不用再进行翻译了。解释型语言,是在运行的时候将程序翻译成机器语言,所以运行速度相对于编译型语言要慢。C/C++等都是编译型语言,而Basic/Python/JavaScript /Perl /Shell等都是解释型语言。
[0004]随着控制、计算机、通信、网络等技术的发展,信息交换沟通的领域正在迅速覆盖从工厂的现场设备层到控制、管理的各个层次,覆盖从工段、车间、工厂、企业乃至世界各地的市场。监控组态软件能够实现对自动化过程和装备的监视和控制。它能从自动化过程和装备中采集各种信息,并将信息以图形化等更易于理解的方式进行显示,将重要的信息以各种手段传送到相关人员,对信息执行必要分析处理和存储,发出控制指令等等。用户通过类似“搭积木”的简单方式来完成自己所需要的软件功能,而不需要编写计算机程序,也就是所谓的“组态”。
[0005]随着监控组态软件在工业控制中的应用越来越广泛,用户要求也越来越多,除了常规的“搭积木”组态方式,用户也要求进行一些个性化设计,也就是在“搭积木”的过程中,通过编程实现用户的特定要求,由此对用户编程接口的支持显得日益重要。目前,这一领域的技术还不是很成熟,一般组态软件只提供解释型脚本语言,比如Basic,ShelI,Perl等,直接对源程序解释执行,这些语言在执行效率、稳定性和可靠性等方面都存在问题,而且由于不是通用语言,对于编程接口开发者来说,需要重新学习编程语言,存在很大困难。
[0006]
【发明内容】
[0007]为了解决上述技术问题,本发明的目的是提供一种能够在组态软件中应用嵌入式编译器同时执行效率快的嵌入式C编译器的实现方法及系统
本发明所采用的技术方案是:一种嵌入式C编译器的实现方法,其包括以下步骤:
步骤A:创建解释型语言脚本将用户在PC端编写C语言源代码编译成指定执行地址的目标代码;
步骤B:将目标代码写入嵌入式下位机指定编译地址;
步骤C:下位机创建现场保护机制,然后执行目标代码;
步骤D:下位机执行完目标代码执行以后,跳转到现场保护位置,恢复现场,继续执行下位机其他代码。
[0008]进一步,步骤A具体包括:
Al:指定C语言源代码存放地址;
A2:指定编译工具;
A3:生成目标文件,并指定执行地址。
[0009]进一步,所述的编译工具为armcc。
[00?0]进一步,步骤C具体包括:
Cl:下位机单独开辟线程,
C2:在执行监控组态软件的时候,条件触发执行目标代码,首先对现场进行保护,然后执行目标代码。
[0011]—种嵌入式C编译器的实现系统,其特征在于,其用于实施上述的嵌入式C编译器的实用方法,所述系统包括:PC端以及下位机端;
所述PC端包括:
解释型语言脚本:其用于将用户在PC端编写C语言源代码编译成指定执行地址的目标代码;
写入单元:其用于将目标代码写入嵌入式下位机指定编译地址;
下位机端包括:
现场保护单元:其用于创建现场保护机制,然后执行目标代码;
执行单元:其用于执行完目标代码执行以后,跳转到现场保护位置,恢复现场,继续执行下位机其他代码。
[0012]进一步,所述的解释型语言脚本包括:
源地址单元:用于指定C语言源代码存放地址;
工具单元:用于指定编译工具;
目标地址单元:生成目标文件,并指定执行地址。
[0013]进一步,所述的编译工具为armcc。
[0014]进一步,所述的现场保护单元包括:
线程单元:下位机单独开辟线程,
保护单元:在执行监控组态软件的时候,条件触发执行目标代码,首先对现场进行保护,然后执行目标代码。
[0015]本发明的有益效果是:本发明能够在组态软件中应用嵌入式编译器,将客户使用编译型代码编写的程序,通过解释性语言将客户的编译型代码转成工业控制器能够识别的目标语言即机器代码,同时执行效率快,大大提高了用户在组态软件领域研发的便利性,具有良好的的经济和社会效益。
【附图说明】
[0016]下面结合附图对本发明的【具体实施方式】作进一步说明:
图1是本发明的一具体实施例的流程图;
图2是本发明的一具体实施例的功能模块图。
【具体实施方式】
[0017]需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
[0018]如图1所示,一种嵌入式C编译器的实现方法,其包括以下步骤:
步骤A:创建解释型语言脚本将用户在PC端编写C语言源代码编译成指定执行地址的目标代码;
步骤B:将目标代码写入嵌入式下位机指定编译地址;
步骤C:下位机创建现场保护机制,然后执行目标代码;
步骤D:下位机执行完目标代码执行以后,跳转到现场保护位置,恢复现场,继续执行下位机其他代码。
[0019]进一步作为优选的实施方式,步骤A具体包括:
Al:指定C语言源代码存放地址;
A2:指定编译工具;
A3:生成目标文件,并指定执行地址。
[°02°]进一步作为优选的实施方式,所述的编译工具为armcc。
[0021 ]进一步作为优选的实施方式,步骤C具体包括:
Cl:下位机单独开辟线程,
C2:在执行监控组态软件的时候,条件触发执行目标代码,首先对现场进行保护,然后执行目标代码。
[0022]为使得本发明的技术方案能够更加清楚地表述,下面以一具体的实施例来说明,本领域技术人员应当知晓,以下举例仅作为本发明的一种具体的实施方式以进一步阐述本发明的技术方案,并不作为限定本发明的保护范围的说明。
[0023]1、PC端编译的目标代码如何在嵌入式系统对应位置运行。
[0024]PC端需要执行armcc编译器指令,指定下位目标代码运行位置,
SNAME=add ;源代码是 add.c
ADDR=0x00490400 ;(定义下位程序入口地址)
RffBASE=0x360000 ;(定义add.c代码变量存放地址) CFLAGS=_02 -g+ -cpuARM920T -c ;(定义优化级别,cpu类型)
LFLAG=-rο-base $(ADDR) -rw-base S(RffBASE) -map -symbols -list Map.txt -entry $(ADDR) -1ibpath lib ;(定义编译规则,包括入口地址,变量地址等)
CC=armcc ;(定义C编译器)
LD=armlink ;(定义C链接器)
$(SNAME).bin: $(SNAME).axf ;(定义目标代码为add.bin,以及如何生成add.bin) fromelf _c -bin -output $i $'
$ (SNAME).axf: $ (SNAME).ο
$(LD) $(LFLAG) $(SNAME).0 script_lib.a guilib35.a _o $(SNAME).axf >Ierr.txt
$(SNAME).0: $(SNAME).c ;add.0(生成规则) $(CC) $(CFLAGS) $(SNAME).0 $(SNAME).c ;(通过armcc将add.c生成add.0 ) clean:;(清除目标代码的规则)
rm 氺.ο 氺.c ^.axf ^.bat
如上,当通过armcc编译器编译完成以后,生成一个叫做add.bin的文件,执行地址为0x490400,PC将生成的add.bin文件写入到下位0x490400地址。
[0025]2,下位嵌入式系统如何进行现场保护和跳转。
[0026]当需要执行嵌入式目标代码之前,我们进行现场保护,并跳转到0x490400地址执行add.bin目标代码,如下所示:
MacroMain
moV r0,Ir moV rl,#0x00000000 mov r2,#0x470000;指针存放在0x00470000 add rl,r2,rl str rO,[rl]
Idr rl,=Run—Macro ;(此为上位编译器指定目标地址,即上面所示ADDR=0x00490400)
Idr r0,[rl] mov pc,r0
3.下位嵌入式系统执行完目标代码以后的现场恢复。
[0027]执行完add.bin目标代码以后,需要恢复现场,如以下流程:
LDR SP,=0x00380000
[:LN0T:THUMBC0DE
bl Macro—Entry ;(执行实际运行代码) mov rl,#0x00000000 mov r2,#0x00470000 add rl,r2,rl Idr rO,[rl]
mov pc,r0;执行完以后,回到指针保护位置,进行跳转,恢复现场,回到主函数
b.]
LTORG
本发明专利对组态软件中用户编程接口进行了研究,在充分考虑监控组态软件行业应用特点的基础上,考虑到C语言的通用性以及可移植性,采用C语言作为嵌入式编译型语言,由于armcc编译器可以将用ANSI C编写的程序编译成32位ARM指令代码,我们使用armcc编译器,用于对源程序进行编译,生成工业控制器能够识别的目标语言即机器代码,该编译器应用于我们自主研发的控制系统中。
[0028]如图2所示,一种嵌入式C编译器的实现系统,其特征在于,其用于实施上述的嵌入式C编译器的实用方法,所述系统包括:PC端以及下位机端; 所述PC端包括:
解释型语言脚本:其用于将用户在PC端编写C语言源代码编译成指定执行地址的目标代码;
写入单元:其用于将目标代码写入嵌入式下位机指定编译地址;
下位机端包括:
现场保护单元:其用于创建现场保护机制,然后执行目标代码;
执行单元:其用于执行完目标代码执行以后,跳转到现场保护位置,恢复现场,继续执行下位机其他代码。
[0029]进一步作为优选的实施方式,所述的解释型语言脚本包括:
源地址单元:用于指定C语言源代码存放地址;
工具单元:用于指定编译工具;
目标地址单元:生成目标文件,并指定执行地址。
[°03°]进一步作为优选的实施方式,所述的编译工具为armcc。
[0031]进一步作为优选的实施方式,所述的现场保护单元包括:
线程单元:下位机单独开辟线程,
保护单元:在执行监控组态软件的时候,条件触发执行目标代码,首先对现场进行保护,然后执行目标代码。
[0032]以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。
【主权项】
1.一种嵌入式C编译器的实现方法,其特征在于,其包括以下步骤: 步骤A:创建解释型语言脚本将用户在PC端编写C语言源代码编译成指定执行地址的目标代码; 步骤B:将目标代码写入嵌入式下位机指定编译地址; 步骤C:下位机创建现场保护机制,然后执行目标代码; 步骤D:下位机执行完目标代码执行以后,跳转到现场保护位置,恢复现场,继续执行下位机其他代码。2.根据权利要求1所述的嵌入式C编译器的实现方法,其特征在于,步骤A具体包括: Al:指定C语言源代码存放地址; A2:指定编译工具; A3:生成目标文件,并指定执行地址。3.根据权利要求2所述的嵌入式C编译器的实现方法,其特征在于:所述的编译工具为armcco4.根据权利要求1至3任一项所述的嵌入式C编译器的实现方法,其特征在于,步骤C具体包括: Cl:下位机单独开辟线程; C2:在执行监控组态软件的时候,条件触发执行目标代码,首先对现场进行保护,然后执行目标代码。5.一种嵌入式C编译器的实现系统,其特征在于,其用于实施权利要求1至4任一项所述的嵌入式C编译器的实用方法,所述系统包括:PC端以及下位机端; 所述PC端包括: 解释型语言脚本:其用于将用户在PC端编写C语言源代码编译成指定执行地址的目标代码; 写入单元:其用于将目标代码写入嵌入式下位机指定编译地址; 下位机端包括: 现场保护单元:其用于创建现场保护机制,然后执行目标代码; 执行单元:其用于执行完目标代码执行以后,跳转到现场保护位置,恢复现场,继续执行下位机其他代码。6.根据权利要求5所述的嵌入式C编译器的实现系统,其特征在于,所述的解释型语言脚本包括: 源地址单元:用于指定C语言源代码存放地址; 工具单元:用于指定编译工具; 目标地址单元:生成目标文件,并指定执行地址。7.根据权利要求6所述的嵌入式C编译器的实现系统,其特征在于:所述的编译工具为armcco8.根据权利要求5至7任一项所述的嵌入式C编译器的实现系统,其特征在于,所述的现场保护单元包括: 线程单元:下位机单独开辟线程, 保护单元:在执行监控组态软件的时候,条件触发执行目标代码,首先对现场进行保护,然后执行目标代码。
【文档编号】G06F9/45GK105843659SQ201610158850
【公开日】2016年8月10日
【申请日】2016年3月17日
【发明人】李镇, 莫勇
【申请人】深圳市金玺智控技术有限公司