原创 Qtopia OpenSource 4.2.0 在s3c2410上的移植(参考修改)

2009-4-23 15:11 6518 4 18 分类: MCU/ 嵌入式

参考的那文章是用nfs挂载启动,我使用的是直接nfs根文件系统的。


看上去没多少差别,但是对偶这菜鸟级的,可折腾了挺久了。


而且自己做一遍总是碰到这样那样的问题。


还算顺利,留个笔记。


参考:http://blog.ifeng.com/article/1659857.html


下面做的前提是已经移植好了触摸屏的驱动和tslib1.3


http://blog.ednchina.com/qiu1123/216948/message.aspx


http://blog.ednchina.com/qiu1123/217785/message.aspx


---------------编译 Qtopia OpenSource 4.2.0 到ARM2410----------
安装目录为:/nfs/opt/qtopia4   (NFS根文件系统启动)
目标目录为:/opt/qtopia4
[root@Linux QT4]# tar -zxvf qtopia-opensource-src-4.2.0.tar.gz 
[root@Linux QT4]# cd qtopia-opensource-4.2.0/
-----------------修改源码包 ------------
[root@Linux qtopia-opensource-4.2.0]# cd src/libraries/qtopiabase/
[root@Linux qtopiabase]# cp custom-linux-cassiopeia-g++.h custom-linux-arm-g++.h
[root@Linux qtopiabase]# cp custom-linux-cassiopeia-g++.cpp custom-linux-arm-g++.cpp
--------------修改3.4.1版的arm编译器---------------
# cd /usr/local/arm/3.4.1/
# vi arm-linux/include/linux/videodev2.h
在其中添加如下内容:
#define V4L2_PIX_FMT_SBGGR8  v4l2_fourcc('B','A','8','1') 
/*  8  BGBG.. GRGR.. */
保存退出。
# vi arm/3.4.1/arm-linux/sys_include/linux/videodev2.h
在其中添加如下内容:
#define V4L2_PIX_FMT_SBGGR8  v4l2_fourcc('B','A','8','1') 
/*  8  BGBG.. GRGR.. */
保存退出。
-------------裁减Qtopia core的库 ---------------
# gedit qtopiacore/qconfig-qpe.h
首先注释掉关于鼠标光标的宏定义,让程序运行时,触摸屏中央有光标出现:
/*
#ifndef QT_NO_QWS_CURSOR
#  define QT_NO_QWS_CURSOR
#endif
*/
/*
#ifndef QT_NO_QWS_MOUSE
#  define QT_NO_QWS_MOUSE
#endif
#ifndef QT_NO_QWS_MOUSE_AUTO
#  define QT_NO_QWS_MOUSE_AUTO
#endif
*/
[root@Linux qtopiacore]# cp qconfig-qpe.h qt/src/corelib/global/
-------------注释掉文件里的QT_NO_QWS_CURSOR的定义 -------------
# vi qtopiacore/qt/src/corelib/global/qfeatures.h
注释掉如下内容:
/*
#if !defined(QT_NO_QWS_CURSOR) && (defined(QT_NO_CURSOR))
#define QT_NO_QWS_CURSOR
#endif
*/
# vi qtopiacore/qt/src/corelib/global/qglobal.h
注释掉以下内容:
//#    define QT_NO_QWS_CURSOR
-------------        配置并编译      -------------------------
echo "yes"| ./configure -silent -release -image /nfs/opt/qtopia4 -prefix /opt/qtopia4/ -xplatform linux-arm-g++ -arch arm -no-qvfb -displaysize 240x320 -no-modem -extra-qtopiacore-config "-release -xplatform qws/linux-arm-g++ -embedded arm -opengl -qconfig qpe -qt-sql-sqlite -depths 4,8,16,32 -qt-kbd-usb -no-kbd-tty -no-mouse-linuxtp -qt-mouse-tslib -I/nfs/opt/tslib1.3/include -L/nfs/opt/tslib1.3/lib" 2>../qtopiaconfigureERR.txt


