小弟在Xscale PXA255上移植qtopia 4的經驗,和大家分享討論

我們生活周遭存在太多太多的 embedded system ,過去 embedded system 有專屬的 OS,現在 linux 也可以應用在嵌入式環境,不過本版將廣泛討論所有嵌入式系統不只 linux 喔,歡迎有這方面經驗或有興趣的朋友一同進來討論。

版主: chester

小弟在Xscale PXA255上移植qtopia 4的經驗,和大家分享討論

文章giantbicycle » 週六 7月 07, 2007 4:17 pm

(1) Porting Qtopia Core 4.3.0

Step1:
從Trolltech下載Source Code Tarball (qt-x11及qtopia) [亦有相關mirrors可選擇]
代碼: 選擇全部
# wget ftp://ftp.iasi.roedu.net/mirrors/ftp.trolltech.com/qt/source/qt-x11-opensource-4.0.0-b2.tar.gz
# wget ftp://ftp.iasi.roedu.net/mirrors/ftp.trolltech.com/qt/source/qtopia-core-opensource-src-4.3.0.tar.gz

PS:
這邊抓取的qt-x11是給想全部使用tarball編譯完成的參考作法,若想解省編譯時間,亦可透過apt相關工具安裝基本的qt-x11工具
(會用到的基本上有uic3,qt3to4, moc 等),用來輔助編譯qtopia

Step2:
解壓縮
代碼: 選擇全部
# tar zxvf qt-x11-opensource-4.0.0-b2.tar.gz
# tar zxvf qtopia-core-opensource-src-4.3.0.tar.gz

Step3:
編譯qt-x11 (參考qt-x11-opensource-4.0.0-b2/INSTALL)
(這邊編譯qt-x11的目的主要是需取得相關工具用來做後續編譯qtopia之用)
代碼: 選擇全部
# cd qt-x11-opensource-4.0.0-b2
# export QTDIR=$PWD
# export PATH=$QTDIR/bin:$PATH
# export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
# ./configure <一串參數>
比較常用的參數有
-release ........... Compile and link Qt with debugging turned off
-shared ............ Create and use a shared Qt library (libqt.so)
-qt-gif ............ Compile in GIF reading support
-qt-zlib ........... Use the zlib bundled with Qt
-no-cups............... Do not compile CUPS support
這邊可自行測試不同參數

# make
(等待 ... 喝杯可可亞)

Step4:
設定Cross Compiler環境變數 (是實際情況做修改)
代碼: 選擇全部
# export PATH=/usr/local/arm/bin:$PATH

Step5:
編譯Qtopia
代碼: 選擇全部
# cd qtopia-core-opensource-src-4.3.0
# export QTDIR=$PWD
# export PATH=$QTDIR/bin:$PATH
# export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
# ./configure <一串參數>
比較特別的參數有

-qt3support ........ Enables the Qt 3 support functionality
-xplatform target ... The target platform when cross-compiling.
(ex: -xplatformqws/linux-arm-g++)
-embedded <arch>..... This will enable the embedded build, you must have a proper license for this switch to work.
                      Example values for <arch>: arm mips x86 generic
(ex: -embedded arm)

-depths <list> ...... Comma-separated list of supported bit-per-pixel
                      depths, from: 4, 8, 16, 18, 24, and 32
(ex: -depths 4, 8,16)
-qt-mouse-<driver> ... Enable a mouse <driver> in the QtGui library.
                       Possible values for <driver>: [ pc bus linuxtp yopy vr41xx tslib qvfb ]

PS:
這邊如果想使用開發平台的USB介面連接滑鼠,可選擇pc
如果希望有touchscreen library support,可加入linuxtp或tslib
(其中tslib需在編譯qtopia前先行cross compile過,另外touchscreen需配和平台的touchscreen driver的support), 這邊可自行測試不同參數

# make
(等待 ... 喝杯可可亞)
PS: 過程中若有缺少tool,可先至先前build好的qt-x11目錄中尋找,或直接以apt安裝相關qt4 development 套件

Step5:
將編譯好的qtopia shared library (for ARM) 複製到要給系統使用的ramdisk中
(以下作法是實際情況調整)
解開ramdisk
代碼: 選擇全部
# gunzip ramdisk.gz
# mount -o loop ramdisk /mnt
將qtopia-core-opensource-src-4.3.0/ 下的
   libQt3Support.so.4.3.0
   libQtCore.so.4.3.0
   libQtGui.so.4.3.0
   libQtNetwork.so.4.3.0
   libQtScript.so.4.3.0
   libQtSql.so.4.3.0
   libQtSvg.so.4.3.0
   libQtXml.so.4.3.0
等實際會用到的相關Shared library cp 至 /mnt/lib
(這邊視實際root filesystem規畫做修改)
# umount /mnt
# gzip -9 ramdisk

