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