Qtopia4移植到ARM9+Linux平台(原创)

[复制链接]
7125|20
 楼主| sodwell 发表于 2008-10-31 16:16 | 显示全部楼层 |阅读模式
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;移植Qtopia&nbsp;Core&nbsp;OpenSource&nbsp;4.3.3到ARM9+Llinux平台<br /><br />步骤一:&nbsp;下载qtopia的开源代码<br /><br />可以到下面的网址下载,第一个网址会快很多,建议用第一个地址。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http://www.qtcn.org/download/qtopia-core-opensource-src-4.3.3.tar.gz<br />ftp://ftp.trolltech.com/qt/source/qtopia-core-opensource-src-4.3.3.tar.gz<br /><br />步骤二:&nbsp;&nbsp;编译<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.&nbsp;编译前确保ARM-linux系统的交叉编译器已安装,最好是用3.4.1版本的,2.95.3的太老了,估计编译不过。解压缩交叉编译器,假如编译器放在usr/local/arm/3.4.1下;<br />&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;vi&nbsp;&nbsp;~/.bashrc&nbsp;&nbsp;或vi&nbsp;/etc/profile<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在文件的末尾加上这句:PATH=$PATH:/usr/local/arm/3.4.1/bin<br />&nbsp;&nbsp;&nbsp;&nbsp;#source&nbsp;&nbsp;~/.bashrc&nbsp;重启机器<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.&nbsp;把下载的源代码放到linux操作系统下任意文件夹.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;解压缩:&nbsp;tar&nbsp;–xzvf&nbsp;&nbsp;qtopia-core-opensource-src-4.3.3.tar.gz<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;下一步肯定是编译了,呵呵&nbsp;先别忙,源代码有需要该的地方,因为基本上所有的开发板都是带触摸屏的,所以要让源代码支持,实际上就是加上2个宏定义,很简单的。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;打开qtopia-core-opensource-src-4.3.3srcguiembeddedqmouselinuxtp_qws.h<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;加上这2行:#define&nbsp;QT_QWS_IPAQ<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#define&nbsp;QT_QWS_IPAQ_RAW<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;还有需要注意的地方是:看一下&nbsp;qmouselinuxtp_qws.cpp&nbsp;&nbsp;/dev/h3600_tsraw,&nbsp;是不是你板子上的驱动文件名字,如果不是改成一样就可以了。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;编译:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;根据自己的需要配置一下,告诉源代码你需要那些功能,这里就简单配置一下:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;./configure&nbsp;-embedded&nbsp;arm&nbsp;-xplatform&nbsp;qws/linux-arm-g++&nbsp;-depths&nbsp;&nbsp;4,8,12,16&nbsp;-no-qt3support&nbsp;-qt-mouse-linuxtp&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;稍微等待一下,然后<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;gmake<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可以去干点别的事了,时间会比较久,这个时间和机器配置和上面的configure有关系的<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;gmake&nbsp;install<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;编译完成后,软件会安装在&nbsp;/usr/local/Trolltech/Qtopia&nbsp;Core-4.3.3-arm/<br />步骤三:移植<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;只要把刚才编译的库文件,字体放到文件系统里面就可以了<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;具体操作:在文件系统下新建一个文件夹,我是放到已经有的一个文件夹/opt/qt/下的<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#cd&nbsp;opt<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#mkdir&nbsp;qt<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;把/usr/local/Trolltech/Qtopia&nbsp;Core-4.3.3-arm/下的lib文件夹复制到opt/qt/下,复制前看下大小,你的flash是否放得下,我得flash是64M的,没问题。再在opt/qt下建立一个文件夹&nbsp;qtopia,可以把你的应用程序放到这个里面。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;QT运行环境的设置,建一个脚本文件qtopia_setup,放到/bin下吧。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;vi&nbsp;qtopia_setup&nbsp;打开后加入下面的配置信息<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;export&nbsp;set&nbsp;HOME=/root<br />export&nbsp;set&nbsp;QTDIR=/opt/qt<br />export&nbsp;set&nbsp;QPEDIR=/opt/qtopia<br />export&nbsp;set&nbsp;KDEDIR=/opt/qt<br />export&nbsp;set&nbsp;QWS_KEYBOARD=&quot;USB:/dev/input/event1&quot;<br />export&nbsp;set&nbsp;QWS_MOUSE_PROTO=&quot;linuxtp:/dev/h3600_tsraw&quot;<br />export&nbsp;set&nbsp;PATH=$QPEDIR/bin:$PATH<br />export&nbsp;QWS_DISPLAY=&quot;LinuxFb:mmWidth35:mmHeight45:0&quot;<br />export&nbsp;QWS_SIZE=320x240<br />export&nbsp;set&nbsp;LD_LIBRARY_PATH=$PATH:$QTDIR/lib:$QPEDIR/lib<br /><br />如果要开机运行QT程序的话,在上面的末尾加上<br />$QPEDIR/qttest&nbsp;-qws&nbsp;&<br />把qttest这个程序放在/opt/qt/qtopia下,可以从/usr/local/Trolltech/Qtopia&nbsp;Core-4.3.3-arm&nbsp;的demo下随便拷一个过来,改个名字就可以了。<br />然后,在/etc/init.d/rcS里面加上这句:/bin/qtopia_setup<br />Linux启动的时候会自动运行rcs<br />&nbsp;&nbsp;步骤四:运行&nbsp;&nbsp;&nbsp;&nbsp;<br />把新的文件系统发放到开发板上,上电就可以运行了,但不幸的是有提示错误。<br />在/usr/local/Trolltech/Qtopia&nbsp;Core-4.3.3-arm/lib/fonts&nbsp;找不到字体库,解决办法很简单,在你的板子上建立这个文件夹,然后把/opt/qt/lib/fonts下的字体文件移动到你建的文件下:/usr/local/Trolltech/Qtopia&nbsp;Core-4.3.3-arm/lib/fonts&nbsp;下就可以了。<br />再重启板子,或直接运行/bin/qtopia,这下就可以看到你的图形界面了吧&nbsp;,^_^!<br />界面上有个鼠标指针,程序中可以把它搞掉,你再点点触摸屏,可能会点不准,那是因为你还没有校准触摸屏,程序运行的时候,也会提示找不到/etc/下的校正参数,所以你需要下载一个校正程序来用&nbsp;&nbsp;如:tslib-1.3.tar.bz2,这部分我还没搞定,有时间再弄。<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;QT4已经出来很长一段时间了,很多开发板上还是QT2的,用过一段时间的QT3,但是我还是推荐使用QT4,因为它实现了真正的跨平台,我在WINDOWS下写的QT程序一点不用改动,直接拷到linux下,编译一下就可以运行了,再交叉编译一下,板子上也能运行,只要不涉及到硬件驱动的调用。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这段时间把VC丢下了,准备主要学习QT4编程,推荐一本书:《C++&nbsp;GUI&nbsp;Qt4&nbsp;编程(第二版)》,QT中文论坛:http://www.qtcn.org&nbsp;&nbsp;和&nbsp;http://www.qtopia.org.cn<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;移植后发现一个问题,WINDOWS下能显示的中文,在板子上却显示的乱码,这需要在程序上稍微加一点东西,大多数人的GUI都是带又中文显示的吧?所以举个例子,大家可以再板子上跑跑看<br />#include&nbsp;&ltQApplication&gt&nbsp;<br />#include&nbsp;&ltQPushButton&gt&nbsp;<br />#include&nbsp;&ltQTextCodec&gt<br />int&nbsp;main(int&nbsp;argc,&nbsp;char&nbsp;*argv[])&nbsp;<br />{&nbsp;<br />QApplication&nbsp;app(argc,&nbsp;argv);<br />QFont&nbsp;f;&nbsp;<br />f.setFamily(&quot;wenquanyi&quot;);&nbsp;<br />f.setPointSize(5);<br />QTextCodec&nbsp;*code=QTextCodec::codecForName(&quot;GBK&quot;);&nbsp;<br />QString&nbsp;uniStr=code-&gttoUnicode(&quot;中文&quot;);&nbsp;<br />QPushButton&nbsp;hello(uniStr);&nbsp;<br />hello.setFont(f);<br />hello.setText(uniStr);<br />hello.resize(100,&nbsp;30);&nbsp;<br />hello.show();&nbsp;<br /><br />return&nbsp;app.exec();&nbsp;<br />}<br />&nbsp;用WINCE&nbsp;确实没有用linux麻烦,但是microsoft的东西都是要米的,一个产品要你几十大米,怎么受的了!米很多,量又大的话用WINCE也不错,米少又喜欢open&nbsp;source的话,可以用LINUX&nbsp;+&nbsp;QT4啊&nbsp;&nbsp;^_^&nbsp;&nbsp;呵呵!&nbsp;也可以WINCE+QT4,但是我自己觉得没有必要。<br />这是我移植的时候新的体会,如果写得有错误得地方,请指正。<br /><br /><br />
 楼主| sodwell 发表于 2008-10-31 16:20 | 显示全部楼层

....

  <br /> 相关链接:<a href='https://bbs.21ic.com/upfiles/img/200712/20071216163726448.pdf'>https://bbs.21ic.com/upfiles/img/200712/20071216163726448.pdf</a>
hexenzhou 发表于 2008-11-1 08:53 | 显示全部楼层

QT也是要米的,
聆风 发表于 2008-11-1 10:18 | 显示全部楼层

QT也要钱买啊. 那还不如用CE呢.

  
 楼主| sodwell 发表于 2008-11-1 11:50 | 显示全部楼层

re

open&nbsp;source&nbsp;是不要米的!<br />商业版的要米,商业版的有技术支持,而且有一些solution提供
 楼主| sodwell 发表于 2008-11-1 11:52 | 显示全部楼层

re

小公司用商业版的好像有优惠
brandnew 发表于 2008-11-2 18:24 | 显示全部楼层

。。。

QT背后是nokia控股的,小心它摆你一刀。<br /><br />
 楼主| sodwell 发表于 2008-11-2 22:15 | 显示全部楼层

re

nokia刚接手,我个人觉得nokia会让QT发展更快,特别是商业化版本更好,这也意味着open&nbsp;source也会发展更好,GPL是肯定会遵守的。这你还不放心,MINIGUI都放心,我们公司一直用的是MINIGUI,感觉和QT差太多了,他是面向中低端的,QT是高端的
 楼主| sodwell 发表于 2008-11-3 10:19 | 显示全部楼层

