历史上的今天
今天是:2024年11月09日(星期六)
2021年11月09日 | mini2440一线总线移植tslib1.4
2021-11-09 来源:eefocus
最近在学习中接触到了触摸库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 ,就可以进行触摸屏校准和测试了。
史海拾趣
|
电子竞赛中的30m的频率通讯电路图出来了 https://bbs.eeworld.com.cn/thread-85045-1-1.html 电子大赛之最大功率跟踪 https://bbs.eeworld.com.cn/thread-85046-1-1.html 大赛B题 自制声源 https://bbs.eeworld.com.cn/viewthread.php?tid=85080 ...… 查看全部问答> |
|
一、嵌入式系统的概念 着重理解“嵌入”的概念 主要从三个方面上来理解。 1、从硬件上,将基于CPU的处围器件,整合到CPU芯片内部,比如早期基于X86体系结构 ...… 查看全部问答> |
|
中*美*爱*梯*科*技, .NET外企软件工程师班将于2007年9月10日开课, 开课第一周免费试听, 欢迎大家踊跃报名参加! 中*美*爱*梯*科*技向学员郑重承诺: 百分之百保证就业, 月薪3000——8000, 就不了业者退还全部学费! ...… 查看全部问答> |
|
在淘宝上买的铁牛单片机,本来之前用还好好的,后来不知道烧了一个什么程序,导致每次通电之后继电器都会响一声,同时继电器下面那个绿灯也闪了一下,就一下。。。。烧录程序过程中,继电器就一直响,绿灯也一直闪烁。求高手们解答这是什么问题。? ...… 查看全部问答> |
|
最近由于在研究无线定位算法,所以上传一些资料和大伙共享下,这都是我从各个渠道汇集而来的,希望对大家有用,也希望下载过的朋友留下个脚印。 [ 本帖最后由 wateras1 于 2012-5-3 22:01 编辑 ]… 查看全部问答> |
|
第一个例程我昨天晚上就跑通了。今天看到网友说得好像很不容易,我把我的方法及遇到的问题说下。为以后扫清道路。 首先只要严格按照用户手册去做就应该没有问题。在这里再传下手册。同时自己也MARK一下。 我首先是下bootlaod: 手册上说很明确了 ...… 查看全部问答> |




