大家好,我是情報小哥~
在編譯Linux系統的過程中,總容易遇到各種大大小小的問題,要么是某個編譯選項設置不正確,編譯器與編譯源碼不匹配,又或者是系統中沒有安裝相應的軟件或者庫等等。
然而這些問題運氣不錯網絡上搜索一下即可搞定,然而遇到生僻一點的問題,那估計得把你折騰得半死,問題是還不一定弄得好。
好在這些成熟的組件或者系統源碼在編譯或者使用異常以后,或多或少都會輸出一些信息,供程序員進行問題排查。
那么小哥下面就簡單介紹一下最近遇到的tslib問題排查過程。
01
一個問題
在部署完tslib環境以后,其安裝目錄中會生成一些測試程序供用戶使用,然而當我們運行相應的測試應用程序,卻得到如下結果 :
表示環境變量中指定的設備,tslib庫識別不出該設備為觸摸設備。而這樣的錯誤字符串的輸出,一般都來源于源碼,直接在tslib源碼路徑中進行搜索得到如下結果。(當然如果要進行詳細的分析也可以使用VSCode等工具分析)
這里采用grep命令行對路徑中的文件進行字符串的查找,grep主要是用于搜索匹配模板的行,默認情況下就是打印出來匹配的行。
-n選項表示:以行號作為前綴;
-R選項表示遞歸讀取每級目錄下的所有文件。
更加詳細的使用說明就交給man grep了。
上面的輸出結果,其字符串來源于input-raw.c文件的61行,看一下該文件輸出該字符串的條件,并根據條件來進行判斷和調試。
可以直接修改此部分的判斷語句,進行調試,輸出到底是那個條件導致無法滿足。
通過調試可以了解到version==EV_VERSION條件不滿足,一個是內核傳入的,一個是編譯器指定的。
通過同樣的方式可以查到內核中的EV_VERSION的定義如下:
同樣查找編譯器中的EV_VERSION的定義如下:
兩者確實是不同,所以導致運行tslib庫報錯,這里我們優先把內核中的EV_VERSION改成與編譯器的一致,看是否能夠解決該問題。
然后重新編譯內核并進行燒錄。
完成以后直接運行bin文件下的ts_print測試觸摸屏驅動看是否正常,運行程序以后沒有再輸出之前的異常字符串,然后點擊觸摸屏,即可看到終端輸出相應的坐標數據:
這樣看來tslib初步測試和部署完成。
**最 后 **
好了,這里小哥就介紹了一下tslib觸摸庫部署過程一個排查問題的基本過程,很多類似的問題也可以嘗試這樣排查,希望本文能夠對你有幫助,本系列文件還會持續更新。
-
Linux
+關注
關注
87文章
11316瀏覽量
209812 -
編譯器
+關注
關注
1文章
1635瀏覽量
49171 -
編譯
+關注
關注
0文章
659瀏覽量
32900
發布評論請先 登錄
相關推薦
評論