A20+Android EETI电阻屏调试记录

硬件平台:sen_A20

系统版本:Android 4.2.2

内核版本:linux3.3

固件版本:v1.2

电阻屏:17寸 EETIeGTouch (USB)

一、配置内核

(1)配置.config

1. CONFIG_INPUT_EVDEV2. CONFIG_INPUT_UINPUT3. CONFIG_HIDRAW ( for USB Interface )

可以使用make menuconfig ARCH=arm命令选中:

< * > Event interface

< * > User level driver suport

–HID Devices

< * > /dev/hidraw raw HID device support

(2)检查是否被选中

CONFIG_INPUT_EVDEV=yCONFIG_INPUT_UINPUT=yCONFIG_HIDRAW=y

二、修改驱动代码:

1、

1. /SourceCode/drivers/input/evdev.c 添加

static bool evdev_match(struct input_handler *handler, struct input_dev *dev){/* Avoid EETI USB touchscreens */#define VID_EETI 0x0EEFif ((BUS_USB == dev->id.bustype) && (VID_EETI == dev->id.vendor))return false;return true;}

static struct input_handler evdev_handler = {.event = evdev_event,.match = evdev_match, /* Added by EETI*/.connect = evdev_connect,.disconnect = evdev_disconnect,.fops = &evdev_fops,.minor = EVDEV_MINOR_BASE,.name = "evdev",.id_table = evdev_ids,};

2. /SourceCode/drivers/input/mousedev.c

static bool mousedev_match(struct input_handler *handler, struct input_dev *dev){/* Avoid EETI USB touchscreens */#define VID_EETI 0x0EEFif ((BUS_USB == dev->id.bustype) && (VID_EETI == dev->id.vendor))return false;/* Avoid EETI virtual devices */if ((BUS_VIRTUAL == dev->id.bustype) && (VID_EETI == dev->id.vendor))return false;return true;}

static struct input_handler mousedev_handler = {.event = mousedev_event,.match = mousedev_match, /* Added by EETI */

.connect = mousedev_connect,.disconnect = ousedev_disconnect,.fops = &mousedev_fops,.minor = MOUSEDEV_MINOR_BASE,.name = "mousedev",.id_table = mousedev_ids,}

3. /SourceCode/drivers/input/joydev.c

static bool joydev_match(struct input_handler *handler, struct input_dev *dev){/* Avoid touchpads and touchscreens */if (test_bit(EV_KEY, dev->evbit) && test_bit(BTN_TOUCH, dev->keybit))return false;/* Avoid tablets, digitisers and similar devices */if (test_bit(EV_KEY, dev->evbit) && test_bit(BTN_DIGI, dev->keybit))return false;/* Avoid EETI virtual devices */#define VID_EETI 0x0EEFif (( BUS_VIRTUAL == dev->id.bustype) && (VID_EETI == dev->id.vendor))return false;return true;}static struct input_handler joydev_handler = {.event = joydev_event,.match = joydev_match,.connect = joydev_connect,.disconnect = joydev_disconnect,.fops = &joydev_fops,.minor = JOYDEV_MINOR_BASE,.name = "joydev",.id_table = joydev_ids,};

三、编译内核、系统,将固件烧写到板子上(用串口工具查看)

1、在终端输入“cat /proc/bus/input/devices“

2、将厂商携带的文件放到android目录下:

厂家提供有四个文件:

a) eGTouchD:a daemon service driver for EETI touch controller.b) eGTouchA.ini :a parameter list could be loaded by driverc) eGalaxTouch_VirtualDevice.idc:a file necessary for Android 3.0 upwardsd) eGalaxCalibrator:a tool provides calibration and line drawing.

(1)将eGTouchD放到 system/bin目录下,并修改init.rc文件

添加: service eGTouchD /system/bin/eGTouchDuser rootgroup rootoneshot

(2)将eGalaxTouch_VirtualDevice.idc放到system/usr/idc目录下

(3)将eGTouchA.ini文件放到/data目录下:

*为了方便,我们可以将这三个文件放在device\softwinner\sugar-ref001目录下:通过配置sugar-ref001.mk将文件移动到相对于的位置。编译烧写即可

这里要详细说明下:在文件系统启动的时候eGTouchD这个文件会检测data目录下是否有这个文件,如果没有就自动创建,而系统自动创建的这个文件跟自己配的有所差异

,这是厂商的一个BUG,我们可以在文件系统加载的时候,同时也启动这个文件,不让他自动生成。

首先,在device\softwinner\sugar-ref001\sugar-ref001.mk添加:

PRODUCT_COPY_FILES += \device/softwinner/sugar-ref001/eGTouchD:system/bin/eGTouchD\device/softwinner/sugar-ref001/eGalaxTouch_VirtualDevice.idc:system/usr/idc/eGalaxTouch_VirtualDevice.idc\device/softwinner/sugar-ref001/eGTouchA.ini:data/eGTouchA.ini\

朋友,为了幸福,请你保持一副热爱生活的心肠,

A20+Android EETI电阻屏调试记录

相关文章:

你感兴趣的文章:

标签云: