最近在linux下用QT搞串口开发,弄了好长时间老是出现运行一段时间就是死机了,开始以为是Linux版本低造成的我的采用的版本是2.26.27,网上查有串口黑洞的可能,于是就想把linux内核的版本给升级。我采用的开发板式SmartArm3250是周立功生产,顺便说一下周立功的售后的服务很是一般,刚接触板子遇到很多问题。以为这个板子公司在几年前就买了,当时提供的材料linux方面的都是很全。电话打过到技术支持想要一份人家说太大了不给传,让我找售后不过售后的态度到时蛮好的,给我传来一上午,结果速度太慢还是没有传过来,后来没有办法我花了30大洋在淘宝是买了份,钱一交20分钟就把材料给搞定了。
介绍一下对Smart3250 的研究,不知道为什么Smart3250要这么贵的价钱,提供可学习的资料也很少(仅限与Linux,wince的内容我没有关注)。参考linux的手册就能把linux在Smart3250跑起来。以前几乎没有搞过ARM linux嵌入式的界面开发,对QT有点了解,知道能在linux下做界面,搞嵌入式一直是在借的一块同事买的mini2440的核心板自己做的开发板上搞。这次要搞界面所以开始就想的在Qtopia上搞开发和研究。研究到最后发现厂商所提供的Qtopia其实一点也用不上。
简单介绍下QT技术以下都是个理解。
1.qt qte qtopia qtevery qte是qt早起提供的嵌入式开发平台, qtopia是利用QTE的技术开发实现的,其实利用在以linux为平台的移动终端上的,提供很多功能就像现在其他手机平台一样如 andriod wince 等,可以利用QTE编写的程序中放到qtopia的环境下来运行。对于普通嵌入式开发不需要在其上面,直接在LINUX上运行就可以了。Qt4.6版本以后就不分QTE只要用qtevery 就可以编译出X11 和armlinux下运行平台。
2.Qt环境搭建
可以查考 http://bbs.ednchina.com/BLOG_ARTICLE_270788.HTM 这是以前4.5的版本按照上面搭建一边后能很好了解qt的运行环境。
3.QT环境开工具
用QT提供qt-creator 在windows 与linux下都可以使用。在windows可以用.net开发工具开发,linux下可以用ECLIPSE开发,在qt的网站上都提供相应的开发插件。
4.QT的qmake
Qmake 是生成.pro工程文件以及Makefile文件。在Makefile在linux非常重要也是一门学问,有了Makefile就能生成可执行文件了。 Qmake -v 来查看当前采用是哪个qt的链接库以及采用的是linux gcc 还是arm-linux-gcc。如果你编写的程序中应用到 xml sqllit 等,用Qmake -project ,Qmake make qt编译标准三板斧是编译通不过的,有两种方法可以解决。
第一修改MakeFile 以用xml为例:红色部分为添加
#############################################################################
# Makefile for building: xsnetgps
# Generated by qmake (2.01a) (Qt 4.6.3) on: Tue Mar 13 15:26:06 2012
# Project: xsnetgps.pro
# Template: app
# Command: /host/mylinux/QT/qt-embedded-4.6.3-arm/bin/qmake -unix -o Makefile xsnetgps.pro
#############################################################################
####### Compiler, tools and options
CC = arm-vfp-linux-gnu-gcc
CXX = arm-vfp-linux-gnu-g++
DEFINES = -DQT_NO_DEBUG -DQT_XML_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED
CFLAGS = -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES)
CXXFLAGS = -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES)
INCPATH = -I/host/mylinux/QT/qt-embedded-4.6.3-arm/mkspecs/qws/linux-arm-g++ -I. -I/host/mylinux/QT/qt-embedded-4.6.3-arm/include/QtCore -I/host/mylinux/QT/qt-embedded-4.6.3-arm/include/QtNetwork -I/host/mylinux/QT/qt-embedded-4.6.3-arm/include/QtGui -I/host/mylinux/QT/qt-embedded-4.6.3-arm/include/QtXml -I/host/mylinux/QT/qt-embedded-4.6.3-arm/include -I.
I.
LINK = arm-vfp-linux-gnu-g++
LFLAGS = -Wl,-O1 -Wl,-rpath,/host/mylinux/QT/qt-embedded-4.6.3-arm/lib
LIBS = $(SUBLIBS) -L/host/mylinux/QT/qt-embedded-4.6.3-arm/lib -lQtXml -L/usr/local/tslib/lib -L/host/mylinux/QT/qt-embedded-4.6.3-arm/lib -lQtGui -lQtNetwork -lQtCore -lpthread
第二是修改.pro
TEMPLATE = app
TARGET = xsnetgps
QT += core \
gui \
xml
HEADERS += linuxcom/posix_qextserialport.h \
linuxcom/qextserialbase.h \
corfirm.h \
5.qt学习
个人的学习经历,其实在几年前就了解过QT但都没有实际来做,没有做过之前总是云里雾里的很多东西没有搞明白,不管学习什么东西实践最重要,首先是对QT环境的搭建如果你是在搞Windows下的QT开发,下载一个安装包下一步下一步就完成。如果是搞linux下的嵌入式开发环境搭建,按这篇文章http://bbs.ednchina.com/BLOG_ARTICLE_270788.HTM搭建,虽然是QT4.5的版本,但是这个搭建以后对qt以后的版本搭建应该不会有问题了。而且对QT结构能有大体上的了解。
6.具体的qt实际编程,先在windows用qt-creator简单做一个小程序,实战一下。看看qt提供的Demo对有个初步的了解再系统学习一下,建议看《C++ GUI Qt 4编程(第二版)》
而且这个书源码可以下载参考。
有时间把如何把smartarm3250内核升级到linux2.6.39.2整理一下。