ARM9的QT开发平台的建立
2013-03-27
标签: QT ARM9

在arm9上建立QT的开发平台以前,必须确定已在PC上成功的建立QT的开发平台。然后将qtopia-free-1.7.0、qt-2.3.7-embedded和cross-arm-extra.tgz拷贝至使用者根目录上的另一个资料夹。假设此资料夹名称为qtopia_arm。然后进行以下的安装步骤:

1. 解压缩qtopia-free-1.7.0

2. 安装qt-2.3.7-embedded (ARM-9专门的QT套件)

3. 建立针对ARM-9需要的Qtopia套件

4. 修改ARM-9的root file system,然后产生.cramfs档桉

5. 将.cramfs档桉烧录至ARM-9

在qtopia_arm资料夹下若存在为了产生PC版的qt-2.3.7-embedded和qtopia-free-1.7.0资料夹。须先将这两个资料夹的内容删除。步骤1-3须一次完成,若在其中一个步骤作make动作时发生错误,须找出错误原因然后也须将这两个资料夹的内容删除,然后在重新进行步骤1-4的安装过程。删除指令如下:

root@608:~/qtopia_arm#rm –rf qtopia-free-1.7.0

root@608:~/qtopia_arm#rm –rf qt-2.3.7-embedded

1. 解压缩qtopia-free-1.7.0

解压缩qtopia-free-1.7.0.tar.bz2,指令如下:

root@s608:~/ qtopia_arm #tar xvfz qtopia-free-1.7.0.tar.gz

解压缩完毕后将产生qtopia-free-1.7.0资料夹。再用cd指令切换至qtopia-free-1.7.0,设定环境变数QPEDIR为目前所在的目录:

root@s608:~/ qtopia_arm # cd qtopia-free-1.7.0

root@s608:~/ qtopia_arm/ qtopia-free-1.7.0# export QPEDIR=$PWD

root@s608:~/ qtopia_arm/ qtopia-free-1.7.0#cd ..

最后回到qtopia_arm资料夹。

2. 安装qt-2.3.7-embedded

在qtopia_arm资料夹下将qt-embedded-2.3.7.tar解压缩,指令如下:

root@s608:~/qtopia_arm#tar xvfz qt-embedded-2.3.7.tar.gz

解压缩完毕后产生qt-2.3.6资料夹,为了强调此资料夹是ARM-9专用,将qt-2.3.7资料夹名称更改为qt-2.3.7-embedded:

root@s608:~/ qtopia_arm #mv qt-2.3.7 qt-2.3.7-embedded

用cd指令切换至qt-2.3.7-embedded资料夹:.

root@s608:~/ qtopia_arm#cd qt-2.3.7-embedded

用export指令设定共用的环境变数QTDIR、QTEDIR、PATH和LD_LIBRARY_PATH:

root@s608:~/ qtopia_arm/qt-2.3.7-embedded # export QTDIR=$PWD

root@s608:~/ qtopia_arm/qt-2.3.7-embedded # export QTEDIR=$QTDIR

root@s608:~/ qtopia_arm/qt-2.3.7-embedded # export PATH=$QTDIR/bin:$PATH

root@s608:~/ qtopia_arm/qt-2.3.7-embedded #export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

将/qtopia_arm/qtopia-free-1.7.0/src/qt/目录下的qconfig-qpe.h複製一份至:

~/ qtopia_arm/qt-2.3.7-embedded/src/tools/目录:

root@s608:~/ qtopia_arm/qt-2.3.7-embedded #cp ~/qtopia_arm/qtopia-free-1.7.0/src/qt/qconfig-qpe.h src/tools/

切换至~/qtopia_package/qt-2.3.2-x11目录,将~/qtopia_package/qt-2.3.2-x11/bin/目录下的uic複製一份至$QTEDIR/bin,目前QTEDIR =~/qtopia_arm/qt-2.3.7-embedded,指令如下:

root@s608:~/ qtopia_arm/qt-2.3.7-embedded #cd ~/qtopia_package/qt-2.3.2-x11..

