www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀] 教程是這樣的:一.硬件平臺(tái)1.主機(jī): PC機(jī),512M內(nèi)存以上。2.目標(biāo)機(jī): UP-NetARM2410-S實(shí)驗(yàn)平臺(tái)。二.移植軟件資源1.Red Hat Linux 9.0(主機(jī)操作系統(tǒng))2.gcc-3.4.1.tar.gz(主機(jī)編譯器)3.a(chǎn)rm-li

教程是這樣的:

一.硬件平臺(tái)

1.主機(jī): PC機(jī),512M內(nèi)存以上。

2.目標(biāo)機(jī): UP-NetARM2410-S實(shí)驗(yàn)平臺(tái)。

二.移植軟件資源

1.Red Hat Linux 9.0(主機(jī)操作系統(tǒng))

2.gcc-3.4.1.tar.gz(主機(jī)編譯器)

3.a(chǎn)rm-linux-gcc-3.4.1.tar.bz2(交叉編譯器)

4.tslib-1.3.tar.bz2(管理目標(biāo)平臺(tái)的觸摸屏)

5.qtopia-opensource-src-4.2.1.tar.gz(包含Qt,Qtopia core)

2. GUI(QT)的移植過(guò)程

編譯前的約定:

1)我的工作目錄為:/mnt/nfs。

2)qtopia-opensource-src-4.2.1.tar.gz 軟件包放在/mnt/nfs/qtopia4目錄下。

一.編譯主機(jī)編譯器gcc-3.4.1.tar.gz

步驟如下:

# tar –zxvf gcc-3.4.1.tar.gz

# ./configure (默認(rèn)安裝目錄為:/usr/local)

# make

# make install

安裝完成后,可執(zhí)行文件放在/usr/local/bin目錄下,庫(kù)文件放在/usr/local/lib目錄下。

二.安裝交叉編譯器arm-linux-gcc-3.4.1.tar.bz2

步驟如下:

# tar jxvf arm-linux-gcc-3.4.1.tar.bz2

解壓后的文件為 usr目錄,其已包括可執(zhí)行文件,直接將usr拷貝到根目錄下。然后

# vi /etc/profile

在里邊添加:

export PATH=$PATH:/usr/local/arm/3.4.1/bin

保存退出,執(zhí)行:

# source /etc/profile

三.編譯tslib-1.3.tar.bz2

詳細(xì)步驟如下:

# tar jxvf tslib-1.3.tar.bz2

解壓后的目錄為tslib-1.3。

# cd tslib-1.3

# export CC=arm-linux-gcc

# export CXX= arm-linux-g++

# ./autogen.sh

# ./configure --prefix=/mnt/nfs/tslib1.3-install --host=arm-linux

( 配置目標(biāo)平臺(tái)為ARM-linux,在主機(jī)上的安裝目錄為/mnt/nfs/tslib1.3-install )

# make

# make install



編譯qtopia-opensource-src-4.2.1.tar.gz

編譯前約定:

安裝目錄為:/mnt/nfs/qtopia4/qtopiatslibinstall

目標(biāo)目錄為:/mnt/nfs/qtopia4/qtopiatslibtarget

下面解壓軟件包:

# tar zxvf qtopia-opensource-src-4.2.1.tar.gz

然后重命名解壓后的包:

# mv qtopia-opensource-4.2.1 qtopiatslibinstall

# cd qtopiatslibinstall

在此目錄下,文件夾為qtopiacore的目錄即是Qt,QtopiaCore所在目錄,里邊包含了開(kāi)發(fā)所需的 Designer,qmake,uic,moc等工具,也包含了面向嵌入式平臺(tái)的Qt庫(kù)。

編譯前,首先建立定位到安裝目錄和目標(biāo)目錄的環(huán)境變量:

# export QTOPIAINST=/mnt/nfs/qtopia4/qtopiatslibinstall

# export QTOPIATARG=/mnt/nfs/qtopia4/qtopiatslibtarget

為了讓編譯適應(yīng)于目標(biāo)平臺(tái)和去除編譯中將出現(xiàn)的錯(cuò)誤,我們需要對(duì)源碼進(jìn)行修改和裁減。因此,編譯的詳細(xì)過(guò)程如下:

1. 修改源碼包

1)

# 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)修改3.4.1版的arm編譯器的文件

# cd /usr/local/arm/3.4.1/

# vi arm-linux/include/linux/videodev2.h

在其中添加如下內(nèi)容:

#define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B','A','8','1')

/* 8 BGBG.. GRGR.. */

保存退出。

# vi arm/3.4.1/arm-linux/sys_include/linux/videodev2.h

在其中添加如下內(nèi)容:

#define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B','A','8','1')

/* 8 BGBG.. GRGR.. */

保存退出。

3) 修改時(shí)區(qū)信息

