欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種嵌入式c編譯器的實現(xiàn)方法及系統(tǒng)的制作方法

文檔序號:10488789閱讀:501來源:國知局
一種嵌入式c編譯器的實現(xiàn)方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種嵌入式C編譯器的實現(xiàn)方法及系統(tǒng),其方法包括:步驟A:創(chuàng)建解釋型語言腳本將用戶在PC端編寫C語言源代碼編譯成指定執(zhí)行地址的目標(biāo)代碼;步驟B:將目標(biāo)代碼寫入嵌入式下位機(jī)指定編譯地址;步驟C:下位機(jī)創(chuàng)建現(xiàn)場保護(hù)機(jī)制,然后執(zhí)行目標(biāo)代碼;步驟D:下位機(jī)執(zhí)行完目標(biāo)代碼執(zhí)行以后,跳轉(zhuǎn)到現(xiàn)場保護(hù)位置,恢復(fù)現(xiàn)場,繼續(xù)執(zhí)行下位機(jī)其他代碼。其系統(tǒng)包括PC端及上位機(jī),本發(fā)明將客戶的編譯型代碼轉(zhuǎn)成工業(yè)控制器能夠識別的目標(biāo)語言即機(jī)器代碼,同時執(zhí)行效率快,大大提高了用戶在組態(tài)軟件領(lǐng)域研發(fā)的便利性,具有良好的經(jīng)濟(jì)和社會效益。本發(fā)明作為一種嵌入式C編譯器的實現(xiàn)方法及系統(tǒng),廣泛適用于組態(tài)軟件領(lǐng)域。
【專利說明】
一種嵌入式C編譯器的實現(xiàn)方法及系統(tǒng)
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及組態(tài)軟件領(lǐng)域,尤其涉及一種嵌入式C編譯器的實現(xiàn)方法及系統(tǒng)。
【背景技術(shù)】
[0002]嵌入式系統(tǒng)本身不具備自主開發(fā)能力,必須有交叉編譯和調(diào)試開發(fā)環(huán)境才能進(jìn)行開發(fā)。計算機(jī)不能直接理解高級語言,只能直接理解機(jī)器語言,所以必須要把高級語言翻譯成機(jī)器語言,計算機(jī)才能執(zhí)行高級語言編寫的程序。
[0003]目前基于嵌入式系統(tǒng)主要有兩種語言,解釋性語言以及編譯型語言。編譯型語言在程序執(zhí)行之前,有一個單獨(dú)的編譯過程,將程序翻譯成機(jī)器語言,以后執(zhí)行這個程序的時候,就不用再進(jìn)行翻譯了。解釋型語言,是在運(yùn)行的時候?qū)⒊绦蚍g成機(jī)器語言,所以運(yùn)行速度相對于編譯型語言要慢。C/C++等都是編譯型語言,而Basic/Python/JavaScript /Perl /Shell等都是解釋型語言。
[0004]隨著控制、計算機(jī)、通信、網(wǎng)絡(luò)等技術(shù)的發(fā)展,信息交換溝通的領(lǐng)域正在迅速覆蓋從工廠的現(xiàn)場設(shè)備層到控制、管理的各個層次,覆蓋從工段、車間、工廠、企業(yè)乃至世界各地的市場。監(jiān)控組態(tài)軟件能夠?qū)崿F(xiàn)對自動化過程和裝備的監(jiān)視和控制。它能從自動化過程和裝備中采集各種信息,并將信息以圖形化等更易于理解的方式進(jìn)行顯示,將重要的信息以各種手段傳送到相關(guān)人員,對信息執(zhí)行必要分析處理和存儲,發(fā)出控制指令等等。用戶通過類似“搭積木”的簡單方式來完成自己所需要的軟件功能,而不需要編寫計算機(jī)程序,也就是所謂的“組態(tài)”。
[0005]隨著監(jiān)控組態(tài)軟件在工業(yè)控制中的應(yīng)用越來越廣泛,用戶要求也越來越多,除了常規(guī)的“搭積木”組態(tài)方式,用戶也要求進(jìn)行一些個性化設(shè)計,也就是在“搭積木”的過程中,通過編程實現(xiàn)用戶的特定要求,由此對用戶編程接口的支持顯得日益重要。目前,這一領(lǐng)域的技術(shù)還不是很成熟,一般組態(tài)軟件只提供解釋型腳本語言,比如Basic,ShelI,Perl等,直接對源程序解釋執(zhí)行,這些語言在執(zhí)行效率、穩(wěn)定性和可靠性等方面都存在問題,而且由于不是通用語言,對于編程接口開發(fā)者來說,需要重新學(xué)習(xí)編程語言,存在很大困難。
[0006]

