歡迎您光臨本站 登入註冊首頁

移植qtopia到ARM開發板

admin @ 2014-03-25 , reply:0

概述

前言:說實話,以前只作過51,而且用的是彙編,C都沒有怎麼用過。最近才有機會接觸到linux,說起來也算是落後分子了。多虧北理論壇里各位大俠的幫忙,還算順利的把qtopia移植到了ARM開發板上。現整……

前言:
說實話,以前只作過51,而且用的是彙編,C都沒有怎麼用過。最近才有機會接觸到linux,說起來也算是落後分子了。多虧北理論壇里各位大俠的幫忙,還算順利的把qtopia移植到了ARM開發板上。現整理了下文,拋磚引玉,希望能對大家有所幫助,當然也希望大家多提寶貴意見,mail to ahha1998@126.com即可。當然更希望大家的經驗也能告訴我

一、所用的資源
硬體:華恆HHARM9328MXL-R1
軟體:cross-2.95.3.tar.bz2
qt-embedded-2.3.10.tar.gz
qt-x11-2.3.2.tar.gz
qt-x11-3.3.4.tar.gz
qtopia-free-2.1.1.tar.gz
tmake-1.11.tar.gz
jpegsrc.v6b.tar.gz
e2fsprogs-1.35.tar.gz
zlib-1.2.3.tar.gz (這個是不是需要交叉編譯,不太肯定,反正我是交叉編譯了一下)
軟體從網上下載,如果不知道從什麼地方下載,google就是了。板子2006-02-13才從同事手中拿到(當時並沒有注意這塊開發板上沒有時鐘系統,移植到板子上后才注意到這個問題。),不過好在以前在論壇里看了不少如何在x86下編譯qte、qtopia的文檔,並且也在linux下也折騰了一兩個月。建議沒有作過x86下編譯qtopia的也先從x86入手熟悉熟悉操作過程,我後面的過程里有些用到了x86環境下編譯的文件,我就不再詳細說明了。好了,廢話少說,我們開始吧!

二、約定
假設上述的軟體你都已經安裝到了/arm-target目錄下,目錄名分別為qte qtopia tmake jpeg e2fs zlib,還有一些用到的目錄需要自己建立,我就不一一說明了,大家從下文中應該能夠看出來。

三、交叉編譯過程
1、交叉編譯工具的安裝
直接解壓到/usr/local/arm目錄下,
並且export PATH=/usr/local/arm/2.95.3/bin:$PATH
2、編譯qte和qtopia需要的準備工作
export QTDIR=/arm-target/qte
export QPEDIR=/arm-target/qtopia
export LD_LIBRARY_PATH=$QTDIR/lib:$QPEDIR/lib:$LD_LIBRARY_PATH
export TMAKEDIR=/arm-target/tmake
export TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g++
cp /arm-target/qtopia/src/qt/qconfig-qpe.h /arm-target/qte/src/tools
cd $QPEDIR/src/libraries/qtopia
cp custom-linux-ipaq-g++.cpp custom-linux-arm-g++.cpp
cp custom-linux-ipaq-g++.h custom-linux-arm-g++.h
3、交叉編譯e2fs-prog,得到libuuid庫
./configure --host=arm-linux --enable-elf-shlibs --with-cc=arm-linux-cc --with-linker=arm-linux-ld –prefix=/usr/local/arm/2.95.3/arm-linux
make
make install
(提示好像有一些問題,沒有ext2fs目錄。。,不過能夠執行完畢,且生成了libuuid.so*)
4、交叉編譯jpegsrc,得到libjpeg
./configure --enable-shared
make 得到libtools程序,然後再
./configure --enable-shared
修改生成的Makefile文件:
prefix = /arm-target/qte
CC= /usr/local/arm/2.95.3/bin/arm-linux-gcc
AR= /usr/local/arm/2.95.3/bin/arm-linux-ar rc
AR2= /usr/local/arm/2.95.3/bin/arm-linux-ranlib
cp jconfig.doc jconfig.h
mkdir -p /arm-targetqte/man/man1
make
並沒有完成提示出錯,不過libjpeg.so確實生成了,到現在還沒有弄明白為什麼。。。
向下面的目錄中也拷貝一份libjpeg.so
/usr/local/arm/2.95.3/arm-linux/lib
5、交叉編譯qte (需要觸摸屏支持的話參照第8條)
./configure -qconfig qpe -system-jpeg -no-xft -gif -qvfb -depths 4,8,12,16 –xplatform linux-arm-g++
make
6、交叉編譯qtopia
首先在/usr/local/arm/2.95.3/arm-linux/sys-include/linux/videodev.h 文件中把#include一行屏蔽,否則會報錯
另外還需要用到uic程序,用qt-x11-2.3.2在x86環境下編譯生成的即可。
./configure -edition pda -prefix=/arm-target/board-target -no-qtopiadesktop -xplatform linux-arm-g++
make
make install 即可在/arm-target/board-target目錄下生成
7、運行qtopia
方法一:通過nfs方式
啟動后mount -o nolock 192.168.123.116:/ /mnt
cd /mnt/arm-target/board-target
export QTDIR=$PWD
export QPEDIR=$PWD
export LD_LIBRARY_PATH=$PWD/lib:$LD_LIBRARY_PATH
cd bin
./qpe 即可在HHARM9328-MXL的LCD顯示器上看到qtopia的啟動界面
方法二:把qtopia燒寫到flash中運行。(具體的方法開發板的手冊中有,要做的只是把/arm-target/board-target目錄里的內容按自己的需求裁減一番。)
由於華恆的開發板的文件系統cramfs,但qtopia運行時需要操作/Settings目錄,所以在/etc/init.d/rcS最後添加一行 mount –t tmpfs tmpfs /Settings
不明白的事:想啟動后自動執行qtopia,但是在/usr/etc/rc.local中添加
export QPEDIR=/qtopia
cd /qtopia/bin
./qpe
但是 linux啟動后查看環境變數,發現export 一句並沒有起作用。那位大俠如果知道該如何做,歡迎email告訴我ahha1998@126.com ,謝了先!
8、關於觸摸屏
簡單說幾句,由於華恆開發板已經提供了觸摸屏的驅動digi.o,所以我們要做的只是交叉編譯qte的時候加入觸摸屏的支持就可以了!
在qconfig-qpe.h文件添加定義QT_QWS_IPAQ
在qwsmouse_qws.cpp 查找h3600替換為digi
然後重新編譯qte就可以了


[admin via 研發互助社區 ] 移植qtopia到ARM開發板已經有2315次圍觀

http://cocdig.com/docs/show-post-42116.html