2、軟件開發(fā)一般指在已經(jīng)安裝了像或linux的電路板上編寫應(yīng)用,軟件開發(fā)不直接編寫硬件驅(qū)動,因?yàn)轵?qū)動已經(jīng)被操作系統(tǒng)實(shí)現(xiàn)了,軟件開發(fā)注重邏輯功能的實(shí)現(xiàn),比如要實(shí)現(xiàn)拍照,只需調(diào)用攝像頭驅(qū)動即可。
嵌入式系統(tǒng)與普通計算機(jī)在硬件、軟件、程序開發(fā)方面有何不同?
首先,嵌入式技術(shù)被定義為“專用”計算機(jī)技術(shù)。這個專用是指一個特定的應(yīng)用,如網(wǎng)絡(luò)、通信、音頻、視頻、工業(yè)控制等。從學(xué)術(shù)角度來說,嵌入式系統(tǒng)是以應(yīng)用為中心,以計算機(jī)技術(shù)為基礎(chǔ),軟硬件可裁剪,適用于對功能、可靠性、成本、體積、功耗有嚴(yán)格要求的特殊計算機(jī)系統(tǒng)。2.分層嵌入式系統(tǒng)分為四層:硬件層、驅(qū)動層、操作系統(tǒng)層和應(yīng)用層。1.硬件層是整個嵌入式系統(tǒng)的基礎(chǔ)。如果現(xiàn)在對單片機(jī)和接口比較熟悉,可以用C和匯編語言編程的話,從嵌入式系統(tǒng)的硬件層走起來相對容易,這也是驅(qū)動層的基礎(chǔ)。一個優(yōu)秀的驅(qū)動工程師應(yīng)該能夠自己理解硬件電路圖并完成CPLD的邏輯設(shè)計,同時對操作系統(tǒng)內(nèi)核及其調(diào)度也相當(dāng)熟悉。但硬件平臺是基礎(chǔ),增值要靠軟件。硬件層適合電子、通信、自動化、機(jī)電一體化、信息工程專業(yè)的人。他們需要掌握基本的專業(yè)知識,如單片機(jī)原理與接口技術(shù)、微型計算機(jī)原理與接口技術(shù)、C語言等。2.驅(qū)動層,這部分比較難。驅(qū)動工程師不僅要能看懂電路圖,還要對操作系統(tǒng)內(nèi)核非常精通,這樣在系統(tǒng)調(diào)用的時候,他寫的驅(qū)動就不會獨(dú)占操作系統(tǒng)時間片,導(dǎo)致其他任務(wù)無法移動。他不懂操作系統(tǒng)內(nèi)核架構(gòu)和實(shí)時調(diào)度,也沒有好的驅(qū)動編寫風(fēng)格。很多人可以像大多數(shù)書里提到的那樣,通過添加驅(qū)動程序來實(shí)現(xiàn)。但是即使是初級的驅(qū)動工程師也達(dá)不到這個水平,所以這樣寫出來的驅(qū)動就好比我們打開一個程序運(yùn)行然后再打開另一個程序,要么中斷前面的程序,要么等一段時間再運(yùn)行后面打開的程序。做一個好的司機(jī)沒有三四年的經(jīng)驗(yàn),不學(xué)習(xí)操作系統(tǒng)內(nèi)核的前幾個部分也不容易成功,但是它的工資是嵌入式系統(tǒng)四層里面最高的。驅(qū)動層適合于專攻電子、通信、自動化、機(jī)電一體化、信息工程,特別是計算機(jī)偏架構(gòu)的人。除了硬件層的基礎(chǔ)學(xué)科,他們還應(yīng)該非常精通數(shù)據(jù)結(jié)構(gòu)和算法、操作系統(tǒng)原理和編譯原理。3.目前操作系統(tǒng)層只能說是簡單的移植,但是很少有人是從編寫的操作系統(tǒng)來的,或者是編寫缺胳膊少腿的操作系統(tǒng)。這項(xiàng)工作大部分是由駕駛工程師完成的。操作系統(tǒng)負(fù)責(zé)調(diào)試系統(tǒng)任務(wù),管理磁盤和文件,嵌入式系統(tǒng)的實(shí)時性非常重要。據(jù)說,XP操作系統(tǒng)花了微軟300個人兩年時間才完成,總工作時間為600人工年。中科院軟件所的女媧操作系統(tǒng),估計要幾百人年才能搞定。所以這部分工作相對來說意義不大。4.應(yīng)用層相對容易。如果能調(diào)用操作系統(tǒng)下的編程接口函數(shù),編譯開發(fā)環(huán)境只會相應(yīng)改變。涉及Jave的編程也是如此。嵌入式系統(tǒng)中涉及算法的東西都是由專門研究算法的人來處理的,不一定非要?dú)w入嵌入式系統(tǒng)的范疇。但如果涉及到嵌入式系統(tǒng)下的嵌入式數(shù)據(jù)庫、基于嵌入式系統(tǒng)的網(wǎng)絡(luò)編程以及基于某個應(yīng)用層的協(xié)議應(yīng)用開發(fā)(如SIP、H.323等。),很復(fù)雜,也很難。
嵌入式軟件開發(fā)與軟件開發(fā)有什么區(qū)別
1.嵌入式軟件開發(fā)是指單片機(jī)、ARM、FPGA的編程。如果沒有或操作系統(tǒng),就是功能相對簡單的操作系統(tǒng),比如ucos。總之,嵌入式軟件開發(fā)與硬件密切相關(guān),所以一般需要編寫硬件驅(qū)動程序。2.軟件開發(fā)一般是指在已經(jīng)安裝了image或linux的電路板上編寫應(yīng)用程序。軟件開發(fā)不直接寫硬件驅(qū)動,因?yàn)轵?qū)動已經(jīng)被opera實(shí)現(xiàn)了