【發(fā)明內(nèi)容】

[0007]為了解決上述技術(shù)問題,本發(fā)明的目的是提供一種能夠在組態(tài)軟件中應(yīng)用嵌入式編譯器同時執(zhí)行效率快的嵌入式C編譯器的實現(xiàn)方法及系統(tǒng)
本發(fā)明所采用的技術(shù)方案是:一種嵌入式C編譯器的實現(xiàn)方法,其包括以下步驟:
步驟A:創(chuàng)建解釋型語言腳本將用戶在PC端編寫C語言源代碼編譯成指定執(zhí)行地址的目標(biāo)代碼;
步驟B:將目標(biāo)代碼寫入嵌入式下位機(jī)指定編譯地址;
步驟C:下位機(jī)創(chuàng)建現(xiàn)場保護(hù)機(jī)制,然后執(zhí)行目標(biāo)代碼;
步驟D:下位機(jī)執(zhí)行完目標(biāo)代碼執(zhí)行以后,跳轉(zhuǎn)到現(xiàn)場保護(hù)位置,恢復(fù)現(xiàn)場,繼續(xù)執(zhí)行下位機(jī)其他代碼。
[0008]進(jìn)一步,步驟A具體包括:
Al:指定C語言源代碼存放地址;
A2:指定編譯工具;
A3:生成目標(biāo)文件,并指定執(zhí)行地址。
[0009]進(jìn)一步,所述的編譯工具為armcc。
[00?0]進(jìn)一步,步驟C具體包括:
Cl:下位機(jī)單獨(dú)開辟線程,
C2:在執(zhí)行監(jiān)控組態(tài)軟件的時候,條件觸發(fā)執(zhí)行目標(biāo)代碼,首先對現(xiàn)場進(jìn)行保護(hù),然后執(zhí)行目標(biāo)代碼。
[0011]—種嵌入式C編譯器的實現(xiàn)系統(tǒng),其特征在于,其用于實施上述的嵌入式C編譯器的實用方法,所述系統(tǒng)包括:PC端以及下位機(jī)端;
所述PC端包括:
解釋型語言腳本:其用于將用戶在PC端編寫C語言源代碼編譯成指定執(zhí)行地址的目標(biāo)代碼;
寫入單元:其用于將目標(biāo)代碼寫入嵌入式下位機(jī)指定編譯地址;
下位機(jī)端包括:
現(xiàn)場保護(hù)單元:其用于創(chuàng)建現(xiàn)場保護(hù)機(jī)制,然后執(zhí)行目標(biāo)代碼;
執(zhí)行單元:其用于執(zhí)行完目標(biāo)代碼執(zhí)行以后,跳轉(zhuǎn)到現(xiàn)場保護(hù)位置,恢復(fù)現(xiàn)場,繼續(xù)執(zhí)行下位機(jī)其他代碼。
[0012]進(jìn)一步,所述的解釋型語言腳本包括:
源地址單元:用于指定C語言源代碼存放地址;
工具單元:用于指定編譯工具;
目標(biāo)地址單元:生成目標(biāo)文件,并指定執(zhí)行地址。
[0013]進(jìn)一步,所述的編譯工具為armcc。
[0014]進(jìn)一步,所述的現(xiàn)場保護(hù)單元包括:
線程單元:下位機(jī)單獨(dú)開辟線程,
保護(hù)單元:在執(zhí)行監(jiān)控組態(tài)軟件的時候,條件觸發(fā)執(zhí)行目標(biāo)代碼,首先對現(xiàn)場進(jìn)行保護(hù),然后執(zhí)行目標(biāo)代碼。
[0015]本發(fā)明的有益效果是:本發(fā)明能夠在組態(tài)軟件中應(yīng)用嵌入式編譯器,將客戶使用編譯型代碼編寫的程序,通過解釋性語言將客戶的編譯型代碼轉(zhuǎn)成工業(yè)控制器能夠識別的目標(biāo)語言即機(jī)器代碼,同時執(zhí)行效率快,大大提高了用戶在組態(tài)軟件領(lǐng)域研發(fā)的便利性,具有良好的的經(jīng)濟(jì)和社會效益。
【附圖說明】
[0016]下面結(jié)合附圖對本發(fā)明的【具體實施方式】作進(jìn)一步說明:
圖1是本發(fā)明的一具體實施例的流程圖;
圖2是本發(fā)明的一具體實施例的功能模塊圖。
【具體實施方式】
[0017]需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。
[0018]如圖1所示,一種嵌入式C編譯器的實現(xiàn)方法,其包括以下步驟:
步驟A:創(chuàng)建解釋型語言腳本將用戶在PC端編寫C語言源代碼編譯成指定執(zhí)行地址的目標(biāo)代碼;
步驟B:將目標(biāo)代碼寫入嵌入式下位機(jī)指定編譯地址;
步驟C:下位機(jī)創(chuàng)建現(xiàn)場保護(hù)機(jī)制,然后執(zhí)行目標(biāo)代碼;
步驟D:下位機(jī)執(zhí)行完目標(biāo)代碼執(zhí)行以后,跳轉(zhuǎn)到現(xiàn)場保護(hù)位置,恢復(fù)現(xiàn)場,繼續(xù)執(zhí)行下位機(jī)其他代碼。
[0019]進(jìn)一步作為優(yōu)選的實施方式,步驟A具體包括:
Al:指定C語言源代碼存放地址;
A2:指定編譯工具;
A3:生成目標(biāo)文件,并指定執(zhí)行地址。
[°02°]進(jìn)一步作為優(yōu)選的實施方式,所述的編譯工具為armcc。
[0021 ]進(jìn)一步作為優(yōu)選的實施方式,步驟C具體包括:
Cl:下位機(jī)單獨(dú)開辟線程,
C2:在執(zhí)行監(jiān)控組態(tài)軟件的時候,條件觸發(fā)執(zhí)行目標(biāo)代碼,首先對現(xiàn)場進(jìn)行保護(hù),然后執(zhí)行目標(biāo)代碼。
[0022]為使得本發(fā)明的技術(shù)方案能夠更加清楚地表述,下面以一具體的實施例來說明,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)知曉,以下舉例僅作為本發(fā)明的一種具體的實施方式以進(jìn)一步闡述本發(fā)明的技術(shù)方案,并不作為限定本發(fā)明的保護(hù)范圍的說明。
[0023]1、PC端編譯的目標(biāo)代碼如何在嵌入式系統(tǒng)對應(yīng)位置運(yùn)行。
[0024]PC端需要執(zhí)行armcc編譯器指令,指定下位目標(biāo)代碼運(yùn)行位置,
SNAME=add ;源代碼是 add.c
ADDR=0x00490400 ;(定義下位程序入口地址)
RffBASE=0x360000 ;(定義add.c代碼變量存放地址) CFLAGS=_02 -g+ -cpuARM920T -c ;(定義優(yōu)化級別,cpu類型)
LFLAG=-rο-base $(ADDR) -rw-base S(RffBASE) -map -symbols -list Map.txt -entry $(ADDR) -1ibpath lib ;(定義編譯規(guī)則,包括入口地址,變量地址等)
CC=armcc ;(定義C編譯器)
LD=armlink ;(定義C鏈接器)
$(SNAME).bin: $(SNAME).axf ;(定義目標(biāo)代碼為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(生成規(guī)則) $(CC) $(CFLAGS) $(SNAME).0 $(SNAME).c ;(通過armcc將add.c生成add.0 ) clean:;(清除目標(biāo)代碼的規(guī)則)
rm 氺.ο 氺.c ^.axf ^.bat
如上,當(dāng)通過armcc編譯器編譯完成以后,生成一個叫做add.bin的文件,執(zhí)行地址為0x490400,PC將生成的add.bin文件寫入到下位0x490400地址。
[0025]2,下位嵌入式系統(tǒng)如何進(jìn)行現(xiàn)場保護(hù)和跳轉(zhuǎn)。
[0026]當(dāng)需要執(zhí)行嵌入式目標(biāo)代碼之前,我們進(jìn)行現(xiàn)場保護(hù),并跳轉(zhuǎn)到0x490400地址執(zhí)行add.bin目標(biāo)代碼,如下所示:
MacroMain
moV r0,Ir moV rl,#0x00000000 mov r2,#0x470000;指針存放在0x00470000 add rl,r2,rl str rO,[rl]
Idr rl,=Run—Macro ;(此為上位編譯器指定目標(biāo)地址,即上面所示ADDR=0x00490400)
Idr r0,[rl] mov pc,r0
3.下位嵌入式系統(tǒng)執(zhí)行完目標(biāo)代碼以后的現(xiàn)場恢復(fù)。
[0027]執(zhí)行完add.bin目標(biāo)代碼以后,需要恢復(fù)現(xiàn)場,如以下流程:
LDR SP,=0x00380000
[:LN0T:THUMBC0DE
bl Macro—Entry ;(執(zhí)行實際運(yùn)行代碼) mov rl,#0x00000000 mov r2,#0x00470000 add rl,r2,rl Idr rO,[rl]
mov pc,r0;執(zhí)行完以后,回到指針保護(hù)位置,進(jìn)行跳轉(zhuǎn),恢復(fù)現(xiàn)場,回到主函數(shù)
b.]
LTORG
本發(fā)明專利對組態(tài)軟件中用戶編程接口進(jìn)行了研究,在充分考慮監(jiān)控組態(tài)軟件行業(yè)應(yīng)用特點(diǎn)的基礎(chǔ)上,考慮到C語言的通用性以及可移植性,采用C語言作為嵌入式編譯型語言,由于armcc編譯器可以將用ANSI C編寫的程序編譯成32位ARM指令代碼,我們使用armcc編譯器,用于對源程序進(jìn)行編譯,生成工業(yè)控制器能夠識別的目標(biāo)語言即機(jī)器代碼,該編譯器應(yīng)用于我們自主研發(fā)的控制系統(tǒng)中。
[0028]如圖2所示,一種嵌入式C編譯器的實現(xiàn)系統(tǒng),其特征在于,其用于實施上述的嵌入式C編譯器的實用方法,所述系統(tǒng)包括:PC端以及下位機(jī)端; 所述PC端包括:
解釋型語言腳本:其用于將用戶在PC端編寫C語言源代碼編譯成指定執(zhí)行地址的目標(biāo)代碼;
寫入單元:其用于將目標(biāo)代碼寫入嵌入式下位機(jī)指定編譯地址;
下位機(jī)端包括:
現(xiàn)場保護(hù)單元:其用于創(chuàng)建現(xiàn)場保護(hù)機(jī)制,然后執(zhí)行目標(biāo)代碼;
執(zhí)行單元:其用于執(zhí)行完目標(biāo)代碼執(zhí)行以后,跳轉(zhuǎn)到現(xiàn)場保護(hù)位置,恢復(fù)現(xiàn)場,繼續(xù)執(zhí)行下位機(jī)其他代碼。
[0029]進(jìn)一步作為優(yōu)選的實施方式,所述的解釋型語言腳本包括:
源地址單元:用于指定C語言源代碼存放地址;
工具單元:用于指定編譯工具;
目標(biāo)地址單元:生成目標(biāo)文件,并指定執(zhí)行地址。
[°03°]進(jìn)一步作為優(yōu)選的實施方式,所述的編譯工具為armcc。
[0031]進(jìn)一步作為優(yōu)選的實施方式,所述的現(xiàn)場保護(hù)單元包括:
線程單元:下位機(jī)單獨(dú)開辟線程,
保護(hù)單元:在執(zhí)行監(jiān)控組態(tài)軟件的時候,條件觸發(fā)執(zhí)行目標(biāo)代碼,首先對現(xiàn)場進(jìn)行保護(hù),然后執(zhí)行目標(biāo)代碼。
[0032]以上是對本發(fā)明的較佳實施進(jìn)行了具體說明,但本發(fā)明創(chuàng)造并不限于所述實施例,熟悉本領(lǐng)域的技術(shù)人員在不違背本發(fā)明精神的前提下還可做作出種種的等同變形或替換,這些等同的變形或替換均包含在本申請權(quán)利要求所限定的范圍內(nèi)。
【主權(quán)項】
1.一種嵌入式C編譯器的實現(xiàn)方法,其特征在于,其包括以下步驟: 步驟A:創(chuàng)建解釋型語言腳本將用戶在PC端編寫C語言源代碼編譯成指定執(zhí)行地址的目標(biāo)代碼; 步驟B:將目標(biāo)代碼寫入嵌入式下位機(jī)指定編譯地址; 步驟C:下位機(jī)創(chuàng)建現(xiàn)場保護(hù)機(jī)制,然后執(zhí)行目標(biāo)代碼; 步驟D:下位機(jī)執(zhí)行完目標(biāo)代碼執(zhí)行以后,跳轉(zhuǎn)到現(xiàn)場保護(hù)位置,恢復(fù)現(xiàn)場,繼續(xù)執(zhí)行下位機(jī)其他代碼。2.根據(jù)權(quán)利要求1所述的嵌入式C編譯器的實現(xiàn)方法,其特征在于,步驟A具體包括: Al:指定C語言源代碼存放地址; A2:指定編譯工具; A3:生成目標(biāo)文件,并指定執(zhí)行地址。3.根據(jù)權(quán)利要求2所述的嵌入式C編譯器的實現(xiàn)方法,其特征在于:所述的編譯工具為armcco4.根據(jù)權(quán)利要求1至3任一項所述的嵌入式C編譯器的實現(xiàn)方法,其特征在于,步驟C具體包括: Cl:下位機(jī)單獨(dú)開辟線程; C2:在執(zhí)行監(jiān)控組態(tài)軟件的時候,條件觸發(fā)執(zhí)行目標(biāo)代碼,首先對現(xiàn)場進(jìn)行保護(hù),然后執(zhí)行目標(biāo)代碼。5.一種嵌入式C編譯器的實現(xiàn)系統(tǒng),其特征在于,其用于實施權(quán)利要求1至4任一項所述的嵌入式C編譯器的實用方法,所述系統(tǒng)包括:PC端以及下位機(jī)端; 所述PC端包括: 解釋型語言腳本:其用于將用戶在PC端編寫C語言源代碼編譯成指定執(zhí)行地址的目標(biāo)代碼; 寫入單元:其用于將目標(biāo)代碼寫入嵌入式下位機(jī)指定編譯地址; 下位機(jī)端包括: 現(xiàn)場保護(hù)單元:其用于創(chuàng)建現(xiàn)場保護(hù)機(jī)制,然后執(zhí)行目標(biāo)代碼; 執(zhí)行單元:其用于執(zhí)行完目標(biāo)代碼執(zhí)行以后,跳轉(zhuǎn)到現(xiàn)場保護(hù)位置,恢復(fù)現(xiàn)場,繼續(xù)執(zhí)行下位機(jī)其他代碼。6.根據(jù)權(quán)利要求5所述的嵌入式C編譯器的實現(xiàn)系統(tǒng),其特征在于,所述的解釋型語言腳本包括: 源地址單元:用于指定C語言源代碼存放地址; 工具單元:用于指定編譯工具; 目標(biāo)地址單元:生成目標(biāo)文件,并指定執(zhí)行地址。7.根據(jù)權(quán)利要求6所述的嵌入式C編譯器的實現(xiàn)系統(tǒng),其特征在于:所述的編譯工具為armcco8.根據(jù)權(quán)利要求5至7任一項所述的嵌入式C編譯器的實現(xiàn)系統(tǒng),其特征在于,所述的現(xiàn)場保護(hù)單元包括: 線程單元:下位機(jī)單獨(dú)開辟線程, 保護(hù)單元:在執(zhí)行監(jiān)控組態(tài)軟件的時候,條件觸發(fā)執(zhí)行目標(biāo)代碼,首先對現(xiàn)場進(jìn)行保護(hù),然后執(zhí)行目標(biāo)代碼。
【文檔編號】G06F9/45GK105843659SQ201610158850
【公開日】2016年8月10日
【申請日】2016年3月17日
【發(fā)明人】李鎮(zhèn), 莫勇
【申請人】深圳市金璽智控技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
岳西县| 秦安县| 浦江县| 罗甸县| 都安| 娄烦县| 平昌县| 长寿区| 鄂州市| 大余县| 任丘市| 娄烦县| 新津县| 阿尔山市| 义马市| 多伦县| 浠水县| 德格县| 祥云县| 怀来县| 临朐县| 莆田市| 彭泽县| 连州市| 瑞昌市| 叶城县| 德江县| 浦城县| 民权县| 平乡县| 铜鼓县| 淅川县| 连州市| 大英县| 高清| 洮南市| 丰台区| 巴青县| 集贤县| 太原市| 邢台县|