Android 驅動開發應該如何入門和學習成長?

還不懂 Linux 內核,之前都在做 Android 應用開發,現在想往 Android 驅動開發方向發展,請問一個在這方面沒什麼基礎的,如何比較好地成長起來,好的學習路線是什麼?


先了解Linux內核,Linux驅動開發。

來自CSDN pottichu的建議:

1. 熟悉linux C應用程序編程,熟悉常用的API等(這是基礎,很重要)

2. 學習LDD,LKD,這兩本書可以說是入門,也可以說是大綱,對驅動開發很有幫助。

3. 如果還有餘力和時間,就看看ULK。

相似的,羅昇陽給的建議是:

  1. Linux Kernel Development.
  2. 這本書的作者是Robert Love,目前最新的版本是第3版。這本書對Linux內核的設計和實現提供了一個總覽視圖,從概念上對Linux內核的各個子系統的設計目標和實現思路進行了清晰的描述,非常適合初學者閱讀。如果從軟體工程的角度來看,這本書就相當於是Linux內核的概要設計文檔。

  3. Understanding the Linux Kernel.
  4. 這本書的作者是Daniel P. Bovet和Marco Cesati,目前最新的版本是第3版。這本書對Linux內核的實現提供了更多的細節,詳細地描述了內核開發中用到的重要數據結構、演算法以及編程技巧,非常適合中高級讀者閱讀。如果從軟體工程的角度來看,這本書就相當於是Linux內核的詳細設計文檔。

  5. Linux Device Drivers.
  6. 這本書的作者是Jonathan Corbet, Alessandro Rubini和Greg Kroah-Hartman,目前最新的版本是第3版。這本書更加註重實際操作,它詳細地講解了Linux內核驅動程序的實現原理和實現方法,讀者可以跟著它來實際地編寫出自己的Linux驅動程序。閱讀了這本書之後,對我們後續去分析Android的專用驅動程序是有非常大的幫助的。

  7. Linux內核源代碼情景分析
  8. 這本書的作者是毛德操和胡希明,是中國人自己編寫的一本經典的Linux內核書籍。這本書最大的特點是從使用情景出發,對Linux內核的源代碼作了詳細的分析,幫助讀者把枯燥無味的源代碼給理順了。

然後嘛,了解一下Android的HAL吧,羅昇陽那本《Android系統源代碼情景分析》好像還不錯,也可以看看他的系列博客文章。

照著文章里的實例,實現,寫代碼練習,找一份這樣的工作。


推薦閱讀:

Arduino LED點陣之鱷魚爬-0x01
如何看待MIUI開始默認取消內存顯示?
如果通過一根OTG線和一根普通MICRO USB數據線把兩台安卓手機連起來,會出現什麼現象?
谷歌有沒有權利不允許華為的任何產品再使用他家的安卓系統?

TAG:Linux | 嵌入式系統 | Android | Linux開發 | 驅動程序開發 |