⑦ 基于最小根文件系统制作QT文件系统:
使用fs_mini_mdev.tar.bz2:
sudo tar xjf fs_mini_mdev.tar.bz2
sudo cp -rf fs_mini_mdev fs_qtopia
sudo chown book:book fs_qtopis –R
a、复制Qtopia所依赖库文件
cd /work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib/
cp libpng.so* /home/book/workspace/jz2440_project/fs_qtopia/lib/ -d
cp libjpeg.so* /home/book/workspace/jz2440_project/fs_qtopia/lib/ -d
cp libuuid.so* /home/book/workspace/jz2440_project/fs_qtopia/lib/ -d
cp libz.so* /home/book/workspace/jz2440_project/fs_qtopia/lib/ -d
b、拷贝触摸屏所需文件
到libts目录下:
cd /home/book/workspace/jz2440_project/system/deps/tslib/tmp
cp * /home/book/workspace/jz2440_project/fs_qtopia -rfd
修改开发板 /etc/ts.conf第1行(去掉#号和第一个空格):
# module_raw input
改为:
module_raw input
c、复制字库
cd /home/book/workspace/jz2440_project/system/deps/qtopia-free-2.2.0/
cp -rf qt2/lib/fonts qtopia/image/opt/Qtopia/lib/
d、将qtopia/image/opt/整个目录复制到开发板根目录上
cd /home/book/workspace/jz2440_project/system/deps/qtopia-free-2.2.0/
cp -rf qtopia/image/opt /home/book/workspace/jz2440_project/fs_qtopia
e、创建时区文件
直接使用主机中的时区文件:
cd /home/book/workspace/jz2440_project/fs_qtopia
mkdir -p usr/share/zoneinfo/
cp -rf /usr/share/zoneinfo/America usr/share/zoneinfo/
cp /usr/share/zoneinfo/zone.tab usr/share/zoneinfo/
f、建立一个脚本文件,用来较验触摸屏
在单板根目录/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/event0
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_PLUGINDIR=/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
/usr/bin/ts_calibrate
=====================================================================
我们使用ts_calibrate来较验触摸屏,QT自带的触摸屏程序不好用。想再次较验时,把/etc/po删掉后重启单板就可以了。
这个脚本被下面说到的qpe.sh调用。
还要修改它的属性:
chmod +x bin/ts_cal.sh
g、建立一个脚本文件,用来运行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/event0
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_PLUGINDIR=/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
if [ ! -e /etc/pointercal ]
then
/bin/ts_cal.sh
fi
$QPEDIR/bin/qpe &
=====================================================================
h、修改根文件系统的启动脚本
修改/home/book/workspace/jz2440_project/fs_qtopia/etc/fstab文件,加入一行:
tmpfs /tmp tmpfs defaults 0 0
/home/book/workspace/jz2440_project/fs_qtopia/etc/init.d/rcS,在最后加入以下一行:
/bin/qpe.sh &
还要修改它的属性:
chmod +x bin/qpe.sh
⑧ 制作YAFFS2、JFFS2文件系统映象文件:
mkyaffs2image fs_qtopia fs_qtopia.yaffs2
mkfs.jffs2 -n -s 2048 -e 128KiB -d fs_qtopia -o fs_qtopia.jffs2
⑨ 烧写系统测试:
tftp 30000000 u-boot.bin; nand erase.part u-boot; nand write 30000000 u-boot
reset
tftp 30000000 uImage;nand erase.part kernel;nand write 30000000 kernel
tftp 30000000 fs_qtopia.yaffs2;nand erase.part rootfs;nand write.yaffs 30000000 260000 $filesize
或:
tftp 30000000 fs_qtopia.jffs2;nand erase.part rootfs;nand write.jffs2 30000000 260000 $filesize