在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)作更新的动作。
文章评论(0条评论)
登录后参与讨论