李麗萍
(云南經(jīng)濟(jì)管理職業(yè)學(xué)院,云南昆明,650106)
基于ARM嵌入式系統(tǒng)的C語言編程初探
李麗萍
(云南經(jīng)濟(jì)管理職業(yè)學(xué)院,云南昆明,650106)
在計(jì)算機(jī)程序化的使用過程中,對(duì)于系統(tǒng)軟件的更新速度要隨著社會(huì)發(fā)展的需要進(jìn)行改變,對(duì)于非智能狀態(tài)下的系統(tǒng)軟件的革新要從其本身的嵌入式進(jìn)行入手,對(duì)于系統(tǒng)中的引導(dǎo)程序和相應(yīng)的驅(qū)動(dòng)裝置進(jìn)行改變,有效的加強(qiáng)計(jì)算機(jī)程序動(dòng)態(tài)管理的進(jìn)程。尤其是在C語言編程的內(nèi)存管理中,使用的通信I/C等相關(guān)的通信軟件。
嵌入式系統(tǒng);c語言編程;ARM
計(jì)算機(jī)技術(shù)的不斷演化過程中,對(duì)于計(jì)算機(jī)的操作智能化的要求也越來越高,如何將計(jì)算機(jī)技術(shù)更好的服務(wù)于大眾是計(jì)算機(jī)程序設(shè)計(jì)的主要目的。對(duì)于計(jì)算機(jī)程序設(shè)計(jì)的方式是應(yīng)用匯編語言和C語言,基于兩種語言的不同優(yōu)勢(shì)進(jìn)行分析研究,同時(shí)對(duì)于兩者的嵌入進(jìn)行分析討論。在計(jì)算機(jī)的使用實(shí)踐過程中,對(duì)于應(yīng)用程序的語言使用當(dāng)中,少量的使用相應(yīng)的匯編程序語言,但是根據(jù)實(shí)踐證明,使用關(guān)于C語言的程序的可操作性能遠(yuǎn)比匯編語言的程序更加的方便實(shí)用,因而現(xiàn)在對(duì)于計(jì)算機(jī)程序的編程都是使用ARM程序的平臺(tái)化管理模式,并不斷的完善C語言的使用范圍。
C語言的使用過程中,都是含有參數(shù)和函數(shù)的表達(dá)式,其中關(guān)于main函數(shù)的變化之最多,也是在程序研究中最為關(guān)鍵的因素之一。在對(duì)于main函數(shù)的使用中,首先要弄清楚函數(shù)的最初原型,對(duì)于函數(shù)的表達(dá)意義要有初步的了解,并且能夠合理的使用程序的改變方程式,對(duì)于main中的函數(shù)參數(shù)也有著不同的規(guī)范要求。在main可編輯函數(shù)中,agent是表示函數(shù)中參數(shù)的含義,同時(shí)也表達(dá)出函數(shù)中參數(shù)的個(gè)數(shù),把a(bǔ)gent最為函數(shù)參數(shù)的指導(dǎo)性參數(shù)值進(jìn)行分析判斷,可以得到函數(shù)相關(guān)數(shù)組的即時(shí)數(shù)組信息。
提到操作程序的初始化設(shè)定中,以往會(huì)使用匯編語言進(jìn)行修改,包括對(duì)于軟件的初始化歸零處理和內(nèi)存器的設(shè)置,通過在RAM的程序運(yùn)行中體現(xiàn)出模塊運(yùn)行的合理性,并且對(duì)于語言的編輯實(shí)現(xiàn)合理的操作。在程序進(jìn)入了預(yù)定的程序設(shè)計(jì)軌道過程中,main語言會(huì)自動(dòng)控制程序的下一步運(yùn)行,這就是所謂的嵌入式的系統(tǒng)模式,相關(guān)的參數(shù)會(huì)在嵌入的過程中實(shí)現(xiàn)交叉比對(duì),保留原有的數(shù)據(jù)值,將不必要的和使用過的數(shù)據(jù)自動(dòng)的刪除,同時(shí)會(huì)對(duì)程序中產(chǎn)生的運(yùn)行錯(cuò)誤和編輯錯(cuò)位進(jìn)行修改,對(duì)于找尋的錯(cuò)誤在不能自動(dòng)修改的情況下,會(huì)發(fā)生一定的程序默認(rèn)設(shè)置運(yùn)行。這里我們重點(diǎn)提到相關(guān)的匯編語言和C語言在嵌入交匯的過程中出現(xiàn)的語言混亂的情況。系統(tǒng)在自動(dòng)甄別這樣的情況,會(huì)對(duì)main函數(shù)重新擬定新的函數(shù)編輯式。如果這樣的操作管理下還不能完成重新定義,系統(tǒng)函數(shù)編輯器會(huì)將函數(shù)自動(dòng)的歸為初始程序進(jìn)行處理,用這樣的方式來完成函數(shù)之間的有效串接。從而實(shí)現(xiàn)系統(tǒng)
程序在新的語言環(huán)境中的正常使用。
在計(jì)算機(jī)語言的使用管理中,對(duì)于數(shù)據(jù)的更新和函數(shù)的變化中,都會(huì)出現(xiàn)一些緩沖和緩存文件,在有些程序的編程過程中這些文件會(huì)出現(xiàn)丟失的現(xiàn)象。對(duì)于函數(shù)文件的儲(chǔ)存是一項(xiàng)技術(shù)性的難題。在嵌入式的RAM磁盤管理當(dāng)中,可以實(shí)現(xiàn)一定的動(dòng)態(tài)數(shù)據(jù)釋放,在對(duì)于存儲(chǔ)器的功能改變上起到了關(guān)鍵的作用,也可以使嵌入式的系統(tǒng)在C語言的編輯狀態(tài)下完成操作的程序化,也保證了系統(tǒng)的安全。
在C語言編程過程中,需求有一定的函數(shù)值的比對(duì)實(shí)現(xiàn),在系統(tǒng)磁盤的空余空間當(dāng)中,合理的分配好存儲(chǔ)模塊的函數(shù)值。在ARM平臺(tái)中賦予函數(shù)值新的定義,可以直接的調(diào)用,實(shí)現(xiàn)了動(dòng)態(tài)存儲(chǔ)的模式。在相對(duì)的函數(shù)管理程序編輯中,將對(duì)應(yīng)的函數(shù)值定義為不同的映射區(qū)間,在區(qū)間中的代碼也有一定的不同,其中代碼的定義包括:代碼定義區(qū)域、代碼數(shù)據(jù)管理區(qū)域和代碼更新區(qū)域,在這三個(gè)區(qū)域之間的代碼可以形成有效的聯(lián)系,并且形成一定的代碼分布層次。在此之中,代碼的區(qū)域從最低端開始,代碼的定義區(qū)域決定了數(shù)據(jù)函數(shù)在嵌入管理運(yùn)行中的發(fā)展模式,對(duì)于目標(biāo)函數(shù)的定義在代碼的可控范圍之內(nèi),形成有一定的數(shù)據(jù)交流邊界,初步定好了函數(shù)的定義域范圍。代碼區(qū)域的終端是代碼的數(shù)據(jù)管理區(qū)域,這是映射區(qū)域的直接表現(xiàn)模塊分布區(qū)域,在嵌入系統(tǒng)中找尋參數(shù)的對(duì)應(yīng),對(duì)于保護(hù)緩沖和緩存數(shù)據(jù)有一定的保護(hù)作用,對(duì)于收集數(shù)據(jù)上起到了關(guān)鍵的作用。另外,在存儲(chǔ)器中,不光可以使用空余的存儲(chǔ)空間還能夠使用RAM中的空間進(jìn)行存放。
在基于ARM嵌入式的程序設(shè)計(jì)方案中,對(duì)于計(jì)算機(jī)硬件的驅(qū)動(dòng)模式中,包含有程序的設(shè)計(jì)流程,計(jì)算機(jī)硬件的驅(qū)動(dòng)模式中包含最底層的中斷處理程序設(shè)計(jì)和建立在其上的驅(qū)動(dòng)程序設(shè)計(jì)兩個(gè)部分,其實(shí)現(xiàn)與具體的外圍設(shè)備有關(guān),在研究的過程中也可以看出該程序的復(fù)雜性和操作困難的特點(diǎn)。在這里只介紹使用c語言設(shè)計(jì)驅(qū)動(dòng)程序時(shí)需要注意的一些方面,目的是在操作過程中更加的簡(jiǎn)便。對(duì)于外圍硬件設(shè)備一般通過中斷與CPU進(jìn)行通信。中斷是一種外部不同步的事件。在處理與中斷相關(guān)的變量的過程中,要尤為的注意其整個(gè)改變中可能會(huì)出現(xiàn)的故障。一般情況下,編譯器的優(yōu)化選項(xiàng)在默認(rèn)情況下打開之后,對(duì)于變量的操作,將盡量安排在存儲(chǔ)器當(dāng)中。中斷服務(wù)程序常常通過改變一些全局變量來通知應(yīng)用程序某個(gè)外部事件已經(jīng)發(fā)生,這些全局變量是不應(yīng)該被優(yōu)化的。
解決的辦法是在聲明變量時(shí)加上相應(yīng)的模塊修飾符,通常以通知編譯器這是一個(gè)可能被不同步事件改變的量。這個(gè)問題在理論的研究過程中看似簡(jiǎn)單,但是在實(shí)際的操作中并不完全是這樣,如果一旦出現(xiàn)不注意的情況,在實(shí)際運(yùn)行時(shí),程序?qū)⒊霈F(xiàn)錯(cuò)誤等故障,且調(diào)試時(shí)很難定位故障。運(yùn)行效率是設(shè)計(jì)驅(qū)動(dòng)程序的另外一個(gè)問題。中斷比較頻繁的外設(shè),其中斷處理程序的速度對(duì)整個(gè)系統(tǒng)的性能影響是非常大的。這些模塊應(yīng)該直接用匯編語言編寫,并盡可能優(yōu)化算。
嵌入式計(jì)算機(jī)程序平臺(tái)上的應(yīng)用程序設(shè)計(jì)也有與Pc機(jī)上的應(yīng)用程序設(shè)計(jì)不同的地方,需要格外注意。首先注意的是,凡是由需操作系統(tǒng)支持的標(biāo)準(zhǔn)庫函數(shù)均不能使用,除非自己編寫(如m-alk和m-free)。其次,由于內(nèi)存資源有限,棧容量有限且不能自動(dòng)擴(kuò)展,使用時(shí)要格外小心。常常能見到這樣的局部變量的應(yīng)用:
mt buff[2048]
其目的是要申請(qǐng)一個(gè)2048woId(8192Bt)的緩沖區(qū),對(duì)于嵌入式系統(tǒng)來說.開銷過于龐大。同時(shí),??臻g巾用于嵌套調(diào)用的升銷是不可見的,在嵌套層數(shù)較多時(shí)尤其如此。一下子申請(qǐng)這么大的棧空間,該系統(tǒng)是一個(gè)大的挑戰(zhàn),如果操作不當(dāng)還會(huì)出現(xiàn)整套系統(tǒng)崩潰不能運(yùn)行的情況發(fā)生。關(guān)于堆的操作比棧更靈活,也更好控制。如果m一且110c調(diào)用成功,它將返回分配的內(nèi)存塊的地址,否則返回0。如果返回O.表明系統(tǒng)內(nèi)存已經(jīng)所剩不多,這時(shí)程序員可以采取別的措施來解決問題,而不至于使系統(tǒng)崩潰。
在本篇文章中,對(duì)于現(xiàn)階段研究廣泛的計(jì)算機(jī)程序進(jìn)行了討論,并從計(jì)算機(jī)的匯編語言和C語言方面入手,不斷的深入介紹兩者之間的必然聯(lián)系,以及兩種語言在銜接嵌入的過程中程序的運(yùn)行方式,并且對(duì)于使用兩者的計(jì)算機(jī)程序環(huán)境進(jìn)行了介紹。在一些函數(shù)變換的過程中,語言的特殊性就顯現(xiàn)出來了,同時(shí)在引入了關(guān)于ARM嵌入式的系統(tǒng)的過程中,更好的完善了計(jì)算機(jī)的使用程序管理,對(duì)于計(jì)算機(jī)在程序自檢和驗(yàn)算的過程中發(fā)揮了巨大的作用,在今后的研究中,會(huì)不斷的計(jì)算機(jī)中的程序化語言繼續(xù)的深化和完善程序,更好的使得計(jì)算機(jī)程序服務(wù)于大眾。
[1] 嚴(yán)蔚敏.吳偉民,數(shù)據(jù)結(jié)椅(第二版)[J].清華大學(xué)出版社.2002,12(18):340-343
[2] 金麗.包志華.陳海進(jìn)基于ARM嵌入式系統(tǒng)的C程序優(yōu)化設(shè)計(jì)方法[J].南通大學(xué)學(xué)報(bào)(自然科學(xué)版).2006 ,12(23):230-233
[3] 辛鑫.蒙建波.羅根.由C語言到APM指令及程序優(yōu)化[J].單片機(jī)與嵌入式系統(tǒng)應(yīng).2007.11(16):190-192
Preliminary C language programming of embedded systems based on ARM
Li Liping
(Yunnan College of Business Management,YunnanKunming,650106)
In the process of using computer programming,the updating speed of system software to carry out with the development of society change,the system software of non intelligence under the condition of reform should be started from the embedded itself,the system boot program and the corresponding driving device of a change,strengthen dynamic management of computer program process effectiveness.Especially in the memory management of C language programming,use communication software communication I/C and other related.
Embedded system;The C programming language;ARM