Qt2.2.0移植到ARM9(四)(JZ2440----S3c2440)

Qt2.2.0移植到ARM9(四)(JZ2440----S3c2440)


Linux:Ubuntu9.10

编译器版本:arm-linux-gcc-4.3.2

Qt:qtopia-free-src-2.2.0.tar.gz

依赖库:libjpeg库(参考移植(一));uuid库。

操作参考《嵌入式Linux应用开发完全手册》

1、安装qtopia2.2.0

(1)解压

qtopia-free-src-2.2.0.tar.gz位于系统的/work/GUI/qtopia目录下。

解压命令:$tar zxvf  qtopia-free-src-2.2.0.tar.gz

(2)编译、安装jpeg库(省略,之前已完成)

(3)编译、安装uuid库(省略,之前已完成)

(4)对qtopia修改:

	$cd  qtopia-free-src-2.2.0
	$patch -p1<../qtopia-free-2.2.0_100ask.patch

(5)修改配置文件

修改/qtopia-free-src-2.2.0/qtopia/qrc/qt/qconfig-qpe.h文件。

Qt2.2.0移植到ARM9(四)(JZ2440----S3c2440)_第1张图片

Qt2.2.0移植到ARM9(四)(JZ2440----S3c2440)_第2张图片

(6)针对交叉编译器的版本修改代码

修改/qtopia-free-src-2.2.0/qt2/tools/qembed/目录下的Makefile.in文件。

Qt2.2.0移植到ARM9(四)(JZ2440----S3c2440)_第3张图片

修改:

(1)/qtopia-free-src-2.2.0/qt2/src/tools/目录下的qvaluelist.h。
(2)/qtopia-free-src-2.2.0/qt2/src/kernel/目录下的qwindowsystem_qws.h。
(3)/qtopia-free-src-2.2.0/qtopia/src/libraries/qtopia/backend/目录下的event.cpp。

Qt2.2.0移植到ARM9(四)(JZ2440----S3c2440)_第4张图片

Qt2.2.0移植到ARM9(四)(JZ2440----S3c2440)_第5张图片

Qt2.2.0移植到ARM9(四)(JZ2440----S3c2440)_第6张图片Qt2.2.0移植到ARM9(四)(JZ2440----S3c2440)_第7张图片

(7)修改导致“error:extra qualification”错误的文件

修改:/qtopia-free-src-2.2.0/qtopia/src/libraries/qtopia/目录下的qdawg.cpp。
/qtopia-free-src-2.2.0/qtopia/src/libraries/qtopia2/thumbnailview_p.h。
/qtopia-free-src-2.2.0/qtopia/src/libraries/qtopiapim/目录下abtable_p.h。
/qtopia-free-src-2.2.0/qtopia/src/libraries/qtopiapim/目录下numberentry_p.h。

后面还有一些,参考《开发手册》

2、配置、编译、安装qtopia

(1)配置qtopia-free-src-2.2.0


(2)执行编译

$sudo make

$sudo make install

在以下目录中生成可执行文件和库文件。

/qtopia-free-src-2.2.0/qtopia/bin

/qtopia-free-src-2.2.0/qtopia/lib

/qtopia-free-src-2.2.0/qtopia/plugins

字库文件在/qtopia-free-src-2.2.0/qt2/lib/fonts目录下。

3、在开发板上安装、运行qtopia

借助fs_mini_mdev根文件系统的压缩包fs_mini_mdev.tar.bz2制作qt2.2.0文件系统.

fs_mini_mdev.tar.bz2位于/work/system/目录下

(1)解压、重命名

	$tar jxvf fs_mini_mdev.tar.bz2
	$sudo cp -rf  jxvf fs_mini_mdev fs_qt
	$sudo chown book:book  fs_qt -R

(2)复制qtopia所依赖的jpeg库、uuid库

	$cp libjpeg.so*  /work/system/fs_qt/lib -d
	$cp libuuid.so*  /work/system/fs_qt/lib -d

Qt2.2.0移植到ARM9(四)(JZ2440----S3c2440)_第8张图片

Qt2.2.0移植到ARM9(四)(JZ2440----S3c2440)_第9张图片

(3)复制字库

	$cp -rf /qtopia-free-src-2.2.0/qt2/lib/fonts  /qtopia/image/opt/Qtopia/lib
	$cp -rf  /qtopia/image/opt  /work/system/fs_qt

Qt2.2.0移植到ARM9(四)(JZ2440----S3c2440)_第10张图片

(4)创建时区文件

直接使用主机中的时区文件

	$cd /work/system/fs_qt
	$mkdir -p usr/share/zoneinfo
	$cp -rf /usr/share/zoneinfo/America  usr/share/zoneinfo
	$cp /usr/share/zoneinfo/zone.tab  usr/share/zoneinfo

Qt2.2.0移植到ARM9(四)(JZ2440----S3c2440)_第11张图片

(5)伪造触摸屏校验文件

在开发板根文件系统中建立一个校验文件

	$vim /etc/pointercal  

其内容为:1 0 1 0 1 1 65536,它可以让系统不执行校验程序 

(6)在根文件系统/bin目录下建立一个qpe.sh文件,它用来设置环境变量、启动Qtopia。

qpe.sh内容如下:

	#!/bin/sh
	export HOME=/root
	export QTDIR=/opt/Qtopia
	export QPEDIR=/opt/Qtopia
	export QWS_DISPLAY=LinuxFb:/dev/fb0
	export QWS_KEYBOARD="TTY:/dev/tty1"
	#export QWS_MOUSE_PROTO="USB:/dev/mouse0"
	export QWS_MOUSE_PROTO="TPanel:/dev/ts0"
	export PATH=$QPEDIR/bin:$PATH
	export LD_LIBRARY_PATH=$QPEDIR/lib:$LD_LIBRARY_PATH
	export TSLIB_TSDEVICE=/dev/ts0
	export TSLIB_CONSOLEDEVICE=none
	export TSLIB_FBDEVICE=/dev/fb0
	export TSLIB_CONFFILE=/etc/ts.conf
	export TSLIB_PLUGINDIR=/usr/share/ts/plugins
	export TSLIB_TSEVENTTYPE="H3600"
	$QPEDIR/bin/qpe &

解释:最后一行用于启动Qtopia。

(7)修改根文件系统的启动脚本

运行Qtopia时,需要用到临时目录/tmp,为减少Flash的擦写,在/tmp目录上挂接tmpfs文件系统。

首先建立/tmp目录

然后修改/work/system/fs_qt/etc/目录下的fstab文件,加入一行

Qt2.2.0移植到ARM9(四)(JZ2440----S3c2440)_第12张图片

最后修改启动脚本/work/system/fs_qt/etc/init.d/rcS,在最后加入以下一行。

Qt2.2.0移植到ARM9(四)(JZ2440----S3c2440)_第13张图片

还要修改它的属性

$chmod +x  /work/system/fs_qt/bin/qpe.sh

将/work/system/fs_qt/etc/inittab中一行注释掉

Qt2.2.0移植到ARM9(四)(JZ2440----S3c2440)_第14张图片

(8)制作yaffs2映像文件

使用mkyaffs2image工具将/work/system/fs_qt/制作成yaffs2映像文件。

Qt2.2.0移植到ARM9(四)(JZ2440----S3c2440)_第15张图片

最后就是将fs_qt.yaffs2文件系统烧写到开发板中去。

你可能感兴趣的:(项目,嵌入式开发(学习笔记))