qtopia 4.2.3 移植 交叉編譯記錄&總結

來源:互聯網
上載者:User

文章來源:http://blog.chinaunix.net/u/28781/article_65529.html

一.硬體平台
1.主機: PC機,1G Memory 3G Cpu。
2.目標機: jk2410 arm9。

二.軟體平台
1.Ubuntu 7.04 (主機作業系統,VMware)
2.gcc3.3.6(主機編譯器)
3.eldk4.1(交叉編譯器)
4.qtopia-opensource-4.2.3.tar.gz(包含Qt,Qtopia core)

三.移植過程
1.拷貝編譯目標需要的檔案"configure : -xplatform linux-arm-g++"
export QTOPIA_DEPOT_PATH=/home/leibian/qtopia_arm/qtopia-opensource-4.2.3/
cd src/libraries/qtopiabase/
cp custom-linux-cassiopeia-g++.h custom-linux-arm-g++.h
cp custom-linux-cassiopeia-g++.cpp custom-linux-arm-g++.cpp

2.修改
cd $QTOPIA_DEPOT_PATH
a)支援觸控螢幕
vi qtopiacore/qconfig-qpe.h
#define QT_QWS_IPAQ
#define QT_QWS_IPAQ_RAW
b) 修改時區資訊, 否則qtipia運行時候會到“/usr/share/zoneinfo/”讀取
vi src/libraries/qtopia/qtimezone.cpp
將114行的 /usr/share/zoneinfo/ 改為/qtopia-mount-folder-on-board/etc/zoneinfo ,儲存退出。
vi src/settings/systemtime/settime.cpp
將318行的 /usr/share/zoneinfo/ 改為/qtopia-mount-folder-on-board/etc/zoneinfo ,儲存退出。

3.configure
mkdir /home/leibian/qtopia_arm/build_4.2
export QPEDIR=/home/leibian/qtopia_arm/build_4.2
cd $QPEDIR
echo "yes" | ../qtopia-opensource-4.2.3/configure -edition phone -xplatform linux-arm-g++ -arch arm -no-qvfb -release -displaysize 240x320 -no-modem -quicklaunch -defaultbuttons phone -image /home/leibian/qtopia_arm/nfs/ -prefix /home/leibian/qtopia_arm/nfs/ -no-bluetooth -no-drm -no-drm -no-infrared   -extra-qt-config "-qt-zlib -qt-gif -qt-libpng -qt-libmng -qt-libjpeg" -extra-qtopiacore-config '-depths 16 -qt-mouse-linuxtp -no-mouse-pc -no-mouse-bus -no-mouse-yopy -no-mouse-vr41xx  -no-mouse-tslib -no-mouse-qvfb' > log_cfg 2>&1

4.make
make > log 2>&1

5.install
make install IMAGE=/home/leibian/qtopia_arm/nfs/
拷貝zoneinfo
mkdir /home/leibian/qtopia_arm/nfs/etc
cp -avf $QTOPIA_DEPOT_PATH/etc/zoneinfo /home/leibian/qtopia_arm/nfs/etc

6.run(using nfs)
export PATH=/qtopia-mount-folder-on-board/bin:$PATH
export LD_LIBRARY_PATH=/qtopia-mount-folder-on-board/lib:$LD_LIBRARY_PATH
export QWS_MOUSE_PROTO=LinuxTP:/dev/touchscreen/0
export QWS_DISPLAY="LinuxFb:mmWidth35:mmHeight45:0"

qpe&
等待出現畫面之後,校正觸控螢幕
qcop service send Launcher "execute(QString)" "calibrate"

四.常見問題
a)V4L2_PIX_FMT_SBGGR8:
vi arm-linux/include/linux/videodev2.h
在 #define V4L2_PIX_FMT_HI240   v4l2_fourcc('H','I','2','4') /*  8  8-bit color   */ 之後添加
/* see http://www.siliconimaging.com/RGB%20Bayer.htm */
#define V4L2_PIX_FMT_SBGGR8  v4l2_fourcc('B','A','8','1') /*  8  BGBG.. GRGR.. */
vi arm-linux/sys_include/linux/videodev2.h
edit it same as arm-linux/include/linux/videodev2.h

b)PAGE_SIZE and PAGE_MASK
vi arm-linux/sys-include/asm/page.h
把語句
#ifdef __KERNEL__
移動到定義
15 /* PAGE_SHIFT determines the page size */
16 #define PAGE_SHIFT      12
17 #define PAGE_SIZE       (1UL << PAGE_SHIFT)
18 #define PAGE_MASK       (~(PAGE_SIZE-1))
後面
vi arm-linux/include/asm/page.h
edit it same as above

c)觸控螢幕不工作
檢查
export QWS_MOUSE_PROTO=LinuxTP:/dev/touchscreen/0

d)顯示字型和表徵圖小
檢查
export QWS_DISPLAY="LinuxFb:mmWidth35:mmHeight45:0"

e)nfs mout failed
mount -t nfs xx xx -o nolock

f)nfs timeout
mout -t nfs xx xx -o nolock,rsize=1024,wsize=1024,timeo=15 

************************************************************************************************

setenv bootargs console=ttySAC0,115200 root=/dev/nfs nfsroot=192.168.18.10:/nfsroot ip=192.168.18.110:::255.255.255.0::eth0

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.