最近在学习中接触到了触摸库tslib,自己试着移植的时候发现网上分为两种方案,一种是使用2440自带AD的方案,另一种是友善的一线总线方案。我的液晶型号是TD35,默认的连接方案是一线总线,所以这里移植的是一线总线方案。
上网搜索的过程中发现网上可用的一线总线tslib并不是1.4版本的,但是编译后使用是没有问题的,抱着试一试的心态决定移植一下1.4版本的tslib到MINI2440,经过实验,成功将tslib的1.4版本移植到了mini2440.
移植主要是将友善提供的one_wire_ts_input.c文件添加到对应位置,修改配置文件就可以了。
下面列出补丁文件
diff -ru tslib/configure.ac tslib1.4_one_wire/configure.ac
--- tslib/configure.ac 2005-03-01 07:44:12.000000000 +0800
+++ tslib1.4_one_wire/configure.ac 2018-01-13 17:56:28.000000000 +0800
@@ -163,6 +163,15 @@
AC_MSG_RESULT($input_module)
AM_CONDITIONAL(ENABLE_INPUT_MODULE, test "$input_module" = "yes")
+AC_MSG_CHECKING([whether one_wire_ts_input module is requested])
+AC_ARG_ENABLE(one_wire_ts_input,
+ AS_HELP_STRING([--enable-one-wire],
+ [Enable building of one-wire-ts-input raw module (Friendly ARM 1-wire) (default=yes)]),
+ [one_wire_ts_input_module=$enableval],
+ [one_wire_ts_input_module=yes])
+AC_MSG_RESULT($one_wire_ts_input_module)
+AM_CONDITIONAL(ENABLE_ONE_WIRE_TS_INPUT_MODULE, test "$one_wire_ts_input_module" = "yes")
+
AC_MSG_CHECKING([where to place modules])
AC_ARG_WITH(plugindir,
AS_HELP_STRING([--with-plugindir=ARG],
diff -ru tslib/plugins/Makefile.am tslib1.4_one_wire/plugins/Makefile.am
--- tslib/plugins/Makefile.am 2005-03-01 07:44:12.000000000 +0800
+++ tslib1.4_one_wire/plugins/Makefile.am 2018-01-13 19:17:18.000000000 +0800
@@ -91,6 +91,12 @@
H2200_LINEAR_MODULE =
endif
+if ENABLE_ONE_WIRE_TS_INPUT_MODULE
+ONE_WIRE_TS_INPUT_MODULE = one_wire_ts_input.la
+else
+ONE_WIRE_TS_INPUT_MODULE =
+endif
+
pluginexec_LTLIBRARIES =
$(LINEAR_MODULE)
$(DEJITTER_MODULE)
@@ -103,7 +109,8 @@
$(MK712_MODULE)
$(ARCTIC2_MODULE)
$(H2200_LINEAR_MODULE)
- $(INPUT_MODULE)
+ $(INPUT_MODULE)
+ $(ONE_WIRE_TS_INPUT_MODULE)
variance_la_SOURCES = variance.c
variance_la_LDFLAGS = -module $(LTVSN)
@@ -141,3 +148,6 @@
linear_h2200_la_SOURCES = linear-h2200.c
linear_h2200_la_LDFLAGS = -module $(LTVSN)
+
+one_wire_ts_input_la_SOURCES = one_wire_ts_input-raw.c
+one_wire_ts_input_la_LDFLAGS = -module $(LTVSN)
diff -ru tslib/plugins/one_wire_ts_input-raw.c tslib1.4_one_wire/plugins/one_wire_ts_input-raw.c
--- tslib/plugins/one_wire_ts_input-raw.c 2018-01-13 20:06:19.077456660 +0800
+++ tslib1.4_one_wire/plugins/one_wire_ts_input-raw.c 2018-01-13 19:46:41.000000000 +0800
@@ -0,0 +1,66 @@
+#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "tslib-private.h" + +static int misc_read(struct tslib_module_info *inf, struct ts_sample *samp, int nr) +{ + struct tsdev *ts = inf->dev; + + int ret; + unsigned ts_status; + ret = read(ts->fd, &ts_status, sizeof ts_status); + if (ret < 0) { + return 0; + } + if (ret == 0) { + return 0; + } + + samp->x = ((ts_status) >> 16) & 0x7FFF; + samp->y = ts_status & 0x7FFF; + samp->pressure = ts_status >> 31; + gettimeofday(&samp->tv,NULL); + nr = nr; + + return 1; +} +static int ts_fini(struct tslib_module_info *inf) +{ + free(inf); + return 0; +} + +static const struct tslib_ops misc_ops = +{ + .read = misc_read, + .fini = ts_fini, +}; + +TSAPI struct tslib_module_info *mod_init(struct tsdev *dev, const char *params) +{ + struct tslib_module_info *m; + + m = malloc(sizeof(struct tslib_module_info)); + if (m == NULL) + return NULL; + + m->ops = &misc_ops; + return m; +} + +#ifndef TSLIB_STATIC_FRIENDLYARM_TS_MODULE +TSLIB_MODULE_INIT(mod_init); +#endif 将上述代码复制后命名为 patch_1wire_tslib1.4 打补丁编译步骤如下: tar xzvf tslib-1.4.tar.gz patch -p0 ./autogen.sh ./configure --host=arm-linux ac_cv_func_malloc_0_nonnull=yes CC=arm-none-linux-gnueabi-gcc CXX=arm-none-linux-gnueabi-g++ -prefix=/work/install_tslib(这里是设置最后的安装位置,可以自定义) make make install 执行到这里就可以在上文的安装文件夹中看到编译好的tslib库了。 然后修改该文件夹下 etc 里的 ts.conf 文件,在最开始加上 module_raw one_wire_ts_input 然后修改开发板 /etc/profile 添加环境变量,下面是我的环境变量,对应友善的一线总线驱动 export T_ROOT=/usr/local/tslib export LD_LIBRARY_PATH=/usr/local/tslib/lib:$LD_LIBRARY_PATH export TSLIB_CONSOLEDEVICE=none export TSLIB_FBDEVICE=/dev/fb0 export TSLIB_TSDEVICE=/dev/touchscreen-1wire export TSLIB_PLUGINDIR=$T_ROOT/lib/ts export TSLIB_CONFFILE=$T_ROOT/etc/ts.conf export POINTERCAL_FILE=/etc/pointercal export TSLIB_CALIBFILE=/etc/pointercal 最后将上述的安装文件夹里的内容整个复制到开发板的 /usr/local/tslib/目录下,进入子目录 bin ,就可以进行触摸屏校准和测试了。
上一篇:mini2440使用nfs挂载跟文件系统失败的解决办法
下一篇:Mini2440 DM9000 驱动分析
推荐阅读
史海拾趣
随着公司业务的不断发展,地博电子在2010年成功投产了2条全自动化PC薄膜生产线。这一举措不仅大大提高了生产效率,降低了生产成本,还确保了产品质量的稳定性和一致性。全自动化生产线的投产,为地博电子在电子材料行业中的竞争地位奠定了坚实的基础。
和芯润德深知产品质量对于企业发展的重要性。因此,公司建立了严格的质量管理体系,从原材料采购到生产过程的每一个环节都进行严格把关。此外,公司还引进了先进的检测设备和技术手段,确保产品的可靠性和稳定性。这种对质量的严格把控使和芯润德的产品在市场上赢得了良好的口碑。
和芯润德深知产品质量对于企业发展的重要性。因此,公司建立了严格的质量管理体系,从原材料采购到生产过程的每一个环节都进行严格把关。此外,公司还引进了先进的检测设备和技术手段,确保产品的可靠性和稳定性。这种对质量的严格把控使和芯润德的产品在市场上赢得了良好的口碑。
Anachip公司自成立以来,一直致力于半导体技术的研发。在某个关键时期,公司研发团队成功开发出一种新型的芯片技术,这项技术在性能上远超当时的行业标准。凭借这一技术突破,Anachip迅速在市场上推出了一系列高性能的芯片产品,赢得了客户的广泛认可。随着产品销量的增长,公司的知名度和市场份额也逐步提升。
Anachip公司自成立以来,一直致力于半导体技术的研发。在某个关键时期,公司研发团队成功开发出一种新型的芯片技术,这项技术在性能上远超当时的行业标准。凭借这一技术突破,Anachip迅速在市场上推出了一系列高性能的芯片产品,赢得了客户的广泛认可。随着产品销量的增长,公司的知名度和市场份额也逐步提升。
evc中Areas not supported include Data Access Objects (DAO)问题 evc中Areas not supported include Data Access Objects (DAO)问题,要使 程序编译成功要怎么解决这个问题,请高手指导!!… 查看全部问答∨ |
|
用移植到stm32的ucos写串口中断为什么一直死机啊,研究快两天了,请大侠指点一二。谢谢中断处理函数void USART1_IRQHandler(void){ OS_CPU_SR cpu_sr;UCOS_II_REENTRANT_ISR_PROLOG UCOS_II_REEN ...… 查看全部问答∨ |
|
最近在做一个车模遥控器,需要跳频,跳1~2个点还行,但是跳多了,舵机不同步,甚至不动。在网上找了好资料,他们用伪随机函数实现,我看了好久,不是很懂。 我是用查表方式做的,不知道有没有朋友做过跳频,希望大家都谈谈是怎么实现 ...… 查看全部问答∨ |
岗位描述: 1.根据客户需求完成FPGA的编程、调试以及后续维护工作 2.从事嵌入式原理图的绘制 职位要求: 1. 精通VHDL,Verilog语言开发 2. 对有以太网开发,TFT开发相关经验者优先考虑 3. 有两年以上从事FPGA设计经验或应届毕业 ...… 查看全部问答∨ |
你是否曾经希望可以从一本书里学习如何编程?--那么看看《深入浅出程序设计》 《深入浅出程序设计》 你是否曾经希望可以从一本书里学习如何编程?如果你以前没有编程经验,你可能想知道该从哪里开始。 《深入浅出程序设计》介绍了编写计算机程序的核心概念:变量、判断、循环、函数与对象——无论运用哪种编程语言, ...… 查看全部问答∨ |