嵌入式開發(fā)要學哪些?在這個技術(shù)瞬息萬變的年代,嵌入式技術(shù)毫無疑問也得緊跟技術(shù)發(fā)展,這對于初涉行業(yè)的新人而言,擺在面前的問題很明顯,嵌入式開發(fā)我得學習哪些技術(shù)點才能跟隨企業(yè)的腳步呢?我愿意談談我接近十年對嵌入式開發(fā)的看法。
我的職業(yè)生涯起步于嵌入式開發(fā),那時候在日企從事汽車的嵌入式開發(fā),后也曾當過三年的講師。不過現(xiàn)在依然混跡于嵌入式底層,以及android底層研發(fā)?赡苓是覺得研發(fā)才是我的愛。那么針對嵌入式開發(fā)要學哪些我簡單的說一下,僅代表當前主流觀點。
嵌入式開發(fā)作為新人,第一步C語言,有很多人自認為自己C語言很厲害,但是實際上一個從事嵌入式開發(fā)的老人,至少需要3-5年你才敢對C語言說精通,特別涉及到的常用的指針、數(shù)組、數(shù)據(jù)類型、運算符與表達式、控制語句時?你真的都懂么?這些是學習嵌入式基礎(chǔ)的知識。
第二步,有了這些代碼的基礎(chǔ)你才能能根據(jù)需求寫程序,也就是常說的應用層,應用層是相對簡單的。要有理解和編碼調(diào)試的能力,如系統(tǒng)編程、標準的I/O,文件I/O,庫的制作等等。一般而言這種應用層開發(fā)有1-2個月的時間都能學會。剩下的就是大量的編碼來提升自己的經(jīng)驗。但只會這些也能找到工作,但我相信你看完下面的發(fā)現(xiàn)那絕對不是你的夢想!
第三步,更高級的內(nèi)容也是難的內(nèi)容,前兩步更多是讓你會根據(jù)需求編碼,但是如何能讓你的程序能在硬件平臺上運行,這才是真正的難題。所以每當再進一步的話,我們會發(fā)現(xiàn)我們什么有很多的東西都運行的是Linux系統(tǒng),可是他們和我的PC運行的Linux有什么區(qū)別呢,為什么我電腦要用風扇而手機不用風扇呢,我們打開網(wǎng)頁查找手機的詳細參數(shù)的時候,會看到Cortex-A15 、四核 、ARM等等字眼,什么是ARM,什么是Cortex-A15,這需要進一步的了解。
了解完ARM之后,就需要利用開發(fā)板了。這時操作系統(tǒng)的移植又成了一個比較重要的內(nèi)容了,什么是bootloader,什么是kernel,什么是rootfs等等……。
花了很長時間系統(tǒng)做好了,發(fā)現(xiàn)板子上很多的什么不能用,怎么辦呢?這時我們需要寫一些驅(qū)動來驅(qū)動這些設備,這時我們需要知道,什么是字符設備驅(qū)動、塊設備驅(qū)動、網(wǎng)絡設備驅(qū)動,為了更好的寫驅(qū)動我們需要了解更多的硬件相關(guān)的東西,我們需要看懂芯片手冊,我們需要看懂原理圖,只有我們懂我們的設備,才能更好的驅(qū)動它。等等,這里就列舉更多的內(nèi)容了,因為還有很多。
所以對于嵌入式開發(fā)者來說,他們都經(jīng)歷了學習的痛苦。有句話說的好,不經(jīng)歷風雨怎么見彩虹。對于學習嵌入式我比較不贊成自學,他不同于一般的應用層開發(fā)。你會面臨很多問題。問百度?太慢了!來機構(gòu)學習雖然花了一部分錢,從時間成本和效率上來講,無疑還是比較值得的。