tslib移植中的问题

说明:我用的tslib版本是1.4,android基于eclair。

1. http://blog.csdn.net/jiajie961/archive/2010/11/11/6003384.aspx  //touch driver修改

   http://blog.csdn.net/jiajie961/archive/2010/11/12/6005488.aspx  //tslib移植

 

2. tslib/src目录下创建Mdroid.mk,注意把 ts_option.c 从 LOCAL_SRC_FILES 中去掉。

3. tslib/tests的 Mdroid.mk里,加入ts_test编译选项(http://blog.chinaunix.net/u3/93670/showart_2100120.html):

#

# ts_test

#

include $(CLEAR_VARS)

LOCAL_SRC_FILES := ts_test.c testutils.c fbutils.c font_8x8.c font_8x16.c

 

LOCAL_C_INCLUDES += /

$(LOCAL_PATH)/../ /

$(LOCAL_PATH)/../src

 

LOCAL_SHARED_LIBRARIES := libts

LOCAL_MODULE := ts_test

include $(BUILD_EXECUTABLE)

4. tslib/etc/ts.conf中打开:

module_raw input1

   input有时会和系统中已有的input module重名,改个名字即可。

5. tslib/src/ts_open.c中的 #include <sys/fcntl.h> 改成 #include <fcntl.h>

6. tslib/tests/fbuils.c中的 *defaultfbdevice = "/dev/fb0" 改成 *defaultfbdevice = "/dev/graphics/fb0"

7. tslib/tests/ts_calibrate.c中,增加代码,校准后写参数到文件 /proc/sys/dev/ts_device/a0~a7,注意顺序必须为 /etc/pointercal 中存储的顺序。

8. tslib/tests/ts_tests.c中,打开触摸屏设备代码改为: ts = ts_open("/dev/input/event1", 0);

9. touch 驱动中加文件ts_linear.c,校准算法在其中实现。

10. touch驱动中调用ts_linear_scale(&x, &y, invert),校准坐标。注意 有符号数和无符号数 之间的赋值。

11. 校准之后的坐标值在 [x_res, y_res]区间,相应的需要重设坐标的最大值: input_set_abs_params(input_dev, ABS_X, 0, 800, 0, 0);

 

问题:

1. getenv 不工作,因为声明加在了/system/core/rootdir/init.rc, 而这个文件只有在target没有自己的init.rc时才被使用。如其Android.mk中所示:

# Only copy init.rc if the target doesn't have its own.

ifneq ($(TARGET_PROVIDES_INIT_RC),true)

file := $(TARGET_ROOT_OUT)/init.rc

$(file) : $(LOCAL_PATH)/init.rc | $(ACP)

$(transform-prebuilt-to-target)

ALL_PREBUILT += $(file)

endif

2. touch panel等input设备对应的设备号,在evdev.c中可以打印出来:

static int evdev_connect(...)

{

snprintf(evdev->name, sizeof(evdev->name), "event%d", minor);

printk(KERN_ERR "evdev.c   %s:   event%d/n", dev->name, minor);

}

你可能感兴趣的:(tslib移植中的问题)