嵌入式系統(tǒng)無疑是當前最熱門最有發(fā)展前途的IT應用領域之一。嵌入式系統(tǒng)是軟硬結合的東西,搞嵌入式開發(fā)的人有兩類。另一類是學軟件、計算機專業(yè)出身的人,主要從事嵌入式操作系統(tǒng)和應用軟件的開發(fā)。其實嵌入式人才稀少,根本原因可能是大多數(shù)人無條件接觸,這需要相應的嵌入式開發(fā)板和軟件,另外需要有經驗的人進行指導開發(fā)流程。哪天若想創(chuàng)業(yè),搞自已的產品,那么嵌入式是一個不錯的主意,這可不像應用軟件那樣容易被盜版。
嵌入式軟件開發(fā)與軟件開發(fā)有什么區(qū)別
1.嵌入式軟件開發(fā)是指單片機、ARM、FPGA的編程。如果沒有或操作系統(tǒng),即使有,也是功能相對簡單的操作系統(tǒng),比如ucos??傊?,嵌入式軟件開發(fā)與硬件密切相關,所以一般需要編寫硬件驅動程序。2.軟件開發(fā)一般是指在已經安裝了image或linux的電路板上編寫應用程序。軟件開發(fā)不直接寫硬件驅動,因為驅動已經被操作系統(tǒng)實現(xiàn)了。軟件開發(fā)側重于邏輯功能的實現(xiàn)。比如拍照,調用相機驅動就可以了。
嵌入式軟件開發(fā)與軟件開發(fā)有什么不同?
嵌入式軟件開發(fā)重在硬件,軟件開發(fā)重在軟件。嵌入式軟件主要是將軟件嵌入到嵌入式系統(tǒng)中,而軟件開發(fā)就是開發(fā)軟件,直接在電腦上運行。嵌入式系統(tǒng)的核心是系統(tǒng)軟件和應用軟件。由于存儲空間有限,要求軟件代碼緊湊可靠,且大多對實時性有嚴格要求。
什么是嵌入式開發(fā)?
嵌入式開發(fā)有很多層次。大致有以下幾個步驟:硬件之路。第一步是嵌入式開發(fā)pcb設計,一般是開發(fā)板的電路縮減和擴展。根據(jù)開發(fā)板的原理圖,畫出PCB和封裝庫,自己設計電路。第二步是SOPC技術,一般用FPGA和CPLD開發(fā)。它使用VHDL等硬件描述語言開發(fā)專用arm芯片,自己編寫邏輯電路,基于or FPGA開發(fā)。Arm9的第三步是SOC設計,分為前端和后端實現(xiàn)。這是硬件設計的核心技術芯片設計。能做到這一點的已經不是普通的技術人員了。arm9開發(fā)板軟件之路的第一步就是寫和修改。通過這一步,熟悉ARM硬件結構,學習ARM匯編語言,閱讀ARM芯片手冊。感覺像操作51單片機一樣操作ARM芯片。這一步最好的兩個參考資料是芯片手冊和源代碼。第二步,系統(tǒng)移植,驅動發(fā)展。我只做過linux,所以也推薦學習嵌入式linux系統(tǒng)。作為一個標準系統(tǒng),它是開源的,可以獲得很多學習資料。操作系統(tǒng)是整個計算機科學的核心,要熟悉它并不容易。學習驅動開發(fā)沒有捷徑,只有多讀代碼,多寫代碼,熟悉系統(tǒng)API..linux和linux是不可多得的書,值得一讀。第三步是應用程序的編寫,各種GUI的移植,qt,這些都是被廣泛采用的。兩個思路差不多,可以熟悉一個。在軟件道路中,驅動系統(tǒng)應該是最深入的部分,不是短時間就能掌握的。這需要勇氣和耐心。嵌入式開發(fā),軟硬件結合,因為硬件條件比PC的差很多,肯定會遇到很多問題,所以實踐的勇氣更重要。有問題就解決問題,無數(shù)次的實驗可能是解決問題的唯一方法。
嵌入式Linux內核開發(fā)和驅動開發(fā)是不是都屬于系統(tǒng)開發(fā)??或者都屬于底層開發(fā)??謝謝了!
驅動是內核的一部分,但和系統(tǒng)開發(fā)有很大的不同。在系統(tǒng)的開發(fā)中,重點是了解CPU指令和硬件架構,然后通過軟件程序設計一套分配硬件資源的系統(tǒng)。驅動程序通常充當系統(tǒng)和特定硬件之間的橋梁,當然也有例外,如虛擬設備或過濾驅動程序。從應用層來看,這種開發(fā)屬于底層開發(fā)。但是從硬件層面來說,這些并沒有那么低級。目前大部分企業(yè)都在進行系統(tǒng)移植或者定制硬件驅動開發(fā),但是做這樣的工作并不是很快,需要很長時間的學習。技術水平從零到達到工作要求,估計需要3-5年,看個人機會和心態(tài)。