除錯驅動思路 MTK除錯CTP

2021-07-15 13:27:34 字數 1271 閱讀 6445

拿到ctp和相應的驅動**,原廠的驅動**差別很大,有的廠家的驅動**寫得規規矩矩,注釋清楚,有的寫的就是一團糟,甚至還存在著邏輯錯誤。

拿到ctp 驅動**後,直接將**合進去,然後看效果,不管怎麼觸控,ctp的列印一直不出來。。看了看,**也沒什麼問題,最後用示波器看中斷腳電平,

發現一直為高,高為無效。然後用萬能表看了看ctp的vcc,發現居然為低,,原來ctp的電源都有問題,根本就沒起來工作。

1 解決電源問題

然後看原理圖,發現ctp的vcc腳不是直接接電源,而是接cpu的引腳,這引腳必須用**控制才能拉高。。然後在poweron 和init函式裡加上了啟動電源腳2.8v

的**,在poweroff裡加上了取消電源腳2.8v的**,,然後編譯,燒錄,開機,用手觸控,發現列印出現了,但是座標有問題。。

2 轉換座標

ctp的座標範圍是2880*2880,而lcd是240*240,這就需要將ctp的原始座標轉換為lcd的座標,轉換很簡單,因為ctp和lcd的原點都一樣,都是在左上角,

轉換演算法: new = old * 240 / 2880; 這樣,座標轉換就ok了。

3 除錯滑動效果

列印是有了,但是滑動介面,有時可以滑動,有時不行,,以為是mmi的應用有問題,但是看了很久,也沒發現什麼問題,而且mmi touch panel**是mtk自帶的。

後來發現mmi touch panel **中有個函式是用來判斷 ctp事件是down還是up,

true 表示down;

false 表示up;

用手觸控ctp,發現列印中只有down事件,沒有up事件。

忽然想起左邊同事說,每次只有ctp driver發生錯誤,才會正常滑動。。心中便有了個疑問,驅動**是不是還有問題,是不是在read all point那裡沒有正常地返回false,

導致up事件一直出現不了。

對照mtk **商coretek給的另一套ctp驅動**,發現,原廠的**確實沒有在正確讀到座標時返回false,原廠作者應該是把false當成錯誤了,其實false表示up事件。

在讀取正確座標後,新增 return false; 編譯,燒錄,滑動,效果終於正常了。。。。

總結一下,除錯硬體驅動不能一上來就直接看效果,總結一下,大致的步驟如下:

1 在**中配置好相關的引腳(mtk使用drvtool來配置)

2 新增**後,先看硬體的vcc和其他狀態腳是否正常。

3 如有中斷產生,用示波器看中斷的電平變化。

4 驅動調好後,再看應用層的效果。

如果驅動一直調不好,可以請原廠的fe過來看看。

MTK平台驅動除錯指南

gpio設定篇 一 gpio有關的函式 1 gpio modesetup 函式原型 void gpio modesetup kal uint16 pin,kal uint16 conf dada 功能 設定gpio的工作模式是作為gpio,還是作為專有功能介面。引數 pin gpio 的pin腳號,...

MTK平台驅動除錯指南

gpio設定篇 一 gpio有關的函式 1 gpio modesetup 函式原型 void gpio modesetup kal uint16 pin,kal uint16 conf dada 功能 設定gpio的工作模式是作為gpio,還是作為專有功能介面。引數 pin gpio 的pin腳號,...

Mtk開機除錯步驟

開機除錯 1 將原來使用的mtk版本的tools目錄下的如下檔案 資料夾拷貝到tools目錄下 msys mingw make.exe 2 將目錄plutommi customer resgenerator下的exe檔案拷貝到新版本的plutommi customer resgenerator目錄下...