999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

關于嵌入式C程序設計優化及應用的探索分析

2018-01-01 00:00:00蔡澤鵬
現代信息科技 2018年1期

摘 要:從單片機到ARM,從智能手機到工業4.0物聯網,嵌入式的開發技術、應用在這10年間日新月異,嵌入式系統得到了廣泛的應用。越來越多的程序員參與到嵌入式的開發中,而由于C語言本身的特點,同時具有高級語言及低級語言的特性,成為眾多嵌入式應用開發的選擇。因此本文通過對嵌入式系統的分析理解,結合C語言的特性,根據實踐工作中的相關經驗,對嵌入式C程序設計優化及應用進行探索分析,幫助開發人員提升程序開發、執行效率。

關鍵詞:嵌入式;C語言;優化;開發與應用

中圖分類號:TP312.1;TP368.11 文獻標識碼:A文章編號:2096-4706(2018)01-0035-02

The Exploration and Analysis on the Optimization and Application of

Embedded C Program Design

CAI Zepeng

(FuTaiHua Industry(ShenZhen)CO.,LTD.,ShenZhen 518110,China)

Abstract:From MCU to ARM,from smart phone to industrial 4 internet of things,embedded development technology and application has been changing rapidly in the past 10 years.The embedded system has been widely applied.More and more programmers are involved in the development of embedded system,and because of the characteristics of C language and the characteristics of high-level language and low-level language,it has become the choice of many embedded application development. Therefore,by analyzing and understanding the embedded system,combining the characteristics of C language,and exploring the analysis and optimization of embedded C programming optimization,we can help developers improve the efficiency of program development and execution.

Keywords:embedded;C language;optimization;development and application

0 引 言

嵌入式系統是軟件和硬件的結合的系統,其特點之一就是軟硬件可裁剪,因此需要一門既能夠控制硬件也能便于編程、易移植的語言。C語言本身的特點,與嵌入式的特點一拍即合,非常適合與嵌入式的開發。C語言的應用最廣泛應屬Uinix、Linux操作系統,目前智能手機操作系統使用最廣泛的Android、IOS內核都是基于Linux、Unix修改的。但是隨著嵌入式的發展,新的挑戰也讓C語言開發遇到了對手,其他的語言如Java,Object-C,Python也廣泛被嵌入式程序員所接受,因此,在使用C語言作為嵌入式開發應用的時候,需要盡可能對其進行優化,使其適應當前快速發展的需求。

1 嵌入式C語言優缺點

C語言是一門高級語言,擁有高級語言的特性,能夠實現一些上層的應用開發,具有較高的可讀性,便于程序員編寫代碼,也擁有低級語言的特性,面向底層,能通過指針讀寫內存和寄存器,從而便于訪問硬件。C語言中定義了一套標準庫,最大程度使程序員所編寫的程序適用于所有的編譯器中的庫,易于編譯移植。嵌入式采用C語言來編程,也存在著一些短板,比如不能訪問某些寄存器,其本身是面向過程的語言,擴展性較其他面向對象的語言較差。因此需要利用其它語言的特性結合C語言中嵌入式中的設計應用特點做優化。

2 嵌入式C程序系統的設計與開發

2.1 開發環境

嵌入式系統在開發期間,與傳統PC機存在較大不同,比如在PC上的Windows操作系統,我們可以用在其平臺下編譯工具直接編譯開發針對Windows系統的程序,即本機編譯,而在嵌入式平臺如ARM,由于ARM目標平臺有限的存儲空間和運算能力,我們只能借助PC平臺的交叉編譯器進行編譯,然后將其生成的可執行文件拷貝到ARM平臺進行運行,這個我們稱為交叉編譯[1]。在嵌入式開發中,如果需要目標程序進行調試,其中一個方法是在調試主機上通過JTAG協議轉換器與目標調試系統通信,完成調試。

2.2 C編譯過程

當完成C源代碼工作后,需要對其進行編譯。一般來說,在編譯的過程中需要通過相應的匯編編譯器將C代碼編譯為匯編代碼,為了能在目標機上運行,我們還需要進一步將其與其他文件鏈接為目標機識別的可執行二進制文件。因此匯編在編譯的過程起到了一個橋梁的作用,如果我們能夠處理好C語言與匯編語言之間的調用關系將能提升代碼效率。

3 嵌入式C程序設計與應用優化

3.1 靈活利用匯編與C進行混和編程

