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