# vi src/libraries/qtopia/qtimezone.cpp

將114行的 /usr/share/zoneinfo/ 改為/mnt/nfs/qtopia4/qtopiatslibtarget/zoneinfo/ ,保存退出。

# vi src/settings/systemtime/settime.cpp

將318行的 /usr/share/zoneinfo/ 改為/mnt/nfs/qtopia4/qtopiatslibtarget/zoneinfo/ ,保存退出。

4) 裁減Qtopia core的庫(kù)

# vi qtopiacore/qconfig-qpe.h

首先注釋掉關(guān)于鼠標(biāo)光標(biāo)的宏定義,讓程序運(yùn)行時(shí),觸摸屏中央有光標(biāo)出現(xiàn):

// Qtopia Core

/*

#ifndef QT_NO_QWS_CURSOR

# define QT_NO_QWS_CURSOR

#endif

*/

/*

#ifndef QT_NO_QWS_MOUSE

# define QT_NO_QWS_MOUSE

#endif

#ifndef QT_NO_QWS_MOUSE_AUTO

# define QT_NO_QWS_MOUSE_AUTO

#endif

*/

其它宏定義根據(jù)需要進(jìn)行注釋。

保存后將qconfig-qpe.h拷貝到global目錄。

# cp qtopiacore/qconfig-qpe.h qtopiacore/qt/src/corelib/

global/qconfig-qpe.h

5)注釋掉其他文件里的QT_NO_QWS_CURSOR的定義

# vi qtopiacore/qt/src/corelib/global/qfeatures.h

注釋掉如下內(nèi)容:

/*

#if !defined(QT_NO_QWS_CURSOR) && (defined(QT_NO_CURSOR))

#define QT_NO_QWS_CURSOR

#endif

*/

保存退出。


# vi qtopiacore/qt/src/corelib/global/qglobal.h

注釋掉以下內(nèi)容:

//# define QT_NO_QWS_CURSOR
Qtopia4移植過(guò)程(三)2007-06-27 22:252.配置源碼包

首先,確定目錄為:/mnt/nfs/qtopia4/qtopiatslibinstall

然后進(jìn)行配置,執(zhí)行如下命令 :

# ./configure -silent -release

-image /mnt/nfs/qtopia4/qtopiatslibtarget

-prefix /mnt/nfs/qtopia4/qtopiatslibtarget

-xplatform linux-arm-g++ -arch arm -no-qvfb

-displaysize 640x480 -no-modem

-extra-qtopiacore-config "-release -xplatform qws/linux-arm-g++ -embedded arm -opengl -qconfig qpe -qt-sql-sqlite

-depths 4,8,16,32 -qt-kbd-usb -no-kbd-tty -no-mouse-linuxtp

-qt-mouse-tslib -I/mnt/nfs/tslib1.3-install/include -L/mnt/nfs/tslib1.3-install/lib" 2>../qtopiaconfgureERR.txt


主要配置選項(xiàng)解說(shuō)如下:

-xplatform linux-arm-g++ -arch arm

目標(biāo)平臺(tái)為arm-linux,體系結(jié)構(gòu)為arm。


-no-qvfb

目標(biāo)平臺(tái)已支持framebuffer,因而不使用虛擬幀緩沖。


-extra-qtopiacore-config

為Qtopia core 配置選項(xiàng)。


-xplatform qws/linux-arm-g++ -embedded arm

目標(biāo)平臺(tái)編譯配置文件使用qtopiacore/qt/mkspecs/qws/linux-arm-g++目錄下的配置文件,嵌入式平臺(tái)為arm。


-qconfig qpe

使用配置文件qconfig-qpe.h,若使用qconfig-large.h配置文件,則使用-qconfig large選項(xiàng)。


-qt-sql-sqlite

數(shù)據(jù)庫(kù)支持Sqlite。


-qt-kbd-usb

鍵盤(pán)支持usb協(xié)議。


-no-mouse-linuxtp -qt-mouse-tslib

-I/mnt/nfs/tslib1.3-install/include -L/mnt/nfs/tslib1.3-install/lib

觸摸屏協(xié)議不支持linuxtp,支持tslib,并在后面添加上剛才編譯的tslib的頭文件和庫(kù)。


2>../qtopiaconfgureERR.txt

最后將配置過(guò)程中的錯(cuò)誤輸出到qtopiaconfgureERR.txt文件中。

3.編譯源碼包

執(zhí)行如下命令:

# make 2>../qtopiamakeERR.txt

4.安裝編譯后源碼包

# make install

編譯安裝完成后,在/mnt/nfs/qtopia4/qtopiatslibtarget目錄下產(chǎn)生各個(gè)目標(biāo)文件。

5.建立時(shí)區(qū)信息

# cd $QTOPIATARG

# mkdir zoneinfo

