CN105843659B - 一种嵌入式c编译器的实现方法及系统 - Google Patents
一种嵌入式c编译器的实现方法及系统 Download PDFInfo
- Publication number
- CN105843659B CN105843659B CN201610158850.3A CN201610158850A CN105843659B CN 105843659 B CN105843659 B CN 105843659B CN 201610158850 A CN201610158850 A CN 201610158850A CN 105843659 B CN105843659 B CN 105843659B
- Authority
- CN
- China
- Prior art keywords
- code
- lower computer
- embedded
- address
- target
- 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
Images
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
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种嵌入式C编译器的实现方法及系统,其方法包括:步骤A:创建解释型语言脚本将用户在PC端编写C语言源代码编译成指定执行地址的目标代码;步骤B:将目标代码写入嵌入式下位机指定编译地址;步骤C:下位机创建现场保护机制,然后执行目标代码;步骤D:下位机执行完目标代码执行以后,跳转到现场保护位置,恢复现场,继续执行下位机其他代码。其系统包括PC端及上位机,本发明将客户的编译型代码转成工业控制器能够识别的目标语言即机器代码,同时执行效率快,大大提高了用户在组态软件领域研发的便利性,具有良好的的经济和社会效益。本发明作为一种嵌入式C编译器的实现方法及系统,广泛适用于组态软件领域。
Description
技术领域
本发明涉及组态软件领域,尤其涉及一种嵌入式C编译器的实现方法及系统。
背景技术
嵌入式系统本身不具备自主开发能力,必须有交叉编译和调试开发环境才能进行开发。计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。
目前基于嵌入式系统主要有两种语言,解释性语言以及编译型语言。编译型语言在程序执行之前,有一个单独的编译过程,将程序翻译成机器语言,以后执行这个程序的时候,就不用再进行翻译了。解释型语言,是在运行的时候将程序翻译成机器语言,所以运行速度相对于编译型语言要慢。C/C++ 等都是编译型语言,而Basic/Python/JavaScript /Perl /Shell等都是解释型语言。
随着控制、计算机、通信、网络等技术的发展,信息交换沟通的领域正在迅速覆盖从工厂的现场设备层到控制、管理的各个层次,覆盖从工段、车间、工厂、企业乃至世界各地的市场。监控组态软件能够实现对自动化过程和装备的监视和控制。它能从自动化过程和装备中采集各种信息,并将信息以图形化等更易于理解的方式进行显示,将重要的信息以各种手段传送到相关人员,对信息执行必要分析处理和存储,发出控制指令等等。用户通过类似“搭积木”的简单方式来完成自己所需要的软件功能,而不需要编写计算机程序,也就是所谓的“组态”。
随着监控组态软件在工业控制中的应用越来越广泛,用户要求也越来越多,除了常规的“搭积木”组态方式,用户也要求进行一些个性化设计,也就是在“搭积木”的过程中,通过编程实现用户的特定要求,由此对用户编程接口的支持显得日益重要。目前,这一领域的技术还不是很成熟,一般组态软件只提供解释型脚本语言,比如Basic,Shell,Perl等,直接对源程序解释执行 ,这些语言在执行效率、稳定性和可靠性等方面都存在问题,而且由于不是通用语言,对于编程接口开发者来说,需要重新学习编程语言,存在很大困难。
发明内容
为了解决上述技术问题,本发明的目的是提供一种能够在组态软件中应用嵌入式编译器同时执行效率快的嵌入式C编译器的实现方法及系统
本发明所采用的技术方案是:一种嵌入式C编译器的实现方法,其包括以下步骤:
步骤A:创建解释型语言脚本将用户在PC端编写C语言源代码编译成指定执行地址的目标代码;
步骤B:将目标代码写入嵌入式下位机指定编译地址;
步骤C:下位机创建现场保护机制,然后执行目标代码;
步骤D:下位机执行完目标代码执行以后,跳转到现场保护位置,恢复现场,继续执行下位机其他代码。
进一步,步骤A具体包括:
A1:指定C语言源代码存放地址;
A2:指定编译工具;
A3:生成目标文件,并指定执行地址。
进一步,所述的编译工具为armcc。
进一步,步骤C具体包括:
C1:下位机单独开辟线程,
C2:在执行监控组态软件的时候,条件触发执行目标代码,首先对现场进行保护,然后执行目标代码。
一种嵌入式C编译器的实现系统,其特征在于,其用于实施上述的嵌入式C编译器的实用方法,所述系统包括:PC端以及下位机端;
所述PC端包括:
解释型语言脚本:其用于将用户在PC端编写C语言源代码编译成指定执行地址的目标代码;
写入单元:其用于将目标代码写入嵌入式下位机指定编译地址;
下位机端包括:
现场保护单元:其用于创建现场保护机制,然后执行目标代码;
执行单元:其用于执行完目标代码执行以后,跳转到现场保护位置,恢复现场,继续执行下位机其他代码。
进一步,所述的解释型语言脚本包括:
源地址单元:用于指定C语言源代码存放地址;
工具单元:用于指定编译工具;
目标地址单元:生成目标文件,并指定执行地址。
进一步,所述的编译工具为armcc。
进一步,所述的现场保护单元包括:
线程单元:下位机单独开辟线程,
保护单元:在执行监控组态软件的时候,条件触发执行目标代码,首先对现场进行保护,然后执行目标代码。
本发明的有益效果是:本发明能够在组态软件中应用嵌入式编译器,将客户使用编译型代码编写的程序,通过解释性语言将客户的编译型代码转成工业控制器能够识别的目标语言即机器代码,同时执行效率快,大大提高了用户在组态软件领域研发的便利性,具有良好的的经济和社会效益。
附图说明
下面结合附图对本发明的具体实施方式作进一步说明:
图1是本发明的一具体实施例的流程图;
图2是本发明的一具体实施例的功能模块图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
如图1所示,一种嵌入式C编译器的实现方法,其包括以下步骤:
步骤A:创建解释型语言脚本将用户在PC端编写C语言源代码编译成指定执行地址的目标代码;
步骤B:将目标代码写入嵌入式下位机指定编译地址;
步骤C:下位机创建现场保护机制,然后执行目标代码;
步骤D:下位机执行完目标代码执行以后,跳转到现场保护位置,恢复现场,继续执行下位机其他代码。
进一步作为优选的实施方式,步骤A具体包括:
A1:指定C语言源代码存放地址;
A2:指定编译工具;
A3:生成目标文件,并指定执行地址。
进一步作为优选的实施方式,所述的编译工具为armcc。
进一步作为优选的实施方式,步骤C具体包括:
C1:下位机单独开辟线程,
C2:在执行监控组态软件的时候,条件触发执行目标代码,首先对现场进行保护,然后执行目标代码。
为使得本发明的技术方案能够更加清楚地表述,下面以一具体的实施例来说明,本领域技术人员应当知晓,以下举例仅作为本发明的一种具体的实施方式 以进一步阐述本发明的技术方案,并不作为限定本发明的保护范围的说明。
1、PC端编译的目标代码如何在嵌入式系统对应位置运行。
PC端需要执行armcc编译器指令,指定下位目标代码运行位置,
SNAME=add ;源代码是add.c
ADDR=0x00490400 ;(定义下位程序入口地址 )
RWBASE=0x360000 ;(定义add.c代码变量存放地址 ) CFLAGS=-O2 -g+-cpu ARM920T -c ;(定义优化级别,cpu类型)
LFLAG=-ro-base $(ADDR) -rw-base $(RWBASE) -map -symbols -listMap.txt -entry $(ADDR) -libpath lib ;(定义编译规则,包括入口地址,变量地址等)
CC=armcc ;(定义C编译器)
LD=armlink ;(定义C链接器 )
$(SNAME).bin:$(SNAME).axf ;(定义目标代码为add.bin,以及如何生成add.bin)
fromelf -c -bin -output $@ $^
$(SNAME).axf: $(SNAME).o
$(LD) $(LFLAG) $(SNAME).o script_lib.a guilib35.a -o $(SNAME).axf >lerr.txt
$(SNAME).o: $(SNAME).c ;add.o(生成规则)
$(CC) $(CFLAGS) $(SNAME).o $(SNAME).c ;(通过armcc将add.c生成add.o )
clean: ;(清除目标代码的规则 )
rm *.o *.c *.axf *.bat
如上,当通过armcc编译器编译完成以后,生成一个叫做add.bin的文件,执行地址为0x490400,PC将生成的add.bin文件写入到下位0x490400地址。
2,下位嵌入式系统如何进行现场保护和跳转。
当需要执行嵌入式目标代码之前,我们进行现场保护,并跳转到0x490400地址执行add.bin目标代码,如下所示:
MacroMain
mov r0,lr
mov r1,#0x00000000
mov r2,#0x470000;指针存放在0x00470000
add r1,r2,r1
str r0,[r1]
ldr r1,=Run_Macro ;(此为上位编译器指定目标地址,即上面所示ADDR=0x00490400)
ldr r0,[r1]
mov pc,r0
3.下位嵌入式系统执行完目标代码以后的现场恢复。
执行完add.bin目标代码以后,需要恢复现场,如以下流程:
LDR SP,=0x00380000
[ :LNOT:THUMBCODE
bl Macro_Entry ;(执行实际运行代码)
mov r1,#0x00000000
mov r2,#0x00470000
add r1,r2,r1
ldr r0,[r1]
mov pc,r0 ;执行完以后,回到指针保护位置,进行跳转,恢复现场,回到主函数
b .
]
LTORG
本发明专利对组态软件中用户编程接口进行了研究,在充分考虑监控组态软件行业应用特点的基础上,考虑到C语言的通用性以及可移植性,采用C语言作为嵌入式编译型语言,由于armcc编译器可以将用ANSI C编写的程序编译成32位ARM指令代码,我们使用armcc编译器,用于对源程序进行编译,生成工业控制器能够识别的目标语言即机器代码,该编译器应用于我们自主研发的控制系统中。
如图2所示,一种嵌入式C编译器的实现系统,其特征在于,其用于实施上述的嵌入式C编译器的实用方法,所述系统包括:PC端以及下位机端;
所述PC端包括:
解释型语言脚本:其用于将用户在PC端编写C语言源代码编译成指定执行地址的目标代码;
写入单元:其用于将目标代码写入嵌入式下位机指定编译地址;
下位机端包括:
现场保护单元:其用于创建现场保护机制,然后执行目标代码;
执行单元:其用于执行完目标代码执行以后,跳转到现场保护位置,恢复现场,继续执行下位机其他代码。
进一步作为优选的实施方式,所述的解释型语言脚本包括:
源地址单元:用于指定C语言源代码存放地址;
工具单元:用于指定编译工具;
目标地址单元:生成目标文件,并指定执行地址。
进一步作为优选的实施方式,所述的编译工具为armcc。
进一步作为优选的实施方式,所述的现场保护单元包括:
线程单元:下位机单独开辟线程,
保护单元:在执行监控组态软件的时候,条件触发执行目标代码,首先对现场进行保护,然后执行目标代码。
以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。
Claims (5)
1.一种嵌入式C编译器的实现方法,其特征在于,其包括以下步骤:
步骤A:创建解释型语言脚本将用户在PC端编写C语言源代码编译成指定执行地址的目标代码,步骤A具体包括:
A1:指定C语言源代码存放地址;
A2:指定编译工具,所述的编译工具为armcc;
A3:生成目标文件,并指定执行地址;
步骤B:将目标代码写入嵌入式下位机指定编译地址;
步骤C:下位机创建现场保护机制,然后执行目标代码,步骤C具体包括:
C1:下位机单独开辟线程;
C2:在执行监控组态软件的时候,条件触发执行目标代码,首先对现场进行保护,然后执行目标代码;
步骤D:下位机执行完目标代码执行以后,跳转到现场保护位置,恢复现场,继续执行下位机其他代码。
2.一种嵌入式C编译器的实现系统,其特征在于,其用于实施权利要求1至4任一项所述的嵌入式C编译器的实用方法,所述系统包括:PC端以及下位机端;
所述PC端包括:
解释型语言脚本:其用于将用户在PC端编写C语言源代码编译成指定执行地址的目标代码;
写入单元:其用于将目标代码写入嵌入式下位机指定编译地址;
下位机端包括:
现场保护单元:其用于创建现场保护机制,然后执行目标代码;
执行单元:其用于执行完目标代码执行以后,跳转到现场保护位置,恢复现场,继续执行下位机其他代码。
3.根据权利要求2所述的嵌入式C编译器的实现系统,其特征在于,所述的解释型语言脚本包括:
源地址单元:用于指定C语言源代码存放地址;
工具单元:用于指定编译工具;
目标地址单元:生成目标文件,并指定执行地址。
4.根据权利要求3所述的嵌入式C编译器的实现系统,其特征在于:所述的编译工具为armcc。
5.根据权利要求2至4任一项所述的嵌入式C编译器的实现系统,其特征在于,所述的现场保护单元包括:
线程单元:下位机单独开辟线程,
保护单元:在执行监控组态软件的时候,条件触发执行目标代码,首先对现场进行保护,然后执行目标代码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610158850.3A CN105843659B (zh) | 2016-03-17 | 2016-03-17 | 一种嵌入式c编译器的实现方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610158850.3A CN105843659B (zh) | 2016-03-17 | 2016-03-17 | 一种嵌入式c编译器的实现方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105843659A CN105843659A (zh) | 2016-08-10 |
CN105843659B true CN105843659B (zh) | 2022-03-08 |
Family
ID=56588391
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610158850.3A Active CN105843659B (zh) | 2016-03-17 | 2016-03-17 | 一种嵌入式c编译器的实现方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105843659B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108874394A (zh) * | 2018-04-17 | 2018-11-23 | 上海达野智能科技有限公司 | 机器人用户程序的解释方法及解释装置 |
CN110543425B (zh) * | 2019-09-06 | 2022-06-21 | 陈本彬 | 一种嵌入式设备的编译与调试方法 |
CN111026402B (zh) * | 2019-12-09 | 2023-05-12 | 贵阳永青仪电科技有限公司 | 一种编译型plc代码执行效率优选方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7784039B2 (en) * | 2004-09-22 | 2010-08-24 | Panasonic Corporation | Compiler, compilation method, and compilation program |
CN1707251B (zh) * | 2005-05-25 | 2010-09-22 | 华南理工大学 | 可自适应调整x射线源的检测装置及其检测方法 |
US7873951B1 (en) * | 2007-08-01 | 2011-01-18 | Oracle America, Inc. | Automated object delegation |
US8117587B1 (en) * | 2008-06-03 | 2012-02-14 | Richard Paul Testardi | Microcontroller-resident software development environment supporting application-level asynchronous event handling, interactive debugging and pin variables for embedded systems |
CN102608947B (zh) * | 2012-03-23 | 2013-09-18 | 浙江大学 | 一种可编程控制系统及组态程序控制方法 |
CN103345402A (zh) * | 2013-05-27 | 2013-10-09 | 上海华兴数字科技有限公司 | 基于中间代码的显示模组图形化组态方法 |
CN105137800A (zh) * | 2015-09-11 | 2015-12-09 | 浙江中烟工业有限责任公司 | 一种基于sopc技术的plc协同控制装置 |
-
2016
- 2016-03-17 CN CN201610158850.3A patent/CN105843659B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN105843659A (zh) | 2016-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3971706B1 (en) | Method, apparatus and electronic device for deploying operator in deep learning frame work | |
Wang et al. | Uroboros: Instrumenting stripped binaries with static reassembling | |
US11579856B2 (en) | Multi-chip compatible compiling method and device | |
CN101976187B (zh) | 反编译过程中的堆栈跟踪方法、装置及反编译器 | |
CN102609243B (zh) | 仿真指针 | |
CN105843659B (zh) | 一种嵌入式c编译器的实现方法及系统 | |
EP3647941B1 (en) | Engineering apparatus, control method of engineering apparatus, and program | |
CN103051711B (zh) | 基于spice协议的嵌入式云终端系统的构建方法 | |
CN110968305A (zh) | 小程序可视化生成方法、装置、设备及存储介质 | |
CN102681465A (zh) | 具备运动规划功能的工业机器人示教规划器及其控制方法 | |
CN106484403A (zh) | 一种机器人跨平台的图形化开发系统 | |
CN104090765A (zh) | 一种手机游戏转网页游戏的方法及装置 | |
CN102087609A (zh) | 多处理器平台下的动态二进制翻译方法 | |
WO2014205558A1 (en) | Software development using gestures | |
CN102520963B (zh) | 基于强类型关系映射实现业务逻辑处理的方法及系统 | |
CN109933410B (zh) | 一种基于虚拟化技术的虚拟指令下发方法及系统 | |
US10296299B2 (en) | Server-side weaving of application-oriented-programming advice into computer code that preempts client-side load-time weaving | |
CN105700934A (zh) | 一种智能编译方法和智能编译系统 | |
CN102681861B (zh) | 安装软件的方法和装置 | |
JP2020071834A (ja) | エンジニアリング装置、エンジニアリング装置の制御方法及びプログラム | |
CN108762765A (zh) | 基于contiki系统的开发板程序编译下载方法 | |
CN105653344A (zh) | 一种图形化编程系统的编译器的方法 | |
CN102566481A (zh) | 一种基于c语言的plc控制系统及其实现方法 | |
CN201237713Y (zh) | 嵌入式一体化工控机 | |
CN104007980A (zh) | 基于应用描述文件解析的移动应用的实现方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |