




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ARM开发之QT平台搭建-基于Linux系统的ARM平台QT移植第一部分:移植前述现在ARM行业如火如荼,使用linux作为操作系统的也较多,本文只针对ARM和linux平台下的QT移植和程序测试做一翻详解,对于 wince等系统不涉及。ARM开发的话必须具备以下硬件或平台条件:1. ARM硬件开发板,现在处理器用的多是ARM9或者ARM112. 针对嵌入式行业的Linux系统内核,以及PC机上的Linux系统开发环境,比如Ubuntu,Redhat,CentOs等3. ARM软件开发环境,这个比较复杂多样。ARM开发无非是底层驱动移植和开发,以及顶层的应用程序开发,还有相对应的各种调试。不管是开发还是调试,都要用到相对应的工具或软件。驱动开发的领域本文不涉及,而顶层应用程序开发的一个重要环节就是面向客户的图形界面开发,而图形界面开发嵌入式领域用的比较多的是QT。Qt是诺基亚开发的一个跨平台的C+图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt是完全面向对象的,很容易扩展,并且允许真正地组件编程。4 应用程序在pc机上开发,完成后希望在ARM板上调试,以确认程序的正确性和完整性等,这时应该如何办呢?这里面涉及的知识比较多,有:开发板引导启动文件Uboot;Linux内核镜像的烧写;交叉编译;搭建QT开发环境;开发板与PC机Linux系统的NFS挂载连接;再就是QT程序在线测试等。上述中交叉编译之前的所有操作本文不涉及,读者如有不明之处请另找资料,本文意在构建一个QT开发环境,和使用开发板通过NFS挂载后的QT应用程序测试环境。第二部分:QT移植具备条件1. 交叉编译器:版本较多,现在常用的是arm-linux-gcc-4.3.2.或者arm-linux-gcc-4.1.22. QT版本:qt-embedded-linux-opensource-src-4.5.3.tar.gz和qt-x11-opensource-src-4.5.3.tar.gz,可以从QT官网上下载各种版本(注:开发QT的公司已被诺基亚公司收购)官网地址:/2. 触摸屏支持tslib3. Linux系统上的一些编译工具或者库说明:(1)交叉编译工具是在QT库安装时要用到它来编译,然后QT应用程序调试时需要要到它编译成ARM板上能运行的代码。(2)qt-embedded-linux-opensource-src包含了支持最终到ARM开发板上运行的应用程序的库文件,而qt-x11-opensource-src则是为了能在PC机上进行针对ARM板环境的模拟程序调试,比如说没有开发板的时候,但又想验证能否在ARM板上运行,此时需要用到。 (3)tslib则是用来校准触摸屏用的,触摸数据最先由开发板上驱动程序得到,(驱动已经加载到内核中),然后传递给tslib,tslib将原始数据进行一定去抖,校准等工作,然后把数据传给顶层应用程序,我是这样理解的,不知道正确否。第三部分:QT移植详情注:此移植过程在Ubuntu9.04系统下完成带#开头的表示终端运行的命令带/开头的表示注释红色字体表示应该特别注意的地方我的移植环境1. 开发板:友坚恒天公司的s3c64102. PC机系统windos xp 3. PC机上装Vware虚拟机系统:Ubuntu9.044. 交叉编译工具:arm920t-eabi-4.1.2.tar.gz5. Qt版本:qt-embedded-linux-opensource-src-4.5.3.tar.gz6. 触摸屏校准:tslib1.4.tar.gz第一步:安装交叉编译工具(解压就行,然后设置一个环境变量)先将arm920t-eabi-4.1.2.tar.gz拷贝到/home/resource下,然后解压到根目录#cd /home#mkdir resource# cd /home/resource# tar zxvf arm920t-eabi-4.1.2.tar.gz C / 注:zxvf是解压参数,-C是改变解压路径,/表示到根目录完成后在它的安装路径是:/opt/toolchains/arm920teabi/,可以查看到。为了后续QT安装能够调用arm-linux-gcc等命令,需要设置环境变量# gedit /etc/bash.bashrc (手动以记事本打开一样的,后续同理) /添加linux系统环境变量在该文件的末尾加上export PATH=$PATH:/opt/toolchains/arm920teabi/bin保存关闭# source /etc/bash.bashrc#arm-linux-gcc v /查看编译器版本注:1.至于安装路径选择哪里,可以自己定,但是之后的环境变量设置就一定要跟你的安装路径对应好。就比如说我的是/opt/toolchains/arm920teabi/,在该目录下有一个bin目录,里面你可以查看到一些arm-linux-gcc等命令,那如果你更换了路径,则一样要找到那个bin目录,然后设置环境变量。若能通过arm-linux-gcc v命令查看到该交叉编译器的版本,则表示安装完成,并且环境变量设置成功。2.不同的交叉编译工具默认的安装路径是不同的,比如说arm-linux-gcc-4.3.2的默认安装是在/usr/local/arm/下,这个自己知道就行,关键是环境变量要设好。第二步:安装tslib(解压并安装,然后设置配置文件)注:此步需要一些工具,ubuntu 下需要安装automake、autoconf、libtool,可以执行下面语句安装#apt-get install automake autoconf libtool注:tslib是支持触摸品用的,触摸屏最终能够使用的条件是:a. 硬件支持触摸屏b. 内核已经加载触摸屏驱动,可以在nfs挂载的方式下用命令cat /dev/input/event0来测试是是否加载了驱动,如果已经加载,这个时候你点击触摸屏终端是有反应的(出现一些乱码)。前面的命令中event0是对应触摸屏的硬件设备号,你可能不是event0,但一般用event0或者event1c. 有支持触摸屏校准的库或者程序,用的多的是tslib,另外linuxtp好像也可以。d. 应用程序支持触摸屏将tslib1.4.tar.gz拷贝到/home/resource下,然后解压到/home目录下# cd /home/#tar zxvf ./resource/tslib1.4.tar.gz /解压到/home(不行的话使用#tar zxvf ./resource/tslib1.4.tar.gz -C ./ 命令,后续操作同理 )# cd tslib #./autogen.sh #./configure -prefix=/usr/local/tslib/ -host=arm-linux ac_cv_func_malloc_0_nonnull=yes /配置tslib安装(路径设置在/usr/local/tslib/)# make /生成Makefile# make install/安装# cd /home#rm r tslib /安装完成,可以选择删除解压文件注:安装过程中若没有出现错误,则表示安装成功,此时应该可以在/usr/local/tslib/下看到安装好的文件,若中途出现错误,则应该检查交叉编译器是否安装好,环境变量是否设置好,然后tslib的配置命令是否有错。(注:#./configure -prefix 语句中的-prefix 可以换成 prefix 试一试)第三步:安装qt-embedded-linux-opensource-src-4.5.3.tar.gz注:先安装Linux下的G+工具#apt-get inatall g+ /已安装则不需要把qt-embedded-linux-opensource-src-4.5.3.tar.gz拷贝到/home/resource下#cd /home#tar zxvf ./resource/qt-embedded-linux-opensource-src-4.5.3.tar.gz /将其解压到/home下# cd qt-embedded-linux-opensource-src-4.5.3#./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.3 /指定安装目录-release -shared /配置QT库裁剪参数-fast -pch -no-qt3support -qt-sql-sqlite -no-libtiff -no-libmng -qt-libjpeg -qt-zlib -qt-libpng -qt-freetype -no-openssl -nomake examples -nomake demos -nomake tools -optimized-qmake -no-phonon -no-nis -no-opengl -no-cups -no-xcursor -no-xfixes -no-xrandr -no-xrender -no-xkb -no-sm -no-xinerama -no-xshape -no-separate-debug-info -xplatform qws/linux-arm-g+ -embedded arm -depths 16 -no-qvfb -qt-gfx-linuxfb -no-gfx-qvfb -no-kbd-qvfb -no-mouse-qvfb -qt-kbd-usb -confirm-license -no-armfpa-qt-mouse-tslib -L /usr/local/tslib/lib /不定的,对应你的tslib安装库位置-I /usr/local/tslib/include /不定的,对应tslibin头文件位置注:上面的代码比较长,复制时小心,该代码用于对QT库的裁剪配置,因为QT库过大,如果完全编译的话,可能最终arm板负载不了,所以需要裁剪。而裁剪的参数没有规定的,你甚至可以不裁剪,但一般情况会把鼠标库,例子,样例代码等去掉。你可以输入./configure -help来查看各选项的含义,但都是英文的。以上“”符号表示该行命令没有结束,接着下一行。如果把上述代码复制到终端命令行没有出错,则会出现一个提示选择信息,那是QT安装的版本选择信息,一般选择“O”,意思是开源(opensource),然后继续。.等待一点时间.#make.等待大概2个小时.#make install.同样等待大概两个小时,安装完成.注:若安装过程中出现问题,可能前两步安装没有到位,返回去检查。若无错误,安装成功,会在目录/usr/local/Trolltech/QtEmbedded-4.5.3下看到对应安装好的文件。#cd /usr/local/Trolltech/QtEmbedded-4.5.3#ls#cd /usr/local/Trolltech/QtEmbedded-4.5.3/bin#ls#mv qmake qmake-arm /修改qmake为qmake-arm#gedit /etc/bash.bashrc /添加linux系统环境变量在文件末尾加上环境变量export PATH=$PATH: /usr/local/Trolltech/QtEmbedded-4.5.3/bin保存关闭#qmake-ar(按Tab建,会出现qmake-arm表示环境变量设置成功)注:此步也比较重要,一个linux系统多安装几个QT程序的话,会出现相同的qmake命令,所以为了区分qmake,改名成qmake-arm,而后面添加环境变量是因为以后编译QT应用程序要用到。.自此,要安装的程序已经安装完毕,接下来就是一些修改设置操作。.第四步:启动NFS服务一般程序做调试都会使用nfs挂载的方法,这样做方便,节省资源。首先确保你的Ubuntu安装过nfs服务,没有的话使用命令安装#apt-get install nfs-kernel-server /安装nfs服务,# gedit /etc/exports /修改nfs配置在该文件末尾加入/home/nfs 28(rw,sync,no_root_squash) /28 为开发板的IP保存关闭 # /etc/init.d/portmap restart /重启nfs服务# /etc/init.d/nfs-kernel-server restart/重启nfs服务注:上述ip地址的对应很重要,否则nfs不能挂载,ip地址的设置不一定要死定,但是要保证开发板和Ubuntu在同一个网段。如果Ubuntu使用虚拟机安装的话,还要顾及虚拟机和pc机windows系统的链接,最好保证上述三者在同一网段,另外虚拟机和pc机的连接到底是使用桥接(bridged)还是NAT(network address translate)这个可以自己试一试,哪种行就行,一般两种都可以的,这个设置是在虚拟机里完成的。至于开发板的ip怎么设,卖家也会给你一些教程的。我是做法是:开发板ip地址:28 /看下条注释 主机(虚拟机)ip地址:10 /在第七步操作中设置注:设置开发板的ip地址:串口终端#setenv bootargs “root=/dev/nfs nfsroot=10:/home/nfs(+空格) ip=28:10::::eth0:off console=ttySAC0,115200”串口终端#saveenv /保存配置该设置语句是在开发板启动时进入开发板的uboot(类似pc机的bios)时输入完成的,这要用到一些串口调试工具,我直接用的windows的超级终端,开发板(跟pc机已经串口、网线连接好)开机时按空格键进入uboot,然后在串口终端输入上述语句,最后保存参数配置。可以查看第七步操作。第五步:修改文件系统注:要想开发板能在nfs挂载成功并运行程序,必须要一个针对ARM的硬件平台的文件系统,这种文件系统一般开发板供应商都会给你的。我使用的是urbetter-rootfs-qt-2.2.0.tgz。1.将urbetter-rootfs-qt-2.2.0.tgz拷贝到/home/resource下在home目录下建一个nfs挂载用的共享文件夹#cd /home#mkdir nfs /创建一个nfs共享目录#cd /home/resource#tar zxvf urbetter-rootfs-qt-2.2.0.tgz -C /home/nfs /解压文件系统到/home/nfs#cd /home/nfs#ls删除 /home/nfs /opt/Qtopia 下所有内容(可以手动删) /删除文件系统自带的系统软件等删除 /home/nfs/usr/local 下的所有内容删除(可以手动删) /删除文件系统自带的用户程序等打开/home/nfs/etc/init.d/rcS 文件 /屏蔽系统默认启动代码删除如下内容:/bin/qtopia & /启动代码echo /dev/tty1echo Starting Qtopia, please waiting. /dev/tty1 /提示信息echo echo Starting Qtopia, please waiting.保存关闭2.到qt的安装目录下将库文件/usr/local/Trolltech/QtEmbedded-4.5.3/lib全部拷贝到/home/nfs /opt/Qtopia#cp r /usr/local/Trolltech/QtEmbedded-4.5.3/lib /home/nfs /opt/Qtopia/ (-r是递归拷贝)到tslib的安装目录将整个文件夹拷贝到/home/nfs /usr/local/#cp r /usr/local/tslib/ /home/nfs /usr/local/ (-r是递归拷贝)#cd /usr/local/tslib/#ls 应该看到以下目录 /bin, /包含一些触摸屏的可执行文件,如校准文件,测试文件 /etc,/触摸屏初始化配置文件,下面是要修改的 /include,/包含头文件等 /lib/包含触摸屏支持库#cd ./bin应该看到一些可执行文件,其中ts_calibrate是校准程序,ts_test是测试程序#cd .#cd ./etc应该看到一个触摸屏的配置文件/ts.conf打开该文件,进行编辑在文件末尾添加以下语句module_raw input /启动触摸屏的数据输入方式,这样tslib才能从底层获得数据module pthres module variance delta=30module dejitter delta=100module linear保存并关闭该文件。3.设置nfs文件系统的环境变量# gedit /home/nfs/etc/profile(手动以记事本打开一样的)在该文件末尾加上如下内容:export QTDIR=/opt/Qtopia /Qt根目录export PATH=$QTDIR/bin:$PATH /Qt可执行文件目录export QT_QWS_FONTDIR=/opt/Qtopia/lib/fonts/Qt字体库export TSLIB_ROOT=/usr/local/tslib/tslib路径export TSLIB_TSDEVICE=/dev/input/event1/指定触摸屏对应驱动设备export TSLIB_FBDEVICE=/dev/fb0export TSLIB_CONSOLEDEVICE=noneexport TSLIB_CALIBFILE=/etc/pointercal/指定校准文件生成目录export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf/指定tslib配置文件export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts/指定tslib数据读取库export LD_LIBRARY_PATH=$TSLIB_ROOT/lib:$QTDIR/lib:$LD_LIBRARY_PATH/指定QT库和tslib校准库保存并关闭第六步:找到QT测试程序为了验证qt移植成功否,需要做qt程序测试。测试程序有很多,比如在之前解压的/home/ qt-embedded-linux-opensource-src-4.5.3/文件下就有许多样例,比如./demos, ./examples等 你也可以拿自己开发的QT应用程序来测试,我就拿./demos/embedded做测试。但是注意程序测试前应该先编译,编译使用qmake-arm(qmake的改名)命令,就是上面qt移植时设置的环境变量。编译方法:首先确保程序正确并且完整,把与程序有关的所有文件(头文件等)放在同一个文件夹下。在终端上使用cd命令进入到该文件夹,然后#qmake project#qmake#makemake完之后生成能够在arm板上运行的可执行文件(在pc机上不能运行),然后将该可执行文件拷贝到nfs目录(/home/nfs)下的任何地方,最好是连同整个文件夹一起拷贝过来。我的测试程序./demos/embedded,该程序下有三个小的测试程序,可以一起编译,也可以单个编译。下面是我的做法:将/home/qt-embedded-linux-opensource-src-4.5.3.tar.gz/demos/embedded拷贝到/home/nfs目录#cd /home/nfs/embedded#ls/3个小测试程序#qmake-arm#make/3个测试程序编译完成此时测试程序已经准备好了,等待测试。第七部:nfs挂载测试1.将开发板与pc机连接好,包括网线连接,串口连接打开终端调试工具(xshell比较好用),我就直接用的windows下的超级终端,当然不管用哪个终端工具,波特率要设对,应该是115200。2.设置虚拟机ubuntu的ip地址#ifconfig /查看ip#ifconfig eth5 10 up /配置ip地址 ,看下注释#ifconfig /确认ip是10注:上述配置ip地址时,eth后面的数字是不定的,在查看ip时你可以看到自己的eth号数,我的是
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智慧基础设施韧性-洞察及研究
- 2025年事业单位工勤技能-贵州-贵州信号工-机车信号设备维修五级(初级工)历年参考题库含答案解析
- 邢台市2024-2025学年高一(下)期末测试化学-1
- 贵州省近五年中考语文100个高频考点分析及备考建议
- 物业管理委托合同(示范文本)
- 化妆基础知识培训英语课件
- 新解读《GB-T 4249-2018产品几何技术规范(GPS) 基础 概念、原则和规则》
- 望城数学面试题目及答案
- 南京市小学数学试卷
- 机械伤害基础知识培训课件
- 2025年3到6岁幼儿发展指南考试试题及答案
- 2025年光伏施工安全试题及答案
- 翻越您的浪浪山新学期开学第一课+课件
- 宏图煤矿防突设计2025.9.8
- 贵州航空产业城集团股份有限公司,贵州安立航空材料有限公司招聘笔试题库2025
- 2024年西藏贡觉县卫生系统招聘考试(护理学专业知识)题含答案
- 奇瑞购销协议书范本
- 社区模拟试题和答案
- 国家卫健委十八项制度医疗
- 2025年技师(二级)养老护理员职业技能鉴定《理论知识》真题卷(后附答案和解析)
- 境外常驻人员管理办法
评论
0/150
提交评论