close
執行環境Ubuntu 10.04.4 LTS 與kernel 2.6.32-38-generic
可由lsb_release -a 與 uname -r查看
  
QT Porting on DMA6410L/arm-ubuntu linux2.6.29

 
QT是一個可以跨平台的視窗介面API,強大的特點在於程式碼的可攜性
於windows codeing要到linux下執行只要在對應的cross compile重新build
就可以在該平台執行(當然該平台要先install相對應的library)



我們的目的是在arm的環境中安裝QT libray,
透過cross tool chain compile QT source code在arm上執行
值得一提的是,QT for Embedded Linux可以直接對Framebuffer做操作,
不用透過X-Window就可以獨立執行
省下了空間和不少麻煩!
  

 
步驟流程:
安裝相關套件cross tool china, libtool, automake 
設定環境及環境變數  
安裝 tslib
安裝 QT for Embedded Linux 
複製編譯好的檔案到target ARM中
設定ARM環境及環境變數
執行tslib校正TouchPanel
執行QT範例程式測試 
 

 
現在開始實做
安裝相關套件cross tool china, libtool, automake  

$ su
# apt-get install autoconf automake libtool
 
安裝這些套件是因為想要支援touchpanel功能,透過tslib
因為再測試時時常發生權限問題所以直接切換成root權限


設定環境及環境變數

# mkdir /opt/arm/usr
# mkdir /download
# cd /download 
/download # wget http://www.codesourcery.com/downloads/public/gnu_toolchain/arm-none-linux-gnueabi/arm-2009q3-67-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
/download # tar jxvf  arm-2009q3-67-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
PS: 如果你有自己的cross compile就可以跳過下載及解壓縮cross tool chain這步驟拉  
/download #export PATH=/download/arm-2009q3/bin:$PATH 

建立/opt/arm/usr/是為了存放compile好的file, 才不會與原系統搞混及方便複製
建立/download存放下載的pkgs, 如果你經驗夠也可以隨意自己擺放
但是你的存放路徑就會與我說明的路徑不相同

最後export的你cross tool chain bin路徑, 讓compile時方便找到 


安裝 tslib1.4

/download # wget http://download.berlios.de/tslib/tslib-1.0.tar.bz2  //1.4請自行google一下 這是1.0的(1.0也可以使用)
/download # tar xvf  tslib1.4.tar.gz
/download/ tslib # cd tslib
/download/ tslib # echo "ac_cv_func_malloc_0_nonnull=yes" > arm-linux.cache
/download/ tslib # ./autogen.sh
/download/ tslib # ./configure --prefix=/opt/arm/usr CC=arm-linux-gcc --host=arm-linux --cache-file=arm-linux.cache
/download/ tslib # make
/download/ tslib # make install
/download/ tslib # vi /opt/arm/usr/etc/ts.conf    //增加下面一行,存檔後離開
module_raw input

如果你在安裝tslib1.4遇到問題請可以到這網站查詢 ,我碰到的問題裡面都有解決辦法
 tslib移植出现的小问题 - xiaoyangger的专栏
http://blog.csdn.net/xiaoyangger/article/details/5369961  
 
 這樣tslib就已經完成了, 並安裝在/opt/arm/usr下
-prefix, -CC 的路徑如果你了解就可以依照你的環境做修改 


安裝 QT for Embedded Linux

/download/ tslib-1.0 # cd ../
/download # wget http://releases.qt-project.org/qt4/source/qt-everywhere-opensource-src-4.8.2.tar.gz
/download # tar xvf  qt-everywhere-opensource-src-4.8.2.tar.gz
/download cd qt-everywhere-opensource-src-4.8.2
/download/qt-everywhere-opensource-src-4.6.4 # export QTDIR=$PWD
/download/qt-everywhere-opensource-src-4.6.4 # export PATH=$QTDIR:$PATH
/download/qt-everywhere-opensource-src-4.6.4 # export LD_LIBRARY_PATH=$QTDIR/lib:/opt/arm/usr/lib:$LD_LIBRARY_PATH
/download/qt-everywhere-opensource-src-4.6.4 # vi $QTDIR/mkspecs/qws/linux-arm-g++/qmake.conf
修改下面內容, 指定cross compile後存檔離開

QMAKE_CC = arm-none-linux-gnueabi-gcc
QMAKE_CXX = arm-none-linux-gnueabi-g++
QMAKE_LINK = arm-none-linux-gnueabi-g++
QMAKE_LINK_SHLIB = arm-none-linux-gnueabi-g++
QMAKE_AR = arm-none-linux-gnueabi-ar cqs
QMAKE_OBJCOPY = arm-none-linux-gnueabi-objcopy
QMAKE_STRIP = arm-none-linux-gnueabi-strip
 /download/qt-everywhere-opensource-src-4.8.2 #  ./configure --prefix=/opt/arm/usr -xplatform qws/linux-arm-g++ -little-endian -no-qvfb -embedded arm -qt-zlib -qt-libpng -qt-libtiff -qt-libmng -qt-libjpeg -qt-freetype -no-openssl -qt-mouse-tslib -L/opt/arm/usr/lib -I/opt/arm/usr/include 

