嵌入式開發的門檻相對較高,對程式設計師的要求一般都是對底層感興趣,學習能力、動手能力要強,對問題能夠從全域性和細節去把握,有很強的系統分析和設計能力。從工程師起步,一般有幾個發展方向,乙個是成為技術方面的核心,領域內的專家;另乙個是從專案中鍛鍊起來,成為專案主管或是管理型人才;再有就是利用自己的技術及行業經驗去創業。
硬體和軟體的發展方向是不同的。說說軟體需要學習的知識。
雖然說搞嵌入式軟體更多時候是在實際的工作中學習的,但一些重要的基礎知識不可或缺。
1. 計算機組成/微機原理
主要是為了了解微型計算機的硬體工作原理,明白cpu、匯流排、i/o、儲存器等一些關鍵結構是怎麼工作的,雖然是很枯燥的知識,但是對熟悉外圍裝置硬體工作方式,及作業系統,軟體架構的設計及優化相當關鍵。
2. 作業系統
嵌入式產品應用比較廣泛的是linux和wince。但作業系統的內部設計原理都是殊途同歸。首先要去學習的是作業系統原理,去了解程序通訊、記憶體管理、檔案系統等幾個重要的部分,因為這些在軟體開發尤其是核心驅動開發時會用到。接下來可以去熟悉至少一種主流的作業系統,linux是乙個很好的選擇,去了解它的核心架構,裝置驅動架構,如何去編譯,裁剪,編寫應用程式,以及如何使用在具體的嵌入式產品上。
3. 數位電路
學習這方面的知識主要是了解一些基本的電路知識,如閘電路、邏輯電路、儲存器、暫存器,為了更好的理解嵌入式晶元,儲存器,外圍裝置等硬體的設計,但往往在軟體開發中未必能用的到。因為大部分硬體都提供了很完整的軟體介面。
4. 程式語言:c語言和彙編
對於c語言本身的基礎來說,無非是把結構化,函式,陣列,指標弄熟,但是嵌入式開發對c語言應用的要求會更高。要對記憶體分配,檔案訪問,暫存器訪問,預處理指令,中斷處理程式等等相當熟悉,這些都是在使用中要注意的細節問題。c語言對程式的優化也很重要,而這些往往是需要從全域性去考慮。彙編一般是和處理器的指令集相關的,可以更好的去理解處理器的工作原理,往往是用在一些需要效率的地方,如系統的初始化。
5. 資料結構和演算法
資料結構在嵌入式開發中也很重要,比如說作業系統裡的很多實現都用到了具體的演算法。基本的資料結構需要掌握,如各種鍊錶,樹,圖等等;而演算法的學習需要數學知識作為鋪墊,用計算機語言去實現。對於軟體從業人員來說,演算法終究是乙個工具,在實際應用時再深入挖掘也可。
6. 軟體工程/軟體測試/專案管理基礎
這些是軟體開發人員的必備知識。
7. 開發平台
嵌入式的開發平台不侷限於一種作業系統,因此要熟悉各種作業系統下的命令、編輯器及開發工具,這一點往往被很多人忽視。舉個例子,linux下的程式設計師開發環境往往是按自己的習慣搭建,熟練掌握一種編輯器如vim/emacs可以大幅度提高工作效率。磨刀不誤砍柴工。
嵌入式領域的方向是很多的,它所應用到的行業範圍也很廣。因此除了這些基礎的知識以外,在具體的應用中可能還需要一些其它的知識,這些知識的每一種都可以研究的很深,舉幾個例子。
1. 核心,驅動及中介軟體
核心開發和驅動本身就是乙個方向,驅動和硬體介面相關,而核心的修改和移植更是需要對os有很深的理解。至於中介軟體,一般是基於os或存在於os和應用程式之間的庫,最典型的就是基於linux的android。
2. 通訊協議
通訊協議有很多種,經常用到的有網路通訊協議,無線通訊協議,串列埠/usb通訊協議等等。
4. 資訊保安
如加密技術,身份認證,數字證書等等。
5. 行業知識
和具體行業或領域相關的知識,如通訊、工控、電子等等。
這裡有乙個我認為不錯的學習步驟:
1. 基礎知識中,計算機組成、作業系統、程式語言和資料結構是必需的。
2. 找一種cpu體系,了解其核心架構,學習指令集,比如說arm。
3. 找一種os,如linux,或是傳統rtos,如nucleus、ecos,讀原始碼和文件,理解os內部實現,包括程序,任務,訊息機制,記憶體管理,裝置驅動,中斷等核心內容。
4. 找一塊成熟的開發板,板級資料要齊全,熟悉嵌入式軟體開發流程。
5. 在專案過程中深入學習其它的技術。
總之,這些知識的學習不是一蹴而就的,過程會很漫長,也沒有什麼特別的技巧。需要去看大量的技術文件和原始碼,而這些文件大部分又都是英文的。在工作和做具體專案的過程中會學習的比較快,理論結合實踐才是王道。
我理解的嵌入式幾個發展方向
1 手持終端應用 這應該類似於掌上遊戲系統,手機類應用,主要以圖形ui為主,同時兼顧網路通訊,因為手持終端,以後很可能是雲計算的終端,作為乙個大型系統 網遊,管理,erp,eip等 的終端存在。這部分的開發,我個人的理解應該向windows的開發理念靠攏,不管是用wince,還是s60,palm,或...
我理解的嵌入式幾個發展方向
首先給高同學道個歉,最近有點忙,沒有來得及回帖,被批評了,呵呵。neu 高林植 嵌入式學生 5小時前 希望老師可以認真看看我的問題 已發帖 我是乙個嵌入式專業的學生,在學校當中c c 學得還不錯,同時還學習了一些mfc,但是我實在很想知道想認真學習嵌入式應該是是乙個怎樣路線會比較好,我從大一公升大二...
嵌入式工程師的發展方向有哪些
嵌入式工程師分布在各行各業上面。這其中包括了消費電子 工業電子 汽車電子和軍用電子等等。從功能上面看,嵌入式本身包括了51 mcu soc soc baseband等很多形式。從開發的結構上看,有些同學專注於底層,比如boot 有些同學專注於核心 編譯器 cpu 驅動 還有一些同學專注於上層,比如協...