觸摸板庫tslib的編譯和配置

                                                                     

640?wx_fmt=jpeg&wxfrom=5                                            

作爲基本輸入設備,觸摸板幾乎是交互式嵌入式系統的標配。當我們知道了可以通過設備節點讀取觸摸板數據後,我們需要進一步優化這些直接獲取的原生數據,比如去抖、消噪、校準等。

0?wx_fmt=gif&wxfrom=5&wx_lazy=1
優化觸摸板的 raw (原生)數據是一項十分複雜的算法任務,涉及諸如矩陣運算、行列式等高等數學,一般需要有比較紮實的數學背景的算法工程師來做,他們的其中一項傑出成果,便是今天要介紹的 tslib 庫了。


沒有 使用 tslib 庫之前,操作觸摸板設備的代碼樣子是這樣的:(醜翻天!!

640?wx_fmt=png&wxfrom=5&wx_lazy=1


經過 tslib 庫整容之後,操作觸摸板的代碼是這樣子的:(美軒完!!

640?wx_fmt=png&wxfrom=5&wx_lazy=1

可以看到,使用了 tslib 庫之後不僅得到了各種牛逼算法的保駕護航,而且代碼更加簡練,邏輯更加清晰,整個人瞬間變美變帥有沒有!


因此,投資點時間來搞 tslib 庫是值得的,下面以粵嵌的嵌入式課程環境爲例(含粵嵌的GEC210開發板),具體操作步驟如下:

1,上網搞個源碼庫,如果你可愛到不會用百度,沒關係,戳我下載(http://download.csdn.net/detail/vincent040/9662825)。

2,將源代碼丟到Ubuntu,並通過以下命令解壓到Ubuntu的家目錄下:

tar  xjvf  tslib-1.4.tar.bz2  -C  ~

3,進入源碼頂層目錄,依次執行如下命令:

mkdir  ~/tslib

./configure  --prefix=/home/xxx/tslib  --host=arm-none-linux-gnueabi

make

make install


當然,我以我多年栽坑經驗告訴你,以上指令哪些地方需要注意,以便節約你寶貴的生命,沒錯請叫我雷鋒,林雷鋒。

A) --prefix= 後面的路徑就是你要安裝 tslib 庫的路徑,牆裂建議設置爲家目錄下的空目錄(比如~/tslib),因爲如果設置系統其它目錄的話,後期 make install 的時候會讓你解決權限的問題,當你自作聰明地使用sudo的時候,系統卻又可能會抱怨找不到工具鏈,因此除非你是 Ubuntu科學家,對系統環境變量瞭如指掌,否則不要用小白的身份去作死,乖乖將 --prefix 指定爲 ~/tslib 即可。

B) --host= 後面就是你工具鏈的前綴,注意別眼花寫錯了。

C) make的時候,一般會出現如下錯誤:

640?wx_fmt=png&wxfrom=5&wx_lazy=1
這個問題怎麼解決呢?莫方,我看你有緣,今日將祖傳祕方傳授與你(默默承認我這年齡不應有的智慧和大度):那就是,將源碼頂層目錄下的 config.h文件的第181行,刪除!然後重新 make ,問題解決。


最後,你將會在 /home/xxx/tslib 下發現如下目錄:

640?wx_fmt=png&wxfrom=5&wx_lazy=1


接下來,你需要想辦法,將這一堆文件搞到開發板裏面去,一般先將它們打包壓縮,然後通過串口或者網絡協議傳輸到開發板,然後在開發板中解壓即可。


庫都拷貝到了開發板,是不是就萬事大吉了呢?非也,你辛辛苦苦幹的這些活兒,開發板系統是無知無覺的,你還必須這麼做:


1,將 tslib/etc/ts.config 中的第2行,由原來這個樣子:

640?wx_fmt=png&wxfrom=5&wx_lazy=1
改成這個樣子

640?wx_fmt=png&wxfrom=5&wx_lazy=1
沒錯,就是把第 2 行前面的井號 # 和空格刪除,注意,我說井號和空格,我沒說井號,好之爲之。


2,在開發板系統的 /etc/profile 文件中,增加如下內容(假設你把 tslib 庫放到了開發板的根目錄下,如果不是,以下路徑請進行相應的修改):

export TSLIB_ROOT=/tslib/lib

export TSLIB_TSDEVICE=/dev/event0

export TSLIB_FBDEVICE=/dev/fb0

export TSLIB_CONFFILE=/tslib/etc/ts.conf

export TSLIB_PLUGINDIR=/tslib/lib/ts

export TSLIB_CONSOLEDEVICE=none

export TSLIB_CALIBFILE=/tslib/calibration

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/tslib/lib

 

解釋一下上面的環境變量:

TSLIB_ROOT 指明TSLIB庫在開發板中的具體位置,要以實際情況爲準。

TSLIB_TSDEVICE 指明開發板觸摸屏的設備節點文件名稱。

TSLIB_FBDEVICE 指明開發板LCD的設備節點文件名稱。

TSLIB_CONFFILE 指明TSLIB庫的配置文件的具體位置,要以實際情況爲準。

TSLIB_PLUGINDIR 指明TSLIB庫的插件模塊的具體位置,要以實際情況爲準。

TSLIB_CONSOLEDEVICE 指明終端名稱,none意爲讓系統自動匹配。

TSLIB_CALIBFILE 指明校正文件的位置,該文件在執行ts_calibrate之後自動生成。

LD_LIBRARY_PATH 是開發板系統的動態庫鏈接路徑

 

3,最後的最後,重啓開發板,讓系統重新讀取 /etc/profile 文件的內容,有必要的話執行以下 /tslib/bin/ts_calibrate 校準屏幕,大功告成(再再一次默默承認這個年紀不該有的智慧)!



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章