在C程序實際執行過程中,C語言在C程序中將無法完全實現硬件控制功能,比如:對中斷控制寄存器進行修改。匯編語言是面向機器的低級語言,其保持了機器語言的優點,執行效率方面比C更高。結合上文的討論,可以在C程序中直接嵌入匯編語句,利用匯編語句對程序進行優化。當然,該方法也是存在一些缺陷,C環境容易被破壞而且會降低可讀性、移植性,因此需要合理的使用匯編語言。使用的嵌入匯編語句方法較為簡單,僅僅在匯編語句的左、右等將匯編的依據使用小括號括住,并且在括號前增加asm標識符號。比如:具體表示為:asm(“匯編語句”)。在C程序中,將C程序直接嵌入到匯編語句中,其最為典型的應用方式是控制DSP芯片或者一些硬件資源[2]。

3.2 寄存器和參數傳遞

在C程序嵌入匯編語言時需要注意寄存器的應用也需要遵循一定原則。比如:在子程序之間,要使用寄存器RO-R3來傳遞參數,對局部的變量則用R4-R7寄存器。當返回的時候,可以利用R0和R1進行返回。在實際的處理中還需要遵守一些特殊寄存器的使用,例如:寄存器R14,在ARM中其也稱為一種鏈接寄存器,記為LR,它是PC寄存器的備份,用于保存子程序的返回地址。在閑置的時候可以當作通用數據寄存器來使用,比如用于程序計數器[3]。在參數傳遞應用中,整體上,可以將數據有順序的傳遞到寄存器上,如果傳遞的參數在4個以上的時候,可以把其余的字數據傳遞到數據棧中。如果發現入棧的順序和參數是相反的,可以將最后一個參數先入棧。根據這種規則和順序,一個浮點參數可以在寄存器下進行傳遞,也能在數據棧之間進行傳遞,也可以對其一半進行寄存器的傳遞,其他數據經過數據棧進行傳遞。如果參數為固定的,在傳遞期間,可以基于用戶的選定的ATPCS類型,并將其與C語言庫進行連接,當在對語言程序進行匯編的時候,則根據用戶選定的ATPCS類型來進行。在進行匯編混合編程的時候要注意不要直接使用R12,比如在計算一些表達式的值的時候可能會被用來保存值。

因此,在利用匯編混合編程的時候,要按照一定原則來實現,以促進嵌入式C程序的設計和優化,保證在整體上對其充分應用[4]。

3.3 設計應用擴展

從上文的分析中,可以看到C程序的編譯需要經過編譯→鏈接→可執行的過程,因此在調試以及現在控制應用的時候難免需要再次完成這個編譯的過程,C語言是面向過程的語言,在開發一些上層應用如UI,沒有面向對象語言那么易擴展、維護。因為為了將C程序的應用進行擴展,采用對Lua的支持來適應當前的需求。Lua腳本語言已經成功地應用到網絡游戲,分析其特點,結合C語言的特性以及嵌入式發展要求,可以將Lua與C結合起來應用到嵌入式的開發中。隨著動態語言的發展,Lua能夠幫助程序完成更多的功能并簡化編程人員的工作。因此這里探討Lua與C結合的優點。首先Lua是一門腳本語言,是為了解決傳統開發語言需要經過編碼-編譯-鏈接-執行這個過程而創建的一個編程語言,不同于高級語言,它本身不需要編譯,而是在執行的時候進行“解釋執行”,因此它可以省去編譯的過程從而減少開發時間。Lua腳本本身非常小巧,對比其他腳本語言如Python,它的運行速度快而且內存占用少,這對于內存資源有限的嵌入式設備來說非常適合。其次,Lua是開源免費的,Lua本身就是用C語言實現的,代碼非常簡潔短小,因此很容易移植到C程序中,幾乎可以在所有的平臺上編譯,因此不用擔心難移植,硬件大消耗的問題。嵌入式系統的特點要求軟件需要良好的移植性,因此Lua也被很多嵌入式開發人員所接受。最后Lua的擴展性很好,定義的變量沒有類型限制,采用了面向對象而非面向過程的設計結構,這些彌補了C語言在設計上一些短板[5]。通過這3個優點,Lua與C結合是嵌入式應用開發一個不錯選擇,可以將Lua的解析器移植到C程序中,在程序提供一套接口供Lua調用,程序員只需要編寫簡單的Lua腳本來調用這些接口,通過UART串口或者USB傳送Lua文件給嵌入式設備進行解析,就能完成一系列的控制而不必修改C程序代碼。比如在工廠的機械手臂作業,需要更換操作動作,我們可以通過Lua與C的結合,通過編寫Lua腳本就可以實現一組新的操作動作,而不必再次經過修改程序-編譯-運行的過程,大大的提高了開發效率。

