當(dāng)前位置:首頁 > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 入門指導(dǎo) > 一文了解C語言與嵌入式C語言的區(qū)別?
一文了解C語言與嵌入式C語言的區(qū)別?
時間:2020-06-02 來源:未知
有過嵌入式基礎(chǔ)的學(xué)員都會知道c語言,這也是大家必須要會的,那么可能大家或許還不知道嵌入式c語言吧,下面可以一起來了解下C語言與嵌入式C語言的區(qū)別吧。
嵌入式系統(tǒng)是各行各業(yè)的具體應(yīng)用相結(jié)合的產(chǎn)物。例如計算機(jī)技術(shù)、半導(dǎo)體技術(shù)、電子技術(shù)。
其更在乎效率和內(nèi)存有效使用。嵌入式系統(tǒng)是一個技術(shù)密集、資金密集、高度分散、不斷創(chuàng)新的知識集成系統(tǒng)。
C語言是目前世界使用最廣泛的系統(tǒng)編程語言。嵌入式C是C的擴(kuò)展,在嵌入式系統(tǒng)中應(yīng)用于編寫嵌入式軟件。針對嵌入式開發(fā)的C語言就是嵌入式C語言,嵌入式C與標(biāo)準(zhǔn)C沒有特別大的差別,主要區(qū)別在于嵌入式程序員思考角度、使用習(xí)慣與普通C不一樣。

具體體現(xiàn)在啟動過程、存儲空間的分配、對于硬件的訪問、資源的限制等方面。
1.啟動過程
PC機(jī)上普通C語言編譯器會自動完成啟動程序,程序員不用制作自己的啟動程序。自動初始化CPU和外設(shè)后,調(diào)用main函數(shù)。
而嵌入式C語言搭載微處理器與普通PC機(jī)器不同,要求嵌入式系統(tǒng)的啟動程序:要能對搭載微處理器的硬件平臺和所需數(shù)據(jù)進(jìn)行初始化操作。所以做嵌入式開發(fā)的程序員一定要制作特定的啟動程序。
2.存儲空間
RAM:隨機(jī)存取存儲器是與CPU直接交換數(shù)據(jù)的內(nèi)部存儲器。它可以隨時讀寫,而且速度很快。
ROM:只讀存儲器。ROM所存數(shù)據(jù)在工作過程中只能讀出,而不像隨機(jī)存儲器那樣能快速地、方便地加以改寫。ROM所存數(shù)據(jù)穩(wěn)定,斷電后所存數(shù)據(jù)也不會改變。
RAM和ROM相比,兩者的最大區(qū)別是RAM在斷電以后保存在上面的數(shù)據(jù)會自動消失,而ROM不會自動消失,可以長時間斷電保存。如果需要保存數(shù)據(jù),就必須使用ROM(例如硬盤)。
對于普通C程序,操作系統(tǒng)將程序和數(shù)據(jù)從外部存儲設(shè)備載入RAM中運(yùn)行。代碼、數(shù)據(jù)、堆棧都在RAM中。
對于嵌入式C程序,因沒有通用的操作系統(tǒng),嵌入式系統(tǒng)必須先將代碼設(shè)置到ROM中,將數(shù)據(jù)、堆棧設(shè)置到RAM中才可以運(yùn)行。
3.對于硬件的訪問、資源的限制等
對于普通C,操作系統(tǒng)對計算機(jī)硬件設(shè)備進(jìn)行操作,應(yīng)用程序可以通知操作系統(tǒng)執(zhí)行某個具體的動作,以便使應(yīng)用程序間接的通過操作系統(tǒng)對硬件進(jìn)行操作。
對于操作系統(tǒng)是怎樣控制硬件設(shè)備的只需大致了解即可,此過程為應(yīng)用程序?qū)瘮?shù)接口調(diào)用的過程,這一過程稱為系統(tǒng)調(diào)用,通過系統(tǒng)提供的接口函數(shù)就可以指揮操作系統(tǒng)來工作了。
而嵌入式系統(tǒng)在訪問硬件時,必須編寫直接操作硬件的應(yīng)用程序。
由于在嵌入式系統(tǒng)中使用小而耗電的組件,嵌入式系統(tǒng)具有有限的ROM和RAM以及較少的處理能力,因此在嵌入式C中編寫程序時應(yīng)該注意有限的資源。
在C語言中,PC機(jī)可以訪問系統(tǒng)操作系統(tǒng),存儲器等,可以利用所有計算機(jī)資源。
以上介紹的就是C語言與嵌入式C語言的區(qū)別了,既然都準(zhǔn)備去學(xué)嵌入式了,那么對于c語言也是要搞清楚的,要不等你真正學(xué)習(xí)了嵌入式也還是不知道怎么做。