出現選擇    //這是版權問題的選擇,如果用在商業用途請詳細確認

Type 'c' if you want to use the Commercial Edition.Type 'o' if you want to use the Open Source Edition.
# 輸入o

Type '3' to view the GNU General Public License version 3.
Type 'L' to view the Lesser GNU General Public License version 2.1.
Type 'yes' to accept this license offer.
Type 'no' to decline this license offer. 
# 輸入yes 
可以去買個飲料, 大約10分鐘

 
 /download/qt-everywhere-opensource-src-4.8.2 #  make
 
PS1 如果出現了:could not read symbols: File in wrong format collect2: ld returned 1 exit status
        請把cd ../;rm -rf  qt-everywhere-opensource-src-4.8.2 
        然後回到解壓縮QT資料夾那步再來一次吧....很不幸的我遇到了
PS2  如果出現了/ts_calibrate: error while loading shared libraries: libts-0.0.so.0之類的錯誤訊息
        請把剛安裝好的tslib library file copy to your compile Lib DIR
 /download/qt-everywhere-opensource-src-4.8.2 #cp -a /opt/arm/usr/lib/* /download/arm-2009q3/lib/

 可以去睡個覺, 大約2個多小時吧(順利的話=_=)

  /download/qt-everywhere-opensource-src-4.8.2 #  make install
大約30多分
到這裡你已經需要編譯的檔案都已經完成了, 存放於/opt/arm/usr內


設定ARM環境及環境變數 
 
這在ARM中 # mkdir -p /opt/arm/usr

因為與ARM的連接環境不同無法一一說明,但只要將檔案編譯好的檔案
丟到arm上的/opt/arm/usr就可以了
以NFS掛載root file system,來做說明

這在編譯的PC # cp -rf /opt/arm/usr/* 你的NFS跟檔案系統目錄/opt/arm/usr


回到ARM上

# export TSLIB_ROOT=/opt/arm/usr
# export TSLIB_TSDEVICE=/dev/input/event1  //依照自己情況做修改
# export TSLIB_CALIBFILE=$TSLIB_ROOT/etc/pointercal
# export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
# export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
# export TSLIB_CONSOLEDEVICE=/dev/tty
# export TSLIB_FBDEVICE=/dev/fb0                       //依照自己情況做修改

# export QTDIR=/opt/arm/usr
# export PATH=$QTDIR/bin:$PATH
# export QWS_MOUSE_PROTO="tslib"   
# export LD_LIBRARY_PATH=$QTDIR/lib:/usr/local/lib:$lD_LIBRARY_PATH  

如果你要開機時就完成設定就把下面的內容增加到etc/profile內


執行tslib1.4校正TouchPanel //這部分因為ARM-6410Ldriver問題無法實做請跳過

# ts_calibrate
校正Touch Panel邊界,跟著它出現的畫面做操作
# ln -s /opt/arm/usr/etc/pointercal /etc/pointercal
建置連結,tslib執行時會參照的檔案
# ts_test
測試Touch Panel是否正常, 測試完後就可以Ctrl + C離開

 
執行QT範例程式測試      //記得cross tool chain的lib也要複製到target的/lib才可以正常執行喔

# /opt/arm/usr/demos/browser/browser -qws
 
如果出現error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory關於compile的錯誤訊息就先從cp cross tool chain的lib開始除錯吧 

以下轉貼自 宅男日記    //我還沒實作^^
 

###編譯自己寫的程式且port到板子上
如果自己有寫個Qt的程式,假設程式是放在,/usr/local/Trolltech/QtEmbedded-4.6.2-arm/examples/Hello底下,想port到板子上,用下面的方法:
$ /usr/local/Trolltech/QtEmbedded-4.6.2-arm/bin/qmake -spec ../../mkspecs/qws/linux-arm-g++ -unix -o Makefile Hello.pro
此時在同個目錄會產生一個Makefile檔,再執行
$ make
就會編譯出一個Hello的binary file for arm,仔細一看,確實是ARM的執行檔
$ file ./Hello
$ Hello: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.16, not stripped
之後,就可以將這個執行檔搬到板子上了,且順利執行!
 
參考資料;
Nokia Qt官方網站doc文件區    http://qt-project.org/doc/qt-4.8/qt-embedded-install.html 
宅男日記 http://littlebing.blogspot.tw/2010/03/qt-embedded-porting.html 
[達文西]就是,蛋!    http://blog.jsdan.com/943?doing_wp_cron=1347218047.0147008895874023437500 
資策會-嵌入式作業系統實作    陳彥銘老師編
資策會-X Window程式設計 余長憲老師編
tslib移植出现的小问题 - xiaoyangger的专栏 - 博客频道 - CSDN.NET 
http://blog.csdn.net/xiaoyangger/article/details/5369961 
tslib-s3c6410移植-记录篇_best_新浪博客 http://blog.sina.com.cn/s/blog_6435093e0100v5jr.html 
 
 
arrow
arrow
    全站熱搜

    viclin 發表在 痞客邦 留言(1) 人氣()