4 結 論

基于以上的分析和研究可以發現,雖然C語言在嵌入式開發中是一個強大的開發語言,但是隨著嵌入式的發展以及其他編程語言的興起,我們需要對C語言的編程及應用充分分析和掌握,才能提升嵌入式C程序的適用性,在對其積極開發和利用過程中,也需要深入研究實際電子硬件系統,并在開發設計中,合理地采用嵌入式C語言結合匯編語言、Lua語言等其他來實現某些功能和進行擴展,就可以實現部分高級語言不能完成的功能,也能提升程序開發和執行效率。

參考文獻:

[1] 許鵬程,李小波.MATLAB與STM32 CubeMX聯合的嵌入式開發方法 [J].單片機與嵌入式系統應用,2016(10):14-16.

[2] 張楓,張曉民.基于ARM嵌入式的免耕播種機盤刀軸承故障診斷 [J].農機化研究,2017(12):58-62.

[3] 王應軍,曲培新,趙晨萍.ARM匯編語言與C語言混合編程的實現方法 [J].科技信息,2010(3):12-13.

[4] 劉良江,李慶先,田健,等.基于流程圖的嵌入式軟件能耗模型 [J].計算技術與自動化,2016(3):115-118.

[5] 鄧正陽,陳和平,蘇鵬.動態腳本語言Lua與C++交互方法的研究與實現 [J].計算機系統應用,2010(5):198-201.

作者簡介:蔡澤鵬(1985-),男,漢族,廣東人,技術課長,助理工程師,學士。研究方向:嵌入式開發。

主站蜘蛛池模板: 久久青草视频| 亚洲第一在线播放| 亚洲精品在线影院| 福利片91| 波多野结衣无码视频在线观看| 福利一区三区| 综合色在线| 中文字幕亚洲无线码一区女同| 91九色国产porny| av免费在线观看美女叉开腿| 久无码久无码av无码| 亚洲无码37.| 26uuu国产精品视频| 熟妇丰满人妻av无码区| 无码免费的亚洲视频| 暴力调教一区二区三区| 5555国产在线观看| 亚洲精品人成网线在线| 亚洲天堂精品视频| 超碰91免费人妻| 毛片视频网址| 国产日韩精品欧美一区灰| 欧美午夜性视频| 久久中文字幕不卡一二区| 原味小视频在线www国产| 午夜一区二区三区| 欧美精品1区2区| 成人在线综合| 国产精品蜜臀| 天堂va亚洲va欧美va国产| 国产尤物jk自慰制服喷水| 无码久看视频| 午夜综合网| www.91在线播放| 成人在线亚洲| 精品国产成人高清在线| 一级一级一片免费| 亚洲第一在线播放| 国产午夜无码片在线观看网站| 久久亚洲中文字幕精品一区| 亚洲欧美成人在线视频| 中国特黄美女一级视频| 国产黄色免费看| 久热精品免费| 亚洲aaa视频| 久久精品亚洲专区| 欧美中日韩在线| 看你懂的巨臀中文字幕一区二区| 久久中文字幕2021精品| 伊在人亚洲香蕉精品播放| 国产一区二区视频在线| 波多野结衣中文字幕一区二区 | 亚洲狠狠婷婷综合久久久久| 992tv国产人成在线观看| 日韩视频福利| 国产乱人激情H在线观看| h网址在线观看| 国产高潮流白浆视频| 日韩无码视频专区| 国产日韩精品欧美一区灰| 爆乳熟妇一区二区三区| www.精品国产| 亚洲人成高清| 欧美激情视频一区二区三区免费| 欧美区在线播放| 免费激情网站| 国产丝袜无码一区二区视频| 亚洲最大在线观看| 亚洲欧洲日韩国产综合在线二区| 国产对白刺激真实精品91| 在线免费观看AV| 精品福利视频导航| 色婷婷电影网| 国产91丝袜在线播放动漫 | 永久天堂网Av| 亚洲国产中文精品va在线播放| 麻豆精品在线播放| 国产激爽大片在线播放| 亚洲品质国产精品无码| 日韩亚洲综合在线| 中文字幕无线码一区| 国产a v无码专区亚洲av|