root@s608:~/ qtopia_arm/qt-2.3.2-x11#cp bin/uic $QTEDIR/bin

切换回~/qtopia_arm/qt-2.3.7-embedded,然后作make 前的configure动作:

root@s608:~/ qtopia_arm/qt-2.3.2-x11# cd ~/qtopia_arm/qt-2.3.7-embedded

root@s608:~/ qtopia_arm/qt-2.3.7-embedded # ./configure -qconfig qpe -qvfb -depths 4,8,16,32 –system-jpeg –xplatform linux-arm-g++

将:~/ qtopia_arm/ qt-2.3.7-embedded/usr/local/arm/2.95.3/include/

目录下的所有档桉複製至~/qtopia_arm/ qt-2.3.7-embedded/usr/local/arm/2.95.3/arm-linux/include目录,指令如下:

root@s608:~/ qtopia_arm/ qt-2.3.7-embedded #cp /usr/local/arm/2.95.3/include/* /usr/local/arm/2.95.3/arm-linux/include/

将:~/ qtopia_arm/ qt-2.3.7-embedded/usr/local/arm/2.95.3/lib/

目录下的所有档桉複製至~/qtopia_arm/usr/local/arm/2.95.3/arm-linux/lib/ qt-2.3.7-embedded/usr/local/arm/2.95.3/arm-linux/include目录,指令如下:

root@s608:~/ qtopia_arm/ qt-2.3.7-embedded #cp /usr/local/arm/2.95.3/lib/* /usr/local/arm/2.95.3/arm-linux/lib/

接下来做make动作:

root@s608:~/ qtopia_arm/ qt-2.3.7-embedded #make sub-src

3. 建立针对ARM-9需要的Qtopia套件

欲在ARM建立Qtopia套件功能 须先将cross-arm-extra.tgz解压缩,然后将解压缩所产生的include及lib资料夹分别拷贝至/usr/local/arm/2.95.3/arm-linux/include/及/usr/local/arm/2.95.3/arm-linux/lib/内, 指令如下

root@s608:~/ qtopia_arm#tar xvfz cross-arm-extra.tgz

root@s608:~/ qtopia_arm#cp –rf include/* /usr/local/arm/2.95.3/arm-linux/include/

root@s608:~/qtopia_arm#cp –rf lib/* /usr/local/arm/2.95.3/arm-linux/lib/

用cd指令切换至qtopia-free-1.7.0,再用export指令设定共用的环境变数QTDIR、QPEDIR和PATH:

root@s608:~/qtopia_arm#cd qtopia-free-1.7.0

root@s608:~/qtopia_arm/qtopia-free-1.7.0#export QTDIR=$QTEDIR

root@s608:~/qtopia_arm/qtopia-free-1.7.0#export QPEDIR=$PWD

root@s608:~/qtopia_arm/qtopia-free-1.7.0#export PATH=$QPEDIR/bin:$PATH

目前QTEDIR=:~/qtopia_arm/qt-2.3.7-embedded/。用cd指令切换至~/qtopia_arm/qtopia-free-1.7.0/src,然后作configure及make动作:

root@s608:~/qtopia_arm/qtopia-free-1.7.0#cd src

root@s608:~/qtopia_arm/qtopia-free-1.7.0/src# ./configure –xplatform linux-arm-g++

root@s608:~/qtopia_arm/qtopia-free-1.7.0/src#make

4. 修改ARM-9的root file system,然后产生.cramfs档桉

为了要将QT功能加入ARM9发展板,我们必须先将QT套件摆至ARM9发展板根目录系统(root file system)中的bin目录。将修改后的根目录系统转换为.cramfs(continuous RAM file system)档桉,然后载入ARM9发展板起始位址为1M的flash记忆体中。假设ARM9的根目录名称为root_english。产生.cramfs档桉步骤如下:

A. 安装apache套件:

root@s608:~#apt-get install apache