# cp -a /usr/share/zoneinfo/* $QTOPIATARG/zoneinfo/

五.編譯后的處理

完成上面的步驟后,所有軟件包已編譯完成。下面建立環(huán)境變量,進(jìn)行后期處理,建立開(kāi)發(fā)環(huán)境。

1)將designer,qmake 等工具拷貝到$QTOPIATARG/bin/目錄下。

# cp $QTOPIAINST/qtopiacore/host/bin/* $QTOPIATARG/bin/
2)建立環(huán)境變量:
# vi /etc/profile
添加如下內(nèi)容:
QTOPIA="/mnt/nfs/qtopia4/qtopiatslibtarget"
LD_LIBRARY_PATH="/usr/lib:/usr/local/lib:/usr/X11R6/lib"
LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$QTOPIA/lib"
PATH="$PATH:$QTOPIA/bin"
QMAKESPEC=/mnt/nfs/qtopia4/qtopiatslibinstall/qtopiacore/qt/mkspecs/qws/linux-arm-g++
export QTOPIA PATH LD_LIBRARY_PATH QMAKESPEC
保存退出。
#source /etc/profile
3)修改ts.conf
# cd /mnt/nfs/tslib1.3-install/etc
# vi ts.conf
原文件內(nèi)容如下:
#module mousebuts
module variance xlimit=50 ylimit=50 pthreshold=3
module dejitter xdelta=1 ydelta=1 pthreshold=3
module linear
將第一行的“#”去掉,讓觸摸屏起作用。
到此為止,開(kāi)發(fā)環(huán)境建立完畢。
3 移植成果演示
在這里,我們以Qtopia自帶的例子程序?yàn)槔?,?lái)演示應(yīng)用程序運(yùn)行步驟。首先在/mnt/nfs /qtopia4/目錄下用VI編輯器建立qtopiatslib.sh文件:
export TSLIB_TSEVENTTYPE=event0
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CONFFILE=/mnt/nfs/tslib1.3-install/etc/ts.conf
export TSLIB_CONSOLEDEVICE=none
export TSLIB_CALIBFILE=/mnt/yaffs/tmp/pointercal
export TSLIB_PLUGINDIR=/mnt/nfs/tslib1.3-install/share/ts/plugins
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/mnt/nfs
/tslib1.3-install/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/mnt/nfs
/qtopia4/qtopiatslibtarget/lib
export QWS_SIZE=640x480
export QWS_MOUSE_PROTO="Tslib:/dev/input/event0"
export POINTERCAL_FILE=/mnt/yaffs/tmp/pointercal

insmod /mnt/yaffs/touchscreen/ts-uptech.o
cd /mnt/nfs/tslib1.3-install/bin
./ts_calibrate

cd /mnt/nfs/qtopia4/qtopiatslibtarget/bin
if [ -f "$TSLIB_CALIBFILE" ]; then
./qpe -qws
else
/mnt/nfs/tslib1.3-install/bin/ts_calibrate
./qpe -qws
fi
保存退出,修改用戶使用權(quán)限:
# chmod 777 qtopiatslib.sh
然后啟動(dòng)目標(biāo)平臺(tái),打開(kāi)minicom終端,進(jìn)入目標(biāo)平臺(tái)的系統(tǒng)。在主機(jī)上啟動(dòng)NFS服務(wù),將主機(jī)的/mnt /nfs目錄掛載到目標(biāo)機(jī)的/mnt/nfs目錄。
在終端里執(zhí)行:

# ifconfig eth0 192.168.0.1
# mount -t nfs (主機(jī)IP地址):/mnt/nfs /mnt/nfs
# cd /mnt/yaffs
# mkdir tmp
# cd /mnt/nfs/qtopia4
# ./qtopiatslib.sh

執(zhí)行qtopiatslib.sh文件,首先校準(zhǔn)觸摸屏,依次點(diǎn)擊屏幕上出現(xiàn)的五個(gè)點(diǎn),完成后,會(huì)在/mnt /yaffs/tmp目錄下生成pointercal校準(zhǔn)文件。接下來(lái)就會(huì)啟動(dòng)qpe應(yīng)用程序,進(jìn)入Qtopia Phone的界面。
在實(shí)驗(yàn)的過(guò)程中可能會(huì)出現(xiàn)下面的錯(cuò)誤:
“在make的時(shí)候,遇到了一個(gè)錯(cuò)誤。/usr/bin/ld .....debug-shared/moc.o提示could't read symbols :File in wrong format”
只要重新用新的源代碼來(lái)做才能通過(guò)。
有時(shí)候嵌入式的問(wèn)題真的很難說(shuō)。總之,出現(xiàn)問(wèn)題不要緊,能學(xué)到東西。努力吧,嵌入式的新人們。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
關(guān)閉
關(guān)閉