# make 2>../qtopiamakeERR.txt
# make install
-------------      建立时区信息 --------------------
[root@Linux usr]# pwd
/nfs/usr
[root@Linux usr]#mkdir zoneinfo
[root@Linux usr]#cp -a /usr/share/zoneinfo/* zoneinfo/


---------------运行测试-------------------------
建立:test_qtopia.sh


export TS_ROOT=/opt/tslib1.3
export TSLIB_TSEVENTTYPE=H3600
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/input/tsraw0
export TSLIB_CALIBFILE=$TS_ROOT/etc/pointercal
export TSLIB_CONFFILE=$TS_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=$TS_ROOT/share/ts/plugins
export QWS_SIZE=240x320
export QWS_MOUSE_PROTO="Tslib:/dev/input/tsraw0"
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TS_ROOT/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/qtopia4/lib


cd $TS_ROOT/bin
./ts_calibrate


cd /opt/qtopia4/bin


if [ -f "$TSLIB_CALIBFILE" ]; then
./qpe -qws &
else
$TS_ROOT/bin/ts_calibrate
./qpe -qws &
fi


# chmod 777 test_qtopia.sh


终端执行结果:
[root@Qiu /opt]# ls
qtopia4         test_qtopia.sh  tslib1.3
[root@Qiu /opt]# ./test_qtopia.sh
xres = 240, yres = 320
Took 34 samples...
Top left : X =  209 Y =  805
Took 30 samples...
Top right: X =  765 Y =  812
Took 5 samples...
Bot right: X =  751 Y =  172
Took 20 samples...
Bot left : X =  754 Y =  185
Took 11 samples...
Middle: X =  487 Y =  504
-61.636841 0.227446 0.094260
331.440186 0.001923 -0.348227
Calibration constants: -4039432 14905 6177 21721264 126 -22821 65536
sh: missing ]
xres = 240, yres = 320
Took 30 samples...
Top left : X =  235 Y =  819
Took 26 samples...
Top right: X =  768 Y =  815
Took 26 samples...
Bot right: X =  763 Y =  190
Took 13 samples...
Bot left : X =  249 Y =  206
Took 15 samples...
Middle: X =  487 Y =  485
-14.530426 0.267151 0.001686
341.739105 -0.006306 -0.355037
Calibration constants: -952266 17508 110 22396214 -413 -23267 65536
[root@Qiu /opt]# No IRDA devices found!


 


没图贴上啦,手头没东西可以照相的...有机会再贴上来。


我的屏幕是竖屏的,出来的图像不知道为什么有些偏小,不知道哪里还需要设置。字体也偏小。
自己解决啦:


export QWS_DISPLAY="LinuxFb:mmWidth45:mmHeight55:0"


加上这个变量就OK啦。


上几张图,但是用摄像头的效果不好就是了,不知道怎么汉化这个。


做毕业设计的屏没触摸....:(


改了句话让他支持USB鼠标:


export QWS_MOUSE_PROTO=MouseMan:/dev/input/mice


当然前提驱动移植好的情况下。


ab832409-a66a-4d0f-abbf-0ad490bba3ee.jpg


---------------------------------------------------


a7801b1f-0fc9-4b04-ab34-b51aa9a2364d.jpg


---------------------------------------------------


e6024481-276d-4133-948b-dcbcb2e1297f.jpg


---------------------------------------------------


b0b13da0-4eb6-4401-9638-d879605d5a84.jpg


---------------------------------------------------


32e32400-b1fe-4cf6-995d-1a2ab30fa83d.jpg


参考:


http://blog.ifeng.com/article/1659857.html

PARTNER CONTENT

文章评论14条评论)

登录后参与讨论

用户1679196 2009-7-11 14:55

你直接运行qpe不太好,你保证的环境变量设置好了吗?最好像我上面那样写个shell来处理。

用户1565960 2009-7-5 22:34

我想问楼主个问题。我安装的也是qtopia4.2.0,在执行./qpe -qws时显示segmentation fault,不知为什么。 还有一些可以执行,但是出来的图像的上面的一部分在触摸屏上看不到,楼主可不可以给我些建议

用户1679196 2009-4-30 08:34

http://www.qtcn.org/bbs/read.php?tid=8676

用户1464332 2009-4-30 07:47

谢谢各位的帮助,我解压之后,echo "yes" | ./configure 还是会出现上述情况,根本就过不去啊,The system byte order could not be detected! Turn on verbose messaging (-v) to see the final report. You can use the -little-endian or -big-endian switch to /mnt/nfs/qtopia4/qtopiatslibinstall/qtopiacore/qt/configure to continue.

用户1679196 2009-4-28 15:18

http://blog.ednchina.com/qiu1123/214518/message.aspx 看下我的这篇文章

用户1679196 2009-4-28 15:14

我不是用redhat9.0,我用的是Red Hat Enterprise Linux 4,但是你都没开始编译...跟编译器也没有关系...你的configure 再检查下,还可以先不要交叉编译,在PC上模拟的QPE行不行?

用户1464332 2009-4-28 12:48

在出现上述错误之后,就没有产生makeflie文件,没法makeclean啊。我是在suselinux11.0下操作的,gcc为4.3.1版本,难道非要gcc3.4.1?还是非要在redhat9.0下操作?郁闷。。。。。。。

用户1679196 2009-4-28 10:39

你的问题我没碰到过,不过给你两个建议: 1、先make clean下。 2、http://bbs.chinaunix.net/viewthread.php?tid=1255468&page=1 看下这里面的解释

用户1464332 2009-4-27 13:38

Creating qmake. Please wait... The system byte order could not be detected! Turn on verbose messaging (-v) to see the final report. You can use the -little-endian or -big-endian switch to /mnt/nfs/qtopia4/qtopiatslibinstall/qtopiacore/qt/configure to continue. 我在./config的时候出现了以上情况,请问下怎么回事啊?

用户1464332 2009-4-27 13:13

Setting up the include directory for Qt (host). Please wait... Cleaning your Qt (host) build tree. Please wait... This is the Qt/X11 Open Source Edition. Preparing build tree... You are licensed to use this software under the terms of either the Q Public License (QPL) or the GNU General Public License (GPL). Creating qmake. Please wait... The system byte order could not be detected! Turn on verbose messaging (-v) to see the final report. You can use the -little-endian or -big-endian switch to /mnt/nfs/qtopia4/qtopiatslibinstall/qtopiacore/qt/configure to continue. 请问我在./config后出现了以上情况,这是怎么回事啊?????????????????????????????、、好急啊!!!!!!!!!!!!!!!!!!11
相关推荐阅读
用户1679196 2009-09-04 16:17
两个linux按键驱动之二 read(定时器去抖动)
//相比之下poll更为实用,但是这个代码实在太具有代表性了...涉及了下面几个知识。代码很大部分是linux设备驱动开发详解的内容。/*1、阻塞读取,队列概念2、睡眠等待中断产生3、定时器产生及相应...
用户1679196 2009-09-04 16:08
两个linux按键驱动之一 poll(未去抖动)
//驱动//未加去抖动//通过poll判断是否可读来得到中断值#include <linux/module.h> #include <linux/kernel.h>#inclu...
用户1679196 2009-09-04 09:39
select 使用
以下来自网络搜索:Linux下select调用的过程:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:offi...
用户1679196 2009-09-03 14:52
Linux设备驱动之定时器
Linux内核中定义了一个timer_list结构,我们在驱动程序中可以利用之: #include<linux/timer.h> struct timer_list { struct li...
用户1679196 2009-08-28 17:38
loff_t *ppos是什么东东
ssize_t generic_file_read(struct file * filp, char * buf, size_t count, loff_t *ppos) 这是一个文件读函数 我们很容...
用户1679196 2009-08-12 17:30
linux 延时函数几个资料
http://www.cppblog.com/CppExplore/archive/2008/04/02/46111.html一、 基础知识1、时间类型。Linux下常用的时间类型有4个:time_t...
EE直播间
更多
我要评论
14
4
关闭 站长推荐上一条 /3 下一条