廢話不多說,直接上檔案
1.tq2440_ts_sk.c
#include #include #include #include #include #include #include #include #include #include #include #include //#include //#include #include #include #include #include struct s3c_ts_regs ;
static struct input_dev *s3c_ts_dev;
static volatile struct s3c_ts_regs *s3c_ts_regs;
static struct timer_list ts_timer;
static void enter_wait_pen_down_mode(void)
static void enter_wait_pen_up_mode(void)
static void enter_measure_xy_mode(void)
static void start_adc(void)
static int s3c_filter_ts(int x, int y)
static void s3c_ts_timer_function(unsigned long data)
else }
static irqreturn_t pen_down_up_irq(int irq, void *dev_id)
else
return irq_handled;
}static irqreturn_t adc_irq(int irq, void *dev_id)
else
cnt = 0;
enter_wait_pen_up_mode();
/* æô¶¯¶šê±æ÷žšàí³€°ž/»¬¶¯µäçé¿ö */
mod_timer(&ts_timer, jiffies + hz/100);
} else
} return irq_handled;
}static int s3c_ts_init(void)
static void s3c_ts_exit(void)
module_init(s3c_ts_init);
module_exit(s3c_ts_exit);
module_license("gpl");
2.makefile
kern_dir = /home/stevenking/workspace/code/linux-2.6.39
all:
make -c $(kern_dir) m=`pwd` modules
clean:
make -c $(kern_dir) m=`pwd` modules clean
rm -rf modules.order
obj-m += tq2440_ts_sk.o
3.除錯筆記
安裝tslib:
(1)準備工作:
yum install autoconf
yum install automake
yum install libtool
(2)編譯:
tar xzf tslib-1.4.tar.gz
cd tslib
./autogen.sh
mkdir tmp
echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache
./configure --host=arm-linux --cache-file=arm-linux.cache --prefix=$(pwd)/tmp
make
make install
(3)安裝:
cd tmp
cp * -rf /開發板根檔案系統的lib資料夾中
使用:安裝lcd.ko/tq2440_ts_lcd.ko,即lcd和ts驅動
insmod cfbcopyarea.ko
insmod cfbfillrect.ko
insmod cfbimgblt.ko
insmod sk_lcd.ko
insmod
tq2440_ts_lcd.ko
.ko1.
修改 /etc/ts.conf第1行(去掉#號和第乙個空格):
# module_raw input
改為:module_raw input
將核心源**裡的include/linux/input.h中的
#define ev_version 0x010001
改為:#define ev_version 0x010000
否則selected device is not a touchscreen i understand
2.export tslib_tsdevice=/dev/event1
export tslib_tsdevice=/dev/input/event0
export tslib_calibfile=/etc/pointercal
export tslib_conffile=/etc/ts.conf
export tslib_plugindir=/lib/ts
export tslib_consoledevice=none
export tslib_fbdevice=/dev/fb0
ts_calibrate
ts_test
補充:ts驅動直接加入核心
1.kconfig
config touchscreen_tq2440_sk
tristate "tq2440 generic touchscreen input driver by steven king"
depends on arch_s3c2410 || samsung_dev_ts
select s3c_adc
help
touch srceen driver by steven king 8/18/2013.
2.makfile
obj-$(config_touchscreen_tq2440_sk)+= tq2440_ts_sk.o
3.使用
此時 裝置名會變化 將之前的
vi /etc/profile 加入
# tslib
export user logname ps1 path
export tslib_tsdevice=/dev/event0 注意,此時為event0,與之前的裝置名不一樣了
export tslib_calibfile=/etc/pointercal
export tslib_conffile=/etc/ts.conf
export tslib_plugindir=/lib/ts
export tslib_consoledevice=none
export tslib_fbdevice=/dev/fb0
觸控螢幕驅動
輸入子系統體系 核心層 linux dir drivers input input.c 提供最核心函式 裝置事件層 linux dir drivers input evdev.c 提供handler 提供輸入裝置產生的原始資料並上報給應用程式,這適用於 所有輸入裝置,該觸控螢幕也不例外 編寫基於輸入...
Linux 觸控螢幕驅動程式設計
一 輸入子系統模型解析 1.為什麼需要輸入子系統 完成乙個裝置驅動基本上需要三步 1.註冊乙個字元裝置模型 2.open 或者read對使用者程式的操作 3.對不同的硬體裝置進行操作 但這時候為求方便發現了乙個不同硬體的共性 所以引進了輸入子系統的概念 2.輸入子系統模型的概述 3.輸入子系統模型的...
QT 觸控螢幕 驅動
要 本文主要介紹了在嵌入式 linux 系統下基於 qt embeded 的觸控螢幕驅動的設計,通過對 linux 裝置 驅動和qt embedded裝置驅動介面的工作原理和機制介紹,並結合大量源 進行分析,提出了基於qt embeded 的觸控螢幕驅動的開發方案。linux 下的裝置驅動基礎 li...