在嵌入式Linux的C語言開發(fā)中,C語言的基本編程依然是最重要的內(nèi)容。除此之外,與一般的C語言編程相比,嵌入式Linux的C語言編程有以下一些要點:
1、庫函數(shù)與系統(tǒng)調(diào)用
在進行C語言編程的時候,使用庫函數(shù)是不可避免的。關(guān)于使用庫函數(shù)的最簡單的例子就是printf()。在Linux環(huán)境下的C語言編程中,庫函數(shù)包括兩個部分:一種是C語言的標準庫函數(shù),例如包含srting.h頭文件的字符處理函數(shù)、包含stdio.h頭文件的標準輸入/輸出函數(shù)、包含math.h頭文件的數(shù)學(xué)函數(shù)等;另一種是UNIX和Linux特定的庫函數(shù),例如UNIX特定的文件操作函數(shù)、權(quán)限處理函數(shù)以及特定的系統(tǒng)調(diào)用等。類似其它的UNIX系統(tǒng),Linux的很多庫函數(shù)是通過系統(tǒng)調(diào)用完成的。庫函數(shù)依然通過包含標準C語言頭文件的方式使用,在庫函數(shù)實現(xiàn)中使用Linux的系統(tǒng)調(diào)用完成。在嵌入式Linux中,很多標準的C語言庫函數(shù)需要考慮系統(tǒng)特定的情況。例如printf()的功能是將內(nèi)容打印到標準的輸出。在通用的計算機中,標準的輸出一般默認是顯示器。但是在嵌入式的系統(tǒng)中,標準的輸出是不確定的,可能是某種顯示設(shè)備(比如顯示器),也可能是串口等。這些與嵌入式Linux操作系統(tǒng)內(nèi)核的配置有關(guān)。2、C語言高級應(yīng)用
目前,計算機技術(shù)高速發(fā)展,各種編程語言發(fā)展迅速。各種高級語言有著各自的優(yōu)勢:C 具有完全面向?qū)ο蟮奶攸c以及非常全面的功能;Java具有與平臺無關(guān)的特性;C#借助微軟的強力支持,前景也非常廣闊;各種腳本語言則有著無需編譯、簡單易懂等特點。與上訴語言相比,C語言是一種面向過程的語言,介于高級語言與低級語言之間。確切地說,在通用計算機應(yīng)用層的軟件開發(fā)部分,C語言與各種高級語言相比沒有優(yōu)勢。這是由于各種高級語言不但適合復(fù)雜應(yīng)用邏輯的組織和實現(xiàn),而且提供了更好的編程環(huán)境和應(yīng)用程序接口。開發(fā)者使用高級語言可以快速、高效地開發(fā)出各種的應(yīng)用程序。C語言的優(yōu)勢在于它有著高效地運行效率,因此雖然在應(yīng)用程序的開發(fā)領(lǐng)域C語言并不占優(yōu)勢,但是在嵌入式Linux的開發(fā)中,C語言卻占據(jù)主導(dǎo)的地位。事實上,C語言的一些高級技術(shù),在嵌入式Linux的開發(fā)中得到很好的發(fā)揮和使用。這些技術(shù)讓C語言這種面向過程、與硬件聯(lián)系緊密的計算機語言可以完成更復(fù)雜的邏輯組織功能。這對于非常重視效率,而又具有特定程序邏輯的嵌入式系統(tǒng)是非常重要的。3、嵌入式系統(tǒng)開發(fā)中C語言特殊語法
在嵌入式的C語言編程中,所使用的語言依然在C語言的范疇內(nèi),但是一些用法和傳統(tǒng)的C語言編程有一定的差別。這些特殊的語法包括:使用C語言對目標硬件寄存器的操作問題;不同體系的處理器的大寫端問題;內(nèi)存操作的對齊問題;程序中絕對內(nèi)存地址的跳轉(zhuǎn)等。4、嵌入式系統(tǒng)開發(fā)中C語言編程的要點
在嵌入式系統(tǒng)中,由于資源非常有限,對程序運行效率的要求比較高。因此,一些在通用計算機系統(tǒng)中不用考慮的性能問題,在嵌入式系統(tǒng)中都需要考慮。在嵌入式開發(fā)中,性能是一個核心的問題,也是C語言編程的要點所在。對于一種程序?qū)崿F(xiàn)的評價,主要可以從兩個方面考慮,一個方面是程序運行的效率,另一個是程序需要的存儲器空間。對于前者,主要是指程序運行所需要的處理器空間,與占用系統(tǒng)處理器地時間有關(guān);對于后者,包括程序存儲所占用的空間和程序運行所占用的空間,與占用系統(tǒng)ROM和RAM大小有關(guān)。由于C語言自身的性質(zhì),也使其在嵌入式開發(fā)的性能優(yōu)化以及調(diào)試方面具有獨特的方法。來源:網(wǎng)絡(luò)版權(quán)歸原作者所有,如有侵權(quán),請聯(lián)系刪除。