1. 程式人生 > >轉:移植tslib到開發板及部分問題解決

轉:移植tslib到開發板及部分問題解決

1.1. 移植QT到開發板
1.1.1. tslib移植
tar xvzf kergoth-tslib-1.0-89-g412d99d.tar.gz

cd kergoth-tslib-412d99d
./autogen.sh
./configure --prefix=/usr/local/tslib --host=arm-linux ac_cv_func_malloc_0_nonnull=yes CC=arm-none-linux-gnueabi-gcc
make
./configure --host=arm-linux --disable-hp3600 --disable-arctic2 --disable-mk712 --disable-collie --disable-corgi --disable-ucb1x00 --disable-linear-hYYY0 --with-gnu-ld --prefix=/usr/local/tslib ac_cv_func_malloc_0_nonnull=yes CC=arm-none-linux-gnueabi-gcc
生成瘦身應用程式和庫
make install
注意,--host說明交叉編譯的目標結構,--prefix指定make install後庫檔案以及應用程式的存放位置。這個最好制定,不然就全被放到預設的地方,貌似是/usr....

虛擬機器下執行
/home/ck/work/filesys/rootfs/usr
mkdir /home/ck/work/filesys/rootfs/usr/local/qt4.7.1
cp -Rfv /usr/local/qt4.7.1 /home/ck/work/filesys/rootfs/usr/local/
cp -Rfv /usr/local/tslib /home/ck/work/filesys/rootfs/usr/local/
vi /home/ck/work/filesys/rootfs/etc/profile
加入如下內容
export QTDIR=/usr/local/qt4.7.1/lib
export TSLIB_ROOT=/usr/local/tslib
#指定觸控式螢幕裝置節點為event0.在進入檔案系統後可以在/dev下查到有input資料夾,裡面有event0這個檔案。
export TSLIB_TSDEVICE=/dev/event1
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
#指定配置檔案為ts.conf
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
#控制檯設為none
export TSLIB_CXXXOLEDEVICE=none
#指定幀快取裝置節點為fb0
export TSLIB_FBDEVICE=/dev/fb0
export POINTERCAL_FILE=/etc/pointercal
#指定觸控式螢幕校準檔案pointercal的存放位置
export TSLIB_CALIBFILE=/etc/pointercal
export QWS_MOUSE_PROTO=Tslib:/dev/event1
export PATH=$TSLIB_ROOT/bin:$PATH
export LD_LIBRARY_PATH=$TSLIB_ROOT/lib:$QTDIR/lib:$LD_LIBRARY_PATH
注意:TSLIB_TSDEVICE根據不同板子這裡設定可能會有差異,具體在開發板進入檔案系統後查詢dev下的檔案,通常在input下會有觸控式螢幕的驅動程式檔案。我這裡是event0,因此對應裝置節點填/dev/input/event0.

開發板下執行
source /etc/profile
可以檢視環境變數:
echo $LD_LIBRARY_PATH
編輯tslib/etc/ts.conf檔案,編譯內容如下:
vi etc/ts.conf
module_raw input
module pthres pmin=1
module variance delta=30
module dejitter delta=10000
module linear
注意,確保module_raw前面沒有空格,否則會彈出Segmentation fault的錯誤。
1.1.2. 問題及解決辦法
注意:問題的源頭可能是版本,需要保持編譯器和檔案系統中的庫檔案的一致性,最好檔案系統自己編譯移植。
1) 出現error while loading shared libraries: libts-1.0.so.0: cannot open shared object file: No such file or directory問題。
解決辦法:此問題為tslib庫的路徑不對,搜尋不到庫檔案libts-1.0.so.0,此時檢查環境變數LD_LIBRARY_PATH;


2) 執行Qt可執行程式需要加上 –qws命令(建立framebuffer共享執行),執行時出現錯誤relocation error: /usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/libQtGui.so.4: symbol powf, version GLIBCXX_3.4 not defined in file libstdc++.so.6 with link time reference,此時是由於缺少與安裝qte版本對應編譯器的lib庫的問題。
解決辦法:是進入主機/opt/toolchains/arm920t-eabi/arm-angstrom-linux-gnueabi/lib目錄下找到libstdc++.so.6連結的檔案libstdc++.so.6.0.8(通過右鍵屬性——〉基本,可以看到連結的檔案),複製並重命名為libstdc++.so.6到/opt/pro_5.0_L137/filesys /lib資料夾下,之前別忘了將該資料夾下的libstdc++.so.6移到其它地方或重新命名,如libstdc++.so.6.old。同時也可以不使用覆蓋的方法,通過連線的方法實現。

