天天看點

安卓驅動開發要幹的那些事

從事安卓驅動開發快一年,寫這篇文章僅僅是為了給剛剛從事這行的兄弟們一點參考。

建議:如果是從未接觸過驅動開發的人想入這行,建議買本宋寶華的書先看上2個月,弄懂什麼是驅動,大緻要做哪些工作。安卓驅動開發入門建議先做傳感器的驅動開發,因為傳感器驅動開發架構清晰,相對簡單易于上手。

下面大緻講一下一個項目開發過程中驅動工程師要做的事情:

一:驅動移植

驅動移植要做兩件事:一是代碼的移植,二是代碼的調試。對于一個已經成熟的平台且公司之前開發過該平台,那麼這個階段就相對簡單了,這種情況下比較适合公司培養新人入手,了解驅動移植的過程。但是如果是一個新開發的平台,那麼工作就比較大了,期間遇到的問題會比較多。這個階段的目的就是使得外設能夠跑起來,手機系統能夠操作該外設。

下面以光距離傳感器ltr559在高通MSM8916平台為例進行具體的說明。

1:找到ltr559光距離傳感器代碼,這裡把握一個原則,最省事的是能夠直接找到該平台(這裡是MSM8916)已經調試成功的代碼,如果沒有則找LTR559廠商要源代碼,和LTR559規格書。

2:根據分類,将該代碼放到平台底版本合适的檔案夾下。這裡是/kernel/drivers/sensor/alsps/     ----qualcomm

  /kernel/drivers/misc/mediatek/alsps/   -----mediatek

根據平台在上面對應的目錄下建立一個ltr559檔案夾,然後把ltr559.c放到該檔案夾中

3:配置編譯檔案config 和makefile檔案

4:配置該外設:ltr559的裝置樹(一般是.dtsi檔案),mtk項目還需要配置dws.

檔案大緻路徑:/kernel/arch/arm(arm64)/boot/dts/項目名/平台名.dtsi檔案

裝置樹:通俗的講就是該裝置的一些相關的屬性,最重要的是要配置裝置樹是

屬性名compatible ---用于裝置與驅動的比對

slave裝置的 i2c 位址----用于cpu與外設通過I2C通信

gpio,中斷腳的配置等等

5:上面這些都做好後就可以開始編譯代碼了

根目錄下source build/envset    ---導入環境

lunch  任何選擇需要編譯的項目

make bootimage -j32  ---開始編譯核心(-j後面數字代表CPU核數)

6:接下來就是調試代碼了,實作該外設基本功能。調試過程中容易遇到的問題之後再講。

7:最後就是解bug階段了。