B. 删除~/root_english/mnt/etc/目录下的linuette档桉,指令如下

root@s608:~#rm -rf ~/root_english/mnt/etc/linuette

C. 删除~/root_english/usr 目录中的 linuette和 qt 档桉:

root@s608:~#rm -rf ~/root_english/usr/linuette

root@s608:~#rm -rf ~/root_english/usr/qt

D.在/root_english/资料夹下新增一些目录:

root@s608:~/root_english#mkdir -p ~/root_english/Qtopia/qt-2.3.7/lib

root@s608:~/root_english#mkdir ~/root_english/Qtopia/qtopia-free-1.7.0

root@s608:~/root_english#mkdir ~/root_english/Qtopia/qtopia-free-1.7.0/sets

若以上三个资料夹已存在,先用rm -rf…指令删除这些资料夹,然后再作mkdir动作。

E. 将~/qtopia_arm/qtopia-free-1.7.0/下的所有资料夹及档桉(bin、apps、help、lib、pics、sounds、i18n、etc、plugins、serveices、LICENSE和README.html)拷贝至~/root_english/Qtopia/qtopia-free-1.7.0/:

root@s608:~/root_english#cp -rf ~/qtopia_arm/qtopia-free-1.7.0/bin ~/root_english/Qtopia/qtopia-free-1.7.0/

root@s608:~/root_english#cp –rf ~/qtopia_arm/qtopia-free-1.7.0/apps ~/root_english/Qtopia/qtopia-free-1.7.0/

root@s608:~/root_english#cp –rf ~/qtopia_arm/qtopia-free-1.7.0/help ~/root_english/Qtopia/qtopia-free-1.7.0/

root@s608:~/root_english#cp -rf ~/qtopia_arm/qtopia-free-1.7.0/lib ~/root_english/Qtopia/qtopia-free-1.7.0/

root@s608:~/root_english#cp –rf ~/qtopia_arm/qtopia-free-1.7.0/pics ~/root_english/Qtopia/qtopia-free-1.7.0/

root@s608:~/root_english#cp -rf ~/qtopia_arm/qtopia-free-1.7.0/sounds ~/root_english/Qtopia/qtopia-free-1.7.0/

root@s608:~/root_english#cp -rf ~/qtopia_arm/qtopia-free-1.7.0/i18n ~/root_english/Qtopia/qtopia-free-1.7.0/

root@s608:~/root_english#cp -rf ~/qtopia_arm/qtopia-free-1.7.0/etc ~/root_english/Qtopia/qtopia-free-1.7.0/

root@s608:~/root_english#cp -rf ~/qtopia_arm/qtopia-free-1.7.0/plugins ~/root_english/Qtopia/qtopia-free-1.7.0/

root@s608:~/root_english#cp -rf ~/qtopia_arm/qtopia-free-1.7.0/services ~/root_english/Qtopia/qtopia-free-1.7.0/

root@s608:~/root_english#cp -rf ~/qtopia_arm/qtopia-free-1.7.0/LICENSE ~/root_english/Qtopia/qtopia-free-1.7.0/

root@s608:~/root_english#cp -rf ~/qtopia_arm/qtopia-free-1.7.0/README.html ~/root_english/Qtopia/qtopia-free-1.7.0/

F. 将~/qtopia_arm/qt-2.3.7-embedded/lib下的相关档桉拷贝至~/root_english/Qtopia/qt-2.3.7/lib:

root@s608:~/root_english#cp -rf ~/qtopia_arm/qt-2.3.7-embedded/lib ~/root_english/Qtopia/qt-2.3.7/

G. 将root目录下的资料夹(Applications、Documents、Settings)拷贝至~/root_english/Qtopia/qtopia-free-1.7.0/sets目录中:

root@s608:~#cp -rf ~/Applications ~/root_english/Qtopia/qtopia-free-1.7.0/sets

root@s608:~#cp -rf ~/Documents ~/root_english/Qtopia/qtopia-free-1.7.0/sets

