1. 程式人生 > >安卓驅動開發要乾的那些事

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

建議:如果是從未接觸過驅動開發的人想入這行,建議買本宋寶華的書先看上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階段了。