除錯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/event0
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_PLUGINDIR=/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
進行測試
./ts_calibrate校準螢幕
./ts_testts測試
./ts_print 列印座標
這就是我分享tslib移植的全過程,如果大家有什麼更好的思路,歡迎分享交流哈。