以下內容是我向一位在外企工作多年的大哥諮詢的,希望對嵌入式的童鞋有所幫助!
其實嵌入式開發涵蓋面非常廣泛,要掌握的知識也非常豐富。結合我自己的實際,其實在實際工作中用到的也就是很少的一塊。我換過幾次工作,每次換工作都是一次全新的學習過程。我到底學了什麼,稍後給你説。
你問到的問題:嵌入式課程體系,不同的培訓機構可能説法不一樣。就我的理解來説,嵌入式開發不外乎兩個大的方向:軟件,硬件。
首先來説硬件,包括電子系統設計,電路設計。這個方向需要長時間的經驗積累,一個硬件工程師做個7、8年才能積累一些有價值的經驗。硬件設計中又有前端 (模擬)和後端(數字)之分,目前國內的很多模擬高手都是在外企做過多年的。關於硬件,我瞭解有限,只能給你説這些了。
再來説説軟件。軟件有點短平快的感覺,就是起點相對較低,上手較快,且社會上需求量大。軟件設計的在嵌入式領域又分為底層驅動和上層應用兩個方向。上層應 用難度低,且可以脱離硬件平台的限制,想對應的,發展方向就不是很明朗。底層驅動需要對硬件有基本瞭解,可以説是介於軟件和硬件之間的設計開發,難度較 大,靈活性高。軟件開發的最高境界就是操作系統。
簡單的瞭解了以上基本信息,再回到你的問題上來:嵌入式課程體系。可以把學習分為兩個步驟:基礎學習和專業學習。
基礎學習的課程自然會包括:模擬電路,數字電路,電路等。但是當你打開模擬電路這本書的時候,你會發現這門課程的理論性特別強,單單是看這一門課就足以 令人望而卻步啦。數字電路簡單,應該不是問題,還有就是電路,西交大邱關源編寫的那套教材,也是晦澀難懂。所以,基礎學習可以是個長期積累的過程,沒有必 要從零開始。遇到問題查找一下教材就可以了,這些知識不是必須的。但是另外兩門課程卻是必須要從零開始的必經之路:C語言程序設計 (譚浩強)和微機原理。這兩本書應該爛讀。嵌入式開發的軟件和硬件基礎全在裏面了。有了編程基礎以後,仔細研讀“數據結構”,這對軟件開發十分必要。
專業學習就要在實踐中展開了。當然,在基礎學習階段,你也可以以某一款單片機來學習,會起到事半功倍的效果。每次換工作,其實都是在變更開發平台和操作系 統,這個是需要不斷更新的,但是套路是類似的,所以上手就很快了。所以在這個階段,你會越來越多的發現,軟件編程的本質就是操作系統。在做過一個項目之 後,再次閲讀“操作系統”會有更多領悟。
以上是我的一些感受,供你參考。要想在這個方向發展,要耐得住寂寞,多多積累經驗。