哈哈哈哈哈

还说NOKIA不行呢!<br />刚收购,就把QT的IDE搞出来了!太爽了,QT人等这一天不知道等了多久!<br />http://www.qtcn.org/bbs/read.php?tid=13600<br /><br /><br />
l0p0c 发表于 2008-11-3 13:12 | 显示全部楼层

不错啊!

  
lkkjob 发表于 2009-4-2 17:46 | 显示全部楼层

受教了

写的很好啊,我还没做到这一步呢,正在QT&nbsp;creator下写代码,以后请多指教!
defengluo 发表于 2009-4-14 15:58 | 显示全部楼层

受教了。

  
zuoyi001 发表于 2010-1-22 10:56 | 显示全部楼层
可以升级了...
zuoyi001 发表于 2010-1-22 10:57 | 显示全部楼层
总算可以移植Qtopia 4了...激动...:loveliness:
深圳英贝德 发表于 2010-1-22 12:54 | 显示全部楼层
确实应该加精。
 楼主| sodwell 发表于 2010-1-22 13:33 | 显示全部楼层
前段时间我已经移植了最新的qt4.5.2到ARM平台,还有TSLIB校准
http://blogimg.chinaunix.net/blog/upfile2/100107085424.pdf

大家可以到这个地址下载,已经转成PDF了
345161974 发表于 2013-2-19 17:52 | 显示全部楼层
很棒,支持下!
inurl 发表于 2013-2-20 08:40 | 显示全部楼层
345161974 发表于 2013-2-19 17:52
很棒,支持下!

谁在挖坟啊!
henryzheng 发表于 2013-2-20 16:22 | 显示全部楼层
支持下。
345161974 发表于 2013-2-21 12:28 | 显示全部楼层
inurl 发表于 2013-2-20 08:40
谁在挖坟啊!

好东西挖出来也没啥呀,哈哈,只要是对学习有帮助的就好啦,呵呵
您需要登录后才可以回帖 登录 | 注册

本版积分规则

36

主题

1092

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部