root@s608:~#cp -rf~/Settings ~/root_english/Qtopia/qtopia-free-1.7.0/sets

H. 若~/root_english/Qtopia/qtopia-free-1.7.0/sets目录下没有(qcop-msg-language、qcop-msg-launchersettings、qcop-msg-qpe、qcop-msg-quicklauncher、qcop-msg-systemtime)这些档桉,则建立这些档桉:

root@s608:~#touch ~/root_english/Qtopia/qtopia-free-1.7.0/sets/qcop-msg-language

root@s608:~#touch ~/root_english/Qtopia/qtopia-free-1.7.0/sets/qcop-msg-launchersettings

root@s608:~#touch ~/root_english/Qtopia/qtopia-free-1.7.0/sets/qcop-msg-qpe

root@s608:~#touch ~/root_english/Qtopia/qtopia-free-1.7.0/sets/qcop-msg-quicklauncher

root@s608:~#touch ~/root_english/Qtopia/qtopia-free-1.7.0/sets/qcop-msg-systemtime

I. 使用gedit修改在~/root_english/usr/etc/ 目录下的 rc.local档桉:

root@s608:~#gedit ~/root_english/usr/etc/rc.local

在rc.local中增加以下指令:

. /usr/etc/shrc

cd /tmp/

/bin/cp -rf /Qtopia/qtopia-free-1.7.0/wjluv/* /tmp/

echo "start qpe "

/Qtopia/qtopia-free-1.7.0/bin/qpe -qws &

sleep 5

/Qtopia/qtopia-free-1.7.0/bin/qcop "QPE/System" "execute(QString)" "calibrate" &

在rc.local所增加的指令如图12所示。

图12. 在rc.local档增加一些与QT程式有关的指令

J. 使用gedit在~/root_english/usr/etc/ 目录下修改(新增)shrc草稿档:

root@s608:~#gedit ~/root_english/usr/etc/shrc

新增内容如下:

#!/bin/sh

export DISPLAY=:0.0

export HOME=/tmp

export QPEDIR="/Qtopia/qtopia-free-1.7.0"

export QTDIR="/Qtopia/qt-2.3.7"

export QTEDIR="/Qtopia/qt-2.3.7"

export PATH=$QPEDIR/bin:$PATH

export LD_LIBRARY_PATH=$QTDIR/lib:$QPEDIR/lib

修改后的shrc如图13所示。

图13. 修改后的shrc档桉

K. 使用gedit在~/root_english/usr/etc/ 目录下修改(新增)profile草稿档:

root@s608:~#gedit ~/root_english/usr/etc/profile

新增内容如下:

#!/bin/sh

DISPLAY=unix:0.0

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin

LD_LIBRARY_PATH=/lib:/usr/lib:/Qtopia/qt-2.3.7/lib

QWS_KEYBOARD=TTY

LANG=C

HOME=/tmp

KMOD=/lib/modules/2.4.18-rmk7-pxa1

TERMINFO_DIRS=/usr/etc

export PATH LD_LIBRARY_PATH QTDIR LINUETTEDIR QWS_KEYBOARD LANG HOME DISPLAY KDEDIR KMOD TERMINFO_DIRS

L.下指令

root@s608:~/root_english#ls –al

查看~/root_english/.profile是否与~/root_english/usr/etc/profile连结,如图14所示。

图14 使用ls –al 指令查看~/root_english/.profile是否与~/root_english/usr/etc/profile连结

若没有则作连结,在~/root_english/usr/etc/profile增加如下指令

export HOME=/tmp

export QPEDIR=”/Qtopia/qtopia-free-1.7.0”

export QTDIR="/Qtopia/qt-2.3.7"

export QTEDIR="/Qtopia/qt-2.3.7"

export PATH=$QPEDIR/bin:$PATH

export LD_LIBRARY_PATH=$QTDIR/lib:$QPEDIR/lib

完整的~/root_english/usr/etc/profile档桉如图15所示。

图15 完整的~/root_english/usr/etc/profile档桉

若没有互相连结,则增加~/root_english/.profile档桉,内容如下:

root@s608:~#gedit ~/root_english/.profile

#!/bin/sh

DISPLAY=unix:0.0

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin

LD_LIBRARY_PATH=/lib:/usr/lib:/Qtopia/qt-2.3.7/lib

QWS_KEYBOARD=TTY

LANG=C

HOME=/tmp

KMOD=/lib/modules/2.4.18-rmk7-pxa1

TERMINFO_DIRS=/usr/etc

export PATH LD_LIBRARY_PATH QTDIR LINUETTEDIR QWS_KEYBOARD LANG HOME DISPLAY KDEDIR KMOD TERMINFO_DIRS

export HOME=/tmp

export QPEDIR="/Qtopia/qtopia-free-1.7.0"

export QTDIR="/Qtopia/qt-2.3.7"

export QTEDIR="/Qtopia/qt-2.3.7"

export PATH=$QPEDIR/bin:$PATH

export LD_LIBRARY_PATH=$QTDIR/lib:$QPEDIR/lib

在~/root_english/mnt/etc/若没有pointercal此档桉,则产生此档桉:

root@s608:~#touch ~/root_english/mnt/etc/pointercal

M. 在~/root_english/usr/目录下新增share资料夹:

root@s608:~#mkdir ~/root_english/usr/share

N.複製~/qtopia_arm/qtopia-free-1.7.0/etc/目录下的zoneinfo档桉至~/root_english/usr/share目录中:

root@s608:~#cp -rf ~/qtopia_arm/qtopia-free-1.7.0/etc/zoneinfo ~/root_english/usr/share

O.複製/usr/local/arm/2.95.3/arm-linux/lib/目录下的libuuid.so*档桉至~/root_english/lib/目录中:

root@s608:~#cp /usr/local/arm/2.95.3/arm-linux/lib/libuuid.so* ~/root_english/lib/

P. 使用mkcramfs指令产生将root_english 目录下的档桉系统转换为.cramfs的档桉型态:

root@s608:~#mkcramfs ~/root_english ./qtopia-1.7.cramfs

5. 将.cramfs档桉烧录至ARM-9

将档桉下载至ARM9的tmp资料夹有透过(telnet, ncftp)、minicom和(telnet, wget)三种方法。当档桉较小时,用com port 透过minicom传输较方便。如果忘记ARM-9的IP位址,也可透过minicom进入ARM-9查看ARM的IP位址。但是欲下载的档桉较大时,用minicom传输较费时,这时候建议使用(telnet, wget)的传输方法。

使用wget指令时,须先将欲下载的档桉放在/var/www资料夹内。

首先将qtopia-1.7.cramfs放到/var/www目录下:

root@s608:~#cp ~/qtopia-1.7.cramfs /var/www

使用find指令找imagewrite档桉然后放至根目录,再将imagewrite档桉也放至 /var/www 指令如下:

root@s608:~#cp ~/imagewrite /var/www

使用telnet与ARM9连线:

root@s608:~#telnet 192.168.2.20

.

.

login: root

.

.

其中192.168.2.20代表ARM-9的I/P位址。若连线成功,操作环境便移至ARM9。使用cd指令切换至 tmp资料夹,下载imagewrite及qtopia-1.7.cramfs 档桉:

#cd tmp

#wget http://192.168.2.163/imagewrite

#wget http://192.168.1.254/qtopia-1.7.cramfs

执行imagewrite指令,将qtopia-1.7.cramfs放至起始位址为1M的快闪(flash)记忆体:

#chmod a+x imagewrite

#imagewrite /dev/mtd/0 qtopia-1.7.cramfs:1M

如此便将ARM9的根目录系统(root file system)作更新的动作。

共 2 页   上一页12
可能会用到的工具/仪表
本站简介 | 意见建议 | 免责声明 | 版权声明 | 联系我们
CopyRight@2024-2039 嵌入式资源网
蜀ICP备2021025729号