我的嵌入式之旅 — 如何學習嵌入式開發



一、嵌入式系統的分層與專業的分類

    嵌入式系統分爲4層,硬件層、驅動層、操作系統層和應用層。

  1、硬件層,是整個嵌入式系統的根本,如果現在單片機及接口這塊很熟悉,並且能用C和彙編語言來編程的話,從嵌入式系統的硬件層走起來相對容易,硬件層也是驅動層的基礎,一個優秀的驅動工程師是要能夠看懂硬件的電路圖和自行完成CPLD的邏輯設計的,同時還要對操作系統內核及其調度性相當的熟悉的。但硬件平臺是基礎,增值還要靠軟件。
    硬件層比較適合於,電子、通信、自動化、機電一體、信息工程類專業的人來搞,需要掌握的專業基礎知識有,單片機原理及接口技術、微機原理及接口技術、C語言。
    2、驅動層,這部分比較難,驅動工程師不僅要能看懂電路圖還要能對操作系統內核十分的精通,以便其所寫的驅動程序在系統調用時,不會獨佔操作系統時間片,而導致其它任務不能動行,不懂操作系統內核架構和實時調度性,沒有良好的驅動編寫風格,按大多數書上所說添加的驅動的方式,很多人都能做到,但可能連個初級的驅動工程師的水平都達不到,這樣所寫的驅動在應用調用時就如同windows下我們打開一個程序運行後,再打開一個程序時,要不就是中斷以前的程序,要不就是等上一會才能運行後來打開的程序。想做個好的驅動人員沒有三、四年功底,操作系統內核不研究上幾遍,不是太容易成功的,但其工資在嵌入式系統四層中可是最高的。
    驅動層比較適合於電子、通信、自動化、機電一體、信息工程類專業尤其是計算機偏體系結構類專業的人來搞,除硬件層所具備的基礎學科外,還要對數據結構與算法、操作系統原理、編譯原理都要十分精通了解。

   3、操作系統層,對於操作系統層目前可能只能說是簡單的移植,而很少有人自己來寫操作系統,或者寫出缺胳膊少腿的操作系統來,這部分工作大都由驅動工程師來完成。操作系統是負責系統任務的調試、磁盤和文件的管理,而嵌入式系統的實時性十分重要。據說,XP操作系統是微軟投入300人用兩年時間才搞定的,總時工時是600人年,中科院軟件所自己的女媧Hopen操作系統估計也得花幾百人年才能搞定。因此這部分工作相對來講沒有太大意義。

   4、應用層,相對來講較爲容易的,如果會在windows下如何進行編程接口函數調用,到操作系統下只是編譯和開發環境有相應的變化而已。如果涉及 Java方面的編程也是如此的。嵌入式系統中涉及算法的由專業算法的人來處理的,不必歸結到嵌入式系統範疇內。但如果涉及嵌入式系統下面嵌入式數據庫、基於嵌入式系統的網絡編程和基於某此應用層面的協議應用開發(比如基於SIP、H.323、Astrisk)方面又較爲複雜,並且有難度了。

二、學習路線

編寫裸機程序→掌握uCos、VxWorks之類的小型RTOS→Linux、Android等大型系統的移植和裁剪

推薦書籍:《深入理解linux內核》《linux內核情景分析》《linux內核設計與實現》《Linux設備驅動程序》+ 內核源碼

硬件設計工具

電路圖設計:Altium Designer (原Protel),Cadence(高速總線設計專用)

CPLD設計:Quartus Ⅱ

軟件編程工具

keil uvision4,IAR Embedded Workbench IDE

三、建議

學習板是要買一塊的,有條件的話還是上培訓,這是花錢買時間。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章