|
第一節(jié) input 輸入子系統(tǒng)簡單介紹 --- rockchip_gslX680_rk3168.c
觸摸屏驅(qū)動注冊到 input 子系統(tǒng)中后要遵循的框架結(jié)構(gòu)如下:
1.input dev 的注冊,參考 gsl_ts_init_ts()函數(shù);
2.input 事件的注冊,這部分沒有明顯的調(diào)用 input 子系統(tǒng)的 input_register_handler()函數(shù),說明是用的系統(tǒng)缺省注冊的 handler,即 evdev --- 一個原始的(raw)輸入設(shè)備事件。
圖1
第二節(jié) 電路原理圖介紹
下圖來源于文檔 3128_sdk_a02_20170325.pdf 中第 19 頁。
如下圖可以確定 TP 是通過 I2c 與 cpu 相互通信的,cpu 作為主設(shè)備,TP 作為從設(shè)備。TOUCH_INT 是用中斷的形式用作告訴 cpu 已經(jīng)有觸摸產(chǎn)生,cpu 可以從 I2c 接口讀數(shù)據(jù)了。TOUCH_RST 是用作觸摸的休眠/喚醒。
圖2
第三節(jié) TP 驅(qū)動代碼結(jié)構(gòu)
$(dir)\rk3128-source\kernel\drivers\input\touchscreen\rockchip_gslX680_rk3128.c
--- input device driver
$(dir)\rk3128-source\kernel\drivers\input\evdev.c
--- input event handler
第四節(jié) .config 文件的配置選擇
kernel 目錄中輸入 make ARCH=arm menuconfig 然后按下列步驟選擇
Device Drivers --->
Input device support--->
Touchscreens --->
<*> gslX680 touchscreen driver
選擇之后在.config 文件中會有如下項被設(shè)置:
CONFIG_TOUCHSCREEN_GSLX680=y
相應(yīng)的配置文件目錄位于:
X:\rk3128-study\rk3128-source\kernel\drivers\input\touchscreen\Kconfig
config TOUCHSCREEN_GSLX680
tristate "gslX680 touchscreen driver"
help
gslX680 touchscreen driver
第五節(jié) 實驗代碼
1.dts part:
代碼1
2.增加一個可以動態(tài)測試的函數(shù)到驅(qū)動中,用戶可以通過 adb shell 或者串口去輸入數(shù)據(jù)完成觸摸屏功能測試。
代碼2
3.測試命令
命令輸入路徑/sys/class/touchscreen_test
關(guān)閉觸摸功能:
echo sleep > touchscreen
echo wake > touchscreen
鏡像觸摸屏坐標:
echo mirror > touchscreen
4.代碼調(diào)試中遇到問題
觸摸掛上去后沒有反應(yīng):a.中斷產(chǎn)生了嗎?可以通過在中斷響應(yīng)函數(shù)中增加調(diào)試信 息;b.I2c 通信正常嗎?這個可能要接個示波器或 usb 邏輯分析儀去看波形是否正常。
第六節(jié) 實驗步驟 --- 鏡像后的坐標如何調(diào)節(jié)
cd /sys/class/touchscreen_test
echo mirror > touchscreen
第七節(jié) 實驗現(xiàn)象
點擊位置倒向,需要修改代碼
report_data()中的兩個地方 --- 自己做實驗了
文件下載請點擊:
5、觸摸屏驅(qū)動實驗.pdf
(446.7 KB)
2022-8-22 17:33 上傳
點擊文件名下載附件
下載積分: 積分 -1
|
|