嵌入式开发移植qtopia到ARM开发板

[摘要]  说实话,以前只作过51,而且用的是汇编,C都没有怎么用过。最近才有机会接触到linux,说起来也算是落后分子了。多亏北理论坛里各位大侠的帮忙,还算顺利的把qtopia移植到了arm开发板上。现整理了下文,抛砖引玉,希望能对大家有所帮助,当然也希望大家多提宝贵意见,mail to ahha1998@126.com即可。当然更希望大家的经验也能告诉我

前言:

说实话,以前只作过51,而且用的是汇编,C都没有怎么用过。最近才有机会接触到linux,说起来也算是落后分子了。多亏北理论坛里各位大侠的帮忙,还算顺利的把qtopia移植到了arm开发板上。现整理了下文,抛砖引玉,希望能对大家有所帮助,当然也希望大家多提宝贵意见,mail to ahha1998@126.com即可。当然更希望大家的经验也能告诉我

一、所用的资源:

硬件:华恒HHarm9328MXL-R1

软件:cross-2.95.3.tar.bz2

qt-embedded-2.3.10.tar.gz

qt-x11-2.3.2.tar.gz

qt-x11-3.3.4.tar.gz

qtopia-free-2.1.1.tar.gz

tmake-1.11.tar.gz

jpegsrc.v6b.tar.gz

e2fsprogs-1.35.tar.gz

zlib-1.2.3.tar.gz (这个是不是需要交叉编译,不太肯定,反正我是交叉编译了一下)

软件从网上下载,如果不知道从什么地方下载,google就是了。板子2006-02-13才从同事手中拿到(当时并没有注意这块开发板上没有时钟系统,移植到板子上后才注意到这个问题。),不过好在以前在论坛里看了不少如何在x86下编译qte、qtopia的文档,并且也在linux下也折腾了一两个月。建议没有作过x86下编译qtopia的也先从x86入手熟悉熟悉操作过程,我后面的过程里有些用到了x86环境下编译的文件,我就不再详细说明了。好了,废话少说,我们开始吧!

二、约定:

假设上述的软件你都已经安装到了/arm-target目录下,目录名分别为qte qtopia tmake jpeg e2fs zlib,还有一些用到的目录需要自己建立,我就不一一说明了,大家从下文中应该能够看出来。

三、交叉编译过程

1、交叉编译工具的安装

直接解压到/usr/local/arm目录下,

并且export PATH=/usr/local/arm/2.95.3/bin:$PATH

2、编译qte和qtopia需要的准备工作

export QTDIR=/arm-target/qte

export QPEDIR=/arm-target/qtopia

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

export TMAKEDIR=/arm-target/tmake

export TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g++

cp /arm-target/qtopia/src/qt/qconfig-qpe.h /arm-target/qte/src/tools

cd $QPEDIR/src/libraries/qtopia

cp custom-linux-ipaq-g++.cpp custom-linux-arm-g++.cpp

cp custom-linux-ipaq-g++.h custom-linux-arm-g++.h

3、交叉编译e2fs-prog,得到libuuid库

./configure --host=arm-linux --enable-elf-shlibs --with-cc=arm-linux-cc --with-linker=arm-linux-ld Cprefix=/usr/local/arm/2.95.3/arm-linux

make

make install

(提示好像有一些问题,没有ext2fs目录。。,不过能够执行完毕,且生成了libuuid.so*)

4、交叉编译jpegsrc,得到libjpeg

./configure --enable-shared

make 得到libtools程序,然后再

./configure --enable-shared

修改生成的Makefile文件:

prefix = /arm-target/qte

CC= /usr/local/arm/2.95.3/bin/arm-linux-gcc

AR= /usr/local/arm/2.95.3/bin/arm-linux-ar rc

AR2= /usr/local/arm/2.95.3/bin/arm-linux-ranlib

cp jconfig.doc jconfig.h

mkdir -p /arm-targetqte/man/man1

make

并没有完成提示出错,不过libjpeg.so确实生成了,到现在还没有弄明白为什么。。。

向下面的目录中也拷贝一份libjpeg.so

/usr/local/arm/2.95.3/arm-linux/lib

5、交叉编译qte (需要触摸屏支持的话参照第8条)

./configure -qconfig qpe -system-jpeg -no-xft -gif -qvfb -depths 4,8,12,16 Cxplatform linux-arm-g++

make

6、交叉编译qtopia

首先在/usr/local/arm/2.95.3/arm-linux/sys-include/linux/videodev.h 文件中把#include一行屏蔽,否则会报错

另外还需要用到uic程序,用qt-x11-2.3.2在x86环境下编译生成的即可。

./configure -edition pda -prefix=/arm-target/board-target -no-qtopiadesktop -xplatform linux-arm-g++

make

make install 即可在/arm-target/board-target目录下生成

7、运行qtopia

方法一:通过nfs方式

启动后mount -o nolock 192.168.123.116:/ /mnt

cd /mnt/arm-target/board-target

export QTDIR=$PWD

export QPEDIR=$PWD

export LD_LIBRARY_PATH=$PWD/lib:$LD_LIBRARY_PATH

cd bin

./qpe 即可在HHarm9328-MXL的LCD显示器上看到qtopia的启动界面

方法二:把qtopia烧写到flash中运行。(具体的方法开发板的手册中有,

要做的只是把/arm-target/board-target目录里的内容按自己的需求裁减一番。)

由于华恒的开发板的文件系统cramfs,但qtopia运行时需要操作/Settings目录,所以在/etc/init.d/rcS最后添加一行 mount Ct tmpfs tmpfs /Settings

不明白的事:想启动后自动执行qtopia,但是在/usr/etc/rc.local中添加

export QPEDIR=/qtopia

cd /qtopia/bin

./qpe

但是 linux启动后查看环境变量,发现export 一句并没有起作用。那位大侠如果知道该如何做,欢迎email告诉我ahha1998@126.com ,谢了先!

8、关于触摸屏

简单说几句,由于华恒开发板已经提供了触摸屏的驱动digi.o,所以我们要做的只是交叉编译qte的时候加入触摸屏的支持就可以了!

在qconfig-qpe.h文件添加定义QT_QWS_IPAQ

在qwsmouse_qws.cpp 查找h3600替换为digi

然后重新编译qte就可以了




免责声明:

本站系本网编辑转载,会尽可能注明出处,但不排除无法注明来源的情况,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本网联系, 来信: liujun@soft6.com 我们将在收到邮件后第一时间删除内容!

[声明]本站文章版权归原作者所有,内容为作者个人观点,不代表本网站的观点和对其真实性负责,本站拥有对此声明的最终解释权。