嵌入式系統(tǒng)C語(yǔ)言開發(fā)技巧
一直以來,嵌入式都是大家的關(guān)注焦點(diǎn)之一。因此針對(duì)大家的興趣點(diǎn)所在,小編將為大家?guī)砬度胧降南嚓P(guān)介紹,詳細(xì)內(nèi)容請(qǐng)看下文。
一、嵌入式為什么要選擇C語(yǔ)言
嵌入式開發(fā)讓軟硬件開發(fā)變得更加智能,為什么C語(yǔ)言適用于嵌入式開發(fā)呢?主要是因?yàn)橄鄬?duì)于其它的高級(jí)語(yǔ)言編程,C語(yǔ)言的語(yǔ)言特點(diǎn)對(duì)于嵌入式開發(fā)來說是最適合的。簡(jiǎn)單的說就是C語(yǔ)言是面對(duì)結(jié)構(gòu)語(yǔ)言,和面對(duì)對(duì)象語(yǔ)言不同,適用在解決嵌入式開發(fā)這種具體性的工作上。
C語(yǔ)言的特點(diǎn):
1、可讀性好,容易移植,跨平臺(tái)使用,無需CPU指令,能從一個(gè)平臺(tái)切換到另一個(gè)平臺(tái),不需要修改更多代碼,能夠在多種不同結(jié)構(gòu)的軟硬件平臺(tái)使用。
2、使用靈活緊湊、表達(dá)能力強(qiáng),可以直接訪問硬件,特別是在進(jìn)行硬件復(fù)雜操作時(shí)使用。
3、C語(yǔ)言可以直接生成硬件識(shí)別的機(jī)器碼,運(yùn)行效率高。
4、C語(yǔ)言功能豐富、應(yīng)用范圍廣,融合高級(jí)和低級(jí)語(yǔ)言的特點(diǎn),既可以編寫系統(tǒng)軟件又可以編寫應(yīng)用軟件;五是語(yǔ)法機(jī)制簡(jiǎn)單,可讀性強(qiáng),能夠很容易的被人們理解。
5、C語(yǔ)言編程方式靈活,嵌入式操作系統(tǒng)中都有C語(yǔ)言仿真調(diào)試工具,這樣編程調(diào)試非常的靈活方便。
6、C語(yǔ)言編寫的程序非常的模塊化,后期的維護(hù)管理非常方便。
在進(jìn)行嵌入式開發(fā)時(shí),首先要考慮到產(chǎn)品性能、開發(fā)的安全性和開發(fā)效率等問題。在性能方面,匯編語(yǔ)言執(zhí)行效率是最快的,但是匯編本身是一種低級(jí)語(yǔ)言,其安全性和開發(fā)效率是最低的;其他的高級(jí)語(yǔ)言運(yùn)行效率低,源代碼和目標(biāo)代碼偏長(zhǎng),占用的內(nèi)存偏大,會(huì)影響使用性能,所以C語(yǔ)言的優(yōu)勢(shì)就體現(xiàn)出來了。
但是C語(yǔ)言也有著一些缺點(diǎn),例如代碼重復(fù)使用性、代碼擴(kuò)展性和改進(jìn)維護(hù)性較差,在開發(fā)過程中,我們要規(guī)避這些問題,提高代碼質(zhì)量,靈活運(yùn)用C語(yǔ)言的強(qiáng)大功能,編寫出易維護(hù)、高效率和高可靠性的嵌入式代碼,讓嵌入式開發(fā)產(chǎn)品更加完善。
二、嵌入式系統(tǒng)C語(yǔ)言開發(fā)技巧
1、適當(dāng)?shù)氖褂煤?
在C程序中使用宏代碼可以提高程序的執(zhí)行效率。宏代碼本身不是函數(shù),但使用起來像函數(shù)。函數(shù)調(diào)用要使用系統(tǒng)的棧來保存數(shù)據(jù),同時(shí) CPU 在函數(shù)調(diào)用時(shí)需要保存和恢復(fù)當(dāng)前的現(xiàn)場(chǎng),進(jìn)行進(jìn)棧和出棧操作,所以函數(shù)調(diào)用也需要 CPU時(shí)間。而宏定義就沒有這個(gè)問題:宏定義僅僅作為預(yù)先寫好的代碼嵌入到當(dāng)前程序中,不產(chǎn)生函數(shù)調(diào)用,所占用的僅僅是一些空間,省去了參數(shù)壓棧,生成匯編語(yǔ)言的 call 調(diào)用,返回參數(shù),執(zhí)行 return等過程,從而提高了程序的執(zhí)行速度。雖然宏破壞了程序的可讀性,使排錯(cuò)更加麻煩,但對(duì)于嵌入式系統(tǒng),為了達(dá)到要求的性能,嵌入代碼常常是必須的做法。
2、內(nèi)嵌匯編
程序中對(duì)時(shí)間要求苛刻的部分可以用內(nèi)嵌匯編來重寫,以帶來速度上的顯著提高。但是,開發(fā)和測(cè)試匯編代碼是一件辛苦的工作,它將花費(fèi)更長(zhǎng)的時(shí)間,因而要慎重選擇要用匯編的部分。在程序中,存在一個(gè)80-20原3、提高循環(huán)語(yǔ)言的效率
在 C 語(yǔ)言中循環(huán)語(yǔ)句使用頻繁,提高循環(huán)體效率的基本辦法就是降低循環(huán)體的復(fù)雜性:
在多重循環(huán)中,應(yīng)將最長(zhǎng)的循環(huán)放在最內(nèi)層,最短的循環(huán)放在最外層。這樣可以減少 CPU跨切循環(huán)的次數(shù)。
4、提高 switch 語(yǔ)句的效率
switch 語(yǔ)句是 C 語(yǔ)言中常用的選擇語(yǔ)句, 在編譯時(shí)會(huì)產(chǎn)生if- else- if 嵌套代碼,并按照順序進(jìn)行比較,發(fā)現(xiàn)匹配時(shí),就跳轉(zhuǎn)到滿足條件的語(yǔ)句執(zhí)行。
當(dāng) switch 語(yǔ)句中的 case 標(biāo)號(hào)很多時(shí),為了減少比較的次數(shù),可以把發(fā)生頻率相對(duì)高的條件放到第一位或者把整個(gè) switch 語(yǔ)句轉(zhuǎn)化嵌套 switch 語(yǔ)句。把發(fā)生頻率高的 case 標(biāo)號(hào)放在最外層的 switch 語(yǔ)句中,發(fā)生相對(duì)頻率相對(duì)低的 case 標(biāo)號(hào)放在另外的 switch 語(yǔ)句中。
5、避免使用標(biāo)準(zhǔn)庫(kù)
使用 C語(yǔ)言標(biāo)準(zhǔn)庫(kù)可以加快開發(fā)進(jìn)度,但由于標(biāo)準(zhǔn)庫(kù)需要設(shè)法處理用戶所有可能遇到的情況,所以很多標(biāo)準(zhǔn)庫(kù)代碼很大。比如標(biāo)準(zhǔn)庫(kù)中的 sprintf函數(shù)非常大。這個(gè)龐大的代碼中有很大一部分用于處理浮點(diǎn)數(shù),如果程序中不需要格式化浮點(diǎn)數(shù)值( 如%f),程序設(shè)計(jì)人員就可以根據(jù)實(shí)際情況用少量的代碼實(shí)現(xiàn)這個(gè)功能。
上述所有信息便是小編這次為大家推薦的有關(guān)嵌入式的內(nèi)容,希望大家能夠喜歡,想了解更多有關(guān)它的信息或者其它內(nèi)容,請(qǐng)關(guān)注我們網(wǎng)站哦。