溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Linux下Tslib移植和使用方法是什么

發(fā)布時(shí)間:2021-11-23 15:31:13 來源:億速云 閱讀:492 作者:iii 欄目:互聯(lián)網(wǎng)科技

本篇內(nèi)容介紹了“Linux下Tslib移植和使用方法是什么”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

54.5 Tslib  移植和使用
ft5426 觸摸驅(qū)動添加成功后,發(fā)現(xiàn)觸摸可能不太準(zhǔn)確,這時(shí)可以使用一個(gè)第三方開源庫 tslib 來調(diào)試觸摸屏。下面來看一下 tslib 源碼如何移植。
54.5.1  獲取 tslib  源碼
tslib 源碼可以從官方地址獲?。篽ttps://github.com/libts/tslib,打開網(wǎng)址可以看到最新的版本是 1.21,可以從官網(wǎng)獲取,也可以從網(wǎng)盤資料中獲取,資料路徑:i.MX6UL 終結(jié)者光盤資料/06_Linux 驅(qū)動例程/第三方庫源碼/tslib-1.21.tar.bz2。獲取到 tslib 源碼后,拷貝到 Ubuntu 系統(tǒng)下并解壓,得到 tslib-1.21 文件夾。
54.5.2  編譯 tslib
獲取到 tslib 源碼后,可以編譯 tslib 源碼,具體有下面幾個(gè)步驟。
1、修改 tslib 源碼所屬用戶
修改解壓得到的 tslib-1.21 目錄所屬用戶為當(dāng)前用戶,如果不修改可能會在稍后的編譯中會遇到各種問題。我當(dāng)前 ubuntu 的登錄用戶名為“topeet”,那么修改命令如下:
sudo chown topeet:topeet tslib-1.21 -R修改后如圖 54.5.2.1 所示:
Linux下Tslib移植和使用方法是什么
2、Ubuntu 工具安裝
編譯 tslib 的時(shí)候需要先在 ubuntu 中安裝一些文件,防止編譯 tslib 過程中出錯(cuò),命令如下所示:
sudo apt-get install autoconf
sudo apt-get install automake
sudo apt-get install libtool
3、編譯 tslib
首先創(chuàng)建一個(gè) tslib 文件夾,用于存放編譯結(jié)果。比如文件路徑為:/home/topeet/tslib
然后使用下列命令配置并編譯 tslib:
cd tslib-1.21/ //進(jìn)入 tslib 源碼目錄
./configure --host=arm-none-linux-gnueabi --prefix=/home/topeet/tslib
make //編譯
make install //安裝
注意,在使用./configure 配置 tslib 的時(shí)候“--host”參數(shù)指定編譯器,指定的編譯器要和編譯文件系統(tǒng)使用同一個(gè)編譯器,否則在開發(fā)板下不能正常使用?!?-prefix”參數(shù)指定編譯完成以后的 tslib 文件安裝到哪里,這里肯定是安裝到我們剛剛創(chuàng)建的“tslib”目錄下。
編譯完成后 tslib 目錄如圖 54.5.2.2 所示:
Linux下Tslib移植和使用方法是什么
然后將 tslib 目錄下的所有文件拷貝到開發(fā)板的根文件系統(tǒng)下。如果直接拷貝的話會出現(xiàn)符號鏈接文件不能拷貝的現(xiàn)象,可以先使用 tar 命令進(jìn)行打包,然后解壓到根文件系統(tǒng)下。命令如下:
tar -czvf lib.tar.gz * //打包生成 lib.tar.gz 壓縮包
tar -xvf lib.tar.gz / //解壓到開發(fā)板根文件目錄下
54.5.3  測試 tslib
當(dāng)把編譯好的 tslib 拷貝到開發(fā)板后,進(jìn)行命令測試。
1、配置 tslib
打開/etc/ts.conf 文件,找到下面這一行:
module_raw input
如果上面這句前面有“#”的話就刪除掉“#”。
打開/etc/profile 文件,在里面加入如下內(nèi)容:
1 export TSLIB_TSDEVICE=/dev/input/event1
2 export TSLIB_CALIBFILE=/etc/pointercal
3 export TSLIB_CONFFILE=/etc/ts.conf
4 export TSLIB_PLUGINDIR=/lib/ts
5 export TSLIB_CONSOLEDEVICE=none
6 export TSLIB_FBDEVICE=/dev/fb0
第 1 行,TSLIB_TSDEVICE 表示觸摸設(shè)備文件,這里設(shè)置為/dev/input/event1,這個(gè)要根據(jù)具體情況設(shè)置,如果你的觸摸設(shè)備文件為 event2 那么就應(yīng)該設(shè)置為/dev/input/event2,以此類推。
第 2 行,TSLIB_CALIBFILE 表示校準(zhǔn)文件,如果進(jìn)行屏幕校準(zhǔn)的話校準(zhǔn)結(jié)果就保存在這個(gè)文件中,這里設(shè)置校準(zhǔn)文件為/etc/pointercal,此文件可以不存在,校準(zhǔn)的時(shí)候會自動生成。
第 3 行,TSLIB_CONFFILE 表示觸摸配置文件,文件為/etc/ts.conf,此文件在移植 tslib 的時(shí)候會生成。
第 4 行,TSLIB_PLUGINDIR 表示 tslib 插件目錄位置,目錄為/lib/ts。
第 5 行,TSLIB_CONSOLEDEVICE 表示控制臺設(shè)置,這里不設(shè)置,因此為 none。
第 6 行,TSLIB_FBDEVICE 表示 FB 設(shè)備,也就是屏幕,根據(jù)實(shí)際情況配置,我的屏幕文件為/dev/fb0,因此這里設(shè)置為/dev/fb0。
全部配置好以后重啟開發(fā)板,然后就可以進(jìn)行測試了。
2、 測試 tslib
開發(fā)板重新啟動后,可以先進(jìn)行校準(zhǔn),使用下面的命令:
ts_calibrate
校準(zhǔn)完成后,會生成/etc/pointercal 文件,如果想重新校準(zhǔn),可以直接刪除/etc/pointercal 文件,重新執(zhí)行校準(zhǔn)命令。
然后可以使用 ts_test_mt 這個(gè)命令來測試觸摸屏工作是否正常,以及多點(diǎn)觸摸是否有效,執(zhí)行如下所示命令:
ts_test_mt
命令執(zhí)行后會打開一個(gè)測試界面,如圖 54.5.3.1 所示:
Linux下Tslib移植和使用方法是什么
上圖中有三個(gè)按鈕“Drag”、“Draw”和“Quit”,這三個(gè)按鈕的功能如下:
Drag:拖拽按鈕,默認(rèn)就是此功能,大家可以看到屏幕中間有一個(gè)十字光標(biāo),我們可以通過觸摸屏幕來拖拽此光標(biāo)。一個(gè)觸摸點(diǎn)一個(gè)十字光標(biāo),對于 5 點(diǎn)電容觸摸屏,如果 5 個(gè)手指都放到屏幕上,那么就有 5個(gè)光標(biāo),一個(gè)手指一個(gè)。
Draw:繪制按鈕,按下此按鈕我們就可以在屏幕上進(jìn)行簡單的繪制,可以通過此功能檢測多點(diǎn)觸摸工作是否正常。
Quit:退出按鈕,退出 ts_test_mt 測試軟件。
54.6  使用 Linux  內(nèi)核自帶的 ft5426  驅(qū)動
在 Linux 內(nèi)核中集成了許多電容觸摸芯片的驅(qū)動,其中就包括我們使用的 ft5426 的驅(qū)動。所以我們來使用一下 Linux 內(nèi)核自帶的 ft5426 驅(qū)動文件。在使用之前需要先將前面我們添加的 ft5426.c 驅(qū)動文件去除掉,只 需 要 修 改 drivers/input/touchscreen/Makefile 這個(gè)文件即可,將下面這一行刪除掉:
obj-y += ft54266.o
內(nèi)核自帶的 ft5426 的驅(qū)動文件為 drivers/input/touchscreen/edt-ft5x06.c。
1、使能內(nèi)核 ft5426  驅(qū)動配置
要使用 Linux 內(nèi)核自帶的驅(qū)動,需要添加 Linux 內(nèi)核配置。首先打開圖形化配置界面,命令如下:
make ARCH=arm menuconfig
配置路徑如下:
Device Drivers --->
Input device support --->

  • Touchscreens --->
    <*> EDT FocalTech FT5x06 I2C Touchscreen support
    配置如圖 所示:
    Linux下Tslib移植和使用方法是什么
    配置完成后重新編譯 Linux 內(nèi)核,生成 zImage 鏡像。
    2、  修改設(shè)備樹文件
    我們要根據(jù) edt-ft5x06.c 文件中的 compatible 屬性修改設(shè)備樹下 ft5426 設(shè)備節(jié)點(diǎn)的 compatible 屬性值edt-ft5x06.c 所支持的 compatible 屬性列表如下所示:
    static const struct of_device_id edt_ft5x06_of_match[] = {
    { .compatible = "edt,edt-ft5206", },
    { .compatible = "edt,edt-ft5306", },
    { .compatible = "edt,edt-ft5406", },
    { /* sentinel */ }
    };
    可以看出,edt-ft5x06.c 文件默認(rèn)支持的 compatible 屬性只要三個(gè)“edt,edt-ft5206”、“edt,edt-ft5306”和“edt,edt-ft5406”。我們可以修改設(shè)備樹中的 ft5426 節(jié)點(diǎn),在 compatible 屬性值添加一條“edt,edt-ft5406”,或者在 edt-ft5x06.c 文件中的 edt_ft5x06_of_match 表,在里面添加一條:
    { .compatible = "edt,edt-ft5426", }
    總之一句話,讓 ft5426 這個(gè)設(shè)備和 edt-ft5x06.c 這個(gè)驅(qū)動匹配起來。這里我們修改設(shè)備樹下的 ft5426設(shè)備節(jié)點(diǎn),修改后如下所示;
    1 ft5426: ft5426@38 {
    2 compatible = "edt,edt-ft5426","edt,edt-ft5406";
    3 reg = <0x38>;
    4 pinctrl-names = "default";
    5 pinctrl-0 = <&pinctrl_tsc>;
    6 interrupt-parent = <&gpio1>;
    7 interrupts = <9 0>;
    8 reset-gpios = <&gpio5 9 GPIO_ACTIVE_LOW>;
    9 interrupt-gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
    10 };
    在 compatible 屬性中添加"edt,edt-ft5406"兼容值。
    設(shè)備樹修改完成后,重新編譯。然后使用新的 zImage 和 dtb 設(shè)備樹文件啟動開發(fā)板。驅(qū)動正常的情況,有如下啟動信息:
    Linux下Tslib移植和使用方法是什么
    然后可以使用下面的命令查看 input 設(shè)備的具體情況:
    cat /proc/bus/input/devices
    結(jié)果如圖:
    Linux下Tslib移植和使用方法是什么
    然后可以使用 hexdump 或者 ts_test_mt 命令進(jìn)行測試。

“Linux下Tslib移植和使用方法是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI