snifer

【原创】嵌入式GPRS 无线通信实现过程

0
阅读(2258)

前面普及了基本的概念,下面给大家写如何完成这个无线通信的过程。

编译QT/E 环境

以下实验假定实验目录为/home/sprife/qt4/for_arm

1、拷贝并解压QT/E 库及触摸屏库到实验目录for_arm

#cd /home/sprife/qt4/
#mkdir for_arm
#cd for_arm
#cp /UP-Magic/gui/Qt/src/qt-embedded-linuxopensource-
src-4.4.0.tar.bz2 ./
#cp /UP-Magic/gui/Qt/src/tslib-1.4.tar.bz2 ./
#tar xjvf qt-embedded-linux-opensource-src-4.4.0.tar.bz2
#tar xjvf tslib-1.4.tar.bz2
2、编译tslib1.4 触摸屏库
#cd tslib-1.4
#vi build.sh
修改该脚本文件为如下:
#/bin/sh
export CC=arm-linux-gcc
./autogen.sh
echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache
./configure --host=arm-linux --cache-file=arm-linux.cache
-prefix=$PWD/../tslib1.4-install
make
make install
推出保存后编译:
#./build.sh
3、编译QT/E 库
#cd /home/sprife/qt4/for_arm/
#cp -a tslib1.4-install/lib/* qt-embedded-linux-opensource-src-4.4.0/lib/
#cp -a tslib1.4-install/include/ts*
qt-embedded-linux-opensource-src-4.4.0/include/
#cd qt-embedded-linux-opensource-src-4.4.0
#./configure -embedded arm -xplatform qws/linux-arm-g++ -nomake demos -nomake
examples -no-stl -no-qt3support -no-phonon -no-svg -no-webkit -no-openssl -no-nis
-no-cups -no-iconv -no-pch -no-dbus -no-separate-debug-info -depths 8,16 -fast
-little-endian -qt-mouse-linuxtp -qt-mouse-tslib
-I$PWD/../tslib1.4-install/include -L$PWD/../tslib1.4-install/lib -prefix
/usr/local/Trolltech/qt-embedded-4.4.0
#make
#make install
./configure 配置选项过长,使用该命令时候请仔细检查不要写错。
-prefix 选项要特殊注意,该指定目录必须要与实际NFS 目录对应.
如果出现如下错误提示:

../../include/QtGui/private/../../../src/gui/kernel/qapplication_p.h:347: error:
multiple parameters named 'screen'
则更改qapplication_p.h 并找到相应的位置,将源代码的screen 改为screen_t
#vi src/gui/kernel/qapplication_p.h
#void setScreenTransformation(QScreen *screen, int screen_t, int
transformation);
若提示:
painting/qdrawhelper.cpp:3453: error: explicit template specialization cannot
have a storage class
则更改qdrawhelper.cpp 并找到相应位置,将错误所在函数的函数类型static 注释掉
#vi src/gui/painting/qdrawhelper.cpp
#/*static*/ inline void madd_4(qargb8565 *dest, const quint32 a, const
qargb8565 *src)
4、测试触摸屏及QT/E 程序
1)建立NFS 共享目录/home/sprife (此目录如果存在就不用再建立了)
#cd /home/sprife
#mkdir Trolltech
#cd Trolltech
#mkdir qt-embedded-4.4.0
#cd qt-embedded-4.4.0
#cp /home/sprife/qt4/for_arm/qt-embedded-linux-opensource-src-4.4.0/
lib/ ./ -arf
#cp /home/sprife/qt4/for_arm/tslib1.4-install/etc/ ./ -arf
#cp /home/sprife/qt4/for_arm/tslib1.4-install/bin/ ./ -arf
2)ARM 端挂载NFS 共享目录
#mount -o nolock,rsize=4096,wsize=4096 192.168.1.43:/home/sprife /mnt/nfs
具体LINUX 主机IP 需要具体设置
3)设置环境变量 (ARM 端)
#cd /mnt/nfs/Trolltech/qt-embedded-4.4.0
#export QTDIR=$PWD
#export LD_LIBRARY_PATH=$PWD/lib
#export TSLIB_TSDEVICE=/dev/event0
#export TSLIB_PLUGINDIR=$PWD/lib/ts
#export TSLIB_CONSOLEDEVICE=none
#export TSLIB_CONFFILE=$PWD/etc/ts.conf
#export POINTERCAL_FILE=$PWD/etc/ts-calib.conf
#export QWS_MOUSE_PROTO=tslib:/dev/event0
#export TSLIB_CALIBFILE=$PWD/etc/ts-calib.conf
#export LANG=zh_CN
#export QWS_DISPLAY="LinuxFb:mmWidth160:mmHeight120:0"
#export QT_QWS_FONTDIR=$PWD/lib/fonts
4)执行触摸屏校准程序(在qt-embedded-4.4.0 下)
#./bin/ts_calibrate
如果出现如下错误提示:
Couldnt load module pthres
No raw modules loaded.
ts_config: Success
则更改ts.conf 配置文件选择一个输入设备
#vi /mnt/nfs/Trolltech/qt-embedded-4.4.0/etc/ts.conf
# Uncomment if you wish to use the linux input layer event interface
# module_raw input
更改为
# Uncomment if you wish to use the linux input layer event interface
module_raw input
若提示:
/dev/touchscreen/ucb1x00: No such file or directory
则一般是环境变量没设置好的问题,可以重新仔细检查环境变量的设置再次执行触摸屏校准程序即可,程序会自动存储坐标校准信息以便应用程序 使用。此时如无错误则进入5 点触摸屏校准程序并存储配置文件还可以进行其他触摸屏测试程序ts_test、ts_print 等
5)执行QT/E 带触摸屏的例子程序
在宿主机端拷贝编译好的ARM 端可执行程序
#cp /home/sprife/qt4/for_arm/qt-embedded-linux-opensource-src-4.4.0/
examples/widgets/digitalclock/digitalclock
/UP-Magic/Trolltech/qt-embedded-4.4.0/
ARM 端执行该程序
#./digitalclock –qws
如出现如下错误:
error while loading shared libraries: libz.so.1: cannot open shared
object file: No such file or directory
则在宿主机端交叉编译器目录下搜索该库文件,拷贝到lib 目录下(具体库 文件
位置可能不尽相同)
#cp /opt/host/armv4l/armv4l-unknown-linux/lib/libz.so.1
/home/sprife/Trolltech/qt-embedded-4.4.0/lib/
若出现错误
error while loading shared libraries: libstdc++.so.6: cannot open shared
object file: No such file or directory
拷贝
#cp /home/bc/gcc-3.4.2-glibc-2.2.5/arm-linux/arm-linux/lib/libstdc++.
so.6 /home/sprife/Trolltech/qt-embedded-4.4.0/lib/

error while loading shared libraries: libgcc_s.so.1: cannot open shared
object file: No such file or directory

#cp /home/bc/gcc-3.4.2-glibc-2.2.5/arm-linux/arm-linux/lib/libgcc_s.s
o.1 /home/sprife/Trolltech/qt-embedded-4.4.0/lib/
如果想让QT/E 在ARM 端支持USB 鼠标,可以在ARM 端配置环境变量#exportQWS_MOUSE_PROTO=MouseMan:/dev/input/mouse0即可。
实验中具体用到的触摸屏及鼠标设备要根据具体设备而定义。

这个是整个环境的搭建过程,很繁琐吗,这个过程很重要。