参考 《百问网精智JZ2440开发板4.3寸LCD版使用手册.pdf2015/12/29》
修改环境变量:
sudo vi /etc/environment
修改:PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm/4.3.2/bin"
改为:PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/work/tools/gcc-3.4.5-glibc-2.3.6/bin/"
编译依赖库/work/GUI/qtopia/deps/jpegsrc.v6b.tar.gz
tar xzf jpegsrc.v6b.tar.gz
cd jpeg-6b/
./configure --enable-shared --enable-static --prefix=/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux --build=i386 --host=arm
make
make install-lib
编译依赖库/wok/GUI/qtopia/deps/e2fsprogs-1.40.2.tar.gz
mkdir build
cd build
../configure --with-cc=arm-linux-gcc --with-linker=arm-linux-ld --enable-elf-shlibs --host=arm -prefix=/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux
make
make install-libs
编译依赖库/wok//GUI/qtopia/deps/libpng-1.2.23.tar.bz2
tar xjf libpng-1.2.23.tar.bz2
cd libpng-1.2.23/
cp scripts/makefile.linux ./Makefile
修改 Makefile,以下是修改后的结果,都加上了“ arm-linux-”前缀:
AR_RC=arm-linux-ar rc
CC=arm-linux-gcc
……
RANLIB=arm-linux-ranlib
……
prefix=/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux
make
make install
编译依赖库/wok/GUI/qtopia/deps/tslib-1.3.tar.bz2
./autogen.sh
echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache
./configure --host=arm-linux --cache-file=arm-linux.cache --enable-inputapi=no --prefix=/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux
在 make 之前,为了支持触摸屏修改 src/ts_read_raw.c 文件,如下修改代码:
char *defaulttseventtype="UCB1x00";
改为:
char *defaulttseventtype="H3600";
步骤如下:
vi src/ts_read_raw.c
为 了 防 止 出 现 “libtool:link: only absolute run-paths are allowed “ 的 错 误 , 在
plugins/Makefile 里面找 rpath,找到将其注释并加上绝对路径:
#LDFLAGS :=$(LDFLAGS) -rpath $(PLUGIN_DIR)
LDFLAGS :=$(LDFLAGS) -rpath `cd $(PLUGIN_DIR) && pwd`
步骤如下:
vi plugins/Makefile
/rpath
make
make install
使用补丁修改、编译 QT
/wok/GUI/qtopia 目 录 下 , qtopia-free-src-2.2.0.tar.gz 是 未 经 修 改 的 内 核 源 码 ,
qtopia-free-2.2.0_jz2440.patch 是针对 JZ2440 开发板的补丁文件。
tar xzf qtopia-free-src-2.2.0.tar.gz
cd qtopia-free-2.2.0
patch -p1 < ../qtopia-free-2.2.0_jz2440.patch
./configure -qte '-embedded -xplatform linux-arm-g++ -qconfig qpe -depths 16,24 -no-qvfb -system-jpeg -system-libpng -system-zlib -tslib -gif -thread -lts' -qpe '-xplatform linux-arm-g++ -edition pda -displaysize 240x320' -qt2 '-no-xft' -dqt '-no-xft'
make
make install
制作根目录:
sudo tar xjf fs_mini_mdev.tar.bz2
mv fs_mini_mdev fs_myqtopia
sudo chown book:book fs_myqtopia –R
复制依赖库:
cd /work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib/
cp libpng.so* /work/nfs_root/fs_myqtopia/lib/ -d
cp libjpeg.so* /work/nfs_root/fs_myqtopia/lib/ -d
cp libuuid.so* /work/nfs_root/fs_myqtopia/lib/ -d
cp libz.so* /work/nfs_root/fs_myqtopia/lib/ -d
安装触摸屏所依赖文件:
cd /work/GUI/qtopia/deps/tslib-1.3
make prefix=/work/nfs_root/fs_myqtopia/usr/ install
cp /work/nfs_root/fs_myqtopia/usr/etc/ts.conf /work/nfs_root/fs_myqtopia/etc/
cd /work/nfs_root/fs_myqtopia/etc/
vi ts.conf
复制字库:
cd /work/GUI/qtopia/qtopia-free-2.2.0/
mkdir image/opt/Qtopia/lib/ -p
cp -rf qt2/lib/fonts qtopia/image/opt/Qtopia/lib/
cp -rf qtopia/image/opt /work/nfs_root/fs_myqtopia
创建时区文件
cd /work/nfs_root/fs_myqtopia
mkdir -p usr/share/zoneinfo/
cp -rf /usr/share/zoneinfo/America usr/share/zoneinfo/
cp /usr/share/zoneinfo/zone.tab usr/share/zoneinfo/
建立一个脚本文件, 用来较验触摸屏
在单板根目录/bin 下建立 ts_cal.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"
/usr/bin/ts_calibrate
步骤如下:
vi bin/ts_cal.sh
chmod +x /work/nfs_root/fs_myqtopia/bin/ts_cal.sh
建立一个脚本文件, 用来运行 qtopia
在单板根目录/bin 下建立 qpe.sh 文件, 它用来设置环境变量、 启动 qtopia。 内容如下:
#!/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"
if [ ! -e /etc/pointercal ]
then
/bin/ts_cal.sh
fi
$QPEDIR/bin/qpe &
步骤如下:
vi bin/qpe.sh
建立/root 目录:
mkdir -p /work/nfs_root/fs_myqtopia/root
修改根文件系统的启动脚本:
mkdir -p /work/nfs_root/fs_myqtopia/tmp
vi /work/nfs_root/fs_myqtopia/etc/fstab
加入:tmpfs /tmp tmpfs defaults 0 0
最后,修改启动脚本/work/nfs_root/fs_qtopia/etc/init.d/rcS,在最后加入以下一行:
/bin/qpe.sh &
还要修改它的属性:
$ chmod +x /work/nfs_root/fs_qtopia/bin/qpe.sh
步骤如下:
vi /work/nfs_root/fs_myqtopia/etc/init.d/rcS
chmod +x /work/nfs_root/fs_myqtopia/bin/qpe.sh
set bootargs noinitrd root=/dev/nfs nfsroot=192.168.1.113:/work/nfs_root/fs_myqtopia ip=192.168.1.17:192.168.1.19:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0,115200 user_debug=0xff
nfs 30000000 192.168.1.113:/work/nfs_root/uImage_4.3 ; bootm 30000000
程序编译:
export QTDIR=/work/GUI/qtopia/qtopia-free-2.2.0/qt2
export QPEDIR=/work/GUI/qtopia/qtopia-free-2.2.0/qtopia/
export QMAKESPEC=/work/GUI/qtopia/qtopia-free-2.2.0/qtopia/mkspecs/qws/linux-arm-g++/
$QPEDIR/bin/qmake
cp ./helloworld.png /work/nfs_root/fs_myqtopia/opt/Qtopia/pics/
cp ./helloworld /work/nfs_root/fs_myqtopia/opt/Qtopia/bin/
cp ./helloworld.desktop /work/nfs_root/fs_myqtopia/opt/Qtopia/apps/Applications/
挂载U盘和SD卡
mount /dev/sda1 /root/Applications/Dictionary
mount /dev/mmcblk0p1 /mnt
到此QT移植成功
有图有真相,现在把实验图片上传上来:
但是这里有一个问题,就是这里的音乐播放器不能够播放SD卡了的音乐,浏览也不行,我把SD卡挂载到/mnt目录已经成功了,但是音乐确实播放不了
这一点有待研究!
这里把最后得到的更文件目录和内核上传上来:
http://download.csdn.net/detail/chengdong1314/9382353