历史上的今天

今天是:2024年11月09日(星期六)

2021年11月09日 | mini2440一线总线移植tslib1.4

发布者:玉立风华 来源: eefocus关键字:mini2440 手机看文章 扫描二维码
随时随地手机看文章

最近在学习中接触到了触摸库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 cd tslib


./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 引用地址:mini2440一线总线移植tslib1.4

上一篇:mini2440使用nfs挂载跟文件系统失败的解决办法
下一篇:Mini2440 DM9000 驱动分析

推荐阅读

人工智能是一项人们寄予厚望,去改变世界的技术。对于普通人而言,现在出现的电销机器人、伪技术、智能家居等与他们脑海中所构想的人工智能仍然有着很大的区别。在人们眼中,人工智能理应是《天眼》里的鹰眼;理应是《光环》里的科塔娜;也理应是《终结者》中的大boss。人工智能不断的在给人类世界带来新的推动力和新的畅想,同时带给人们的也有不断的话...
自动测试系统(ATS)是指能自动完成测量、数据处理、显示(输出)测试结果的一类系统的总称。在不同的技术领域里,测试内容、要求、条件和自动测试系统各不相同,但都是利用计算机代替人的测试活动。一般自动测试系统包括控制器、激励源、测量仪表、开关系统、人机接口和被测单元一机器接口等部分。本自动测试系统的测试对象是PWM电路板,如图1所示。PWM(脉宽...
辅助电源单元在电池电动汽车(BEV)和混合动力电动汽车(HEV)的电源应用中无处不在,对于为控制、通信、安全、驱动等通常低于 20 V 的各种低压子系统供电至关重要,而且,电源本身的电源可能来自+400 V 直流高压总线,如车载充电(OBC)系统或 48 V 或 12 V 电池电压轨。 在如此广泛的应用范围内,对辅助电源的要求非常多样化,因而市场上产生了无数...
索尼互动娱乐公司的一项新专利表明,索尼正在为PS5和VR开发一种用于实时图像增强的机器学习技术。这种机器学习过程有点类似于英伟达的深度学习超级采样技术(Deep learning Super Sampling,简称DLSS),因为它可以在不牺牲性能的情况下提高游戏的分辨率。  英伟达的DLSS可以让电脑更好地运行游戏,通过较低的分辨率渲染原始图像,让GPU更容...

史海拾趣

问答坊 | AI 解惑

求74系列芯片74161的verilog源代码

求74系列芯片74161的verilog源代码 大虾们帮忙啊…

查看全部问答∨

对无线感兴趣的请和我联系

我是搞无线的,有感兴趣的可以和我联系qq:472230383…

查看全部问答∨

机顶盒 高清 芯片

请问目前主流市场上的支持机顶盒高清的芯片有哪些?thanks…

查看全部问答∨

evc中Areas not supported include Data Access Objects (DAO)问题

evc中Areas   not   supported   include   Data   Access   Objects   (DAO)问题,要使 程序编译成功要怎么解决这个问题,请高手指导!!…

查看全部问答∨

stm323.x库关中断的函数是什么?

旧库中的NVIC_SETPRIMASK()、NVIC_RESETPRIMASK()在新库中都不能用了,新库用什么替代?…

查看全部问答∨

用移植到stm32的ucos写串口中断为什么一直死机

用移植到stm32的ucos写串口中断为什么一直死机啊,研究快两天了,请大侠指点一二。谢谢中断处理函数void USART1_IRQHandler(void){    OS_CPU_SR  cpu_sr;UCOS_II_REENTRANT_ISR_PROLOG UCOS_II_REEN ...…

查看全部问答∨

基于2.4G跳频收发同步问题

最近在做一个车模遥控器,需要跳频,跳1~2个点还行,但是跳多了,舵机不同步,甚至不动。在网上找了好资料,他们用伪随机函数实现,我看了好久,不是很懂。    我是用查表方式做的,不知道有没有朋友做过跳频,希望大家都谈谈是怎么实现 ...…

查看全部问答∨

【诚聘】FPGA开发人员(苏州工业园区)

岗位描述: 1.根据客户需求完成FPGA的编程、调试以及后续维护工作 2.从事嵌入式原理图的绘制 职位要求: 1. 精通VHDL,Verilog语言开发 2. 对有以太网开发,TFT开发相关经验者优先考虑 3. 有两年以上从事FPGA设计经验或应届毕业 ...…

查看全部问答∨

心电采集电路设计

近需要做一个课设,心电信号采集放大电路,请问论坛有没有朋友做过的类似的? 我在论文里找到过几份电路,都不太一样。 心电采集一般需要什么型号的放大器?请指导一下…

查看全部问答∨

你是否曾经希望可以从一本书里学习如何编程?--那么看看《深入浅出程序设计》

《深入浅出程序设计》 你是否曾经希望可以从一本书里学习如何编程?如果你以前没有编程经验,你可能想知道该从哪里开始。 《深入浅出程序设计》介绍了编写计算机程序的核心概念:变量、判断、循环、函数与对象——无论运用哪种编程语言, ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多每日新闻

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved