1. 程式人生 > >TP移植和除錯思路

TP移植和除錯思路

一,硬體管腳

VCC

GND

I2C_SCL

I2C_SDA

INT

RST

二,TP驅動中input子系統和i2c driver知識點描述

input子系統註冊流程:

        1.分配一個input_dev結構體input_dev = input_allocate_device()

        2.使用set_bit函式設定input_dev

        3.註冊input_register_device(input_dev結構體);

i2c driver註冊流程:

        1.定義一個i2c_driver的結構體

        2.實現i2c_driver結構體中的probe、remove等函式和driver結構體,結構體例子如下

               static struct i2c_driver gsl_ts_driver = {                             .driver = {                                                    .name = GSLX680_I2C_NAME,                                                    .owner = THIS_MODULE,                                                    .of_match_table = GSLX_match_table,                               },                             .probe        = gsl_ts_probe,                             .remove     = gsl_ts_remove,                };     

              關於上述結構體中driver成員的of_match_table 的實現如下:

              static const struct of_device_id GSLX_match_table[] = {                         {.compatible = "gslx,gl680",},                         {},               };

        3.module_i2c_driver(gsl_ts_driver );註冊i2c_driver 結構體。

         完成上述3個步驟當驅動載入時會比對.compatible = "gslx,gl680"這一項跟DTS中的這一項字串是否相同,如果相同                   probe函式就會被呼叫。

在TP驅動中包含了input子系統和i2c driver,他們之間的關係是在i2c driver的probe函式中實現的input子系統。input子系統和i2c driver 在TP的driver中都已經實現,在這裡主要是瞭解input和i2c driver的基本流程。

三、TP移植思路

      上述已經說過input是在i2c driver的probe裡面來實現,所以說TP drvier就是一個i2c架構的driver,要按照i2c driver的架構新增進核心。

        1.在DTS中實現device裝置節點資訊。主要包括:

                         i2c 裝置地址

                         i2c的硬體管腳要配置正確

        2.將DTS中的device節點和driver連線到一起。

                 需要把compatible這一項的字串設定為和driver中這一項的字串相同

        3.修改Makefile和config檔案把driver編譯進核心

四、除錯思路

        1.如果i2c driver載入成功i2c管腳上會有訊號輸出,可通過示波器來抓取波形分析i2c的資料,第一個資料為i2c device地址左移一位+0/1(表示i2c是寫資料還是讀資料),依次來判斷i2c是否調通。如果沒有訊號建議把i2c硬體管腳和device斷開來除錯,然後先保證i2c管腳的配置是否正確,再確定i2c driver被正確載入。

        2.i2c 可以傳送資料之後,TP driver初始化是否正確,因為使用TP不同所以這裡建議從probe函式中一步一步來除錯。

        3.TP初始化完成點選螢幕應該有中斷訊號產生,如果沒有中斷產生,請斷開TP進行除錯先確保平臺端gpio能正常產生中斷。

        4.TP可以工作之後可能會有報點不正確等問題,請確保你解析度和螢幕解析度相同,排查是否是x、y反向等問題。