mini2440一線匯流排移植tslib1 4

2021-08-14 14:54:09 字數 4635 閱讀 3810

最近在學習中接觸到了觸控庫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)

++ if (ret == 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)++

+static const struct tslib_ops misc_ops =+;+

+tsapi struct tslib_module_info *mod_init(struct tsdev *dev, const char *params)++

+#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 ,就可以進行觸控螢幕校準和測試了。

移植qt5.6到嵌入式開發板(史上最詳細的qt移植教程)

mini2440一線觸控螢幕的tslib移植說明

mini2440 一線觸控配置

Madplay移植到mini2440全過程詳解

madplay交叉編譯 交叉編譯器 arm linux gcc 3.4.1 pc環境 ubuntu 8.10 注意 最好在root許可權下執行以下移植,否則在make install時可能許可權不夠。一 移植madplay前的準備 madplay的移植需要以下的幾個包 libid3tag 0.15....

mini2440移植之目標環境搭建

一.建立環境 1.目標環境 linux 2.6.32.2 smdk2440 mini2440 2.指定交叉編譯變數 修改總目錄下的makefile,設定預設目標平台及預設編譯器 原export kbuild buildhost subarch arch subarch cross compile 改...

mini2440系統移植篇之kernel編譯

linux核心的 makefile分為5 個部分 makefile 頂層 makefile config 核心配置檔案 arch arch makefile 具體架構的 makefile scripts makefile.通用的規則等。面向所有的 kbuild makefiles。kbuild ma...