PS:
要注意的有:
1.
平台啟動後,需設定好LD_LIBRARY_PATH至libQt*所在的目錄,讓qtopia application可找到這些library
2.
實際程式運行時抓取的library名稱可能會有修改,需配合link library的名稱
ex: ln -s libQtGui.so.4.3.0 libQtGui.so.4
3.
在開發主機上編譯應用程式前
需先check QTDIR路徑是否正確指向qtopia目錄
在hello程式目錄下執行 (以下參考自Qtopia官網相關文件)
# $QTDIR/bin/qmake -project
# $QTDIR/bin/qmake
# make
可得 cross compile好的 hello qt application
載入平台後可運行
# hello -qws
4.
若需使用 touchscreen可參考官網所寫的Qt mouse環境變數設定


之後就能快快樂樂寫 Qt 4 程式了
可配合 Qt designer開發圖形介面

PS:
小弟有透過上述的相關步驟移植mplayer及smplayer
(mplayer Qt GUI前端)至平台上,但smplayer播放影片時仍有問題需解決
小弟亦有在該平台上移植Mesa 3D library來跑opengl 相關程式如: gears
但FPS效能不佳,可能無圖形加速GPU以及沒有tune最佳化相關CFLAGS編譯參數等

若描述有不當、手誤、冗長之處,或排版有不佳之處請大家多多包涵
若有建議以及相關應用想法也請大家多多分享,thx
giantbicycle
可愛的小學生
可愛的小學生
 
文章: 23
註冊時間: 週六 7月 07, 2007 4:16 pm

文章giantbicycle » 週六 7月 07, 2007 4:45 pm

少加了 fonts的部分,請大家記得cp到開發平台上
giantbicycle
可愛的小學生
可愛的小學生
 
文章: 23
註冊時間: 週六 7月 07, 2007 4:16 pm

文章lcehnannyg » 週四 8月 09, 2007 9:58 am

Hello...

我按照這的方法,但編譯失敗.可是若以x86 g++ 來編就OK.
不知可否指點一下...

我用的是 => Qtopia core 4.3.0 / arm-linux-g++ 3.3.5

錯誤訊息是 =>

qtopia-core-opensource-src-4.3.0/src/script/
qscriptvalueiterator_p.h: In
constructor `
QScriptValueIteratorPrivate::QScriptValueIteratorPrivate
(QScriptValueIterator*,
const QScriptValue&)':
qtopia-core-opensource-src-4.3.0/src/script/
qscriptvalueiterator_p.h:46: error: parse
error before `;' token
gmake: *** [qscriptvalueiterator.o] Error 1

??? 為何同樣的程式,在不同的compiler會不一樣 ...
lcehnannyg
可愛的小學生
可愛的小學生
 
文章: 2
註冊時間: 週四 8月 09, 2007 9:47 am

文章giantbicycle » 週四 8月 09, 2007 8:13 pm

可以試試其他版本的 ARM toolchain
或是換其他版本的qtopia

或是 check 一下程式的寫法是否造成 toolchain 編譯錯誤
試著改成相容的語法,使之編譯通過

希望有幫助 ..
giantbicycle
可愛的小學生
可愛的小學生
 
文章: 23
註冊時間: 週六 7月 07, 2007 4:16 pm

鼠標無法移動

文章lcehnannyg » 週五 8月 17, 2007 3:55 pm

先謝謝樓上的那為仁兄.換ToolChain後就可以了.目前HelloWorld已經可以在target上運行.不過目前遇到的問題是鼠標無法移動.我有看其他關於此問題的討論,但試了後都沒效果.
configure 時沒有指定-qt-mouse-<driver>.所以預設的mouse driver應該是"pc".mouse是接到target上的com1.其對應的device node 是 /dev/tts/1 . 所以我設定如下...

(1) ln -s /dev/tts/1 /dev/mouse
(2) export QWS_MOUSE_PROTO="pc:/dev/mouse"

請問有設定錯嗎? 或是少做甚麼 ? 還有就是要執行 stty 設定嗎?

3Q...
lcehnannyg
可愛的小學生
可愛的小學生
 
文章: 2
註冊時間: 週四 8月 09, 2007 9:47 am

Re: 小弟在Xscale PXA255上移植qtopia 4的經驗,和大家分享討論

文章sachen1986 » 週六 3月 06, 2010 10:16 pm

想請問一下!!!
我將QtopiaCore-4.3.5-arm編譯至omap3530上
有成功編譯出來,但執行qt的範例程式時,
會出現兩個滑鼠,一個是qt介面的滑鼠,
另一個是我在OMAP3530上安裝Angstrom作業系統的滑鼠
在移動滑鼠時,兩個都會跟著移動,
點擊右鍵時兩個滑鼠都會同時觸發,
Angstrom作業系統的滑鼠會點到作業系統的畫面
導致QT的畫面會局部與作業系統的桌面重疊
不知道您有沒有遇到類似問題呢?
sachen1986
可愛的小學生
可愛的小學生
 
文章: 2
註冊時間: 週六 3月 06, 2010 10:10 pm


回到 embedded system

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客