linux驅動入門之觸控螢幕驅動

2021-06-17 23:33:20 字數 3549 閱讀 2757

廢話不多說,直接上檔案

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...