轉:移植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是否在其中,如果不在,說明是庫的版本與編譯器版本不一致,需要把編譯器的庫檔案拷貝到板子上
虛擬機器:
板子:
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/下面
移植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/目錄下
測試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