1. 程式人生 > 實用技巧 >除錯lcd時候給linux單板移植tslib

除錯lcd時候給linux單板移植tslib

作者:良知猶存

轉載授權以及圍觀:歡迎新增微信公眾號:Conscience_Remains

總述

tslib背景:

在採用觸控式螢幕的移動終端中,觸控式螢幕效能的除錯是個重要問題之一,因為電磁噪聲的緣故,觸控式螢幕容易存在點選不準確、有抖動等問題。

Tslib是一個開源的程式,能夠為觸控式螢幕驅動獲得的取樣提供諸如濾波、去抖、校準等功能,通常作為觸控式螢幕驅動的適配層,為上層的應用提供了一個統一的介面。

下面介紹就是執行的大致過程

1.克隆編譯原始碼

2.將編譯好的檔案新增到linux根檔案系統

3.執行裝載LCD相關驅動到單板,再給tslib設定好環境變數,執行tslib

一、克隆原始碼

gitclonehttps://github.com/kergoth/tslib

編譯執行的步驟

$ ./autogen.sh$ echo “ac_cv_func_malloc_0_nonnull=yes” >arm-linux.cache$mkdir tmp  /*用來放編譯的檔案*/$ ./configure --host=arm-linux --cache-file= arm-linux.cache --prefix=$(pwd)/tmp$ make$makeinstall

開始執行克隆程式碼中的編譯指令碼,對嘍開始出現問題了

./autogen.sh

./autogen.sh:autoreconf: not found

下面開始解決bug

二、解決bug

bug1:./autogen.sh:autoreconf: not found這個問題出現的原因是autoconf automake libtool三個檔案沒有安裝

安裝三個工具:

sudo apt-get install autoconf automake libtool

繼續執行編譯指令碼 又出現bug

bug2:安裝之後發現還是有問題,發現是libtool沒有安裝成功

重新安裝:

sudo apt-get install libtool

編譯通過:

建立一個資料夾 用來放編譯產生的檔案

mkdir tmp

新建一個arm-linux.cache檔案

echo“ac_cv_func_malloc_0_nonnull=yes”>arm-linux.cache

將編譯過程的檔案制定編譯到目錄

./configure--host=arm-linux --cache-file= arm-linux.cache --prefix=$(pwd)/tmp

bug3:make 出現問題

如果編譯過程中遇到 undefined reference to 'rpl_malloc',前面配置完成之後修改 config.h.in 檔案,註釋掉檔案最後的#undef malloc ,重新 make 即可。

進行制定目錄(tmp)的檔案生成

make install

三、安裝使用

因為使用的NFS網路根檔案系統

所以就直接把檔案拷貝到NFS目錄下,然後使用網路檔案系統啟動linux單板

再拷貝到開發板根目錄

cp * / -rfd

再安裝lcd相關的驅動

為了找這個三個檔案,需要進行Linux核心進行配置

編譯模組

找到cfbcopyarea.ko、cfbfillrect.ko 、cfbimgblt.ko檔案並複製到網路根檔案系統目錄

載入lcd相關驅動,除了上面複製的三個核心編譯.ko檔案,還有自己寫好的螢幕專屬的lcd.ko驅動

開啟tslib安裝路徑下的/etc/ts.conf檔案,修改其內容。

# module_raw input改為module_raw input

新增環境變數,可以在profile新增 也可以直接在終端輸入

export TSLIB_TSDEVICE=/dev/event0export TSLIB_CALIBFILE=/etc/pointercalexport TSLIB_CONFFILE=/etc/ts.confexport TSLIB_PLUGINDIR=/lib/tsexport TSLIB_CONSOLEDEVICE=noneexport TSLIB_FBDEVICE=/dev/fb0

進行測試

./ts_calibrate校準螢幕
./ts_testts測試
./ts_print 列印座標

這就是我分享tslib移植的全過程,如果大家有什麼更好的思路,歡迎分享交流哈。