./helloword: /lib/libc.so.6: version `GLIBC_2.9' not found (required by /usr/local/qt4.7.1/lib/libQtGui.so.4)
可能是
可以輸入
cd /usr/lib
strings libc.so.6 | grep GLIBC
檢視GLIBCXX_XXX是否在其中,如果不在,說明是庫的版本與編譯器版本不一致,需要把編譯器的庫檔案拷貝到板子上
虛擬機器:

[email protected]:/home/ck/work/filesys/rootfs/usr/lib# cp /usr/local/arm-2010q1/arm-none-linux-gnueabi/libc/lib/libc-2.11.1.so ./
板子:
cd /lib
ln -s /usr/lib/libc-2.11.1.so libc.so.6

cd /usr/lib
/usr/lib # ln -s libc-2.11.1.so libc.so.6


問題3:
Could not read calibration: /etc/pointercal
這個是因為觸控式螢幕沒有校準, 校準之後會生成一個/etc/pointercal檔案

Cannot open /dev/h3600_ts (No such file or directory
這個是因為你的觸控式螢幕對應的裝置檔名不是 h3600_ts , 有可能是h3600_tsraw 或者 ts什麼的, 你到 /dev/目錄下看看

問題
No raw modules loaded.
Ts_config: No such file or directory

解決辦法:
修 改$TSLIB_ROOT/etc/ts.conf, 至少放開一個module_raw, 並去掉前面空格


問題:
執行QT程式:
Segmentation fault

解決辦法:
執行時新增引數
./helloword -qws -fn SIMHEI


問題:
tslib: Selected device is not a touchscreen (must support ABS and KEY event types)
解決辦法:
核心和檔案系統編譯時加入觸控式螢幕支援:
一、核心配置支援觸控式螢幕
<*> Erasoc Touch Screen driver support based on SPI Controller

<*> Touchscreen interface
(640) Horizontal screen resolution
(480) Vertical screen resolution

<*> Event interface

[*] Touchscreens ---> 裡面什麼都不用選

問題:
ts_open: No such file or directory
解決辦法:
用env命令看一下,當前系統是否有你設定的tslib環境變數




export LD_LIBRARY_PATH=/usr/local/lib:$QTDIR/lib:$LD_LIBRARY_PATH export TSLIB_ROOT=/usr/local/lib
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_PLUGINDIR=/usr/local/lib/ts
export TSLIB_CXXXOLEDEVICE=none
export TSLIB_CONFFILE=/usr/local/etc/ts.conf
export POINTERCAL_FILE=/etc/pointercal
export TSLIB_CALIBFILE=/etc/pointercal
export QWS_MOUSE_PROTO=Tslib:/dev/input/event0

. 移植tslib,將ubuntu中的/opt/tslib 拷貝到根檔案系統中的/opt/下面
[email protected]
:/home/ck/work# cp -av /usr/local/tslib filesys/rootfs/opt/
移植qte4.7.0將/usr/local/Trolltech/QtEmbedded-4.7.0-arm下面的lib資料夾拷貝到根檔案中的相同目錄下(必需得先建立相應的目錄)
[email protected]:/home/ck/work# cp -av /usr/local/qt4.7.1/lib/* filesys/rootfs/lib/
增加新的顯示中文的字型wenquanyi 放到上面的/lib/fonts目錄下。刪除其他不需要的字型(未做)
拷貝/usr/local/Trolltech/QtEmbedded-4.7.0-arm/plugins目錄到根檔案系統中的/usr/local/Trolltech/QtEmbedded-4.7.0-arm/lib/目錄下
[email protected]
:/home/ck/work# cp -av /usr/local/qt4.7.1/plugins/* filesys/rootfs/lib/

測試example下面的程式,重新配置makefile即可出現
make confclean
編譯選項去掉:
-nomake examples -nomake demos -nomake docs -nomake tools

1. 複製tslib庫以及ts目錄,
cp /usr/local/tslib/lib/libts* /usr/local/qte4.6.3-arm/lib/
cp -rf /usr/local/tslib/lib/ts /usr/local/qte4.6.3-arm/lib/
進入目錄:
cd /usr/local/gcc-3.4.6-glibc-2.3.6/arm-linux/arm-linux/lib
繼續拷貝庫:
cp libgcc_s.so.1 /usr/local/qte4.6.3-arm/lib/
cp librt.so.1 /usr/local/qte4.6.3-arm/lib/
cp libstdc++.so.6 /usr/local/qte4.6.3-arm/lib/
cp libz.so.1 /usr/local/qte4.6.3-arm/lib/
拷貝庫完成,對於有些庫檔案,可以裁剪一下,命令如下:
arm-linux-strip libstdc++.so.6
最後將/usr/local/qte4.6.3-arm/lib/中的所有檔案打包,命令如下:
tar czvf lib-new.tar.bz2 *
然後再將tslib校準程式移植,cd /usr/local/tslib/lib,拷貝需要的庫檔案,cp /usr/local/qte4.6.3-arm/lib/librt.so.1 .,cp /usr/local/qte4.6.3-arm/lib/libz.so.1 .,最後將整個tslib目錄打包,命令如下:tar czvf touch.tar.bz2 *,最後將我們所有打包的檔案以及前面交叉編譯的MPlayer全部放到一個目錄下,這裡我建立了一個embed目錄,將所有包放進去,解壓整理,最終生 成一個應用程式包,其中包括MPlayer,觸控式螢幕校準程式,usb裝置掛載,以及qte4.6.3,包的名字為:embed.tar.bz2。至此我們 的移植以接近尾聲,下面我們把編譯好的應用程式包下載到star2410上,步驟如下:先在Linux下面使用minicom連線上板子,設定板子的IP 使和主機在同一網段,命令如下:ifconfig eth0 192.168.88.189 broadcast 192.168.88.254 ,然後再執行inetd,是更改生效。然後在windows下使用FlashFXP軟體匿名連線板子的IP,連線上後,將embed.tar.bz2傳送 到板子,很快就可以傳完,然後在板子上,進入root目錄,執行命令:mv /root/system/var/ftp/pub/embed.tar.bz2 .,然後解壓程式包:tar xzvf embed.tar.bz2,這樣root目錄下就出現了我們的程式目錄,首先我們進入touch目錄進行觸控式螢幕校準,我們先寫touch.sh一個指令碼 方便程式執行,指令碼內容如下:#bin/sh
export QTDIR=$PWD
export LD_LIBRARY_PATH=$PWD/lib:/lib
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_PLUGINDIR=$PWD/lib/ts
export TSLIB_CXXXOLEDEVICE=none
export QT_TSLIBDIR=$PWD/lib
export TSLIB_CONFFILE=$PWD/etc/ts.conf
export POINTERCAL_FILE=$PWD/etc/ts-calib.conf
export QWS_MOUSE_PROTO=tslib:/dev/input/event0
export TSLIB_CALIBFILE=$PWD/etc/ts-calib.conf
/root/touch/bin/ts_calibrate
/root/touch/bin/ts_test

轉自:http://www.mcuzone.com/bbs/simple/?t9208.html

相關推薦

移植tslib開發部分問題解決

1.1. 移植QT到開發板1.1.1. tslib移植tar xvzf kergoth-tslib-1.0-89-g412d99d.tar.gzcd kergoth-tslib-412d99d./autogen.sh./configure --prefix=/

Qt移植開發上如何使用觸控式螢幕改變介面大小

 觸控式螢幕: 二、安裝完後,載入觸控式螢幕驅動:insmod ts.ko,然後執行./ts_calibrate 進行五點校準,之後會在/etc/下生成一個檔案 pointercal,要有這個觸控式螢幕才能用。 三、修改/etc/profile:         新增這幾

編程之路軟件開發規範常用模塊

文件的 ron 不能 tro 軟件 圖片 路徑 寫代碼 項目 軟件開發規範 我們在開發程序的時候,要讓程序看起來優雅簡潔,讓操作代碼和閱讀代碼的人一目了然,並且便於我們操作管理。 所以我們在編寫代碼的時候就會用到模塊的概念,而我們的開發規範就是把具有不同功能的模塊進行分類,

四、移植 JZ2440 開發

FN con needed undefine wan 添加 checkout error: mean 4.1 移植第一步   前面已經分析過了 .config 的過程,可以知道移植需要用到的文件: .config 文件 arch/arm/cpu 下的文件 board 目錄

把更改後的uboot燒寫到開發遇到的問題

SD卡燒寫過程及遇到的問題 (1)對uboot原始碼進行完修改(修改內容根據自己的理解和分析來修改) (2)make distclean然後make x210_sd_config然後make (3)編譯完成得到u-boot.bin,然後去燒錄。燒錄方法按照裸機第三部分講的linux下使用

蜂鳥E203開源RISC-V開發蜂鳥FPGA開發和JTAG偵錯程式介紹

隨著國內第一本RISC-V中文書籍《手把手教你設計CPU——RISC-V處理器篇》正式上市,越來越多的愛好者開始使用開源的蜂鳥E203 RISC-V處理核,很多初學者留言詢問有關RISC-V工具鏈使用的問題。 為了便於初學者能夠快速地學習RISC-V C

嵌入式Linux作業系統移植IMX6開發之實現USB 自動掛載

本篇文章講述如何實現USB自動掛載,U盤即插即用,不用手動掛載的方法,以及給出U盤自動掛載的原理。 目前做的IMX6開發板,移植Linux系統,原始碼(linux核心為3.0.35)由廠家提供(後面會提供核心,uboot,檔案系統原始碼)。主要功能是實現機器人

qt creator 檔案移植開發上執行 的全過程

因為板子已經有qt庫檔案了 我們不進行移植qt庫,1 安裝arm-linux-gcc交叉編譯器2 編譯 qt4.7.1 原始碼(原始碼有點錯自己google修改)3 安裝qtcreator4 配置qt create的 debug 加入編譯好的qt4.7.1 qmake 檔案

linux核心移植開發步驟

1 解壓縮核心原始碼 2 給原始碼打補丁 3 配置   a  make(完全手動)   b 使用預設的配置,在上面修改   在arch/arm/configs/找到對應的配置檔案   xxxdefconfig   執行make xxxdefconfig   執行完成以後會

如何將QT程式移植開發上執行

1.        首先,要將QT環境設定成在ARM下執行的環境,這樣編譯出來的可執行檔案才能在開發板下執行。 要注意你的QT是不是ARM版本的,可用“qmake -v”命令來檢視 2.環境配置好之後開始按照自己的意願編寫QT程式碼,此處忽略。。。 3.往開發板上移植基本

Qt移植開發上改變字型的大小

在Qt中經常會涉及到介面字型大小的設定,預設字型一般比較小,特別是在移植到開發板上進行顯示一般都要放大字型,因為開發板上液晶顯示螢幕解析度都是非常的小,跟電腦顯示有很大差別。 一種整體介面字型設定的方法: 在main函式中新增程式:                     

android移植開發

兩篇文章 很不錯 http://wiki.kldp.org/wiki.php/AndroidPortingOnRealTarget#s-6.1 http://marwww.in2p3.fr/~duval/wiki_html_dump/articles/a/n/d/Androi

[C++][執行緒池][完整實現] 執行緒池原理建立(C++實現)

文章的主要框架是參考這篇文件的,http://jacky-dai.iteye.com/blog/1090285, 關於作者  張中慶,西安交通大學軟體所,在讀碩士,目前研究方向為分散式網路與移動中介軟體,對Linux極其愛好,可以通過[email protecte

嵌入式開發38,39,40天(專案3基於A8開發的區域網聊天工具)

開篇前言: 其實想了很久要不要寫這個專案出來,畢竟這個專案用到的特殊庫相對比較多,這也是網上那麼少嵌入式專案開發的視訊一樣,在嵌入式的世界裡,就是為了開發某個專案而裁剪硬體,裁剪系統,把不需要的全部拋

NTSTATUS型別返回值含義

0,   "STATUS_WAIT_0" 1,   "STATUS_WAIT_1" 2,   "STATUS_WAIT_2" 3,   "STATUS_WAIT_3" 63,   "STATUS_WAIT_63" 128,   "STATUS_ABANDONED_WAIT_

解析微服務架構(二)微服務重構應用IBM解決方案

解析微服務架構系列文章將分幾篇描述微服務的定義、特點、應用場景、企業整合架構的演進以及微服務轉型思路和技術決策考慮等內容,並以IBM技術為例介紹如何實現微服務架構轉型。 上一篇文章介紹了融入微服務的企業整合架構的演進,並介紹互動式系統的微服務模式及技術決策例子。 本篇文章將介紹已有IT應用如

Linux下GeekOS開發流程錯誤解決

編譯GeekOS: 開啟終端,依次輸入下面三條命令。 cd ~/geekos-0.3.0/src/project0/build/ 注意:~不能少,~表示當前使用者的主目錄。 make bochs可能會出現的問題1、第一次make的時候會出現這個錯誤../include/ge

用Fuel部署OpenStack的時候可能遇到的問題部分解決辦法

Fule是OpenStack自動化部署工具,生成環境部署,基於Web的介面,免費並開源虛擬機器選擇的是Virtual box 問題一: 在安裝Fuel Master完成之後,http://10.2

微服務架構(三)微服務重構應用IBM解決方案

解析微服務架構系列文章將分幾篇描述微服務的定義、特點、應用場景、企業整合架構的演進以及微服務轉型思路和技術決策考慮等內容,並以IBM技術為例介紹如何實現微服務架構轉型。 上一篇文章介紹了融入微服務的企業整合架構的演進,並介紹互動式系統的微服務模式及技術決策例子。 本篇

樹莓派開發使用記錄1[]資料收集樹莓派系統在Ubuntu安裝

參考教程(微雪課堂):http://www.waveshare.net/study/portal.php 樹莓派實驗室: http://shumeipai.nxez.com/2014/12/21/use-raspberry-pi-with-qemu-virtual-machine-simulation.ht